test(trading): add e2e tests for liquidity 5002-LIQP (#4082)
Co-authored-by: Bartłomiej Głownia <bglownia@gmail.com>
This commit is contained in:
parent
c0fdc8d570
commit
d775573543
@ -7,31 +7,30 @@ import { AsyncRenderer } from '@vegaprotocol/ui-toolkit';
|
|||||||
import {
|
import {
|
||||||
getFeeLevels,
|
getFeeLevels,
|
||||||
sumLiquidityCommitted,
|
sumLiquidityCommitted,
|
||||||
marketLiquidityDataProvider,
|
|
||||||
lpAggregatedDataProvider,
|
lpAggregatedDataProvider,
|
||||||
} from '@vegaprotocol/liquidity';
|
} from '@vegaprotocol/liquidity';
|
||||||
import type { MarketLpQuery } from '@vegaprotocol/liquidity';
|
import { marketWithDataProvider } from '@vegaprotocol/markets';
|
||||||
|
import type { MarketWithData } from '@vegaprotocol/markets';
|
||||||
|
|
||||||
import { Market } from './market';
|
import { Market } from './market';
|
||||||
import { Header } from './header';
|
import { Header } from './header';
|
||||||
import { LPProvidersGrid } from './providers';
|
import { LPProvidersGrid } from './providers';
|
||||||
|
|
||||||
const formatMarket = (data: MarketLpQuery) => {
|
const formatMarket = (market: MarketWithData) => {
|
||||||
return {
|
return {
|
||||||
name: data?.market?.tradableInstrument.instrument.name,
|
name: market?.tradableInstrument.instrument.name,
|
||||||
symbol:
|
symbol:
|
||||||
data?.market?.tradableInstrument.instrument.product.settlementAsset
|
market?.tradableInstrument.instrument.product.settlementAsset.symbol,
|
||||||
.symbol,
|
|
||||||
settlementAsset:
|
settlementAsset:
|
||||||
data?.market?.tradableInstrument.instrument.product.settlementAsset,
|
market?.tradableInstrument.instrument.product.settlementAsset,
|
||||||
targetStake: data?.market?.data?.targetStake,
|
targetStake: market?.data?.targetStake,
|
||||||
tradingMode: data?.market?.data?.marketTradingMode,
|
tradingMode: market?.data?.marketTradingMode,
|
||||||
trigger: data?.market?.data?.trigger,
|
trigger: market?.data?.trigger,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const lpDataProvider = makeDerivedDataProvider(
|
export const lpDataProvider = makeDerivedDataProvider(
|
||||||
[marketLiquidityDataProvider, lpAggregatedDataProvider],
|
[marketWithDataProvider, lpAggregatedDataProvider],
|
||||||
([market, lpAggregatedData]) => ({
|
([market, lpAggregatedData]) => ({
|
||||||
market: { ...formatMarket(market) },
|
market: { ...formatMarket(market) },
|
||||||
liquidityProviders: lpAggregatedData || [],
|
liquidityProviders: lpAggregatedData || [],
|
||||||
|
327
apps/trading-e2e/src/integration/market-liquidity.cy.ts
Normal file
327
apps/trading-e2e/src/integration/market-liquidity.cy.ts
Normal file
@ -0,0 +1,327 @@
|
|||||||
|
import { checkSorting } from '@vegaprotocol/cypress';
|
||||||
|
import * as Schema from '@vegaprotocol/types';
|
||||||
|
|
||||||
|
const liquidityTab = 'Liquidity';
|
||||||
|
const rowSelector =
|
||||||
|
'[data-testid="tab-liquidity"] .ag-center-cols-container .ag-row';
|
||||||
|
const rowSelectorLiquidityActive =
|
||||||
|
'[data-testid="tab-active"] .ag-center-cols-container .ag-row';
|
||||||
|
const rowSelectorLiquidityInactive =
|
||||||
|
'[data-testid="tab-inactive"] .ag-center-cols-container .ag-row';
|
||||||
|
const marketSummaryBlock = 'header-summary';
|
||||||
|
const itemValue = 'item-value';
|
||||||
|
const itemHeader = 'item-header';
|
||||||
|
const colCommitmentAmount = '[col-id="commitmentAmount"]';
|
||||||
|
const colAverageEntryValuation = '[col-id="averageEntryValuation"]';
|
||||||
|
const colEquityLikeShare = '[col-id="equityLikeShare"]';
|
||||||
|
const colFee = '[col-id="fee"]';
|
||||||
|
const colCommitmentAmount_1 = '[col-id="commitmentAmount_1"]';
|
||||||
|
const colBalance = '[col-id="balance"]';
|
||||||
|
const colStatus = '[col-id="status"]';
|
||||||
|
const colCreatedAt = '[col-id="createdAt"] button';
|
||||||
|
const colUpdatedAt = '[col-id="updatedAt"] button';
|
||||||
|
|
||||||
|
const headers = [
|
||||||
|
'Party',
|
||||||
|
'Commitment (tDAI)',
|
||||||
|
'Share',
|
||||||
|
'Proposed fee',
|
||||||
|
'Market valuation at entry',
|
||||||
|
'Obligation',
|
||||||
|
'Supplied',
|
||||||
|
'Status',
|
||||||
|
'Created',
|
||||||
|
'Updated',
|
||||||
|
];
|
||||||
|
|
||||||
|
describe('liquidity table - trading', { tags: '@smoke' }, () => {
|
||||||
|
before(() => {
|
||||||
|
cy.mockSubscription();
|
||||||
|
cy.mockTradingPage(
|
||||||
|
Schema.MarketState.STATE_ACTIVE,
|
||||||
|
Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION,
|
||||||
|
Schema.AuctionTrigger.AUCTION_TRIGGER_LIQUIDITY_TARGET_NOT_MET
|
||||||
|
);
|
||||||
|
cy.visit('/#/markets/market-0');
|
||||||
|
cy.wait('@MarketData');
|
||||||
|
cy.getByTestId(liquidityTab).click();
|
||||||
|
cy.wait('@LiquidityProvisions');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see table headers', () => {
|
||||||
|
// 5002-LIQP-001
|
||||||
|
cy.getByTestId('tab-liquidity').within(($headers) => {
|
||||||
|
cy.wrap($headers)
|
||||||
|
.get('.ag-header-cell-text')
|
||||||
|
.each(($header, i) => {
|
||||||
|
cy.wrap($header).should('have.text', headers[i]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders liquidity table correctly', () => {
|
||||||
|
// 5002-LIQP-002
|
||||||
|
cy.get(rowSelector)
|
||||||
|
.first()
|
||||||
|
.find('[col-id="party.id"]')
|
||||||
|
.should(
|
||||||
|
'have.text',
|
||||||
|
'69464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f'
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get(rowSelector)
|
||||||
|
.first()
|
||||||
|
.find(colCommitmentAmount)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelector)
|
||||||
|
.first()
|
||||||
|
.find(colEquityLikeShare)
|
||||||
|
.should('have.text', '100.00%');
|
||||||
|
|
||||||
|
cy.get(rowSelector).first().find(colFee).should('have.text', '0.09%');
|
||||||
|
|
||||||
|
cy.get(rowSelector)
|
||||||
|
.first()
|
||||||
|
.find(colAverageEntryValuation)
|
||||||
|
.should('have.text', '685,852.93692');
|
||||||
|
|
||||||
|
cy.get(rowSelector)
|
||||||
|
.first()
|
||||||
|
.find(colCommitmentAmount_1)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelector)
|
||||||
|
.first()
|
||||||
|
.find(colBalance)
|
||||||
|
.scrollIntoView()
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelector).first().find(colStatus).should('have.text', 'Active');
|
||||||
|
|
||||||
|
cy.get(rowSelector).first().find(colCreatedAt).should('not.be.empty');
|
||||||
|
cy.get(rowSelector).first().find(colUpdatedAt).should('not.be.empty');
|
||||||
|
});
|
||||||
|
// #4079
|
||||||
|
it.skip('liquidity status column should be sorted properly', () => {
|
||||||
|
// 5002-LIQP-003
|
||||||
|
const liquidityColDefault = ['Active', 'Pending'];
|
||||||
|
const liquidityColAsc = ['Active', 'Pending'];
|
||||||
|
const liquidityColDesc = ['Pending', 'Active'];
|
||||||
|
checkSorting(
|
||||||
|
'status',
|
||||||
|
liquidityColDefault,
|
||||||
|
liquidityColAsc,
|
||||||
|
liquidityColDesc
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('liquidity table view', { tags: '@smoke' }, () => {
|
||||||
|
before(() => {
|
||||||
|
cy.mockSubscription();
|
||||||
|
cy.mockTradingPage(
|
||||||
|
Schema.MarketState.STATE_ACTIVE,
|
||||||
|
Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION,
|
||||||
|
Schema.AuctionTrigger.AUCTION_TRIGGER_LIQUIDITY_TARGET_NOT_MET
|
||||||
|
);
|
||||||
|
cy.visit('/#/liquidity/market-0');
|
||||||
|
cy.wait('@LiquidityProvisions');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see header title', () => {
|
||||||
|
// 5002-LIQP-004
|
||||||
|
// 5002-LIQP-005
|
||||||
|
cy.getByTestId('header-title')
|
||||||
|
.should('contain.text', 'BTCUSD.MF21 liquidity provision')
|
||||||
|
.and('contain.text', 'Go to trading');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see target stake', () => {
|
||||||
|
// 5002-LIQP-006
|
||||||
|
cy.getByTestId(marketSummaryBlock).within(() => {
|
||||||
|
cy.getByTestId('target-stake').within(() => {
|
||||||
|
cy.getByTestId(itemHeader).should('have.text', 'Target stake');
|
||||||
|
cy.getByTestId(itemValue).should('have.text', '10.00 tDAI').realHover();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
cy.getByTestId('tooltip-content').should(
|
||||||
|
'contain.text',
|
||||||
|
`The market's liquidity requirement which is derived from the maximum open interest observed over a rolling time window.The market's liquidity requirement which is derived from the maximum open interest observed over a rolling time window.`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see supplied stake', () => {
|
||||||
|
// 5002-LIQP-007
|
||||||
|
cy.getByTestId(marketSummaryBlock).within(() => {
|
||||||
|
cy.getByTestId('supplied-stake').within(() => {
|
||||||
|
cy.getByTestId(itemHeader).should('have.text', 'Supplied stake');
|
||||||
|
cy.getByTestId(itemValue).should('have.text', '0.01 tDAI').realHover();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
cy.getByTestId('tooltip-content').should(
|
||||||
|
'contain.text',
|
||||||
|
'The current amount of liquidity supplied for this market.'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see liquidity supplied', () => {
|
||||||
|
//// 5002-LIQP-008
|
||||||
|
cy.getByTestId(marketSummaryBlock).within(() => {
|
||||||
|
cy.getByTestId('liquidity-supplied').within(() => {
|
||||||
|
cy.getByTestId(itemHeader).should('have.text', 'Liquidity supplied');
|
||||||
|
cy.getByTestId('indicator').should('be.visible');
|
||||||
|
cy.getByTestId(itemValue).should('have.text', '0.10%').realHover();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see market id', () => {
|
||||||
|
// 5002-LIQP-009
|
||||||
|
cy.getByTestId(marketSummaryBlock).within(() => {
|
||||||
|
cy.getByTestId('liquidity-market-id').within(() => {
|
||||||
|
cy.getByTestId(itemHeader).should('have.text', 'Market ID');
|
||||||
|
cy.getByTestId(itemValue).should('have.text', 'market-0');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can see market id', () => {
|
||||||
|
// 5002-LIQP-010
|
||||||
|
cy.getByTestId(marketSummaryBlock).within(() => {
|
||||||
|
cy.getByTestId('liquidity-learn-more').within(() => {
|
||||||
|
cy.getByTestId(itemHeader).should('have.text', 'Learn more');
|
||||||
|
cy.getByTestId(itemValue).should('have.text', 'Providing liquidity');
|
||||||
|
cy.getByTestId('external-link')
|
||||||
|
.should('have.attr', 'href')
|
||||||
|
.and(
|
||||||
|
'include',
|
||||||
|
'https://docs.vega.xyz/testnet/concepts/liquidity/provision'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('liquidity table view', { tags: '@smoke' }, () => {
|
||||||
|
it('can see table headers', () => {
|
||||||
|
cy.getByTestId('tab-active').within(($headers) => {
|
||||||
|
cy.wrap($headers)
|
||||||
|
.get('.ag-header-cell-text')
|
||||||
|
.each(($header, i) => {
|
||||||
|
cy.wrap($header).should('have.text', headers[i]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders liquidity active table correctly', () => {
|
||||||
|
// 5002-LIQP-011
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find('[col-id="party.id"]')
|
||||||
|
.should(
|
||||||
|
'have.text',
|
||||||
|
'69464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f'
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colCommitmentAmount)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colEquityLikeShare)
|
||||||
|
.should('have.text', '100.00%');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colFee)
|
||||||
|
.should('have.text', '0.09%');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colAverageEntryValuation)
|
||||||
|
.should('have.text', '685,852.93692');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colCommitmentAmount_1)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colBalance)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colStatus)
|
||||||
|
.should('have.text', 'Active');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colCreatedAt)
|
||||||
|
.should('not.be.empty');
|
||||||
|
cy.get(rowSelectorLiquidityActive)
|
||||||
|
.first()
|
||||||
|
.find(colUpdatedAt)
|
||||||
|
.should('not.be.empty');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders liquidity inactive table correctly', () => {
|
||||||
|
//// 5002-LIQP-012
|
||||||
|
cy.getByTestId('Inactive').click();
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find('[col-id="party.id"]')
|
||||||
|
.should(
|
||||||
|
'have.text',
|
||||||
|
'cc464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f'
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colCommitmentAmount)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colEquityLikeShare)
|
||||||
|
.should('have.text', '100.00%');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colFee)
|
||||||
|
.should('have.text', '0.40%');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colAverageEntryValuation)
|
||||||
|
.should('have.text', '685,852.93692');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colCommitmentAmount_1)
|
||||||
|
.should('have.text', '4,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colBalance)
|
||||||
|
.should('have.text', '2,000.00');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colStatus)
|
||||||
|
.should('have.text', 'Pending');
|
||||||
|
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colCreatedAt)
|
||||||
|
.should('not.be.empty');
|
||||||
|
cy.get(rowSelectorLiquidityInactive)
|
||||||
|
.first()
|
||||||
|
.find(colUpdatedAt)
|
||||||
|
.should('not.be.empty');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -31,6 +31,8 @@ import {
|
|||||||
protocolUpgradeProposalsQuery,
|
protocolUpgradeProposalsQuery,
|
||||||
blockStatisticsQuery,
|
blockStatisticsQuery,
|
||||||
networkParamQuery,
|
networkParamQuery,
|
||||||
|
liquidityProvisionsQuery,
|
||||||
|
liquidityProviderFeeShareQuery,
|
||||||
} from '@vegaprotocol/mock';
|
} from '@vegaprotocol/mock';
|
||||||
import type { PartialDeep } from 'type-fest';
|
import type { PartialDeep } from 'type-fest';
|
||||||
import type { MarketDataQuery, MarketsQuery } from '@vegaprotocol/markets';
|
import type { MarketDataQuery, MarketsQuery } from '@vegaprotocol/markets';
|
||||||
@ -158,6 +160,12 @@ const mockTradingPage = (
|
|||||||
);
|
);
|
||||||
aliasGQLQuery(req, 'Trades', tradesQuery());
|
aliasGQLQuery(req, 'Trades', tradesQuery());
|
||||||
aliasGQLQuery(req, 'Chart', chartQuery());
|
aliasGQLQuery(req, 'Chart', chartQuery());
|
||||||
|
aliasGQLQuery(req, 'LiquidityProvisions', liquidityProvisionsQuery());
|
||||||
|
aliasGQLQuery(
|
||||||
|
req,
|
||||||
|
'LiquidityProviderFeeShare',
|
||||||
|
liquidityProviderFeeShareQuery
|
||||||
|
);
|
||||||
aliasGQLQuery(req, 'Candles', candlesQuery());
|
aliasGQLQuery(req, 'Candles', candlesQuery());
|
||||||
aliasGQLQuery(req, 'Withdrawals', withdrawalsQuery());
|
aliasGQLQuery(req, 'Withdrawals', withdrawalsQuery());
|
||||||
aliasGQLQuery(req, 'NetworkParams', networkParamsQuery());
|
aliasGQLQuery(req, 'NetworkParams', networkParamsQuery());
|
||||||
|
@ -150,6 +150,7 @@ const LiquidityViewHeader = memo(({ marketId }: { marketId?: string }) => {
|
|||||||
<HeaderStat
|
<HeaderStat
|
||||||
heading={t('Target stake')}
|
heading={t('Target stake')}
|
||||||
description={tooltipMapping['targetStake']}
|
description={tooltipMapping['targetStake']}
|
||||||
|
testId="target-stake"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
{targetStake
|
{targetStake
|
||||||
@ -163,6 +164,7 @@ const LiquidityViewHeader = memo(({ marketId }: { marketId?: string }) => {
|
|||||||
<HeaderStat
|
<HeaderStat
|
||||||
heading={t('Supplied stake')}
|
heading={t('Supplied stake')}
|
||||||
description={tooltipMapping['suppliedStake']}
|
description={tooltipMapping['suppliedStake']}
|
||||||
|
testId="supplied-stake"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
{suppliedStake
|
{suppliedStake
|
||||||
@ -178,10 +180,10 @@ const LiquidityViewHeader = memo(({ marketId }: { marketId?: string }) => {
|
|||||||
|
|
||||||
{formatNumberPercentage(percentage, 2)}
|
{formatNumberPercentage(percentage, 2)}
|
||||||
</HeaderStat>
|
</HeaderStat>
|
||||||
<HeaderStat heading={t('Market ID')}>
|
<HeaderStat heading={t('Market ID')} testId="liquidity-market-id">
|
||||||
<div className="break-word">{marketId}</div>
|
<div className="break-word">{marketId}</div>
|
||||||
</HeaderStat>
|
</HeaderStat>
|
||||||
<HeaderStat heading={t('Learn more')}>
|
<HeaderStat heading={t('Learn more')} testId="liquidity-learn-more">
|
||||||
{DocsLinks ? (
|
{DocsLinks ? (
|
||||||
<ExternalLink href={DocsLinks.LIQUIDITY}>
|
<ExternalLink href={DocsLinks.LIQUIDITY}>
|
||||||
{t('Providing liquidity')}
|
{t('Providing liquidity')}
|
||||||
|
@ -28,3 +28,4 @@ export * from '../trades/src/lib/trades.mock';
|
|||||||
export * from '../withdraws/src/lib/withdrawal.mock';
|
export * from '../withdraws/src/lib/withdrawal.mock';
|
||||||
export * from '../proposals/src/lib/protocol-upgrade-proposals/protocol-statistics-proposals.mock';
|
export * from '../proposals/src/lib/protocol-upgrade-proposals/protocol-statistics-proposals.mock';
|
||||||
export * from '../proposals/src/lib/protocol-upgrade-proposals/block-statistics.mock';
|
export * from '../proposals/src/lib/protocol-upgrade-proposals/block-statistics.mock';
|
||||||
|
export * from '../liquidity/src/lib/liquidity.mock';
|
||||||
|
@ -1,39 +1,3 @@
|
|||||||
# MarketLp
|
|
||||||
|
|
||||||
query MarketLp($marketId: ID!) {
|
|
||||||
market(id: $marketId) {
|
|
||||||
id
|
|
||||||
decimalPlaces
|
|
||||||
positionDecimalPlaces
|
|
||||||
tradableInstrument {
|
|
||||||
instrument {
|
|
||||||
code
|
|
||||||
name
|
|
||||||
product {
|
|
||||||
... on Future {
|
|
||||||
settlementAsset {
|
|
||||||
id
|
|
||||||
symbol
|
|
||||||
decimals
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data {
|
|
||||||
market {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
marketTradingMode
|
|
||||||
suppliedStake
|
|
||||||
openInterest
|
|
||||||
targetStake
|
|
||||||
trigger
|
|
||||||
marketValueProxy
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Liquidity Provisions
|
# Liquidity Provisions
|
||||||
|
|
||||||
fragment LiquidityProvisionFields on LiquidityProvision {
|
fragment LiquidityProvisionFields on LiquidityProvision {
|
||||||
|
@ -3,13 +3,6 @@ import * as Types from '@vegaprotocol/types';
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
import * as Apollo from '@apollo/client';
|
import * as Apollo from '@apollo/client';
|
||||||
const defaultOptions = {} as const;
|
const defaultOptions = {} as const;
|
||||||
export type MarketLpQueryVariables = Types.Exact<{
|
|
||||||
marketId: Types.Scalars['ID'];
|
|
||||||
}>;
|
|
||||||
|
|
||||||
|
|
||||||
export type MarketLpQuery = { __typename?: 'Query', market?: { __typename?: 'Market', id: string, decimalPlaces: number, positionDecimalPlaces: number, tradableInstrument: { __typename?: 'TradableInstrument', instrument: { __typename?: 'Instrument', code: string, name: string, product: { __typename?: 'Future', settlementAsset: { __typename?: 'Asset', id: string, symbol: string, decimals: number } } } }, data?: { __typename?: 'MarketData', marketTradingMode: Types.MarketTradingMode, suppliedStake?: string | null, openInterest: string, targetStake?: string | null, trigger: Types.AuctionTrigger, marketValueProxy: string, market: { __typename?: 'Market', id: string } } | null } | null };
|
|
||||||
|
|
||||||
export type LiquidityProvisionFieldsFragment = { __typename?: 'LiquidityProvision', createdAt: any, updatedAt?: any | null, commitmentAmount: string, fee: string, status: Types.LiquidityProvisionStatus, party: { __typename?: 'Party', id: string, accountsConnection?: { __typename?: 'AccountsConnection', edges?: Array<{ __typename?: 'AccountEdge', node: { __typename?: 'AccountBalance', type: Types.AccountType, balance: string } } | null> | null } | null } };
|
export type LiquidityProvisionFieldsFragment = { __typename?: 'LiquidityProvision', createdAt: any, updatedAt?: any | null, commitmentAmount: string, fee: string, status: Types.LiquidityProvisionStatus, party: { __typename?: 'Party', id: string, accountsConnection?: { __typename?: 'AccountsConnection', edges?: Array<{ __typename?: 'AccountEdge', node: { __typename?: 'AccountBalance', type: Types.AccountType, balance: string } } | null> | null } | null } };
|
||||||
|
|
||||||
export type LiquidityProvisionsQueryVariables = Types.Exact<{
|
export type LiquidityProvisionsQueryVariables = Types.Exact<{
|
||||||
@ -65,69 +58,6 @@ export const LiquidityProviderFeeShareFieldsFragmentDoc = gql`
|
|||||||
averageEntryValuation
|
averageEntryValuation
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
export const MarketLpDocument = gql`
|
|
||||||
query MarketLp($marketId: ID!) {
|
|
||||||
market(id: $marketId) {
|
|
||||||
id
|
|
||||||
decimalPlaces
|
|
||||||
positionDecimalPlaces
|
|
||||||
tradableInstrument {
|
|
||||||
instrument {
|
|
||||||
code
|
|
||||||
name
|
|
||||||
product {
|
|
||||||
... on Future {
|
|
||||||
settlementAsset {
|
|
||||||
id
|
|
||||||
symbol
|
|
||||||
decimals
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data {
|
|
||||||
market {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
marketTradingMode
|
|
||||||
suppliedStake
|
|
||||||
openInterest
|
|
||||||
targetStake
|
|
||||||
trigger
|
|
||||||
marketValueProxy
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* __useMarketLpQuery__
|
|
||||||
*
|
|
||||||
* To run a query within a React component, call `useMarketLpQuery` and pass it any options that fit your needs.
|
|
||||||
* When your component renders, `useMarketLpQuery` returns an object from Apollo Client that contains loading, error, and data properties
|
|
||||||
* you can use to render your UI.
|
|
||||||
*
|
|
||||||
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* const { data, loading, error } = useMarketLpQuery({
|
|
||||||
* variables: {
|
|
||||||
* marketId: // value for 'marketId'
|
|
||||||
* },
|
|
||||||
* });
|
|
||||||
*/
|
|
||||||
export function useMarketLpQuery(baseOptions: Apollo.QueryHookOptions<MarketLpQuery, MarketLpQueryVariables>) {
|
|
||||||
const options = {...defaultOptions, ...baseOptions}
|
|
||||||
return Apollo.useQuery<MarketLpQuery, MarketLpQueryVariables>(MarketLpDocument, options);
|
|
||||||
}
|
|
||||||
export function useMarketLpLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<MarketLpQuery, MarketLpQueryVariables>) {
|
|
||||||
const options = {...defaultOptions, ...baseOptions}
|
|
||||||
return Apollo.useLazyQuery<MarketLpQuery, MarketLpQueryVariables>(MarketLpDocument, options);
|
|
||||||
}
|
|
||||||
export type MarketLpQueryHookResult = ReturnType<typeof useMarketLpQuery>;
|
|
||||||
export type MarketLpLazyQueryHookResult = ReturnType<typeof useMarketLpLazyQuery>;
|
|
||||||
export type MarketLpQueryResult = Apollo.QueryResult<MarketLpQuery, MarketLpQueryVariables>;
|
|
||||||
export const LiquidityProvisionsDocument = gql`
|
export const LiquidityProvisionsDocument = gql`
|
||||||
query LiquidityProvisions($marketId: ID!) {
|
query LiquidityProvisions($marketId: ID!) {
|
||||||
market(id: $marketId) {
|
market(id: $marketId) {
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
import type { LiquidityProviderFeeShare } from '@vegaprotocol/types';
|
import type { LiquidityProviderFeeShare } from '@vegaprotocol/types';
|
||||||
import { AccountType } from '@vegaprotocol/types';
|
import { AccountType } from '@vegaprotocol/types';
|
||||||
import { getLiquidityProvision } from './liquidity-data-provider';
|
import { getLiquidityProvision } from './liquidity-data-provider';
|
||||||
import type {
|
import type { LiquidityProvisionFieldsFragment } from './__generated__/MarketLiquidity';
|
||||||
LiquidityProvisionFieldsFragment,
|
|
||||||
MarketLpQuery,
|
|
||||||
} from './__generated__/MarketLiquidity';
|
|
||||||
|
|
||||||
const input = {
|
const input = {
|
||||||
liquidityProvisions: [
|
liquidityProvisions: [
|
||||||
@ -34,44 +31,6 @@ const input = {
|
|||||||
__typename: 'LiquidityProvision',
|
__typename: 'LiquidityProvision',
|
||||||
} as LiquidityProvisionFieldsFragment,
|
} as LiquidityProvisionFieldsFragment,
|
||||||
],
|
],
|
||||||
marketLiquidity: {
|
|
||||||
market: {
|
|
||||||
id: 'ccbd651b4a1167fd73c4a0340ac759fa0a31ca487ad46a13254b741ad71947ed',
|
|
||||||
decimalPlaces: 5,
|
|
||||||
positionDecimalPlaces: 3,
|
|
||||||
tradableInstrument: {
|
|
||||||
instrument: {
|
|
||||||
code: 'UNIDAI.MF21',
|
|
||||||
name: 'UNIDAI Monthly (Dec 2022)',
|
|
||||||
product: {
|
|
||||||
settlementAsset: {
|
|
||||||
id: '16ae5dbb1fd7aa2ddef725703bfe66b3647a4da7b844bfdd04e985756f53d9d6',
|
|
||||||
symbol: 'tDAI',
|
|
||||||
decimals: 18,
|
|
||||||
__typename: 'Asset',
|
|
||||||
},
|
|
||||||
__typename: 'Future',
|
|
||||||
},
|
|
||||||
__typename: 'Instrument',
|
|
||||||
},
|
|
||||||
__typename: 'TradableInstrument',
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
market: {
|
|
||||||
id: 'ccbd651b4a1167fd73c4a0340ac759fa0a31ca487ad46a13254b741ad71947ed',
|
|
||||||
__typename: 'Market',
|
|
||||||
},
|
|
||||||
marketTradingMode: 'TRADING_MODE_CONTINUOUS',
|
|
||||||
suppliedStake: '18003328918633596575000',
|
|
||||||
openInterest: '89660',
|
|
||||||
targetStake: '70159269843504000000',
|
|
||||||
trigger: 'AUCTION_TRIGGER_UNSPECIFIED',
|
|
||||||
marketValueProxy: '18003328918633596575000',
|
|
||||||
__typename: 'MarketData',
|
|
||||||
},
|
|
||||||
__typename: 'Market',
|
|
||||||
},
|
|
||||||
} as MarketLpQuery,
|
|
||||||
liquidityFeeShare: [
|
liquidityFeeShare: [
|
||||||
{
|
{
|
||||||
party: {
|
party: {
|
||||||
@ -88,7 +47,6 @@ const input = {
|
|||||||
const result = [
|
const result = [
|
||||||
{
|
{
|
||||||
__typename: 'LiquidityProvision',
|
__typename: 'LiquidityProvision',
|
||||||
assetDecimalPlaces: 18,
|
|
||||||
averageEntryValuation: '12064118310408958216220.7224556301338111',
|
averageEntryValuation: '12064118310408958216220.7224556301338111',
|
||||||
balance: '1.8003328918633596575e+22',
|
balance: '1.8003328918633596575e+22',
|
||||||
commitmentAmount: '18003328918633596575000',
|
commitmentAmount: '18003328918633596575000',
|
||||||
@ -119,74 +77,25 @@ const result = [
|
|||||||
|
|
||||||
describe('getLiquidityProvision', () => {
|
describe('getLiquidityProvision', () => {
|
||||||
it('should return an empty array when no data is provided', () => {
|
it('should return an empty array when no data is provided', () => {
|
||||||
const data = getLiquidityProvision([], {}, []);
|
const data = getLiquidityProvision([], []);
|
||||||
expect(data).toEqual([]);
|
expect(data).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return correct array when correct liquidity provision parameters are provided', () => {
|
it('should return correct array when correct liquidity provision parameters are provided', () => {
|
||||||
const data = getLiquidityProvision(
|
const data = getLiquidityProvision(
|
||||||
input.liquidityProvisions,
|
input.liquidityProvisions,
|
||||||
input.marketLiquidity,
|
|
||||||
input.liquidityFeeShare
|
input.liquidityFeeShare
|
||||||
);
|
);
|
||||||
expect(data).toStrictEqual(result);
|
expect(data).toStrictEqual(result);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return empty array when no liquidity provision parameters are provided', () => {
|
it('should return empty array when no liquidity provision parameters are provided', () => {
|
||||||
const data = getLiquidityProvision(
|
const data = getLiquidityProvision([], input.liquidityFeeShare);
|
||||||
[],
|
|
||||||
input.marketLiquidity,
|
|
||||||
input.liquidityFeeShare
|
|
||||||
);
|
|
||||||
expect(data).toStrictEqual([]);
|
expect(data).toStrictEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return empty array when no market lp query parameter is provided', () => {
|
|
||||||
const data = getLiquidityProvision(
|
|
||||||
input.liquidityProvisions,
|
|
||||||
{},
|
|
||||||
input.liquidityFeeShare
|
|
||||||
);
|
|
||||||
const result = [
|
|
||||||
{
|
|
||||||
__typename: 'LiquidityProvision',
|
|
||||||
assetDecimalPlaces: undefined,
|
|
||||||
averageEntryValuation: '12064118310408958216220.7224556301338111',
|
|
||||||
balance: '1.8003328918633596575e+22',
|
|
||||||
commitmentAmount: '18003328918633596575000',
|
|
||||||
createdAt: '2022-12-16T09:28:29.071781Z',
|
|
||||||
equityLikeShare: '1',
|
|
||||||
fee: '0.001',
|
|
||||||
party: {
|
|
||||||
__typename: 'Party',
|
|
||||||
accountsConnection: {
|
|
||||||
__typename: 'AccountsConnection',
|
|
||||||
edges: [
|
|
||||||
{
|
|
||||||
__typename: 'AccountEdge',
|
|
||||||
node: {
|
|
||||||
__typename: 'AccountBalance',
|
|
||||||
balance: '18003328918633596575000',
|
|
||||||
type: 'ACCOUNT_TYPE_BOND',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
id: 'dde288688af2aeb5feb349dd72d3679a7a9be34c7375f6a4a48ef2f6140e7e59',
|
|
||||||
},
|
|
||||||
status: 'STATUS_ACTIVE',
|
|
||||||
updatedAt: '2023-01-04T22:13:27.761985Z',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
expect(data).toStrictEqual(result);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return empty array when no liquidity fee share param is provided', () => {
|
it('should return empty array when no liquidity fee share param is provided', () => {
|
||||||
const data = getLiquidityProvision(
|
const data = getLiquidityProvision(input.liquidityProvisions, []);
|
||||||
input.liquidityProvisions,
|
|
||||||
input.marketLiquidity,
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
const result = [
|
const result = [
|
||||||
{
|
{
|
||||||
__typename: 'LiquidityProvision',
|
__typename: 'LiquidityProvision',
|
||||||
|
@ -11,12 +11,9 @@ import {
|
|||||||
LiquidityProviderFeeShareDocument,
|
LiquidityProviderFeeShareDocument,
|
||||||
LiquidityProvisionsDocument,
|
LiquidityProvisionsDocument,
|
||||||
LiquidityProvisionsUpdateDocument,
|
LiquidityProvisionsUpdateDocument,
|
||||||
MarketLpDocument,
|
|
||||||
} from './__generated__/MarketLiquidity';
|
} from './__generated__/MarketLiquidity';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
MarketLpQuery,
|
|
||||||
MarketLpQueryVariables,
|
|
||||||
LiquidityProviderFeeShareFieldsFragment,
|
LiquidityProviderFeeShareFieldsFragment,
|
||||||
LiquidityProviderFeeShareQuery,
|
LiquidityProviderFeeShareQuery,
|
||||||
LiquidityProviderFeeShareQueryVariables,
|
LiquidityProviderFeeShareQueryVariables,
|
||||||
@ -78,19 +75,6 @@ export const liquidityProvisionsDataProvider = makeDataProvider<
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export const marketLiquidityDataProvider = makeDataProvider<
|
|
||||||
MarketLpQuery,
|
|
||||||
MarketLpQuery,
|
|
||||||
never,
|
|
||||||
never,
|
|
||||||
MarketLpQueryVariables
|
|
||||||
>({
|
|
||||||
query: MarketLpDocument,
|
|
||||||
getData: (responseData: MarketLpQuery | null) => {
|
|
||||||
return responseData;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export const liquidityFeeShareDataProvider = makeDataProvider<
|
export const liquidityFeeShareDataProvider = makeDataProvider<
|
||||||
LiquidityProviderFeeShareQuery,
|
LiquidityProviderFeeShareQuery,
|
||||||
LiquidityProviderFeeShareFieldsFragment[],
|
LiquidityProviderFeeShareFieldsFragment[],
|
||||||
@ -109,29 +93,24 @@ export type Filter = { partyId?: string; active?: boolean };
|
|||||||
export const lpAggregatedDataProvider = makeDerivedDataProvider<
|
export const lpAggregatedDataProvider = makeDerivedDataProvider<
|
||||||
LiquidityProvisionData[],
|
LiquidityProvisionData[],
|
||||||
never,
|
never,
|
||||||
MarketLpQueryVariables & { filter?: Filter }
|
LiquidityProvisionsQueryVariables & { filter?: Filter }
|
||||||
>(
|
>(
|
||||||
[
|
[
|
||||||
(callback, client, variables) =>
|
(callback, client, variables) =>
|
||||||
liquidityProvisionsDataProvider(callback, client, {
|
liquidityProvisionsDataProvider(callback, client, {
|
||||||
marketId: variables.marketId,
|
marketId: variables.marketId,
|
||||||
}),
|
}),
|
||||||
(callback, client, variables) =>
|
|
||||||
marketLiquidityDataProvider(callback, client, {
|
|
||||||
marketId: variables.marketId,
|
|
||||||
}),
|
|
||||||
(callback, client, variables) =>
|
(callback, client, variables) =>
|
||||||
liquidityFeeShareDataProvider(callback, client, {
|
liquidityFeeShareDataProvider(callback, client, {
|
||||||
marketId: variables.marketId,
|
marketId: variables.marketId,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
(
|
(
|
||||||
[liquidityProvisions, marketLiquidity, liquidityFeeShare],
|
[liquidityProvisions, liquidityFeeShare],
|
||||||
{ filter }
|
{ filter }
|
||||||
): LiquidityProvisionData[] => {
|
): LiquidityProvisionData[] => {
|
||||||
return getLiquidityProvision(
|
return getLiquidityProvision(
|
||||||
liquidityProvisions,
|
liquidityProvisions,
|
||||||
marketLiquidity,
|
|
||||||
liquidityFeeShare,
|
liquidityFeeShare,
|
||||||
filter
|
filter
|
||||||
);
|
);
|
||||||
@ -162,7 +141,6 @@ export const matchFilter = (
|
|||||||
|
|
||||||
export const getLiquidityProvision = (
|
export const getLiquidityProvision = (
|
||||||
liquidityProvisions: LiquidityProvisionFieldsFragment[],
|
liquidityProvisions: LiquidityProvisionFieldsFragment[],
|
||||||
marketLiquidity: MarketLpQuery,
|
|
||||||
liquidityFeeShare: LiquidityProviderFeeShareFieldsFragment[],
|
liquidityFeeShare: LiquidityProviderFeeShareFieldsFragment[],
|
||||||
filter?: Filter
|
filter?: Filter
|
||||||
): LiquidityProvisionData[] => {
|
): LiquidityProvisionData[] => {
|
||||||
@ -183,7 +161,6 @@ export const getLiquidityProvision = (
|
|||||||
return true;
|
return true;
|
||||||
})
|
})
|
||||||
.map((lp) => {
|
.map((lp) => {
|
||||||
const market = marketLiquidity?.market;
|
|
||||||
const feeShare = liquidityFeeShare.find(
|
const feeShare = liquidityFeeShare.find(
|
||||||
(f) => f.party.id === lp.party.id
|
(f) => f.party.id === lp.party.id
|
||||||
);
|
);
|
||||||
@ -205,9 +182,6 @@ export const getLiquidityProvision = (
|
|||||||
...lp,
|
...lp,
|
||||||
averageEntryValuation: feeShare?.averageEntryValuation,
|
averageEntryValuation: feeShare?.averageEntryValuation,
|
||||||
equityLikeShare: feeShare?.equityLikeShare,
|
equityLikeShare: feeShare?.equityLikeShare,
|
||||||
assetDecimalPlaces:
|
|
||||||
market?.tradableInstrument.instrument.product.settlementAsset
|
|
||||||
.decimals,
|
|
||||||
balance,
|
balance,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
119
libs/liquidity/src/lib/liquidity.mock.ts
Normal file
119
libs/liquidity/src/lib/liquidity.mock.ts
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
import merge from 'lodash/merge';
|
||||||
|
import * as Schema from '@vegaprotocol/types';
|
||||||
|
import type { PartialDeep } from 'type-fest';
|
||||||
|
import type {
|
||||||
|
LiquidityProviderFeeShareQuery,
|
||||||
|
LiquidityProvisionsQuery,
|
||||||
|
} from './__generated__/MarketLiquidity';
|
||||||
|
import type { LiquidityProvisionFieldsFragment } from './__generated__/MarketLiquidity';
|
||||||
|
|
||||||
|
export const liquidityProvisionsQuery = (
|
||||||
|
override?: PartialDeep<LiquidityProvisionsQuery>
|
||||||
|
): LiquidityProvisionsQuery => {
|
||||||
|
const defaultResult: LiquidityProvisionsQuery = {
|
||||||
|
market: {
|
||||||
|
liquidityProvisionsConnection: {
|
||||||
|
__typename: 'LiquidityProvisionsConnection',
|
||||||
|
edges: liquidityFields.map((node) => {
|
||||||
|
return {
|
||||||
|
__typename: 'LiquidityProvisionsEdge',
|
||||||
|
node,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return merge(defaultResult, override);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const liquidityProviderFeeShareQuery = (
|
||||||
|
override?: PartialDeep<LiquidityProviderFeeShareQuery>
|
||||||
|
): LiquidityProviderFeeShareQuery => {
|
||||||
|
const defaultResult: LiquidityProviderFeeShareQuery = {
|
||||||
|
market: {
|
||||||
|
id: 'market-0',
|
||||||
|
data: {
|
||||||
|
market: {
|
||||||
|
id: 'market-0',
|
||||||
|
__typename: 'Market',
|
||||||
|
},
|
||||||
|
liquidityProviderFeeShare: [
|
||||||
|
{
|
||||||
|
party: {
|
||||||
|
id: '69464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f',
|
||||||
|
__typename: 'Party',
|
||||||
|
},
|
||||||
|
equityLikeShare: '1',
|
||||||
|
averageEntryValuation: '68585293691.5598054356207737',
|
||||||
|
__typename: 'LiquidityProviderFeeShare',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
party: {
|
||||||
|
id: 'cc464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f',
|
||||||
|
__typename: 'Party',
|
||||||
|
},
|
||||||
|
equityLikeShare: '1',
|
||||||
|
averageEntryValuation: '68585293691.5598054356207737',
|
||||||
|
__typename: 'LiquidityProviderFeeShare',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
__typename: 'MarketData',
|
||||||
|
},
|
||||||
|
__typename: 'Market',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return merge(defaultResult, override);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const liquidityFields: LiquidityProvisionFieldsFragment[] = [
|
||||||
|
{
|
||||||
|
party: {
|
||||||
|
id: '69464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f',
|
||||||
|
accountsConnection: {
|
||||||
|
edges: [
|
||||||
|
{
|
||||||
|
node: {
|
||||||
|
type: Schema.AccountType.ACCOUNT_TYPE_BOND,
|
||||||
|
balance: '400000000',
|
||||||
|
__typename: 'AccountBalance',
|
||||||
|
},
|
||||||
|
__typename: 'AccountEdge',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
__typename: 'AccountsConnection',
|
||||||
|
},
|
||||||
|
__typename: 'Party',
|
||||||
|
},
|
||||||
|
createdAt: '2023-05-15T11:47:15.132571Z',
|
||||||
|
updatedAt: '2023-05-15T11:47:15.132571Z',
|
||||||
|
commitmentAmount: '400000000',
|
||||||
|
fee: '0.0009',
|
||||||
|
status: Schema.LiquidityProvisionStatus.STATUS_ACTIVE,
|
||||||
|
__typename: 'LiquidityProvision',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
party: {
|
||||||
|
id: 'cc464e35bcb8e8a2900ca0f87acaf252d50cf2ab2fc73694845a16b7c8a0dc6f',
|
||||||
|
accountsConnection: {
|
||||||
|
edges: [
|
||||||
|
{
|
||||||
|
node: {
|
||||||
|
type: Schema.AccountType.ACCOUNT_TYPE_BOND,
|
||||||
|
balance: '200000000',
|
||||||
|
__typename: 'AccountBalance',
|
||||||
|
},
|
||||||
|
__typename: 'AccountEdge',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
__typename: 'AccountsConnection',
|
||||||
|
},
|
||||||
|
__typename: 'Party',
|
||||||
|
},
|
||||||
|
createdAt: '2023-05-15T11:47:15.132571Z',
|
||||||
|
updatedAt: '2023-05-15T11:47:15.132571Z',
|
||||||
|
commitmentAmount: '400000000',
|
||||||
|
fee: '0.004',
|
||||||
|
status: Schema.LiquidityProvisionStatus.STATUS_PENDING,
|
||||||
|
__typename: 'LiquidityProvision',
|
||||||
|
},
|
||||||
|
];
|
Loading…
Reference in New Issue
Block a user