@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.
package/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # `@reptilianhq/chain-data-contract`
2
+
3
+ Versioned GraphQL contract shared by Reptilian API and read-only consumers of
4
+ the Reptilian chain-data gateway. The package contains no credentials or
5
+ transport policy.
6
+
7
+ It exports:
8
+
9
+ - the public schema SDL;
10
+ - the approved operation documents, names, and SHA-256 persisted-query IDs;
11
+ - the Apollo persisted-query manifest;
12
+ - TypeScript variable and result types generated from every approved operation.
13
+ - the versioned Robinhood testnet gen-9 replay fixture and its normalized
14
+ recount validators.
15
+
16
+ ```ts
17
+ import {
18
+ CHAIN_DATA_OPERATION_IDS,
19
+ type ChainDataOperationData,
20
+ type ChainDataOperationVariables,
21
+ } from '@reptilianhq/chain-data-contract';
22
+ ```
23
+
24
+ The raw artifacts are also available through the `./schema.graphql`,
25
+ `./operations.graphql`, and `./persisted-manifest.json` package exports.
26
+ Consumers should pin an exact version and upgrade atomically with the Reptilian
27
+ API. Publishing a new version does not activate it in any consumer.
28
+
29
+ Quote values are asset-aware across Pons curves, AMMs, LB pools, fees, launch
30
+ summaries, and wallet positions. Prefer `ExactAssetAmount`,
31
+ `volumeByQuoteAsset`, and `totalsByQuoteAsset`: they preserve the quote-token
32
+ address, raw integer, and ERC-20 decimals. Legacy `ExactQuoteAmount` fields are
33
+ retained for older consumers, but callers must use the adjacent quote-token
34
+ identity before interpreting them. Legacy protocol and wallet totals are
35
+ wrapped-native-only and are withheld when they would mix unlike assets.
36
+ Prices are null when quote-token decimals cannot be established safely.
37
+
38
+ Pons launch summaries include a provider-specific `pons` object containing the
39
+ exact factory lifecycle, immutable launch configuration, fee policy, creator
40
+ recipient, buyback terms, sweep evidence, graduated position ID, and rescue
41
+ evidence. Current reserves, claimable balances, and vesting availability remain
42
+ block-pinned RPC authority rather than inferred historical state.
43
+
44
+ `LaunchDetail.supplyDistribution` exposes exact, non-overlapping original-supply custody slices.
45
+ Consumers must treat raw amounts as authoritative and require `reconciled=true` with `partial=false`
46
+ before presenting the result as complete. The gateway fences its custody query between two identical
47
+ indexer checkpoints; an advancing or changed snapshot is deliberately returned as partial.
48
+
49
+ `LaunchDetail.externalMarkets` lists launch-scoped Uniswap v2, v3, and v4 market identities and their
50
+ creation evidence. These records prove initialization only: they are separate from canonical `pools`,
51
+ do not contribute to TVL or price, and carry an explicit partial flag during indexer cutovers.
52
+
53
+ During the coordinated 0.3 to 0.4 rollout, the gateway accepts the legacy 0.3 `LaunchDetail` persisted
54
+ hash but dispatches it through the current resolver. Its JSON is therefore the backward-compatible
55
+ superset shape and can include `supplyDistribution`; legacy clients must tolerate unrequested fields.
56
+
57
+ ## Replay fixture
58
+
59
+ The `./replay-fixtures` export pins the reviewed gen-9 read deployment,
60
+ historical observation boundary, and representative GUDTEK launch, registered
61
+ LB pool, trade, holder recount, and retained-ranking evidence:
62
+
63
+ ```ts
64
+ import {
65
+ ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE,
66
+ assertRobinhoodTestnetGen9ReplaySnapshot,
67
+ } from '@reptilianhq/chain-data-contract/replay-fixtures';
68
+ ```
69
+
70
+ Adapters in either SDK normalize replay results to `ChainDataReplaySnapshot`
71
+ and call the assertion before accepting recount evidence. The assertion
72
+ requires the corrected holder count, explicit LB-pair exclusion from holders
73
+ and ranking, zero unregistered LB activity, and representative exact values.
74
+
75
+ The fixture pins the reviewed read `deploymentId`; it deliberately does not
76
+ pin the Launchpad SDK transaction release. Write deployments can advance
77
+ independently. The eleven launch/indexer operations require
78
+ `readDeployment.deploymentId`; the chain-data client binds it once at
79
+ construction instead of deriving it from the transaction target. The
80
+ deployment-independent `EthUsdPrice` operation reads the reviewed Robinhood
81
+ mainnet WETH/USDG pair and takes no variables.
82
+
83
+ `WalletLiquidityBookPositions` and `LiquidityBookPosition` expose factory-indexed
84
+ LB receipt ownership without joining through `Launch`. This intentionally
85
+ supports live pairs imported from other launchpads. Position discovery is
86
+ paginated by pair and detail bins are paginated separately.
87
+
88
+ `PortfolioWalletBalances` adds stable token identities plus exact amount and
89
+ source-watermark fields for native portfolio capture.
90
+ `PortfolioWalletLiquidityPositions` is a separately bounded receipt-position
91
+ feed. It does not claim that LB receipt balances are underlying-token amounts,
92
+ and the package intentionally publishes no lending operation until the indexer
93
+ can distinguish unsupported coverage from a wallet with zero positions.
94
+
95
+ The package is published publicly to npm from this repository. Consumers pin
96
+ an exact version; no registry configuration or credential is required to
97
+ install it.
98
+
99
+ ```bash
100
+ npm install @reptilianhq/chain-data-contract@0.10.0
101
+ ```
102
+
103
+ Versions published before 0.10.0 remain in the ReptilianHQ GitHub Packages
104
+ version history but are no longer the install path for new consumers.
105
+
106
+ ## Development
107
+
108
+ ```bash
109
+ pnpm --filter @reptilianhq/chain-data-contract generate
110
+ pnpm --filter @reptilianhq/chain-data-contract check
111
+ ```
112
+
113
+ Edit `chain-data-schema.graphql` and `chain-data-operations.json`, regenerate,
114
+ and commit the generated operation document, manifest, persisted-operation
115
+ module, and GraphQL Code Generator result types together.
116
+
117
+ ## Publishing
118
+
119
+ Merging a version change to `main` runs the release workflow from those exact
120
+ reviewed bytes. It verifies main ancestry, creates or confirms the immutable
121
+ `chain-data-contract-v<version>` tag, checks the package, and publishes it to
122
+ the public npm registry via OIDC trusted publishing — no long-lived npm
123
+ token is stored in this repository.
@@ -0,0 +1,98 @@
1
+ query LaunchFeed($deploymentId: ID!, $phase: LaunchPhase, $first: Int!, $after: String) {
2
+ launches(deploymentId: $deploymentId, phase: $phase, first: $first, after: $after) {
3
+ nodes { id provider pons { lifecyclePhase curve launchConfigId configSupply phantomQuote { token symbol raw decimals decimal } configEnabledAtLaunchBlock graduationThreshold { token symbol raw decimals decimal } curveFeeBps creatorTaxBps buybackEnabled buybackController poolFeePips tickSpacing creatorFeeRecipient protocolFeeRecipient protocolFeeShareBps buybackBurnBps hookFeeBps maxInternalPriceImpactBps sweptQuote { token symbol raw decimals decimal } sweptTokens sweptAt poolPositionId rescueRecipient rescueQuote { token symbol raw decimals decimal } rescueTokens lastUpdatedBlock lastUpdatedAt } token quoteToken name symbol creator creatorBps curveFeeBps payoutWallet metadataURI phase pool amountRaisedQuote amountRaisedQuoteAsset { token symbol raw decimals decimal } raiseThresholdQuote raiseThresholdQuoteAsset { token symbol raw decimals decimal } curveProgressPct holderCount holderCountPartial volume24hQuote volume24hQuoteAsset { token symbol raw decimals decimal } anchoredVolume24hQuote anchoredVolume24hQuoteAsset { token symbol raw decimals decimal } volume24hHoldingsAnchored volume24hPartial volumeWindowSeconds totalCanonicalVolumeQuote totalCanonicalVolumeQuoteAsset { token symbol raw decimals decimal } volumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lbVolumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } totalLbVolumeQuote tradeCount lastCanonicalPrice lastCanonicalPriceBlock createdBlock createdTimestamp graduatedBlock graduatedTimestamp }
4
+ pageInfo { endCursor hasNextPage }
5
+ }
6
+ }
7
+
8
+ query LaunchDetail($deploymentId: ID!, $token: Address!) {
9
+ launch(deploymentId: $deploymentId, token: $token) {
10
+ id provider pons { lifecyclePhase curve launchConfigId configSupply phantomQuote { token symbol raw decimals decimal } configEnabledAtLaunchBlock graduationThreshold { token symbol raw decimals decimal } curveFeeBps creatorTaxBps buybackEnabled buybackController poolFeePips tickSpacing creatorFeeRecipient protocolFeeRecipient protocolFeeShareBps buybackBurnBps hookFeeBps maxInternalPriceImpactBps sweptQuote { token symbol raw decimals decimal } sweptTokens sweptAt poolPositionId rescueRecipient rescueQuote { token symbol raw decimals decimal } rescueTokens lastUpdatedBlock lastUpdatedAt } token quoteToken name symbol creator creatorBps curveFeeBps payoutWallet metadataURI phase pool amountRaisedQuote amountRaisedQuoteAsset { token symbol raw decimals decimal } raiseThresholdQuote raiseThresholdQuoteAsset { token symbol raw decimals decimal } curveProgressPct holderCount holderCountPartial volume24hQuote volume24hQuoteAsset { token symbol raw decimals decimal } anchoredVolume24hQuote anchoredVolume24hQuoteAsset { token symbol raw decimals decimal } volume24hHoldingsAnchored volume24hPartial volumeWindowSeconds totalCanonicalVolumeQuote totalCanonicalVolumeQuoteAsset { token symbol raw decimals decimal } volumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lbVolumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } totalLbVolumeQuote tradeCount lastCanonicalPrice lastCanonicalPriceBlock createdBlock createdTimestamp graduatedBlock graduatedTimestamp
11
+ pools { address poolType token0 token1 quoteIsToken1 quoteToken ignoredForRouting binStep reserveToken reserveQuote tvlQuote reserveQuoteAsset { token symbol raw decimals decimal } tvlQuoteAsset { token symbol raw decimals decimal } reserveSource createdBlock lastUpdatedBlock }
12
+ poolsPartial
13
+ externalMarkets { id protocol venueAddress poolAddress poolId token0 token1 feePips tickSpacing hooks createdBlock createdTransactionHash createdLogIndex }
14
+ externalMarketsPartial
15
+ supplyDistribution {
16
+ originalSupply
17
+ bondingCurveCustody { amount basisPoints }
18
+ graduationPoolLiquidity { amount basisPoints }
19
+ lbLiquidity { amount basisPoints }
20
+ poolNonLiquidityCustody { amount basisPoints }
21
+ lockedDead { amount basisPoints }
22
+ otherProtocolCustody { amount basisPoints }
23
+ userHeld { amount basisPoints }
24
+ reconciled partial
25
+ }
26
+ recentTrades { id venue side sender recipient attributedWallet quoteToken quoteAmount quoteAmountAsset { token symbol raw decimals decimal } tokenAmount price blockNumber blockTimestamp transactionHash logIndex }
27
+ fees { id kind economicType pair quoteToken creatorTokenAmount creatorQuoteAmount creatorQuoteAmountAsset { token symbol raw decimals decimal } protocolTokenAmount protocolQuoteAmount protocolQuoteAmountAsset { token symbol raw decimals decimal } payoutAmount payoutStatus blockNumber blockTimestamp transactionHash }
28
+ }
29
+ }
30
+
31
+ query TrendingLaunches($deploymentId: ID!, $first: Int!) {
32
+ trendingLaunches(deploymentId: $deploymentId, first: $first) {
33
+ nodes { token name symbol phase lastCanonicalPrice recentVolumeQuote rankVolumeQuote retainedValueQuote holdingsAnchored distinctTraders recentTrades changePct windowSeconds }
34
+ partial minDistinctTraders maxTraderPct holdingsMultiple
35
+ }
36
+ }
37
+
38
+ query LaunchPriceSeries($deploymentId: ID!, $token: Address!, $venue: PriceVenue!, $first: Int!, $after: String) {
39
+ launchPriceSeries(deploymentId: $deploymentId, token: $token, venue: $venue, first: $first, after: $after) {
40
+ nodes { cursor timestamp blockNumber price volumeQuote volumeQuoteAsset { token symbol raw decimals decimal } venue side transactionHash }
41
+ pageInfo { endCursor hasNextPage }
42
+ }
43
+ }
44
+
45
+ query WalletLaunchPositions($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {
46
+ walletLaunchPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {
47
+ wallet partial
48
+ positions { token name symbol phase balance tokenBalance quoteToken valueQuote valueQuoteAsset { token symbol raw decimals decimal } investedQuote investedQuoteAsset { token symbol raw decimals decimal } proceedsQuote proceedsQuoteAsset { token symbol raw decimals decimal } pnlQuote pnlQuoteAsset { token symbol raw decimals decimal } lastCanonicalPrice buyCount sellCount }
49
+ pageInfo { endCursor hasNextPage }
50
+ totals { valueQuote investedQuote proceedsQuote pnlQuote }
51
+ totalsByQuoteAsset { quoteToken valueQuoteAsset { token symbol raw decimals decimal } investedQuoteAsset { token symbol raw decimals decimal } proceedsQuoteAsset { token symbol raw decimals decimal } pnlQuoteAsset { token symbol raw decimals decimal } }
52
+ }
53
+ }
54
+
55
+ query PortfolioWalletBalances($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {
56
+ walletLaunchPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {
57
+ wallet partial observationWatermark { sourceWatermark observedAtBlock observedAt }
58
+ positions { tokenIdentity token name symbol decimals amountDisplay tokenBalance quoteToken valueQuoteAsset { token symbol raw decimals decimal } investedQuoteAsset { token symbol raw decimals decimal } proceedsQuoteAsset { token symbol raw decimals decimal } pnlQuoteAsset { token symbol raw decimals decimal } sourceWatermark observedAtBlock observedAt lastCanonicalPrice lastCanonicalPriceQuoteToken lastCanonicalUnitPrice lastCanonicalPriceBlock lastCanonicalPriceObservedAt }
59
+ pageInfo { endCursor hasNextPage }
60
+ }
61
+ }
62
+
63
+ query WalletLiquidityBookPositions($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {
64
+ walletLiquidityBookPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {
65
+ wallet partial
66
+ positions { poolAddress walletAddress activeBinCount totalReceiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash pair { address token0 token1 binStep activeBinId createdBlock lastUpdatedBlock } }
67
+ pageInfo { endCursor hasNextPage }
68
+ }
69
+ }
70
+
71
+ query PortfolioWalletLiquidityPositions($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {
72
+ walletLiquidityBookPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {
73
+ wallet partial observationWatermark { sourceWatermark observedAtBlock observedAt }
74
+ positions { poolAddress walletAddress activeBinCount totalReceiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash pair { address token0 token1 binStep activeBinId createdBlock lastUpdatedBlock } underlyingAssets { tokenIdentity token decimals amountRaw amountDisplay lastCanonicalPrice lastCanonicalPriceQuoteToken lastCanonicalUnitPrice lastCanonicalPriceBlock lastCanonicalPriceObservedAt } }
75
+ pageInfo { endCursor hasNextPage }
76
+ }
77
+ }
78
+
79
+ query LiquidityBookPosition($deploymentId: ID!, $wallet: Address!, $pool: Address!, $binFirst: Int!, $binsAfter: String) {
80
+ liquidityBookPosition(deploymentId: $deploymentId, wallet: $wallet, pool: $pool, binFirst: $binFirst, binsAfter: $binsAfter) {
81
+ position { poolAddress walletAddress activeBinCount totalReceiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash pair { address token0 token1 binStep activeBinId createdBlock lastUpdatedBlock } }
82
+ bins { cursor binId receiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash }
83
+ binsPageInfo { endCursor hasNextPage }
84
+ partial
85
+ }
86
+ }
87
+
88
+ query ProtocolStats($deploymentId: ID!) {
89
+ protocolStats(deploymentId: $deploymentId) { launched graduated bonding poolCount tradeCount tvlQuote tvlPartial volumePartial totalVolumeQuote curveVolumeQuote ammVolumeQuote lbVolumeQuote volumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lbVolumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lastIndexedBlock lastUpdatedTimestamp }
90
+ }
91
+
92
+ query ChainDataFreshness($deploymentId: ID!) {
93
+ chainDataFreshness(deploymentId: $deploymentId) { deploymentId healthy backfilling chainId launchpadAddress startBlock chainHead indexedHead sourceHead blockLag configuredBlockLag lastProcessedAt hasuraReachable rpcReachable }
94
+ }
95
+
96
+ query EthUsdPrice {
97
+ ethUsdPrice { price source observedAt observedBlock sourceChainId pair reserveTimestamp }
98
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "format": "apollo-persisted-query-manifest",
3
+ "version": 1,
4
+ "operations": [
5
+ {
6
+ "id": "e75e122a30258551085c248eabc2a526a6ce0761bba550fdc5d64fb50f7da1f3",
7
+ "body": "query LaunchFeed($deploymentId: ID!, $phase: LaunchPhase, $first: Int!, $after: String) {\n launches(deploymentId: $deploymentId, phase: $phase, first: $first, after: $after) {\n nodes { id provider pons { lifecyclePhase curve launchConfigId configSupply phantomQuote { token symbol raw decimals decimal } configEnabledAtLaunchBlock graduationThreshold { token symbol raw decimals decimal } curveFeeBps creatorTaxBps buybackEnabled buybackController poolFeePips tickSpacing creatorFeeRecipient protocolFeeRecipient protocolFeeShareBps buybackBurnBps hookFeeBps maxInternalPriceImpactBps sweptQuote { token symbol raw decimals decimal } sweptTokens sweptAt poolPositionId rescueRecipient rescueQuote { token symbol raw decimals decimal } rescueTokens lastUpdatedBlock lastUpdatedAt } token quoteToken name symbol creator creatorBps curveFeeBps payoutWallet metadataURI phase pool amountRaisedQuote amountRaisedQuoteAsset { token symbol raw decimals decimal } raiseThresholdQuote raiseThresholdQuoteAsset { token symbol raw decimals decimal } curveProgressPct holderCount holderCountPartial volume24hQuote volume24hQuoteAsset { token symbol raw decimals decimal } anchoredVolume24hQuote anchoredVolume24hQuoteAsset { token symbol raw decimals decimal } volume24hHoldingsAnchored volume24hPartial volumeWindowSeconds totalCanonicalVolumeQuote totalCanonicalVolumeQuoteAsset { token symbol raw decimals decimal } volumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lbVolumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } totalLbVolumeQuote tradeCount lastCanonicalPrice lastCanonicalPriceBlock createdBlock createdTimestamp graduatedBlock graduatedTimestamp }\n pageInfo { endCursor hasNextPage }\n }\n}",
8
+ "name": "LaunchFeed",
9
+ "type": "query"
10
+ },
11
+ {
12
+ "id": "55d8759a6dc2a12d3804ce913326d435eaa0b253dbf2ca399870e962e02211d8",
13
+ "body": "query LaunchDetail($deploymentId: ID!, $token: Address!) {\n launch(deploymentId: $deploymentId, token: $token) {\n id provider pons { lifecyclePhase curve launchConfigId configSupply phantomQuote { token symbol raw decimals decimal } configEnabledAtLaunchBlock graduationThreshold { token symbol raw decimals decimal } curveFeeBps creatorTaxBps buybackEnabled buybackController poolFeePips tickSpacing creatorFeeRecipient protocolFeeRecipient protocolFeeShareBps buybackBurnBps hookFeeBps maxInternalPriceImpactBps sweptQuote { token symbol raw decimals decimal } sweptTokens sweptAt poolPositionId rescueRecipient rescueQuote { token symbol raw decimals decimal } rescueTokens lastUpdatedBlock lastUpdatedAt } token quoteToken name symbol creator creatorBps curveFeeBps payoutWallet metadataURI phase pool amountRaisedQuote amountRaisedQuoteAsset { token symbol raw decimals decimal } raiseThresholdQuote raiseThresholdQuoteAsset { token symbol raw decimals decimal } curveProgressPct holderCount holderCountPartial volume24hQuote volume24hQuoteAsset { token symbol raw decimals decimal } anchoredVolume24hQuote anchoredVolume24hQuoteAsset { token symbol raw decimals decimal } volume24hHoldingsAnchored volume24hPartial volumeWindowSeconds totalCanonicalVolumeQuote totalCanonicalVolumeQuoteAsset { token symbol raw decimals decimal } volumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lbVolumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } totalLbVolumeQuote tradeCount lastCanonicalPrice lastCanonicalPriceBlock createdBlock createdTimestamp graduatedBlock graduatedTimestamp\n pools { address poolType token0 token1 quoteIsToken1 quoteToken ignoredForRouting binStep reserveToken reserveQuote tvlQuote reserveQuoteAsset { token symbol raw decimals decimal } tvlQuoteAsset { token symbol raw decimals decimal } reserveSource createdBlock lastUpdatedBlock }\n poolsPartial\n externalMarkets { id protocol venueAddress poolAddress poolId token0 token1 feePips tickSpacing hooks createdBlock createdTransactionHash createdLogIndex }\n externalMarketsPartial\n supplyDistribution {\n originalSupply\n bondingCurveCustody { amount basisPoints }\n graduationPoolLiquidity { amount basisPoints }\n lbLiquidity { amount basisPoints }\n poolNonLiquidityCustody { amount basisPoints }\n lockedDead { amount basisPoints }\n otherProtocolCustody { amount basisPoints }\n userHeld { amount basisPoints }\n reconciled partial\n }\n recentTrades { id venue side sender recipient attributedWallet quoteToken quoteAmount quoteAmountAsset { token symbol raw decimals decimal } tokenAmount price blockNumber blockTimestamp transactionHash logIndex }\n fees { id kind economicType pair quoteToken creatorTokenAmount creatorQuoteAmount creatorQuoteAmountAsset { token symbol raw decimals decimal } protocolTokenAmount protocolQuoteAmount protocolQuoteAmountAsset { token symbol raw decimals decimal } payoutAmount payoutStatus blockNumber blockTimestamp transactionHash }\n }\n}",
14
+ "name": "LaunchDetail",
15
+ "type": "query"
16
+ },
17
+ {
18
+ "id": "bfa72f926cea11d12dd6564dbcbab7d34e1ffd0d59130cc9caf26d45873cfcc9",
19
+ "body": "query TrendingLaunches($deploymentId: ID!, $first: Int!) {\n trendingLaunches(deploymentId: $deploymentId, first: $first) {\n nodes { token name symbol phase lastCanonicalPrice recentVolumeQuote rankVolumeQuote retainedValueQuote holdingsAnchored distinctTraders recentTrades changePct windowSeconds }\n partial minDistinctTraders maxTraderPct holdingsMultiple\n }\n}",
20
+ "name": "TrendingLaunches",
21
+ "type": "query"
22
+ },
23
+ {
24
+ "id": "424748eceb7edfb4b64fb28e33c29ee9b517f2c9b026b0050ec18778354c5d70",
25
+ "body": "query LaunchPriceSeries($deploymentId: ID!, $token: Address!, $venue: PriceVenue!, $first: Int!, $after: String) {\n launchPriceSeries(deploymentId: $deploymentId, token: $token, venue: $venue, first: $first, after: $after) {\n nodes { cursor timestamp blockNumber price volumeQuote volumeQuoteAsset { token symbol raw decimals decimal } venue side transactionHash }\n pageInfo { endCursor hasNextPage }\n }\n}",
26
+ "name": "LaunchPriceSeries",
27
+ "type": "query"
28
+ },
29
+ {
30
+ "id": "50296690ad4968a8e1fbef342268eb0907ca753b8fd4ab464e5d6c5339e2e800",
31
+ "body": "query WalletLaunchPositions($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {\n walletLaunchPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {\n wallet partial\n positions { token name symbol phase balance tokenBalance quoteToken valueQuote valueQuoteAsset { token symbol raw decimals decimal } investedQuote investedQuoteAsset { token symbol raw decimals decimal } proceedsQuote proceedsQuoteAsset { token symbol raw decimals decimal } pnlQuote pnlQuoteAsset { token symbol raw decimals decimal } lastCanonicalPrice buyCount sellCount }\n pageInfo { endCursor hasNextPage }\n totals { valueQuote investedQuote proceedsQuote pnlQuote }\n totalsByQuoteAsset { quoteToken valueQuoteAsset { token symbol raw decimals decimal } investedQuoteAsset { token symbol raw decimals decimal } proceedsQuoteAsset { token symbol raw decimals decimal } pnlQuoteAsset { token symbol raw decimals decimal } }\n }\n}",
32
+ "name": "WalletLaunchPositions",
33
+ "type": "query"
34
+ },
35
+ {
36
+ "id": "d7a6d20786eef66ddd1211cf97f2e2eba2e445784dc6893ed6f6c4a5d4b511e5",
37
+ "body": "query PortfolioWalletBalances($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {\n walletLaunchPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {\n wallet partial observationWatermark { sourceWatermark observedAtBlock observedAt }\n positions { tokenIdentity token name symbol decimals amountDisplay tokenBalance quoteToken valueQuoteAsset { token symbol raw decimals decimal } investedQuoteAsset { token symbol raw decimals decimal } proceedsQuoteAsset { token symbol raw decimals decimal } pnlQuoteAsset { token symbol raw decimals decimal } sourceWatermark observedAtBlock observedAt lastCanonicalPrice lastCanonicalPriceQuoteToken lastCanonicalUnitPrice lastCanonicalPriceBlock lastCanonicalPriceObservedAt }\n pageInfo { endCursor hasNextPage }\n }\n}",
38
+ "name": "PortfolioWalletBalances",
39
+ "type": "query"
40
+ },
41
+ {
42
+ "id": "7aac47e7b94c774421ebdbe4f24130ba885f23384a51892c043b75020b05e358",
43
+ "body": "query WalletLiquidityBookPositions($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {\n walletLiquidityBookPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {\n wallet partial\n positions { poolAddress walletAddress activeBinCount totalReceiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash pair { address token0 token1 binStep activeBinId createdBlock lastUpdatedBlock } }\n pageInfo { endCursor hasNextPage }\n }\n}",
44
+ "name": "WalletLiquidityBookPositions",
45
+ "type": "query"
46
+ },
47
+ {
48
+ "id": "f41113a529249e6a0a2eceeda185a443ac920b569c36fbfb56cf17eac086da83",
49
+ "body": "query PortfolioWalletLiquidityPositions($deploymentId: ID!, $wallet: Address!, $first: Int!, $after: String) {\n walletLiquidityBookPositions(deploymentId: $deploymentId, wallet: $wallet, first: $first, after: $after) {\n wallet partial observationWatermark { sourceWatermark observedAtBlock observedAt }\n positions { poolAddress walletAddress activeBinCount totalReceiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash pair { address token0 token1 binStep activeBinId createdBlock lastUpdatedBlock } underlyingAssets { tokenIdentity token decimals amountRaw amountDisplay lastCanonicalPrice lastCanonicalPriceQuoteToken lastCanonicalUnitPrice lastCanonicalPriceBlock lastCanonicalPriceObservedAt } }\n pageInfo { endCursor hasNextPage }\n }\n}",
50
+ "name": "PortfolioWalletLiquidityPositions",
51
+ "type": "query"
52
+ },
53
+ {
54
+ "id": "26099c27439338395b45046b0cc5a0604ab5c8deaab7b4154bd1eb6b68b55056",
55
+ "body": "query LiquidityBookPosition($deploymentId: ID!, $wallet: Address!, $pool: Address!, $binFirst: Int!, $binsAfter: String) {\n liquidityBookPosition(deploymentId: $deploymentId, wallet: $wallet, pool: $pool, binFirst: $binFirst, binsAfter: $binsAfter) {\n position { poolAddress walletAddress activeBinCount totalReceiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash pair { address token0 token1 binStep activeBinId createdBlock lastUpdatedBlock } }\n bins { cursor binId receiptBalance lastUpdatedBlock lastUpdatedBlockHash lastUpdatedTimestamp lastUpdatedTransactionHash }\n binsPageInfo { endCursor hasNextPage }\n partial\n }\n}",
56
+ "name": "LiquidityBookPosition",
57
+ "type": "query"
58
+ },
59
+ {
60
+ "id": "24199d4d890dd8496286e4bc4853310f5a3f0dfdf0edce06cf21977db8d5c36f",
61
+ "body": "query ProtocolStats($deploymentId: ID!) {\n protocolStats(deploymentId: $deploymentId) { launched graduated bonding poolCount tradeCount tvlQuote tvlPartial volumePartial totalVolumeQuote curveVolumeQuote ammVolumeQuote lbVolumeQuote volumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lbVolumeByQuoteAsset { amount { token symbol raw decimals decimal } tradeCount } lastIndexedBlock lastUpdatedTimestamp }\n}",
62
+ "name": "ProtocolStats",
63
+ "type": "query"
64
+ },
65
+ {
66
+ "id": "8eaf5642951345717c009269cc38880998cc4d17c05fd7bff3a78ee37cea1596",
67
+ "body": "query ChainDataFreshness($deploymentId: ID!) {\n chainDataFreshness(deploymentId: $deploymentId) { deploymentId healthy backfilling chainId launchpadAddress startBlock chainHead indexedHead sourceHead blockLag configuredBlockLag lastProcessedAt hasuraReachable rpcReachable }\n}",
68
+ "name": "ChainDataFreshness",
69
+ "type": "query"
70
+ },
71
+ {
72
+ "id": "0bfa48cc75fef63d384cfa839d346943c14850cb6fdcbe49be6d8bc03d366369",
73
+ "body": "query EthUsdPrice {\n ethUsdPrice { price source observedAt observedBlock sourceChainId pair reserveTimestamp }\n}",
74
+ "name": "EthUsdPrice",
75
+ "type": "query"
76
+ }
77
+ ]
78
+ }