To solve Lisa's investment problem, we need to maximize her profit from investing in NFTs and crypto-currency under the given constraints. 

Let's define two decision variables:
- \(x_{NFT}\): The amount invested in NFTs.
- \(x_{crypto}\): The amount invested in crypto-currency.

The objective function to maximize is the total profit, which can be calculated as $0.30\(x_{NFT}\) + $0.40\(x_{crypto}\).

There are several constraints:
1. The total investment cannot exceed $5000: \(x_{NFT} + x_{crypto} \leq 5000\).
2. At least 25% of the total investment must be in NFTs: \(x_{NFT} \geq 0.25(x_{NFT} + x_{crypto})\).
3. At least $2300 must be invested in crypto-currency: \(x_{crypto} \geq 2300\).

We will use Gurobi, a Python library for solving optimization problems, to find the optimal investment strategy.

```python
from gurobipy import *

# Create a new model
m = Model("Lisa_Investment")

# Define decision variables
x_NFT = m.addVar(name='x_NFT', lb=0)  # Amount invested in NFTs
x_crypto = m.addVar(name='x_crypto', lb=0)  # Amount invested in crypto-currency

# Objective function: Maximize profit
m.setObjective(0.30*x_NFT + 0.40*x_crypto, GRB.MAXIMIZE)

# Constraints
m.addConstr(x_NFT + x_crypto <= 5000, name='Total_Investment')  # Total investment limit
m.addConstr(x_NFT >= 0.25*(x_NFT + x_crypto), name='NFT_Min_Percent')  # Minimum NFT percentage
m.addConstr(x_crypto >= 2300, name='Crypto_Min_Investment')  # Minimum crypto-currency investment

# Solve the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print('Optimal solution found:')
    print(f'Invest in NFTs: ${x_NFT.x:.2f}')
    print(f'Invest in Crypto-Currency: ${x_crypto.x:.2f}')
    print(f'Total Profit: ${m.objVal:.2f}')
else:
    print('No optimal solution found')
```