@reptilianhq/chain-data-contract 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,200 @@
1
+ export interface ChainDataReplayDeploymentIdentity {
2
+ deploymentId: string;
3
+ chainId: number;
4
+ launchpadAddress: string;
5
+ startBlock: number;
6
+ replayStartBlock: number;
7
+ generation: string;
8
+ }
9
+
10
+ export interface ChainDataReplaySnapshot {
11
+ deployment: ChainDataReplayDeploymentIdentity;
12
+ observation: {
13
+ indexedHead: number;
14
+ };
15
+ launch: {
16
+ token: string;
17
+ symbol: string;
18
+ holderCount: number;
19
+ holderCountPartial: boolean;
20
+ totalCanonicalVolumeQuoteWei: string;
21
+ anchoredVolume24hQuoteWei: string;
22
+ };
23
+ pools: ReadonlyArray<{
24
+ address: string;
25
+ poolType: string;
26
+ token0: string;
27
+ token1: string;
28
+ createdBlock: number;
29
+ }>;
30
+ trades: ReadonlyArray<{
31
+ transactionHash: string;
32
+ venue: string;
33
+ blockNumber: number;
34
+ logIndex: number;
35
+ }>;
36
+ ranking: {
37
+ token: string;
38
+ recentVolumeQuoteWei: string;
39
+ rankVolumeQuoteWei: string;
40
+ retainedValueQuoteWei: string;
41
+ holdingsAnchored: boolean;
42
+ partial: boolean;
43
+ };
44
+ excludedHolderAddresses: readonly string[];
45
+ excludedRankingAddresses: readonly string[];
46
+ unregisteredLbPoolCount: number;
47
+ unregisteredLbTradeCount: number;
48
+ }
49
+
50
+ /**
51
+ * One replay boundary shared by Foundation readers and Launchpad SDK consumers.
52
+ * The protocol SDK's current transaction release is intentionally not pinned
53
+ * here: write deployments may advance independently of this read projection.
54
+ */
55
+ export const ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE = {
56
+ fixtureVersion: 1,
57
+ id: 'robinhood-testnet-gen9-gudtek-v1',
58
+ consumers: {
59
+ foundationSdk: '@reptilianhq/foundation-graphql',
60
+ protocolSdk: '@reptilianhq/launch-on-block-sdk',
61
+ identityRule: 'Bind readDeployment.deploymentId once when constructing the Foundation client; it is injected into every public query and remains independent from the protocol transaction deployment.',
62
+ },
63
+ readDeployment: {
64
+ deploymentId: '46630:launchpad:0x6993320e82ac53f75eda8a5051ce437c6f3584c5:91383760',
65
+ chainId: 46_630,
66
+ launchpadAddress: '0x6993320e82ac53f75eda8a5051ce437c6f3584c5',
67
+ startBlock: 91_383_760,
68
+ replayStartBlock: 91_151_034,
69
+ generation: 'gen-9',
70
+ },
71
+ observation: {
72
+ indexedHead: 91_856_981,
73
+ capturedAt: '2026-07-21T01:53:21.087Z',
74
+ evidence: 'docs/CHAIN_DATA_GEN9_REPLAY_FIXTURE.md',
75
+ },
76
+ representative: {
77
+ launch: {
78
+ token: '0xe5e103d9fcdbd6dc6e7ba44827866bc97278b10c',
79
+ symbol: 'GUDTEK',
80
+ holderCountBeforeLbExclusion: 5,
81
+ holderCountAfterLbExclusion: 4,
82
+ totalCanonicalVolumeQuoteWei: '1331592281784499382',
83
+ anchoredVolume24hQuoteWeiUpperBound: '697451709626310783',
84
+ },
85
+ registeredLbPool: {
86
+ address: '0xb2c34457c4a268588353cbc51a625d39c908e9b4',
87
+ poolType: 'lb',
88
+ token0: '0xe5e103d9fcdbd6dc6e7ba44827866bc97278b10c',
89
+ token1: '0x7943e237c7f95da44e0301572d358911207852fa',
90
+ createdBlock: 91_697_231,
91
+ },
92
+ canonicalTrade: {
93
+ transactionHash: '0x9bad168d0c9694c1d56f4878caf670af167c237c1548fdef214651cb2e6fd8be',
94
+ venue: 'amm',
95
+ blockNumber: 91_698_566,
96
+ logIndex: 6,
97
+ },
98
+ ranking: {
99
+ recentVolumeQuoteWei: '1331592281784499382',
100
+ rankVolumeQuoteWei: '544537530692296134',
101
+ retainedValueQuoteWei: '225945722850564826',
102
+ holdingsAnchored: true,
103
+ partial: false,
104
+ },
105
+ },
106
+ expectations: {
107
+ countOnlyRegisteredLbActivity: true,
108
+ excludeEveryLbPairFromHolderCount: true,
109
+ excludeEveryLbPairFromRetainedRanking: true,
110
+ publicQueriesRequireDeploymentId: true,
111
+ },
112
+ } as const;
113
+
114
+ function normalize(value: string): string {
115
+ return value.toLowerCase();
116
+ }
117
+
118
+ function fail(field: string, expected: unknown, actual: unknown): never {
119
+ throw new Error(`Replay fixture mismatch for ${field}: expected ${String(expected)}, received ${String(actual)}`);
120
+ }
121
+
122
+ function expectEqual(field: string, actual: unknown, expected: unknown): void {
123
+ if (actual !== expected) fail(field, expected, actual);
124
+ }
125
+
126
+ function expectAddress(field: string, actual: string, expected: string): void {
127
+ if (normalize(actual) !== normalize(expected)) fail(field, expected, actual);
128
+ }
129
+
130
+ function expectAddressIncluded(field: string, actual: readonly string[], expected: string): void {
131
+ if (!actual.some((value) => normalize(value) === normalize(expected))) {
132
+ fail(field, `an entry matching ${expected}`, actual.join(', '));
133
+ }
134
+ }
135
+
136
+ export function assertRobinhoodTestnetGen9Deployment(
137
+ actual: ChainDataReplayDeploymentIdentity,
138
+ ): void {
139
+ const expected = ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE.readDeployment;
140
+ expectEqual('deployment.deploymentId', actual.deploymentId, expected.deploymentId);
141
+ expectEqual('deployment.chainId', actual.chainId, expected.chainId);
142
+ expectAddress('deployment.launchpadAddress', actual.launchpadAddress, expected.launchpadAddress);
143
+ expectEqual('deployment.startBlock', actual.startBlock, expected.startBlock);
144
+ expectEqual('deployment.replayStartBlock', actual.replayStartBlock, expected.replayStartBlock);
145
+ expectEqual('deployment.generation', actual.generation, expected.generation);
146
+ }
147
+
148
+ /** Validate a normalized, observation-block-pinned recount produced by either SDK integration. */
149
+ export function assertRobinhoodTestnetGen9ReplaySnapshot(actual: ChainDataReplaySnapshot): void {
150
+ const fixture = ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE;
151
+ const expected = fixture.representative;
152
+ assertRobinhoodTestnetGen9Deployment(actual.deployment);
153
+ expectEqual('observation.indexedHead', actual.observation.indexedHead, fixture.observation.indexedHead);
154
+
155
+ expectAddress('launch.token', actual.launch.token, expected.launch.token);
156
+ expectEqual('launch.symbol', actual.launch.symbol, expected.launch.symbol);
157
+ expectEqual('launch.holderCount', actual.launch.holderCount, expected.launch.holderCountAfterLbExclusion);
158
+ expectEqual('launch.holderCountPartial', actual.launch.holderCountPartial, false);
159
+ expectEqual(
160
+ 'launch.totalCanonicalVolumeQuoteWei',
161
+ actual.launch.totalCanonicalVolumeQuoteWei,
162
+ expected.launch.totalCanonicalVolumeQuoteWei,
163
+ );
164
+ if (BigInt(actual.launch.anchoredVolume24hQuoteWei) > BigInt(expected.launch.anchoredVolume24hQuoteWeiUpperBound)) {
165
+ fail(
166
+ 'launch.anchoredVolume24hQuoteWei',
167
+ `at most ${expected.launch.anchoredVolume24hQuoteWeiUpperBound}`,
168
+ actual.launch.anchoredVolume24hQuoteWei,
169
+ );
170
+ }
171
+
172
+ const pool = actual.pools.find((candidate) => (
173
+ normalize(candidate.address) === normalize(expected.registeredLbPool.address)
174
+ ));
175
+ if (!pool) fail('pools', expected.registeredLbPool.address, 'missing');
176
+ expectEqual('registeredLbPool.poolType', pool.poolType, expected.registeredLbPool.poolType);
177
+ expectAddress('registeredLbPool.token0', pool.token0, expected.registeredLbPool.token0);
178
+ expectAddress('registeredLbPool.token1', pool.token1, expected.registeredLbPool.token1);
179
+ expectEqual('registeredLbPool.createdBlock', pool.createdBlock, expected.registeredLbPool.createdBlock);
180
+
181
+ const trade = actual.trades.find((candidate) => (
182
+ normalize(candidate.transactionHash) === normalize(expected.canonicalTrade.transactionHash)
183
+ ));
184
+ if (!trade) fail('trades', expected.canonicalTrade.transactionHash, 'missing');
185
+ expectEqual('canonicalTrade.venue', trade.venue, expected.canonicalTrade.venue);
186
+ expectEqual('canonicalTrade.blockNumber', trade.blockNumber, expected.canonicalTrade.blockNumber);
187
+ expectEqual('canonicalTrade.logIndex', trade.logIndex, expected.canonicalTrade.logIndex);
188
+
189
+ expectAddress('ranking.token', actual.ranking.token, expected.launch.token);
190
+ expectEqual('ranking.recentVolumeQuoteWei', actual.ranking.recentVolumeQuoteWei, expected.ranking.recentVolumeQuoteWei);
191
+ expectEqual('ranking.rankVolumeQuoteWei', actual.ranking.rankVolumeQuoteWei, expected.ranking.rankVolumeQuoteWei);
192
+ expectEqual('ranking.retainedValueQuoteWei', actual.ranking.retainedValueQuoteWei, expected.ranking.retainedValueQuoteWei);
193
+ expectEqual('ranking.holdingsAnchored', actual.ranking.holdingsAnchored, expected.ranking.holdingsAnchored);
194
+ expectEqual('ranking.partial', actual.ranking.partial, expected.ranking.partial);
195
+
196
+ expectAddressIncluded('excludedHolderAddresses', actual.excludedHolderAddresses, expected.registeredLbPool.address);
197
+ expectAddressIncluded('excludedRankingAddresses', actual.excludedRankingAddresses, expected.registeredLbPool.address);
198
+ expectEqual('unregisteredLbPoolCount', actual.unregisteredLbPoolCount, 0);
199
+ expectEqual('unregisteredLbTradeCount', actual.unregisteredLbTradeCount, 0);
200
+ }
@@ -0,0 +1,149 @@
1
+ /** Internal type. DO NOT USE DIRECTLY. */
2
+ type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
3
+ /** Internal type. DO NOT USE DIRECTLY. */
4
+ export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
5
+ export type EthUsdPriceSource =
6
+ | 'WETH_USDG_SPOT';
7
+
8
+ export type ExternalMarketProtocol =
9
+ | 'uniswap_v2'
10
+ | 'uniswap_v3'
11
+ | 'uniswap_v4';
12
+
13
+ export type IndexedLaunchPhase =
14
+ | 'bonding'
15
+ | 'graduated';
16
+
17
+ export type LaunchPhase =
18
+ | 'BONDING'
19
+ | 'GRADUATED';
20
+
21
+ export type LaunchProvider =
22
+ | 'launchonblock'
23
+ | 'pons';
24
+
25
+ export type PonsLifecyclePhase =
26
+ | 'bonding'
27
+ | 'pool_created'
28
+ | 'rescued'
29
+ | 'swept';
30
+
31
+ export type PriceVenue =
32
+ | 'ALL'
33
+ | 'CANONICAL';
34
+
35
+ export type TradeSide =
36
+ | 'buy'
37
+ | 'sell';
38
+
39
+ export type TradeVenue =
40
+ | 'amm'
41
+ | 'curve'
42
+ | 'lb';
43
+
44
+ export type LaunchFeedQueryVariables = Exact<{
45
+ deploymentId: string | number;
46
+ phase?: LaunchPhase | null | undefined;
47
+ first: number;
48
+ after?: string | null | undefined;
49
+ }>;
50
+
51
+
52
+ export type LaunchFeedQuery = { launches: { nodes: Array<{ id: string, provider: LaunchProvider, token: string, quoteToken: string, name: string | null, symbol: string | null, creator: string, creatorBps: number, curveFeeBps: number, payoutWallet: string, metadataURI: string, phase: IndexedLaunchPhase, pool: string | null, amountRaisedQuote: { wei: string; decimal: string }, raiseThresholdQuote: { wei: string; decimal: string }, curveProgressPct: string | null, holderCount: number, holderCountPartial: boolean, volume24hQuote: { wei: string; decimal: string }, anchoredVolume24hQuote: { wei: string; decimal: string }, volume24hHoldingsAnchored: boolean, volume24hPartial: boolean, volumeWindowSeconds: number, totalCanonicalVolumeQuote: { wei: string; decimal: string }, totalLbVolumeQuote: { wei: string; decimal: string }, tradeCount: number, lastCanonicalPrice: string | null, lastCanonicalPriceBlock: number | null, createdBlock: number, createdTimestamp: number, graduatedBlock: number | null, graduatedTimestamp: number | null, pons: { lifecyclePhase: PonsLifecyclePhase, curve: string, launchConfigId: string, configSupply: { raw: string; decimal: string }, configEnabledAtLaunchBlock: boolean, curveFeeBps: number, creatorTaxBps: number, buybackEnabled: boolean, buybackController: string | null, poolFeePips: number, tickSpacing: number, creatorFeeRecipient: string, protocolFeeRecipient: string, protocolFeeShareBps: number, buybackBurnBps: number, hookFeeBps: number, maxInternalPriceImpactBps: number, sweptTokens: { raw: string; decimal: string }, sweptAt: string | null, poolPositionId: string | null, rescueRecipient: string | null, rescueTokens: { raw: string; decimal: string } | null, lastUpdatedBlock: string, lastUpdatedAt: string, phantomQuote: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, graduationThreshold: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, sweptQuote: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, rescueQuote: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } | null } | null, amountRaisedQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, raiseThresholdQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, volume24hQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, anchoredVolume24hQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, totalCanonicalVolumeQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, volumeByQuoteAsset: Array<{ tradeCount: number, amount: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, lbVolumeByQuoteAsset: Array<{ tradeCount: number, amount: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }> }>, pageInfo: { endCursor: string | null, hasNextPage: boolean } } };
53
+
54
+ export type LaunchDetailQueryVariables = Exact<{
55
+ deploymentId: string | number;
56
+ token: string;
57
+ }>;
58
+
59
+
60
+ export type LaunchDetailQuery = { launch: { id: string, provider: LaunchProvider, token: string, quoteToken: string, name: string | null, symbol: string | null, creator: string, creatorBps: number, curveFeeBps: number, payoutWallet: string, metadataURI: string, phase: IndexedLaunchPhase, pool: string | null, amountRaisedQuote: { wei: string; decimal: string }, raiseThresholdQuote: { wei: string; decimal: string }, curveProgressPct: string | null, holderCount: number, holderCountPartial: boolean, volume24hQuote: { wei: string; decimal: string }, anchoredVolume24hQuote: { wei: string; decimal: string }, volume24hHoldingsAnchored: boolean, volume24hPartial: boolean, volumeWindowSeconds: number, totalCanonicalVolumeQuote: { wei: string; decimal: string }, totalLbVolumeQuote: { wei: string; decimal: string }, tradeCount: number, lastCanonicalPrice: string | null, lastCanonicalPriceBlock: number | null, createdBlock: number, createdTimestamp: number, graduatedBlock: number | null, graduatedTimestamp: number | null, poolsPartial: boolean, externalMarketsPartial: boolean, pons: { lifecyclePhase: PonsLifecyclePhase, curve: string, launchConfigId: string, configSupply: { raw: string; decimal: string }, configEnabledAtLaunchBlock: boolean, curveFeeBps: number, creatorTaxBps: number, buybackEnabled: boolean, buybackController: string | null, poolFeePips: number, tickSpacing: number, creatorFeeRecipient: string, protocolFeeRecipient: string, protocolFeeShareBps: number, buybackBurnBps: number, hookFeeBps: number, maxInternalPriceImpactBps: number, sweptTokens: { raw: string; decimal: string }, sweptAt: string | null, poolPositionId: string | null, rescueRecipient: string | null, rescueTokens: { raw: string; decimal: string } | null, lastUpdatedBlock: string, lastUpdatedAt: string, phantomQuote: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, graduationThreshold: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, sweptQuote: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, rescueQuote: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } | null } | null, amountRaisedQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, raiseThresholdQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, volume24hQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, anchoredVolume24hQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, totalCanonicalVolumeQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, volumeByQuoteAsset: Array<{ tradeCount: number, amount: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, lbVolumeByQuoteAsset: Array<{ tradeCount: number, amount: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, pools: Array<{ address: string, poolType: string, token0: string, token1: string, quoteIsToken1: boolean, quoteToken: string, ignoredForRouting: boolean, binStep: string | null, reserveToken: { raw: string; decimal: string } | null, reserveQuote: { wei: string; decimal: string } | null, tvlQuote: { wei: string; decimal: string } | null, reserveSource: string, createdBlock: number, lastUpdatedBlock: number, reserveQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } | null, tvlQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } | null }>, externalMarkets: Array<{ id: string, protocol: ExternalMarketProtocol, venueAddress: string, poolAddress: string | null, poolId: string | null, token0: string, token1: string, feePips: number | null, tickSpacing: number | null, hooks: string | null, createdBlock: number, createdTransactionHash: string, createdLogIndex: number }>, supplyDistribution: { originalSupply: { raw: string; decimal: string }, reconciled: boolean, partial: boolean, bondingCurveCustody: { amount: { raw: string; decimal: string }, basisPoints: number }, graduationPoolLiquidity: { amount: { raw: string; decimal: string }, basisPoints: number }, lbLiquidity: { amount: { raw: string; decimal: string }, basisPoints: number }, poolNonLiquidityCustody: { amount: { raw: string; decimal: string }, basisPoints: number }, lockedDead: { amount: { raw: string; decimal: string }, basisPoints: number }, otherProtocolCustody: { amount: { raw: string; decimal: string }, basisPoints: number }, userHeld: { amount: { raw: string; decimal: string }, basisPoints: number } }, recentTrades: Array<{ id: string, venue: TradeVenue, side: TradeSide, sender: string, recipient: string, attributedWallet: string | null, quoteToken: string, quoteAmount: { wei: string; decimal: string }, tokenAmount: { raw: string; decimal: string }, price: string | null, blockNumber: number, blockTimestamp: number, transactionHash: string, logIndex: number, quoteAmountAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, fees: Array<{ id: string, kind: string, economicType: string, pair: string | null, quoteToken: string, creatorTokenAmount: { raw: string; decimal: string }, creatorQuoteAmount: { wei: string; decimal: string }, protocolTokenAmount: { raw: string; decimal: string }, protocolQuoteAmount: { wei: string; decimal: string }, payoutAmount: { wei: string; decimal: string }, payoutStatus: string | null, blockNumber: number, blockTimestamp: number, transactionHash: string, creatorQuoteAmountAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, protocolQuoteAmountAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }> } | null };
61
+
62
+ export type TrendingLaunchesQueryVariables = Exact<{
63
+ deploymentId: string | number;
64
+ first: number;
65
+ }>;
66
+
67
+
68
+ export type TrendingLaunchesQuery = { trendingLaunches: { partial: boolean, minDistinctTraders: number, maxTraderPct: number, holdingsMultiple: number, nodes: Array<{ token: string, name: string | null, symbol: string | null, phase: IndexedLaunchPhase, lastCanonicalPrice: string | null, recentVolumeQuote: { wei: string; decimal: string }, rankVolumeQuote: { wei: string; decimal: string }, retainedValueQuote: { wei: string; decimal: string } | null, holdingsAnchored: boolean, distinctTraders: number, recentTrades: number, changePct: string, windowSeconds: number }> } };
69
+
70
+ export type LaunchPriceSeriesQueryVariables = Exact<{
71
+ deploymentId: string | number;
72
+ token: string;
73
+ venue: PriceVenue;
74
+ first: number;
75
+ after?: string | null | undefined;
76
+ }>;
77
+
78
+
79
+ export type LaunchPriceSeriesQuery = { launchPriceSeries: { nodes: Array<{ cursor: string, timestamp: number, blockNumber: number, price: string | null, volumeQuote: { wei: string; decimal: string }, venue: TradeVenue, side: TradeSide, transactionHash: string, volumeQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, pageInfo: { endCursor: string | null, hasNextPage: boolean } } };
80
+
81
+ export type WalletLaunchPositionsQueryVariables = Exact<{
82
+ deploymentId: string | number;
83
+ wallet: string;
84
+ first: number;
85
+ after?: string | null | undefined;
86
+ }>;
87
+
88
+
89
+ export type WalletLaunchPositionsQuery = { walletLaunchPositions: { wallet: string, partial: boolean, positions: Array<{ token: string, name: string | null, symbol: string | null, phase: IndexedLaunchPhase, balance: { raw: string; decimal: string }, tokenBalance: string, quoteToken: string, valueQuote: { wei: string; decimal: string }, investedQuote: { wei: string; decimal: string }, proceedsQuote: { wei: string; decimal: string }, pnlQuote: { wei: string; decimal: string }, lastCanonicalPrice: string | null, buyCount: number, sellCount: number, valueQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, investedQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, proceedsQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, pnlQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, pageInfo: { endCursor: string | null, hasNextPage: boolean }, totals: { valueQuote: { wei: string; decimal: string }, investedQuote: { wei: string; decimal: string }, proceedsQuote: { wei: string; decimal: string }, pnlQuote: { wei: string; decimal: string } } | null, totalsByQuoteAsset: Array<{ quoteToken: string, valueQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, investedQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, proceedsQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, pnlQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }> | null } };
90
+
91
+ export type PortfolioWalletBalancesQueryVariables = Exact<{
92
+ deploymentId: string | number;
93
+ wallet: string;
94
+ first: number;
95
+ after?: string | null | undefined;
96
+ }>;
97
+
98
+
99
+ export type PortfolioWalletBalancesQuery = { walletLaunchPositions: { wallet: string, partial: boolean, observationWatermark: { sourceWatermark: string, observedAtBlock: string, observedAt: string } | null, positions: Array<{ tokenIdentity: string, token: string, name: string | null, symbol: string | null, decimals: number | null, amountDisplay: string | null, tokenBalance: string, quoteToken: string, sourceWatermark: string, observedAtBlock: string, observedAt: string, lastCanonicalPrice: string | null, lastCanonicalPriceQuoteToken: string | null, lastCanonicalUnitPrice: string | null, lastCanonicalPriceBlock: string | null, lastCanonicalPriceObservedAt: string | null, valueQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, investedQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, proceedsQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null }, pnlQuoteAsset: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, pageInfo: { endCursor: string | null, hasNextPage: boolean } } };
100
+
101
+ export type WalletLiquidityBookPositionsQueryVariables = Exact<{
102
+ deploymentId: string | number;
103
+ wallet: string;
104
+ first: number;
105
+ after?: string | null | undefined;
106
+ }>;
107
+
108
+
109
+ export type WalletLiquidityBookPositionsQuery = { walletLiquidityBookPositions: { wallet: string, partial: boolean, positions: Array<{ poolAddress: string, walletAddress: string, activeBinCount: string, totalReceiptBalance: string, lastUpdatedBlock: string, lastUpdatedBlockHash: string, lastUpdatedTimestamp: string, lastUpdatedTransactionHash: string, pair: { address: string, token0: string, token1: string, binStep: string, activeBinId: string | null, createdBlock: string, lastUpdatedBlock: string } | null }>, pageInfo: { endCursor: string | null, hasNextPage: boolean } } };
110
+
111
+ export type PortfolioWalletLiquidityPositionsQueryVariables = Exact<{
112
+ deploymentId: string | number;
113
+ wallet: string;
114
+ first: number;
115
+ after?: string | null | undefined;
116
+ }>;
117
+
118
+
119
+ export type PortfolioWalletLiquidityPositionsQuery = { walletLiquidityBookPositions: { wallet: string, partial: boolean, observationWatermark: { sourceWatermark: string, observedAtBlock: string, observedAt: string } | null, positions: Array<{ poolAddress: string, walletAddress: string, activeBinCount: string, totalReceiptBalance: string, lastUpdatedBlock: string, lastUpdatedBlockHash: string, lastUpdatedTimestamp: string, lastUpdatedTransactionHash: string, pair: { address: string, token0: string, token1: string, binStep: string, activeBinId: string | null, createdBlock: string, lastUpdatedBlock: string } | null, underlyingAssets: Array<{ tokenIdentity: string, token: string, decimals: number, amountRaw: string, amountDisplay: string, lastCanonicalPrice: string | null, lastCanonicalPriceQuoteToken: string | null, lastCanonicalUnitPrice: string | null, lastCanonicalPriceBlock: string | null, lastCanonicalPriceObservedAt: string | null }> | null }>, pageInfo: { endCursor: string | null, hasNextPage: boolean } } };
120
+
121
+ export type LiquidityBookPositionQueryVariables = Exact<{
122
+ deploymentId: string | number;
123
+ wallet: string;
124
+ pool: string;
125
+ binFirst: number;
126
+ binsAfter?: string | null | undefined;
127
+ }>;
128
+
129
+
130
+ export type LiquidityBookPositionQuery = { liquidityBookPosition: { partial: boolean, position: { poolAddress: string, walletAddress: string, activeBinCount: string, totalReceiptBalance: string, lastUpdatedBlock: string, lastUpdatedBlockHash: string, lastUpdatedTimestamp: string, lastUpdatedTransactionHash: string, pair: { address: string, token0: string, token1: string, binStep: string, activeBinId: string | null, createdBlock: string, lastUpdatedBlock: string } | null }, bins: Array<{ cursor: string, binId: string, receiptBalance: string, lastUpdatedBlock: string, lastUpdatedBlockHash: string, lastUpdatedTimestamp: string, lastUpdatedTransactionHash: string }>, binsPageInfo: { endCursor: string | null, hasNextPage: boolean } } | null };
131
+
132
+ export type ProtocolStatsQueryVariables = Exact<{
133
+ deploymentId: string | number;
134
+ }>;
135
+
136
+
137
+ export type ProtocolStatsQuery = { protocolStats: { launched: number, graduated: number, bonding: number, poolCount: number, tradeCount: number, tvlQuote: { wei: string; decimal: string } | null, tvlPartial: boolean, volumePartial: boolean, totalVolumeQuote: { wei: string; decimal: string } | null, curveVolumeQuote: { wei: string; decimal: string } | null, ammVolumeQuote: { wei: string; decimal: string } | null, lbVolumeQuote: { wei: string; decimal: string } | null, lastIndexedBlock: number, lastUpdatedTimestamp: number, volumeByQuoteAsset: Array<{ tradeCount: number, amount: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }>, lbVolumeByQuoteAsset: Array<{ tradeCount: number, amount: { token: string, symbol: string | null, raw: string, decimals: number | null, decimal: string | null } }> } };
138
+
139
+ export type ChainDataFreshnessQueryVariables = Exact<{
140
+ deploymentId: string | number;
141
+ }>;
142
+
143
+
144
+ export type ChainDataFreshnessQuery = { chainDataFreshness: { deploymentId: string, healthy: boolean, backfilling: boolean, chainId: number, launchpadAddress: string, startBlock: number, chainHead: number, indexedHead: number, sourceHead: number, blockLag: number, configuredBlockLag: number, lastProcessedAt: string | null, hasuraReachable: boolean, rpcReachable: boolean } };
145
+
146
+ export type EthUsdPriceQueryVariables = Exact<{ [key: string]: never; }>;
147
+
148
+
149
+ export type EthUsdPriceQuery = { ethUsdPrice: { price: string, source: EthUsdPriceSource, observedAt: string, observedBlock: string, sourceChainId: number, pair: string, reserveTimestamp: number } };