@reptilianhq/chain-data-contract 0.10.3 → 0.12.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.
@@ -1,6 +1,6 @@
1
1
  /* This file is generated by pnpm --filter @reptilianhq/chain-data-contract generate. */
2
2
 
3
- export const CHAIN_DATA_SCHEMA_SDL = "\"\"\"\nAn EVM address normalized to lowercase by the gateway.\n\"\"\"\nscalar Address\n\n\"\"\"\nAn opaque cursor returned by pageInfo. Consumers must return it unchanged.\n\"\"\"\nscalar Cursor\n\n\"\"\"\nAn exact quote-token amount serialized as { wei: String!, decimal: String! }.\nThe legacy `wei` key contains exact raw base units for the identified quote\nasset, including non-18-decimal ERC-20 assets. Never coerce either value to a\nJavaScript number.\n\"\"\"\nscalar ExactQuoteAmount\n\n\"\"\"\nAn exact launch-token amount serialized as { raw: String!, decimal: String! }.\nNever coerce raw or decimal values to a JavaScript number.\n\"\"\"\nscalar ExactTokenAmount\n\n\"\"\"\nAn exact decimal string. Consumers choose display precision at the UI boundary.\n\"\"\"\nscalar Decimal\n\n\"\"\"An exact amount denominated in one explicit ERC-20 quote asset.\"\"\"\ntype ExactAssetAmount {\n token: Address!\n symbol: String\n raw: String!\n decimals: Int\n decimal: Decimal\n}\n\ntype QuoteAssetVolume {\n amount: ExactAssetAmount!\n tradeCount: Int!\n}\n\nenum PonsLifecyclePhase {\n bonding\n swept\n pool_created\n rescued\n}\n\ntype PonsLaunchState {\n lifecyclePhase: PonsLifecyclePhase!\n curve: Address!\n launchConfigId: String!\n configSupply: ExactTokenAmount!\n phantomQuote: ExactAssetAmount!\n configEnabledAtLaunchBlock: Boolean!\n graduationThreshold: ExactAssetAmount!\n curveFeeBps: Int!\n creatorTaxBps: Int!\n buybackEnabled: Boolean!\n buybackController: Address\n poolFeePips: Int!\n tickSpacing: Int!\n creatorFeeRecipient: Address!\n protocolFeeRecipient: Address!\n protocolFeeShareBps: Int!\n buybackBurnBps: Int!\n hookFeeBps: Int!\n maxInternalPriceImpactBps: Int!\n sweptQuote: ExactAssetAmount!\n sweptTokens: ExactTokenAmount!\n sweptAt: String\n poolPositionId: String\n rescueRecipient: Address\n rescueQuote: ExactAssetAmount\n rescueTokens: ExactTokenAmount\n lastUpdatedBlock: String!\n lastUpdatedAt: String!\n}\n\nenum LaunchPhase {\n BONDING\n GRADUATED\n}\n\nenum PriceVenue {\n CANONICAL\n ALL\n}\n\nenum IndexedLaunchPhase {\n bonding\n graduated\n}\n\nenum TradeVenue {\n curve\n amm\n lb\n}\n\nenum TradeSide {\n buy\n sell\n}\n\ntype PageInfo {\n endCursor: Cursor\n hasNextPage: Boolean!\n}\n\ntype LaunchSummary {\n id: ID!\n provider: LaunchProvider!\n pons: PonsLaunchState\n token: Address!\n quoteToken: Address!\n name: String\n symbol: String\n creator: Address!\n creatorBps: Int!\n curveFeeBps: Int!\n payoutWallet: Address!\n metadataURI: String!\n phase: IndexedLaunchPhase!\n pool: Address\n amountRaisedQuote: ExactQuoteAmount!\n amountRaisedQuoteAsset: ExactAssetAmount!\n raiseThresholdQuote: ExactQuoteAmount!\n raiseThresholdQuoteAsset: ExactAssetAmount!\n curveProgressPct: Decimal\n holderCount: Int!\n holderCountPartial: Boolean!\n volume24hQuote: ExactQuoteAmount!\n volume24hQuoteAsset: ExactAssetAmount!\n anchoredVolume24hQuote: ExactQuoteAmount!\n anchoredVolume24hQuoteAsset: ExactAssetAmount!\n volume24hHoldingsAnchored: Boolean!\n volume24hPartial: Boolean!\n volumeWindowSeconds: Int!\n totalCanonicalVolumeQuote: ExactQuoteAmount!\n totalCanonicalVolumeQuoteAsset: ExactAssetAmount!\n volumeByQuoteAsset: [QuoteAssetVolume!]!\n lbVolumeByQuoteAsset: [QuoteAssetVolume!]!\n \"\"\"Legacy 18-decimal projection. Use lbVolumeByQuoteAsset for LB accounting.\"\"\"\n totalLbVolumeQuote: ExactQuoteAmount!\n tradeCount: Int!\n lastCanonicalPrice: Decimal\n lastCanonicalPriceBlock: Int\n createdBlock: Int!\n createdTimestamp: Int!\n graduatedBlock: Int\n graduatedTimestamp: Int\n}\n\nenum LaunchProvider {\n launchonblock\n pons\n}\n\ntype LaunchConnection {\n nodes: [LaunchSummary!]!\n pageInfo: PageInfo!\n}\n\ntype LaunchPool {\n address: Address!\n poolType: String!\n token0: Address!\n token1: Address!\n quoteIsToken1: Boolean!\n quoteToken: Address!\n ignoredForRouting: Boolean!\n binStep: String\n reserveToken: ExactTokenAmount\n reserveQuote: ExactQuoteAmount\n tvlQuote: ExactQuoteAmount\n reserveQuoteAsset: ExactAssetAmount\n tvlQuoteAsset: ExactAssetAmount\n reserveSource: String!\n createdBlock: Int!\n lastUpdatedBlock: Int!\n}\n\nenum ExternalMarketProtocol {\n uniswap_v2\n uniswap_v3\n uniswap_v4\n}\n\n\"\"\"A Uniswap market whose token0 or token1 is a launch from this exact deployment.\"\"\"\ntype LaunchExternalMarket {\n id: ID!\n protocol: ExternalMarketProtocol!\n \"\"\"The v2/v3 factory or v4 PoolManager that emitted the creation event.\"\"\"\n venueAddress: Address!\n \"\"\"The pair/pool contract for v2/v3. V4 pools live inside PoolManager and have no address.\"\"\"\n poolAddress: Address\n \"\"\"The bytes32 PoolId for v4. Null for address-identified v2/v3 markets.\"\"\"\n poolId: String\n token0: Address!\n token1: Address!\n feePips: Int\n tickSpacing: Int\n hooks: Address\n createdBlock: Int!\n createdTransactionHash: String!\n createdLogIndex: Int!\n}\n\ntype LaunchTrade {\n id: ID!\n venue: TradeVenue!\n side: TradeSide!\n sender: Address!\n recipient: Address!\n attributedWallet: Address\n quoteToken: Address!\n quoteAmount: ExactQuoteAmount!\n quoteAmountAsset: ExactAssetAmount!\n tokenAmount: ExactTokenAmount!\n price: Decimal\n blockNumber: Int!\n blockTimestamp: Int!\n transactionHash: String!\n logIndex: Int!\n}\n\ntype LaunchFeeEvent {\n id: ID!\n kind: String!\n economicType: String!\n pair: Address\n quoteToken: Address!\n creatorTokenAmount: ExactTokenAmount!\n creatorQuoteAmount: ExactQuoteAmount!\n creatorQuoteAmountAsset: ExactAssetAmount!\n protocolTokenAmount: ExactTokenAmount!\n protocolQuoteAmount: ExactQuoteAmount!\n protocolQuoteAmountAsset: ExactAssetAmount!\n payoutAmount: ExactQuoteAmount!\n payoutStatus: String\n blockNumber: Int!\n blockTimestamp: Int!\n transactionHash: String!\n}\n\ntype SupplySlice {\n amount: ExactTokenAmount!\n \"\"\"Floor(amount * 10_000 / originalSupply). Exact raw amounts remain authoritative.\"\"\"\n basisPoints: Int!\n}\n\ntype SupplyDistribution {\n originalSupply: ExactTokenAmount!\n bondingCurveCustody: SupplySlice!\n graduationPoolLiquidity: SupplySlice!\n lbLiquidity: SupplySlice!\n \"\"\"Pool token custody excluded from tradable reserves, including accrued protocol fees.\"\"\"\n poolNonLiquidityCustody: SupplySlice!\n lockedDead: SupplySlice!\n \"\"\"Known Launchpad/Router custody outside the active bonding-curve inventory.\"\"\"\n otherProtocolCustody: SupplySlice!\n \"\"\"All supply outside known protocol and dead-address custody.\"\"\"\n userHeld: SupplySlice!\n reconciled: Boolean!\n partial: Boolean!\n}\n\ntype LaunchDetail {\n id: ID!\n provider: LaunchProvider!\n pons: PonsLaunchState\n token: Address!\n quoteToken: Address!\n name: String\n symbol: String\n creator: Address!\n creatorBps: Int!\n curveFeeBps: Int!\n payoutWallet: Address!\n metadataURI: String!\n phase: IndexedLaunchPhase!\n pool: Address\n amountRaisedQuote: ExactQuoteAmount!\n amountRaisedQuoteAsset: ExactAssetAmount!\n raiseThresholdQuote: ExactQuoteAmount!\n raiseThresholdQuoteAsset: ExactAssetAmount!\n curveProgressPct: Decimal\n holderCount: Int!\n holderCountPartial: Boolean!\n volume24hQuote: ExactQuoteAmount!\n volume24hQuoteAsset: ExactAssetAmount!\n anchoredVolume24hQuote: ExactQuoteAmount!\n anchoredVolume24hQuoteAsset: ExactAssetAmount!\n volume24hHoldingsAnchored: Boolean!\n volume24hPartial: Boolean!\n volumeWindowSeconds: Int!\n totalCanonicalVolumeQuote: ExactQuoteAmount!\n totalCanonicalVolumeQuoteAsset: ExactAssetAmount!\n volumeByQuoteAsset: [QuoteAssetVolume!]!\n lbVolumeByQuoteAsset: [QuoteAssetVolume!]!\n \"\"\"Legacy 18-decimal projection. Use lbVolumeByQuoteAsset for LB accounting.\"\"\"\n totalLbVolumeQuote: ExactQuoteAmount!\n tradeCount: Int!\n lastCanonicalPrice: Decimal\n lastCanonicalPriceBlock: Int\n createdBlock: Int!\n createdTimestamp: Int!\n graduatedBlock: Int\n graduatedTimestamp: Int\n pools: [LaunchPool!]!\n poolsPartial: Boolean!\n externalMarkets: [LaunchExternalMarket!]!\n externalMarketsPartial: Boolean!\n supplyDistribution: SupplyDistribution!\n recentTrades: [LaunchTrade!]!\n fees: [LaunchFeeEvent!]!\n}\n\ntype TrendingLaunch {\n token: Address!\n name: String\n symbol: String\n phase: IndexedLaunchPhase!\n lastCanonicalPrice: Decimal\n recentVolumeQuote: ExactQuoteAmount!\n rankVolumeQuote: ExactQuoteAmount!\n retainedValueQuote: ExactQuoteAmount\n holdingsAnchored: Boolean!\n distinctTraders: Int!\n recentTrades: Int!\n changePct: Decimal!\n windowSeconds: Int!\n}\n\ntype TrendingLaunchResult {\n nodes: [TrendingLaunch!]!\n partial: Boolean!\n minDistinctTraders: Int!\n maxTraderPct: Int!\n holdingsMultiple: Int!\n}\n\ntype LaunchPricePoint {\n cursor: Cursor!\n timestamp: Int!\n blockNumber: Int!\n price: Decimal\n volumeQuote: ExactQuoteAmount!\n volumeQuoteAsset: ExactAssetAmount!\n venue: TradeVenue!\n side: TradeSide!\n transactionHash: String!\n}\n\ntype LaunchPriceSeriesConnection {\n nodes: [LaunchPricePoint!]!\n pageInfo: PageInfo!\n}\n\ntype WalletLaunchPosition {\n \"\"\"CAIP-style chain-local token identity used by portfolio observation consumers.\"\"\"\n tokenIdentity: ID!\n token: Address!\n name: String\n symbol: String\n decimals: Int\n phase: IndexedLaunchPhase!\n balance: ExactTokenAmount!\n \"\"\"Exact display amount when token decimals are known.\"\"\"\n amountDisplay: Decimal\n tokenBalance: String!\n \"\"\"Exact quote asset used by this launch and all quote-denominated position fields.\"\"\"\n quoteToken: Address!\n valueQuote: ExactQuoteAmount!\n valueQuoteAsset: ExactAssetAmount!\n investedQuote: ExactQuoteAmount!\n investedQuoteAsset: ExactAssetAmount!\n proceedsQuote: ExactQuoteAmount!\n proceedsQuoteAsset: ExactAssetAmount!\n pnlQuote: ExactQuoteAmount!\n pnlQuoteAsset: ExactAssetAmount!\n lastCanonicalPrice: Decimal\n \"\"\"Exact ERC-20 quote asset for lastCanonicalPrice; null when price is unavailable.\"\"\"\n lastCanonicalPriceQuoteToken: Address\n \"\"\"Display quote units per display token unit, normalized with both ERC-20 decimal scales.\"\"\"\n lastCanonicalUnitPrice: Decimal\n lastCanonicalPriceBlock: String\n \"\"\"Timestamp of the exact canonical trade that produced lastCanonicalPrice.\"\"\"\n lastCanonicalPriceObservedAt: String\n \"\"\"Deterministic watermark of the indexed wallet balance row.\"\"\"\n sourceWatermark: String!\n observedAtBlock: String!\n observedAt: String!\n buyCount: Int!\n sellCount: Int!\n}\n\ntype WalletLaunchPositionTotals {\n \"\"\"Legacy wrapped-native-only totals. Null when the portfolio contains another quote asset.\"\"\"\n valueQuote: ExactQuoteAmount!\n investedQuote: ExactQuoteAmount!\n proceedsQuote: ExactQuoteAmount!\n pnlQuote: ExactQuoteAmount!\n}\n\ntype WalletLaunchPositionAssetTotals {\n quoteToken: Address!\n valueQuoteAsset: ExactAssetAmount!\n investedQuoteAsset: ExactAssetAmount!\n proceedsQuoteAsset: ExactAssetAmount!\n pnlQuoteAsset: ExactAssetAmount!\n}\n\n\"\"\"Indexer checkpoint observed by the gateway while capturing one bounded page.\"\"\"\ntype PortfolioObservationWatermark {\n sourceWatermark: String!\n observedAtBlock: String!\n observedAt: String!\n}\n\ntype WalletLaunchPositionResult {\n wallet: Address!\n partial: Boolean!\n observationWatermark: PortfolioObservationWatermark\n positions: [WalletLaunchPosition!]!\n pageInfo: PageInfo!\n \"\"\"Legacy wrapped-native totals, withheld for partial scans or portfolios containing another quote asset.\"\"\"\n totals: WalletLaunchPositionTotals\n \"\"\"Complete totals grouped by exact quote asset; null when the totals scan is partial.\"\"\"\n totalsByQuoteAsset: [WalletLaunchPositionAssetTotals!]\n}\n\n\"\"\"An LB pair indexed from the configured factory, whether or not either token belongs to the configured launchpad deployment.\"\"\"\ntype LiquidityBookPair {\n address: Address!\n token0: Address!\n token1: Address!\n binStep: String!\n activeBinId: String\n createdBlock: String!\n lastUpdatedBlock: String!\n}\n\n\"\"\"Event-folded ERC-1155 receipt ownership for one wallet in one LB pair.\"\"\"\ntype LiquidityBookPosition {\n poolAddress: Address!\n walletAddress: Address!\n activeBinCount: String!\n totalReceiptBalance: String!\n lastUpdatedBlock: String!\n lastUpdatedBlockHash: String!\n lastUpdatedTimestamp: String!\n lastUpdatedTransactionHash: String!\n pair: LiquidityBookPair\n \"\"\"Exact checkpoint-bound underlying assets; null unless every active bin is resolved.\"\"\"\n underlyingAssets: [PortfolioUnderlyingAsset!]\n}\n\ntype PortfolioUnderlyingAsset {\n tokenIdentity: ID!\n token: Address!\n decimals: Int!\n amountRaw: String!\n amountDisplay: Decimal!\n lastCanonicalPrice: Decimal\n lastCanonicalPriceQuoteToken: Address\n lastCanonicalUnitPrice: Decimal\n lastCanonicalPriceBlock: String\n lastCanonicalPriceObservedAt: String\n}\n\ntype WalletLiquidityBookPositionResult {\n wallet: Address!\n partial: Boolean!\n observationWatermark: PortfolioObservationWatermark\n positions: [LiquidityBookPosition!]!\n pageInfo: PageInfo!\n}\n\ntype LiquidityBookPositionBin {\n cursor: Cursor!\n binId: String!\n receiptBalance: String!\n lastUpdatedBlock: String!\n lastUpdatedBlockHash: String!\n lastUpdatedTimestamp: String!\n lastUpdatedTransactionHash: String!\n}\n\ntype LiquidityBookPositionDetail {\n position: LiquidityBookPosition!\n bins: [LiquidityBookPositionBin!]!\n binsPageInfo: PageInfo!\n partial: Boolean!\n}\n\ntype ProtocolStats {\n launched: Int!\n graduated: Int!\n bonding: Int!\n poolCount: Int!\n tradeCount: Int!\n tvlQuote: ExactQuoteAmount\n tvlPartial: Boolean!\n volumePartial: Boolean!\n totalVolumeQuote: ExactQuoteAmount\n curveVolumeQuote: ExactQuoteAmount\n ammVolumeQuote: ExactQuoteAmount\n lbVolumeQuote: ExactQuoteAmount\n volumeByQuoteAsset: [QuoteAssetVolume!]!\n lbVolumeByQuoteAsset: [QuoteAssetVolume!]!\n lastIndexedBlock: Int!\n lastUpdatedTimestamp: Int!\n}\n\ntype ChainDataFreshness {\n deploymentId: ID!\n healthy: Boolean!\n backfilling: Boolean!\n chainId: Int!\n launchpadAddress: Address!\n startBlock: Int!\n chainHead: Int!\n indexedHead: Int!\n sourceHead: Int!\n blockLag: Int!\n configuredBlockLag: Int!\n lastProcessedAt: String\n hasuraReachable: Boolean!\n rpcReachable: Boolean!\n}\n\nenum EthUsdPriceSource {\n WETH_USDG_SPOT\n}\n\ntype EthUsdPrice {\n price: Decimal!\n source: EthUsdPriceSource!\n observedAt: String!\n observedBlock: String!\n sourceChainId: Int!\n pair: Address!\n reserveTimestamp: Int!\n}\n\ntype Query {\n launches(deploymentId: ID!, phase: LaunchPhase, first: Int!, after: String): LaunchConnection!\n launch(deploymentId: ID!, token: Address!): LaunchDetail\n trendingLaunches(deploymentId: ID!, first: Int!): TrendingLaunchResult!\n launchPriceSeries(deploymentId: ID!, token: Address!, venue: PriceVenue!, first: Int!, after: String): LaunchPriceSeriesConnection!\n walletLaunchPositions(deploymentId: ID!, wallet: Address!, first: Int!, after: String): WalletLaunchPositionResult!\n walletLiquidityBookPositions(deploymentId: ID!, wallet: Address!, first: Int!, after: String): WalletLiquidityBookPositionResult!\n liquidityBookPosition(deploymentId: ID!, wallet: Address!, pool: Address!, binFirst: Int!, binsAfter: String): LiquidityBookPositionDetail\n protocolStats(deploymentId: ID!): ProtocolStats!\n chainDataFreshness(deploymentId: ID!): ChainDataFreshness!\n ethUsdPrice: EthUsdPrice!\n}\n";
3
+ export const CHAIN_DATA_SCHEMA_SDL = "\"\"\"\nAn EVM address normalized to lowercase by the gateway.\n\"\"\"\nscalar Address\n\n\"\"\"\nAn opaque cursor returned by pageInfo. Consumers must return it unchanged.\n\"\"\"\nscalar Cursor\n\n\"\"\"\nAn exact quote-token amount serialized as { wei: String!, decimal: String! }.\nThe legacy `wei` key contains exact raw base units for the identified quote\nasset, including non-18-decimal ERC-20 assets. Never coerce either value to a\nJavaScript number.\n\"\"\"\nscalar ExactQuoteAmount\n\n\"\"\"\nAn exact launch-token amount serialized as { raw: String!, decimal: String! }.\nNever coerce raw or decimal values to a JavaScript number.\n\"\"\"\nscalar ExactTokenAmount\n\n\"\"\"\nAn exact decimal string. Consumers choose display precision at the UI boundary.\n\"\"\"\nscalar Decimal\n\n\"\"\"An exact amount denominated in one explicit ERC-20 quote asset.\"\"\"\ntype ExactAssetAmount {\n token: Address!\n symbol: String\n raw: String!\n decimals: Int\n decimal: Decimal\n}\n\ntype QuoteAssetVolume {\n amount: ExactAssetAmount!\n tradeCount: Int!\n}\n\nenum PonsLifecyclePhase {\n bonding\n swept\n pool_created\n rescued\n}\n\ntype PonsLaunchState {\n lifecyclePhase: PonsLifecyclePhase!\n curve: Address!\n launchConfigId: String!\n configSupply: ExactTokenAmount!\n phantomQuote: ExactAssetAmount!\n configEnabledAtLaunchBlock: Boolean!\n graduationThreshold: ExactAssetAmount!\n curveFeeBps: Int!\n creatorTaxBps: Int!\n buybackEnabled: Boolean!\n buybackController: Address\n poolFeePips: Int!\n tickSpacing: Int!\n creatorFeeRecipient: Address!\n protocolFeeRecipient: Address!\n protocolFeeShareBps: Int!\n buybackBurnBps: Int!\n hookFeeBps: Int!\n maxInternalPriceImpactBps: Int!\n sweptQuote: ExactAssetAmount!\n sweptTokens: ExactTokenAmount!\n sweptAt: String\n poolPositionId: String\n rescueRecipient: Address\n rescueQuote: ExactAssetAmount\n rescueTokens: ExactTokenAmount\n lastUpdatedBlock: String!\n lastUpdatedAt: String!\n}\n\nenum LaunchPhase {\n BONDING\n GRADUATED\n}\n\nenum IndexedLaunchPhase {\n bonding\n graduated\n}\n\nenum TradeVenue {\n curve\n amm\n lb\n}\n\nenum TradeSide {\n buy\n sell\n}\n\ntype PageInfo {\n endCursor: Cursor\n hasNextPage: Boolean!\n}\n\ntype LaunchSummary {\n id: ID!\n provider: LaunchProvider!\n pons: PonsLaunchState\n token: Address!\n quoteToken: Address!\n name: String\n symbol: String\n creator: Address!\n creatorBps: Int!\n curveFeeBps: Int!\n payoutWallet: Address!\n metadataURI: String!\n phase: IndexedLaunchPhase!\n pool: Address\n amountRaisedQuote: ExactQuoteAmount!\n amountRaisedQuoteAsset: ExactAssetAmount!\n raiseThresholdQuote: ExactQuoteAmount!\n raiseThresholdQuoteAsset: ExactAssetAmount!\n curveProgressPct: Decimal\n holderCount: Int!\n holderCountPartial: Boolean!\n volume24hQuote: ExactQuoteAmount!\n volume24hQuoteAsset: ExactAssetAmount!\n anchoredVolume24hQuote: ExactQuoteAmount!\n anchoredVolume24hQuoteAsset: ExactAssetAmount!\n volume24hHoldingsAnchored: Boolean!\n volume24hPartial: Boolean!\n volumeWindowSeconds: Int!\n totalCanonicalVolumeQuote: ExactQuoteAmount!\n totalCanonicalVolumeQuoteAsset: ExactAssetAmount!\n volumeByQuoteAsset: [QuoteAssetVolume!]!\n lbVolumeByQuoteAsset: [QuoteAssetVolume!]!\n \"\"\"Legacy 18-decimal projection. Use lbVolumeByQuoteAsset for LB accounting.\"\"\"\n totalLbVolumeQuote: ExactQuoteAmount!\n tradeCount: Int!\n lastCanonicalPrice: Decimal\n lastCanonicalPriceBlock: Int\n createdBlock: Int!\n createdTimestamp: Int!\n graduatedBlock: Int\n graduatedTimestamp: Int\n}\n\nenum LaunchProvider {\n launchonblock\n pons\n}\n\ntype LaunchConnection {\n nodes: [LaunchSummary!]!\n pageInfo: PageInfo!\n}\n\ntype LaunchPool {\n address: Address!\n poolType: String!\n token0: Address!\n token1: Address!\n quoteIsToken1: Boolean!\n quoteToken: Address!\n ignoredForRouting: Boolean!\n binStep: String\n reserveToken: ExactTokenAmount\n reserveQuote: ExactQuoteAmount\n tvlQuote: ExactQuoteAmount\n reserveQuoteAsset: ExactAssetAmount\n tvlQuoteAsset: ExactAssetAmount\n reserveSource: String!\n createdBlock: Int!\n lastUpdatedBlock: Int!\n}\n\nenum ExternalMarketProtocol {\n uniswap_v2\n uniswap_v3\n uniswap_v4\n}\n\n\"\"\"A Uniswap market whose token0 or token1 is a launch from this exact deployment.\"\"\"\ntype LaunchExternalMarket {\n id: ID!\n protocol: ExternalMarketProtocol!\n \"\"\"The v2/v3 factory or v4 PoolManager that emitted the creation event.\"\"\"\n venueAddress: Address!\n \"\"\"The pair/pool contract for v2/v3. V4 pools live inside PoolManager and have no address.\"\"\"\n poolAddress: Address\n \"\"\"The bytes32 PoolId for v4. Null for address-identified v2/v3 markets.\"\"\"\n poolId: String\n token0: Address!\n token1: Address!\n feePips: Int\n tickSpacing: Int\n hooks: Address\n createdBlock: Int!\n createdTransactionHash: String!\n createdLogIndex: Int!\n}\n\ntype LaunchTrade {\n id: ID!\n venue: TradeVenue!\n side: TradeSide!\n sender: Address!\n recipient: Address!\n attributedWallet: Address\n quoteToken: Address!\n quoteAmount: ExactQuoteAmount!\n quoteAmountAsset: ExactAssetAmount!\n tokenAmount: ExactTokenAmount!\n price: Decimal\n blockNumber: Int!\n blockTimestamp: Int!\n transactionHash: String!\n logIndex: Int!\n}\n\ntype LaunchFeeEvent {\n id: ID!\n kind: String!\n economicType: String!\n pair: Address\n quoteToken: Address!\n creatorTokenAmount: ExactTokenAmount!\n creatorQuoteAmount: ExactQuoteAmount!\n creatorQuoteAmountAsset: ExactAssetAmount!\n protocolTokenAmount: ExactTokenAmount!\n protocolQuoteAmount: ExactQuoteAmount!\n protocolQuoteAmountAsset: ExactAssetAmount!\n payoutAmount: ExactQuoteAmount!\n payoutStatus: String\n blockNumber: Int!\n blockTimestamp: Int!\n transactionHash: String!\n}\n\ntype SupplySlice {\n amount: ExactTokenAmount!\n \"\"\"Floor(amount * 10_000 / originalSupply). Exact raw amounts remain authoritative.\"\"\"\n basisPoints: Int!\n}\n\ntype SupplyDistribution {\n originalSupply: ExactTokenAmount!\n bondingCurveCustody: SupplySlice!\n graduationPoolLiquidity: SupplySlice!\n lbLiquidity: SupplySlice!\n \"\"\"Pool token custody excluded from tradable reserves, including accrued protocol fees.\"\"\"\n poolNonLiquidityCustody: SupplySlice!\n lockedDead: SupplySlice!\n \"\"\"Known Launchpad/Router custody outside the active bonding-curve inventory.\"\"\"\n otherProtocolCustody: SupplySlice!\n \"\"\"All supply outside known protocol and dead-address custody.\"\"\"\n userHeld: SupplySlice!\n reconciled: Boolean!\n partial: Boolean!\n}\n\ntype LaunchDetail {\n id: ID!\n provider: LaunchProvider!\n pons: PonsLaunchState\n token: Address!\n quoteToken: Address!\n name: String\n symbol: String\n creator: Address!\n creatorBps: Int!\n curveFeeBps: Int!\n payoutWallet: Address!\n metadataURI: String!\n phase: IndexedLaunchPhase!\n pool: Address\n amountRaisedQuote: ExactQuoteAmount!\n amountRaisedQuoteAsset: ExactAssetAmount!\n raiseThresholdQuote: ExactQuoteAmount!\n raiseThresholdQuoteAsset: ExactAssetAmount!\n curveProgressPct: Decimal\n holderCount: Int!\n holderCountPartial: Boolean!\n volume24hQuote: ExactQuoteAmount!\n volume24hQuoteAsset: ExactAssetAmount!\n anchoredVolume24hQuote: ExactQuoteAmount!\n anchoredVolume24hQuoteAsset: ExactAssetAmount!\n volume24hHoldingsAnchored: Boolean!\n volume24hPartial: Boolean!\n volumeWindowSeconds: Int!\n totalCanonicalVolumeQuote: ExactQuoteAmount!\n totalCanonicalVolumeQuoteAsset: ExactAssetAmount!\n volumeByQuoteAsset: [QuoteAssetVolume!]!\n lbVolumeByQuoteAsset: [QuoteAssetVolume!]!\n \"\"\"Legacy 18-decimal projection. Use lbVolumeByQuoteAsset for LB accounting.\"\"\"\n totalLbVolumeQuote: ExactQuoteAmount!\n tradeCount: Int!\n lastCanonicalPrice: Decimal\n lastCanonicalPriceBlock: Int\n createdBlock: Int!\n createdTimestamp: Int!\n graduatedBlock: Int\n graduatedTimestamp: Int\n pools: [LaunchPool!]!\n poolsPartial: Boolean!\n externalMarkets: [LaunchExternalMarket!]!\n externalMarketsPartial: Boolean!\n supplyDistribution: SupplyDistribution!\n recentTrades: [LaunchTrade!]!\n fees: [LaunchFeeEvent!]!\n}\n\ntype TrendingLaunch {\n token: Address!\n name: String\n symbol: String\n phase: IndexedLaunchPhase!\n lastCanonicalPrice: Decimal\n recentVolumeQuote: ExactQuoteAmount!\n rankVolumeQuote: ExactQuoteAmount!\n retainedValueQuote: ExactQuoteAmount\n holdingsAnchored: Boolean!\n distinctTraders: Int!\n recentTrades: Int!\n changePct: Decimal!\n windowSeconds: Int!\n}\n\ntype TrendingLaunchResult {\n nodes: [TrendingLaunch!]!\n partial: Boolean!\n minDistinctTraders: Int!\n maxTraderPct: Int!\n holdingsMultiple: Int!\n}\n\ntype LaunchPricePoint {\n cursor: Cursor!\n timestamp: Int!\n blockNumber: Int!\n price: Decimal\n volumeQuote: ExactQuoteAmount!\n volumeQuoteAsset: ExactAssetAmount!\n venue: TradeVenue!\n side: TradeSide!\n transactionHash: String!\n}\n\ntype LaunchPriceSeriesConnection {\n nodes: [LaunchPricePoint!]!\n pageInfo: PageInfo!\n}\n\ntype WalletLaunchPosition {\n \"\"\"CAIP-style chain-local token identity used by portfolio observation consumers.\"\"\"\n tokenIdentity: ID!\n token: Address!\n name: String\n symbol: String\n decimals: Int\n phase: IndexedLaunchPhase!\n balance: ExactTokenAmount!\n \"\"\"Exact display amount when token decimals are known.\"\"\"\n amountDisplay: Decimal\n tokenBalance: String!\n \"\"\"Exact quote asset used by this launch and all quote-denominated position fields.\"\"\"\n quoteToken: Address!\n valueQuote: ExactQuoteAmount!\n valueQuoteAsset: ExactAssetAmount!\n investedQuote: ExactQuoteAmount!\n investedQuoteAsset: ExactAssetAmount!\n proceedsQuote: ExactQuoteAmount!\n proceedsQuoteAsset: ExactAssetAmount!\n pnlQuote: ExactQuoteAmount!\n pnlQuoteAsset: ExactAssetAmount!\n lastCanonicalPrice: Decimal\n \"\"\"Exact ERC-20 quote asset for lastCanonicalPrice; null when price is unavailable.\"\"\"\n lastCanonicalPriceQuoteToken: Address\n \"\"\"Display quote units per display token unit, normalized with both ERC-20 decimal scales.\"\"\"\n lastCanonicalUnitPrice: Decimal\n lastCanonicalPriceBlock: String\n \"\"\"Timestamp of the exact canonical trade that produced lastCanonicalPrice.\"\"\"\n lastCanonicalPriceObservedAt: String\n \"\"\"Deterministic watermark of the indexed wallet balance row.\"\"\"\n sourceWatermark: String!\n observedAtBlock: String!\n observedAt: String!\n buyCount: Int!\n sellCount: Int!\n}\n\ntype WalletLaunchPositionTotals {\n \"\"\"Legacy wrapped-native-only totals. Null when the portfolio contains another quote asset.\"\"\"\n valueQuote: ExactQuoteAmount!\n investedQuote: ExactQuoteAmount!\n proceedsQuote: ExactQuoteAmount!\n pnlQuote: ExactQuoteAmount!\n}\n\ntype WalletLaunchPositionAssetTotals {\n quoteToken: Address!\n valueQuoteAsset: ExactAssetAmount!\n investedQuoteAsset: ExactAssetAmount!\n proceedsQuoteAsset: ExactAssetAmount!\n pnlQuoteAsset: ExactAssetAmount!\n}\n\n\"\"\"Indexer checkpoint observed by the gateway while capturing one bounded page.\"\"\"\ntype PortfolioObservationWatermark {\n sourceWatermark: String!\n observedAtBlock: String!\n observedAt: String!\n}\n\ntype WalletLaunchPositionResult {\n wallet: Address!\n partial: Boolean!\n observationWatermark: PortfolioObservationWatermark\n positions: [WalletLaunchPosition!]!\n pageInfo: PageInfo!\n \"\"\"Legacy wrapped-native totals, withheld for partial scans or portfolios containing another quote asset.\"\"\"\n totals: WalletLaunchPositionTotals\n \"\"\"Complete totals grouped by exact quote asset; null when the totals scan is partial.\"\"\"\n totalsByQuoteAsset: [WalletLaunchPositionAssetTotals!]\n}\n\n\"\"\"An LB pair indexed from the configured factory, whether or not either token belongs to the configured launchpad deployment.\"\"\"\ntype LiquidityBookPair {\n address: Address!\n token0: Address!\n token1: Address!\n binStep: String!\n activeBinId: String\n createdBlock: String!\n lastUpdatedBlock: String!\n}\n\n\"\"\"Event-folded ERC-1155 receipt ownership for one wallet in one LB pair.\"\"\"\ntype LiquidityBookPosition {\n poolAddress: Address!\n walletAddress: Address!\n activeBinCount: String!\n totalReceiptBalance: String!\n lastUpdatedBlock: String!\n lastUpdatedBlockHash: String!\n lastUpdatedTimestamp: String!\n lastUpdatedTransactionHash: String!\n pair: LiquidityBookPair\n \"\"\"Exact checkpoint-bound underlying assets; null unless every active bin is resolved.\"\"\"\n underlyingAssets: [PortfolioUnderlyingAsset!]\n}\n\ntype PortfolioUnderlyingAsset {\n tokenIdentity: ID!\n token: Address!\n decimals: Int!\n amountRaw: String!\n amountDisplay: Decimal!\n lastCanonicalPrice: Decimal\n lastCanonicalPriceQuoteToken: Address\n lastCanonicalUnitPrice: Decimal\n lastCanonicalPriceBlock: String\n lastCanonicalPriceObservedAt: String\n}\n\ntype WalletLiquidityBookPositionResult {\n wallet: Address!\n partial: Boolean!\n observationWatermark: PortfolioObservationWatermark\n positions: [LiquidityBookPosition!]!\n pageInfo: PageInfo!\n}\n\ntype LiquidityBookPositionBin {\n cursor: Cursor!\n binId: String!\n receiptBalance: String!\n lastUpdatedBlock: String!\n lastUpdatedBlockHash: String!\n lastUpdatedTimestamp: String!\n lastUpdatedTransactionHash: String!\n}\n\ntype LiquidityBookPositionDetail {\n position: LiquidityBookPosition!\n bins: [LiquidityBookPositionBin!]!\n binsPageInfo: PageInfo!\n partial: Boolean!\n}\n\ntype ProtocolStats {\n launched: Int!\n graduated: Int!\n bonding: Int!\n poolCount: Int!\n tradeCount: Int!\n tvlQuote: ExactQuoteAmount\n tvlPartial: Boolean!\n volumePartial: Boolean!\n totalVolumeQuote: ExactQuoteAmount\n curveVolumeQuote: ExactQuoteAmount\n ammVolumeQuote: ExactQuoteAmount\n lbVolumeQuote: ExactQuoteAmount\n volumeByQuoteAsset: [QuoteAssetVolume!]!\n lbVolumeByQuoteAsset: [QuoteAssetVolume!]!\n lastIndexedBlock: Int!\n lastUpdatedTimestamp: Int!\n}\n\ntype ChainDataFreshness {\n deploymentId: ID!\n healthy: Boolean!\n backfilling: Boolean!\n chainId: Int!\n launchpadAddress: Address!\n startBlock: Int!\n chainHead: Int!\n indexedHead: Int!\n sourceHead: Int!\n blockLag: Int!\n configuredBlockLag: Int!\n lastProcessedAt: String\n hasuraReachable: Boolean!\n rpcReachable: Boolean!\n}\n\ntype PortfolioProjectionEvent {\n id: ID!\n kind: String!\n chainId: String!\n wallet: Address!\n blockNumber: String!\n blockHash: String!\n blockTimestamp: String!\n transactionHash: String!\n transactionIndex: String!\n logIndex: String!\n sourceWatermark: String!\n cursor: Cursor!\n}\n\n\"\"\"Canonical-head-bounded invalidation hints; consumers must retain periodic full reconciliation for reorg repair.\"\"\"\ntype PortfolioProjectionEventConnection {\n nodes: [PortfolioProjectionEvent!]!\n pageInfo: PageInfo!\n canonicalBlock: String!\n}\n\nenum EthUsdPriceSource {\n WETH_USDG_SPOT\n}\n\ntype EthUsdPrice {\n price: Decimal!\n source: EthUsdPriceSource!\n observedAt: String!\n observedBlock: String!\n sourceChainId: Int!\n pair: Address!\n reserveTimestamp: Int!\n}\n\ntype ReferencePairMetadata {\n chainId: Int!\n deploymentId: ID!\n protocol: String!\n factory: Address!\n pair: Address!\n token0: Address!\n token1: Address!\n createdBlock: String!\n createdBlockHash: String!\n createdTimestamp: String!\n createdTransactionHash: String!\n}\n\n\"\"\"Current Pons-owned ERC-20 pairing asset, folded from factory events.\"\"\"\ntype PonsPairAsset {\n token: Address!\n approved: Boolean!\n phantomQuote: String\n graduationThreshold: String\n decimals: Int\n updatedBlock: String!\n}\n\ntype Query {\n ponsPairAssets(deploymentId: ID!): [PonsPairAsset!]!\n referencePairMetadata(deploymentId: ID!, pair: Address!): ReferencePairMetadata\n launches(deploymentId: ID!, phase: LaunchPhase, first: Int!, after: String): LaunchConnection!\n launch(deploymentId: ID!, token: Address!): LaunchDetail\n trendingLaunches(deploymentId: ID!, first: Int!): TrendingLaunchResult!\n \"\"\"Authoritative curve and AMM price history. Liquidity Book trades are exposed through venue-specific analytics, not valuation history.\"\"\"\n launchPriceSeries(deploymentId: ID!, token: Address!, first: Int!, after: String): LaunchPriceSeriesConnection!\n walletLaunchPositions(deploymentId: ID!, wallet: Address!, first: Int!, after: String): WalletLaunchPositionResult!\n walletLiquidityBookPositions(deploymentId: ID!, wallet: Address!, first: Int!, after: String): WalletLiquidityBookPositionResult!\n liquidityBookPosition(deploymentId: ID!, wallet: Address!, pool: Address!, binFirst: Int!, binsAfter: String): LiquidityBookPositionDetail\n protocolStats(deploymentId: ID!): ProtocolStats!\n chainDataFreshness(deploymentId: ID!): ChainDataFreshness!\n portfolioProjectionEvents(deploymentId: ID!, first: Int!, after: String): PortfolioProjectionEventConnection!\n ethUsdPrice: EthUsdPrice!\n}\n";
4
4
 
5
5
  export const CHAIN_DATA_OPERATIONS = {
6
6
  "LaunchFeed": {
@@ -28,8 +28,8 @@ export const CHAIN_DATA_OPERATIONS = {
28
28
  "name": "LaunchPriceSeries",
29
29
  "type": "query",
30
30
  "rootField": "launchPriceSeries",
31
- "document": "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}",
32
- "sha256Hash": "424748eceb7edfb4b64fb28e33c29ee9b517f2c9b026b0050ec18778354c5d70"
31
+ "document": "query LaunchPriceSeries($deploymentId: ID!, $token: Address!, $first: Int!, $after: String) {\n launchPriceSeries(deploymentId: $deploymentId, token: $token, 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}",
32
+ "sha256Hash": "a26c7a2e4aa1a386b0fe499b9a661263bfd700e36bf5f7b065e975228c21cbb1"
33
33
  },
34
34
  "WalletLaunchPositions": {
35
35
  "name": "WalletLaunchPositions",
@@ -80,12 +80,33 @@ export const CHAIN_DATA_OPERATIONS = {
80
80
  "document": "query ChainDataFreshness($deploymentId: ID!) {\n chainDataFreshness(deploymentId: $deploymentId) { deploymentId healthy backfilling chainId launchpadAddress startBlock chainHead indexedHead sourceHead blockLag configuredBlockLag lastProcessedAt hasuraReachable rpcReachable }\n}",
81
81
  "sha256Hash": "8eaf5642951345717c009269cc38880998cc4d17c05fd7bff3a78ee37cea1596"
82
82
  },
83
+ "PortfolioProjectionEvents": {
84
+ "name": "PortfolioProjectionEvents",
85
+ "type": "query",
86
+ "rootField": "portfolioProjectionEvents",
87
+ "document": "query PortfolioProjectionEvents($deploymentId: ID!, $first: Int!, $after: String) {\n portfolioProjectionEvents(deploymentId: $deploymentId, first: $first, after: $after) {\n nodes { id kind chainId wallet blockNumber blockHash blockTimestamp transactionHash transactionIndex logIndex sourceWatermark cursor }\n pageInfo { endCursor hasNextPage }\n canonicalBlock\n }\n}",
88
+ "sha256Hash": "d9c94fe7ddb263121e38956a8e6870a5c528e829c461b33154777f27122c803f"
89
+ },
83
90
  "EthUsdPrice": {
84
91
  "name": "EthUsdPrice",
85
92
  "type": "query",
86
93
  "rootField": "ethUsdPrice",
87
94
  "document": "query EthUsdPrice {\n ethUsdPrice { price source observedAt observedBlock sourceChainId pair reserveTimestamp }\n}",
88
95
  "sha256Hash": "0bfa48cc75fef63d384cfa839d346943c14850cb6fdcbe49be6d8bc03d366369"
96
+ },
97
+ "PonsPairAssets": {
98
+ "name": "PonsPairAssets",
99
+ "type": "query",
100
+ "rootField": "ponsPairAssets",
101
+ "document": "query PonsPairAssets($deploymentId: ID!) {\n ponsPairAssets(deploymentId: $deploymentId) { token approved phantomQuote graduationThreshold decimals updatedBlock }\n}",
102
+ "sha256Hash": "7153a9efbe5aa5e65e13fd7d9e508ba5fbce531bb8c67db85470f7a28dbb5bc8"
103
+ },
104
+ "ReferencePairMetadata": {
105
+ "name": "ReferencePairMetadata",
106
+ "type": "query",
107
+ "rootField": "referencePairMetadata",
108
+ "document": "query ReferencePairMetadata($deploymentId: ID!, $pair: Address!) {\n referencePairMetadata(deploymentId: $deploymentId, pair: $pair) {\n chainId\n deploymentId\n protocol\n factory\n pair\n token0\n token1\n createdBlock\n createdBlockHash\n createdTimestamp\n createdTransactionHash\n }\n}",
109
+ "sha256Hash": "183977a18a1dc80a255d91bbd3cc5e3f9fd96050a78a9e462d2cf2caa8d080d0"
89
110
  }
90
111
  } as const;
91
112
 
@@ -93,7 +114,7 @@ export const CHAIN_DATA_OPERATION_IDS = {
93
114
  "LaunchFeed": "e75e122a30258551085c248eabc2a526a6ce0761bba550fdc5d64fb50f7da1f3",
94
115
  "LaunchDetail": "55d8759a6dc2a12d3804ce913326d435eaa0b253dbf2ca399870e962e02211d8",
95
116
  "TrendingLaunches": "bfa72f926cea11d12dd6564dbcbab7d34e1ffd0d59130cc9caf26d45873cfcc9",
96
- "LaunchPriceSeries": "424748eceb7edfb4b64fb28e33c29ee9b517f2c9b026b0050ec18778354c5d70",
117
+ "LaunchPriceSeries": "a26c7a2e4aa1a386b0fe499b9a661263bfd700e36bf5f7b065e975228c21cbb1",
97
118
  "WalletLaunchPositions": "50296690ad4968a8e1fbef342268eb0907ca753b8fd4ab464e5d6c5339e2e800",
98
119
  "PortfolioWalletBalances": "d7a6d20786eef66ddd1211cf97f2e2eba2e445784dc6893ed6f6c4a5d4b511e5",
99
120
  "WalletLiquidityBookPositions": "7aac47e7b94c774421ebdbe4f24130ba885f23384a51892c043b75020b05e358",
@@ -101,7 +122,10 @@ export const CHAIN_DATA_OPERATION_IDS = {
101
122
  "LiquidityBookPosition": "26099c27439338395b45046b0cc5a0604ab5c8deaab7b4154bd1eb6b68b55056",
102
123
  "ProtocolStats": "24199d4d890dd8496286e4bc4853310f5a3f0dfdf0edce06cf21977db8d5c36f",
103
124
  "ChainDataFreshness": "8eaf5642951345717c009269cc38880998cc4d17c05fd7bff3a78ee37cea1596",
104
- "EthUsdPrice": "0bfa48cc75fef63d384cfa839d346943c14850cb6fdcbe49be6d8bc03d366369"
125
+ "PortfolioProjectionEvents": "d9c94fe7ddb263121e38956a8e6870a5c528e829c461b33154777f27122c803f",
126
+ "EthUsdPrice": "0bfa48cc75fef63d384cfa839d346943c14850cb6fdcbe49be6d8bc03d366369",
127
+ "PonsPairAssets": "7153a9efbe5aa5e65e13fd7d9e508ba5fbce531bb8c67db85470f7a28dbb5bc8",
128
+ "ReferencePairMetadata": "183977a18a1dc80a255d91bbd3cc5e3f9fd96050a78a9e462d2cf2caa8d080d0"
105
129
  } as const;
106
130
 
107
131
  export const CHAIN_DATA_PERSISTED_QUERY_MANIFEST = {
@@ -127,8 +151,8 @@ export const CHAIN_DATA_PERSISTED_QUERY_MANIFEST = {
127
151
  "type": "query"
128
152
  },
129
153
  {
130
- "id": "424748eceb7edfb4b64fb28e33c29ee9b517f2c9b026b0050ec18778354c5d70",
131
- "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}",
154
+ "id": "a26c7a2e4aa1a386b0fe499b9a661263bfd700e36bf5f7b065e975228c21cbb1",
155
+ "body": "query LaunchPriceSeries($deploymentId: ID!, $token: Address!, $first: Int!, $after: String) {\n launchPriceSeries(deploymentId: $deploymentId, token: $token, 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}",
132
156
  "name": "LaunchPriceSeries",
133
157
  "type": "query"
134
158
  },
@@ -174,11 +198,29 @@ export const CHAIN_DATA_PERSISTED_QUERY_MANIFEST = {
174
198
  "name": "ChainDataFreshness",
175
199
  "type": "query"
176
200
  },
201
+ {
202
+ "id": "d9c94fe7ddb263121e38956a8e6870a5c528e829c461b33154777f27122c803f",
203
+ "body": "query PortfolioProjectionEvents($deploymentId: ID!, $first: Int!, $after: String) {\n portfolioProjectionEvents(deploymentId: $deploymentId, first: $first, after: $after) {\n nodes { id kind chainId wallet blockNumber blockHash blockTimestamp transactionHash transactionIndex logIndex sourceWatermark cursor }\n pageInfo { endCursor hasNextPage }\n canonicalBlock\n }\n}",
204
+ "name": "PortfolioProjectionEvents",
205
+ "type": "query"
206
+ },
177
207
  {
178
208
  "id": "0bfa48cc75fef63d384cfa839d346943c14850cb6fdcbe49be6d8bc03d366369",
179
209
  "body": "query EthUsdPrice {\n ethUsdPrice { price source observedAt observedBlock sourceChainId pair reserveTimestamp }\n}",
180
210
  "name": "EthUsdPrice",
181
211
  "type": "query"
212
+ },
213
+ {
214
+ "id": "7153a9efbe5aa5e65e13fd7d9e508ba5fbce531bb8c67db85470f7a28dbb5bc8",
215
+ "body": "query PonsPairAssets($deploymentId: ID!) {\n ponsPairAssets(deploymentId: $deploymentId) { token approved phantomQuote graduationThreshold decimals updatedBlock }\n}",
216
+ "name": "PonsPairAssets",
217
+ "type": "query"
218
+ },
219
+ {
220
+ "id": "183977a18a1dc80a255d91bbd3cc5e3f9fd96050a78a9e462d2cf2caa8d080d0",
221
+ "body": "query ReferencePairMetadata($deploymentId: ID!, $pair: Address!) {\n referencePairMetadata(deploymentId: $deploymentId, pair: $pair) {\n chainId\n deploymentId\n protocol\n factory\n pair\n token0\n token1\n createdBlock\n createdBlockHash\n createdTimestamp\n createdTransactionHash\n }\n}",
222
+ "name": "ReferencePairMetadata",
223
+ "type": "query"
182
224
  }
183
225
  ]
184
226
  } as const;
@@ -0,0 +1,11 @@
1
+ /** Reviewed infrastructure pairs; factory events must validate this identity before storage. */
2
+ export const CHAIN_DATA_REFERENCE_PAIRS = [{
3
+ chainId: 4663,
4
+ protocol: 'uniswap_v2',
5
+ factory: '0x8bceaa40b9acdfaedf85adf4ff01f5ad6517937f',
6
+ pair: '0x8803c117ccae7b5146297876c2a25df135141c4d',
7
+ token0: '0x0bd7d308f8e1639fab988df18a8011f41eacad73',
8
+ token1: '0x5fc5360d0400a0fd4f2af552add042d716f1d168',
9
+ }] as const;
10
+
11
+ export const REFERENCE_PAIR_POOL_TYPE = 'uniswap_v2_reference';
@@ -56,7 +56,7 @@ export const ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE = {
56
56
  fixtureVersion: 1,
57
57
  id: 'robinhood-testnet-gen9-gudtek-v1',
58
58
  consumers: {
59
- foundationSdk: '@reptilianhq/foundation-graphql',
59
+ foundationSdk: '@reptilianhq/chain-data-client',
60
60
  protocolSdk: '@reptilianhq/launch-on-block-sdk',
61
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
62
  },
@@ -28,10 +28,6 @@ export type PonsLifecyclePhase =
28
28
  | 'rescued'
29
29
  | 'swept';
30
30
 
31
- export type PriceVenue =
32
- | 'ALL'
33
- | 'CANONICAL';
34
-
35
31
  export type TradeSide =
36
32
  | 'buy'
37
33
  | 'sell';
@@ -70,7 +66,6 @@ export type TrendingLaunchesQuery = { trendingLaunches: { partial: boolean, minD
70
66
  export type LaunchPriceSeriesQueryVariables = Exact<{
71
67
  deploymentId: string | number;
72
68
  token: string;
73
- venue: PriceVenue;
74
69
  first: number;
75
70
  after?: string | null | undefined;
76
71
  }>;
@@ -143,7 +138,31 @@ export type ChainDataFreshnessQueryVariables = Exact<{
143
138
 
144
139
  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
140
 
141
+ export type PortfolioProjectionEventsQueryVariables = Exact<{
142
+ deploymentId: string | number;
143
+ first: number;
144
+ after?: string | null | undefined;
145
+ }>;
146
+
147
+
148
+ export type PortfolioProjectionEventsQuery = { portfolioProjectionEvents: { canonicalBlock: string, nodes: Array<{ id: string, kind: string, chainId: string, wallet: string, blockNumber: string, blockHash: string, blockTimestamp: string, transactionHash: string, transactionIndex: string, logIndex: string, sourceWatermark: string, cursor: string }>, pageInfo: { endCursor: string | null, hasNextPage: boolean } } };
149
+
146
150
  export type EthUsdPriceQueryVariables = Exact<{ [key: string]: never; }>;
147
151
 
148
152
 
149
153
  export type EthUsdPriceQuery = { ethUsdPrice: { price: string, source: EthUsdPriceSource, observedAt: string, observedBlock: string, sourceChainId: number, pair: string, reserveTimestamp: number } };
154
+
155
+ export type PonsPairAssetsQueryVariables = Exact<{
156
+ deploymentId: string | number;
157
+ }>;
158
+
159
+
160
+ export type PonsPairAssetsQuery = { ponsPairAssets: Array<{ token: string, approved: boolean, phantomQuote: string | null, graduationThreshold: string | null, decimals: number | null, updatedBlock: string }> };
161
+
162
+ export type ReferencePairMetadataQueryVariables = Exact<{
163
+ deploymentId: string | number;
164
+ pair: string;
165
+ }>;
166
+
167
+
168
+ export type ReferencePairMetadataQuery = { referencePairMetadata: { chainId: number, deploymentId: string, protocol: string, factory: string, pair: string, token0: string, token1: string, createdBlock: string, createdBlockHash: string, createdTimestamp: string, createdTransactionHash: string } | null };