@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,114 @@
1
+ export interface ChainDataReplayDeploymentIdentity {
2
+ deploymentId: string;
3
+ chainId: number;
4
+ launchpadAddress: string;
5
+ startBlock: number;
6
+ replayStartBlock: number;
7
+ generation: string;
8
+ }
9
+ export interface ChainDataReplaySnapshot {
10
+ deployment: ChainDataReplayDeploymentIdentity;
11
+ observation: {
12
+ indexedHead: number;
13
+ };
14
+ launch: {
15
+ token: string;
16
+ symbol: string;
17
+ holderCount: number;
18
+ holderCountPartial: boolean;
19
+ totalCanonicalVolumeQuoteWei: string;
20
+ anchoredVolume24hQuoteWei: string;
21
+ };
22
+ pools: ReadonlyArray<{
23
+ address: string;
24
+ poolType: string;
25
+ token0: string;
26
+ token1: string;
27
+ createdBlock: number;
28
+ }>;
29
+ trades: ReadonlyArray<{
30
+ transactionHash: string;
31
+ venue: string;
32
+ blockNumber: number;
33
+ logIndex: number;
34
+ }>;
35
+ ranking: {
36
+ token: string;
37
+ recentVolumeQuoteWei: string;
38
+ rankVolumeQuoteWei: string;
39
+ retainedValueQuoteWei: string;
40
+ holdingsAnchored: boolean;
41
+ partial: boolean;
42
+ };
43
+ excludedHolderAddresses: readonly string[];
44
+ excludedRankingAddresses: readonly string[];
45
+ unregisteredLbPoolCount: number;
46
+ unregisteredLbTradeCount: number;
47
+ }
48
+ /**
49
+ * One replay boundary shared by Foundation readers and Launchpad SDK consumers.
50
+ * The protocol SDK's current transaction release is intentionally not pinned
51
+ * here: write deployments may advance independently of this read projection.
52
+ */
53
+ export declare const ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE: {
54
+ readonly fixtureVersion: 1;
55
+ readonly id: "robinhood-testnet-gen9-gudtek-v1";
56
+ readonly consumers: {
57
+ readonly foundationSdk: "@reptilianhq/foundation-graphql";
58
+ readonly protocolSdk: "@reptilianhq/launch-on-block-sdk";
59
+ readonly 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.";
60
+ };
61
+ readonly readDeployment: {
62
+ readonly deploymentId: "46630:launchpad:0x6993320e82ac53f75eda8a5051ce437c6f3584c5:91383760";
63
+ readonly chainId: 46630;
64
+ readonly launchpadAddress: "0x6993320e82ac53f75eda8a5051ce437c6f3584c5";
65
+ readonly startBlock: 91383760;
66
+ readonly replayStartBlock: 91151034;
67
+ readonly generation: "gen-9";
68
+ };
69
+ readonly observation: {
70
+ readonly indexedHead: 91856981;
71
+ readonly capturedAt: "2026-07-21T01:53:21.087Z";
72
+ readonly evidence: "docs/CHAIN_DATA_GEN9_REPLAY_FIXTURE.md";
73
+ };
74
+ readonly representative: {
75
+ readonly launch: {
76
+ readonly token: "0xe5e103d9fcdbd6dc6e7ba44827866bc97278b10c";
77
+ readonly symbol: "GUDTEK";
78
+ readonly holderCountBeforeLbExclusion: 5;
79
+ readonly holderCountAfterLbExclusion: 4;
80
+ readonly totalCanonicalVolumeQuoteWei: "1331592281784499382";
81
+ readonly anchoredVolume24hQuoteWeiUpperBound: "697451709626310783";
82
+ };
83
+ readonly registeredLbPool: {
84
+ readonly address: "0xb2c34457c4a268588353cbc51a625d39c908e9b4";
85
+ readonly poolType: "lb";
86
+ readonly token0: "0xe5e103d9fcdbd6dc6e7ba44827866bc97278b10c";
87
+ readonly token1: "0x7943e237c7f95da44e0301572d358911207852fa";
88
+ readonly createdBlock: 91697231;
89
+ };
90
+ readonly canonicalTrade: {
91
+ readonly transactionHash: "0x9bad168d0c9694c1d56f4878caf670af167c237c1548fdef214651cb2e6fd8be";
92
+ readonly venue: "amm";
93
+ readonly blockNumber: 91698566;
94
+ readonly logIndex: 6;
95
+ };
96
+ readonly ranking: {
97
+ readonly recentVolumeQuoteWei: "1331592281784499382";
98
+ readonly rankVolumeQuoteWei: "544537530692296134";
99
+ readonly retainedValueQuoteWei: "225945722850564826";
100
+ readonly holdingsAnchored: true;
101
+ readonly partial: false;
102
+ };
103
+ };
104
+ readonly expectations: {
105
+ readonly countOnlyRegisteredLbActivity: true;
106
+ readonly excludeEveryLbPairFromHolderCount: true;
107
+ readonly excludeEveryLbPairFromRetainedRanking: true;
108
+ readonly publicQueriesRequireDeploymentId: true;
109
+ };
110
+ };
111
+ export declare function assertRobinhoodTestnetGen9Deployment(actual: ChainDataReplayDeploymentIdentity): void;
112
+ /** Validate a normalized, observation-block-pinned recount produced by either SDK integration. */
113
+ export declare function assertRobinhoodTestnetGen9ReplaySnapshot(actual: ChainDataReplaySnapshot): void;
114
+ //# sourceMappingURL=replay-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-fixtures.d.ts","sourceRoot":"","sources":["../src/replay-fixtures.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,iCAAiC,CAAC;IAC9C,WAAW,EAAE;QACX,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,4BAA4B,EAAE,MAAM,CAAC;QACrC,yBAAyB,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,KAAK,EAAE,aAAa,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,aAAa,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,MAAM,CAAC;QAC7B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDxC,CAAC;AAwBX,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,iCAAiC,GACxC,IAAI,CAQN;AAED,kGAAkG;AAClG,wBAAgB,wCAAwC,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAmD9F"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * One replay boundary shared by Foundation readers and Launchpad SDK consumers.
3
+ * The protocol SDK's current transaction release is intentionally not pinned
4
+ * here: write deployments may advance independently of this read projection.
5
+ */
6
+ export const ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE = {
7
+ fixtureVersion: 1,
8
+ id: 'robinhood-testnet-gen9-gudtek-v1',
9
+ consumers: {
10
+ foundationSdk: '@reptilianhq/foundation-graphql',
11
+ protocolSdk: '@reptilianhq/launch-on-block-sdk',
12
+ 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.',
13
+ },
14
+ readDeployment: {
15
+ deploymentId: '46630:launchpad:0x6993320e82ac53f75eda8a5051ce437c6f3584c5:91383760',
16
+ chainId: 46630,
17
+ launchpadAddress: '0x6993320e82ac53f75eda8a5051ce437c6f3584c5',
18
+ startBlock: 91383760,
19
+ replayStartBlock: 91151034,
20
+ generation: 'gen-9',
21
+ },
22
+ observation: {
23
+ indexedHead: 91856981,
24
+ capturedAt: '2026-07-21T01:53:21.087Z',
25
+ evidence: 'docs/CHAIN_DATA_GEN9_REPLAY_FIXTURE.md',
26
+ },
27
+ representative: {
28
+ launch: {
29
+ token: '0xe5e103d9fcdbd6dc6e7ba44827866bc97278b10c',
30
+ symbol: 'GUDTEK',
31
+ holderCountBeforeLbExclusion: 5,
32
+ holderCountAfterLbExclusion: 4,
33
+ totalCanonicalVolumeQuoteWei: '1331592281784499382',
34
+ anchoredVolume24hQuoteWeiUpperBound: '697451709626310783',
35
+ },
36
+ registeredLbPool: {
37
+ address: '0xb2c34457c4a268588353cbc51a625d39c908e9b4',
38
+ poolType: 'lb',
39
+ token0: '0xe5e103d9fcdbd6dc6e7ba44827866bc97278b10c',
40
+ token1: '0x7943e237c7f95da44e0301572d358911207852fa',
41
+ createdBlock: 91697231,
42
+ },
43
+ canonicalTrade: {
44
+ transactionHash: '0x9bad168d0c9694c1d56f4878caf670af167c237c1548fdef214651cb2e6fd8be',
45
+ venue: 'amm',
46
+ blockNumber: 91698566,
47
+ logIndex: 6,
48
+ },
49
+ ranking: {
50
+ recentVolumeQuoteWei: '1331592281784499382',
51
+ rankVolumeQuoteWei: '544537530692296134',
52
+ retainedValueQuoteWei: '225945722850564826',
53
+ holdingsAnchored: true,
54
+ partial: false,
55
+ },
56
+ },
57
+ expectations: {
58
+ countOnlyRegisteredLbActivity: true,
59
+ excludeEveryLbPairFromHolderCount: true,
60
+ excludeEveryLbPairFromRetainedRanking: true,
61
+ publicQueriesRequireDeploymentId: true,
62
+ },
63
+ };
64
+ function normalize(value) {
65
+ return value.toLowerCase();
66
+ }
67
+ function fail(field, expected, actual) {
68
+ throw new Error(`Replay fixture mismatch for ${field}: expected ${String(expected)}, received ${String(actual)}`);
69
+ }
70
+ function expectEqual(field, actual, expected) {
71
+ if (actual !== expected)
72
+ fail(field, expected, actual);
73
+ }
74
+ function expectAddress(field, actual, expected) {
75
+ if (normalize(actual) !== normalize(expected))
76
+ fail(field, expected, actual);
77
+ }
78
+ function expectAddressIncluded(field, actual, expected) {
79
+ if (!actual.some((value) => normalize(value) === normalize(expected))) {
80
+ fail(field, `an entry matching ${expected}`, actual.join(', '));
81
+ }
82
+ }
83
+ export function assertRobinhoodTestnetGen9Deployment(actual) {
84
+ const expected = ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE.readDeployment;
85
+ expectEqual('deployment.deploymentId', actual.deploymentId, expected.deploymentId);
86
+ expectEqual('deployment.chainId', actual.chainId, expected.chainId);
87
+ expectAddress('deployment.launchpadAddress', actual.launchpadAddress, expected.launchpadAddress);
88
+ expectEqual('deployment.startBlock', actual.startBlock, expected.startBlock);
89
+ expectEqual('deployment.replayStartBlock', actual.replayStartBlock, expected.replayStartBlock);
90
+ expectEqual('deployment.generation', actual.generation, expected.generation);
91
+ }
92
+ /** Validate a normalized, observation-block-pinned recount produced by either SDK integration. */
93
+ export function assertRobinhoodTestnetGen9ReplaySnapshot(actual) {
94
+ const fixture = ROBINHOOD_TESTNET_GEN9_REPLAY_FIXTURE;
95
+ const expected = fixture.representative;
96
+ assertRobinhoodTestnetGen9Deployment(actual.deployment);
97
+ expectEqual('observation.indexedHead', actual.observation.indexedHead, fixture.observation.indexedHead);
98
+ expectAddress('launch.token', actual.launch.token, expected.launch.token);
99
+ expectEqual('launch.symbol', actual.launch.symbol, expected.launch.symbol);
100
+ expectEqual('launch.holderCount', actual.launch.holderCount, expected.launch.holderCountAfterLbExclusion);
101
+ expectEqual('launch.holderCountPartial', actual.launch.holderCountPartial, false);
102
+ expectEqual('launch.totalCanonicalVolumeQuoteWei', actual.launch.totalCanonicalVolumeQuoteWei, expected.launch.totalCanonicalVolumeQuoteWei);
103
+ if (BigInt(actual.launch.anchoredVolume24hQuoteWei) > BigInt(expected.launch.anchoredVolume24hQuoteWeiUpperBound)) {
104
+ fail('launch.anchoredVolume24hQuoteWei', `at most ${expected.launch.anchoredVolume24hQuoteWeiUpperBound}`, actual.launch.anchoredVolume24hQuoteWei);
105
+ }
106
+ const pool = actual.pools.find((candidate) => (normalize(candidate.address) === normalize(expected.registeredLbPool.address)));
107
+ if (!pool)
108
+ fail('pools', expected.registeredLbPool.address, 'missing');
109
+ expectEqual('registeredLbPool.poolType', pool.poolType, expected.registeredLbPool.poolType);
110
+ expectAddress('registeredLbPool.token0', pool.token0, expected.registeredLbPool.token0);
111
+ expectAddress('registeredLbPool.token1', pool.token1, expected.registeredLbPool.token1);
112
+ expectEqual('registeredLbPool.createdBlock', pool.createdBlock, expected.registeredLbPool.createdBlock);
113
+ const trade = actual.trades.find((candidate) => (normalize(candidate.transactionHash) === normalize(expected.canonicalTrade.transactionHash)));
114
+ if (!trade)
115
+ fail('trades', expected.canonicalTrade.transactionHash, 'missing');
116
+ expectEqual('canonicalTrade.venue', trade.venue, expected.canonicalTrade.venue);
117
+ expectEqual('canonicalTrade.blockNumber', trade.blockNumber, expected.canonicalTrade.blockNumber);
118
+ expectEqual('canonicalTrade.logIndex', trade.logIndex, expected.canonicalTrade.logIndex);
119
+ expectAddress('ranking.token', actual.ranking.token, expected.launch.token);
120
+ expectEqual('ranking.recentVolumeQuoteWei', actual.ranking.recentVolumeQuoteWei, expected.ranking.recentVolumeQuoteWei);
121
+ expectEqual('ranking.rankVolumeQuoteWei', actual.ranking.rankVolumeQuoteWei, expected.ranking.rankVolumeQuoteWei);
122
+ expectEqual('ranking.retainedValueQuoteWei', actual.ranking.retainedValueQuoteWei, expected.ranking.retainedValueQuoteWei);
123
+ expectEqual('ranking.holdingsAnchored', actual.ranking.holdingsAnchored, expected.ranking.holdingsAnchored);
124
+ expectEqual('ranking.partial', actual.ranking.partial, expected.ranking.partial);
125
+ expectAddressIncluded('excludedHolderAddresses', actual.excludedHolderAddresses, expected.registeredLbPool.address);
126
+ expectAddressIncluded('excludedRankingAddresses', actual.excludedRankingAddresses, expected.registeredLbPool.address);
127
+ expectEqual('unregisteredLbPoolCount', actual.unregisteredLbPoolCount, 0);
128
+ expectEqual('unregisteredLbTradeCount', actual.unregisteredLbTradeCount, 0);
129
+ }
130
+ //# sourceMappingURL=replay-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-fixtures.js","sourceRoot":"","sources":["../src/replay-fixtures.ts"],"names":[],"mappings":"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"}