Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions auto-qa/tests/flm-config.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ test('liquidity manager helpers pin Swapr adapter calldata and manager overloads
);
assert.match(pageSource, /depositToSpot\(uint256,uint256,bytes\)/);
assert.match(pageSource, /encodeDualExitParams\(yesExitData, noExitData\)/);
assert.doesNotMatch(utilsSource, /conditionalLiquidity\(\)/);
assert.doesNotMatch(utilsSource, /totalManagedLiquidity\(\)/);
assert.match(pageSource, /Deposits are paused while this manager is in conditional mode/);
assert.match(pageSource, /Cannot deposit while the manager is in conditional mode/);
});

test('companies table links configured organizations to their liquidity page', async () => {
Expand Down
40 changes: 23 additions & 17 deletions src/pages/flm/[org].jsx
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,7 @@ export default function FlmPage({ config }) {
shareDecimals: 18,
totalSupply: ZERO,
walletShares: ZERO,
totalManagedLiquidity: ZERO,
spotLiquidity: ZERO,
conditionalLiquidity: ZERO,
conditionalYesLiquidity: ZERO,
conditionalNoLiquidity: ZERO,
inConditionalMode: false,
Expand Down Expand Up @@ -294,9 +292,7 @@ export default function FlmPage({ config }) {
shareDecimals,
totalSupply,
walletShares,
totalManagedLiquidity,
spotLiquidity,
conditionalLiquidity,
conditionalYesLiquidity,
conditionalNoLiquidity,
inConditionalMode,
Expand All @@ -315,9 +311,7 @@ export default function FlmPage({ config }) {
readOr(() => manager.decimals(), 18),
readOr(() => manager.totalSupply(), ZERO),
address ? readOr(() => manager.balanceOf(wallet), ZERO) : ZERO,
readOr(() => manager.totalManagedLiquidity(), ZERO),
readOr(() => manager.spotLiquidity(), ZERO),
readOr(() => manager.conditionalLiquidity(), ZERO),
readOr(() => manager.conditionalYesLiquidity(), ZERO),
readOr(() => manager.conditionalNoLiquidity(), ZERO),
readOr(() => manager.inConditionalMode(), false),
Expand Down Expand Up @@ -353,9 +347,7 @@ export default function FlmPage({ config }) {
shareDecimals,
totalSupply,
walletShares,
totalManagedLiquidity,
spotLiquidity,
conditionalLiquidity,
conditionalYesLiquidity,
conditionalNoLiquidity,
inConditionalMode,
Expand Down Expand Up @@ -391,6 +383,17 @@ export default function FlmPage({ config }) {
};
}, [deposit, readState, redeem.shares]);

const depositsDisabledInConditionalMode = readState.manager.inConditionalMode;
const depositActionDisabled = !managerConfigured
|| !address
|| Boolean(pendingAction)
|| !amountChecks.hasDepositAmount
|| depositsDisabledInConditionalMode;
const approvalActionDisabled = !managerConfigured
|| !address
|| Boolean(pendingAction)
|| depositsDisabledInConditionalMode;

const updateDeposit = (field, value) => {
setDeposit((current) => ({ ...current, [field]: value }));
};
Expand Down Expand Up @@ -438,6 +441,9 @@ export default function FlmPage({ config }) {
const depositToSpot = () => {
return runWalletAction('deposit', async (signer) => {
if (!managerConfigured) throw new Error('Liquidity manager is not configured.');
if (depositsDisabledInConditionalMode) {
throw new Error('Cannot deposit while the manager is in conditional mode.');
}
if (!amountChecks.hasDepositAmount) throw new Error('Enter a deposit amount first.');
if (amountChecks.needsCompanyApproval || amountChecks.needsCollateralApproval) {
throw new Error('Approve the deposit tokens first.');
Expand Down Expand Up @@ -625,17 +631,12 @@ export default function FlmPage({ config }) {
label="Total LP shares"
value={formatLpShares(readState.manager.totalSupply, readState.manager.shareDecimals)}
/>
<Metric
label="Total liquidity"
value={readState.manager.totalManagedLiquidity.toString()}
/>
<Metric
label="Mode"
value={readState.manager.inConditionalMode ? 'Conditional' : 'Spot'}
tone={readState.manager.inConditionalMode ? 'accent' : 'default'}
/>
<Metric label="Spot liquidity" value={readState.manager.spotLiquidity.toString()} />
<Metric label="Conditional liquidity" value={readState.manager.conditionalLiquidity.toString()} />
<Metric label="YES liquidity" value={readState.manager.conditionalYesLiquidity.toString()} />
<Metric label="NO liquidity" value={readState.manager.conditionalNoLiquidity.toString()} />
</div>
Expand All @@ -653,6 +654,11 @@ export default function FlmPage({ config }) {

<div className="grid gap-6 lg:grid-cols-2">
<Section title="Add Liquidity">
{depositsDisabledInConditionalMode && (
<div className="mb-4 rounded-lg border border-futarchyGold5 bg-futarchyGold3 px-3 py-2 text-sm font-medium text-futarchyGold11">
Deposits are paused while this manager is in conditional mode.
</div>
)}
<div className="grid gap-3 sm:grid-cols-2">
<FormInput
label={config.token.symbol}
Expand Down Expand Up @@ -705,25 +711,25 @@ export default function FlmPage({ config }) {
variant="secondary"
icon={CheckCircleIcon}
onClick={() => approveToken('company')}
disabled={!managerConfigured || !address || Boolean(pendingAction) || !amountChecks.companyAmount.gt(0)}
disabled={approvalActionDisabled || !amountChecks.companyAmount.gt(0)}
>
Approve {config.token.symbol}
</ActionButton>
<ActionButton
variant="secondary"
icon={CheckCircleIcon}
onClick={() => approveToken('collateral')}
disabled={!managerConfigured || !address || Boolean(pendingAction) || !amountChecks.collateralAmount.gt(0)}
disabled={approvalActionDisabled || !amountChecks.collateralAmount.gt(0)}
>
Approve {config.collateral.symbol}
</ActionButton>
<ActionButton
variant="accent"
icon={BanknotesIcon}
onClick={depositToSpot}
disabled={!managerConfigured || !address || Boolean(pendingAction) || !amountChecks.hasDepositAmount}
disabled={depositActionDisabled}
>
Deposit
{depositsDisabledInConditionalMode ? 'Deposits paused' : 'Deposit'}
</ActionButton>
</div>

Expand Down
2 changes: 0 additions & 2 deletions src/utils/flm.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ export const FULCRUM_TICK_UPPER = 887220;
export const FLM_MANAGER_ABI = [
'function activeProposal() view returns (address)',
'function balanceOf(address) view returns (uint256)',
'function conditionalLiquidity() view returns (uint128)',
'function conditionalNoLiquidity() view returns (uint128)',
'function conditionalYesLiquidity() view returns (uint128)',
'function decimals() view returns (uint8)',
Expand All @@ -36,7 +35,6 @@ export const FLM_MANAGER_ABI = [
'function redeem(uint256,address,bool,bytes,bytes) returns (uint256,uint256)',
'function spotLiquidity() view returns (uint128)',
'function symbol() view returns (string)',
'function totalManagedLiquidity() view returns (uint256)',
'function totalSupply() view returns (uint256)',
];

Expand Down
Loading