@subsquid/solana-stream 0.0.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.
Files changed (77) hide show
  1. package/README.md +4 -0
  2. package/lib/archive/schema.d.ts +167 -0
  3. package/lib/archive/schema.d.ts.map +1 -0
  4. package/lib/archive/schema.js +117 -0
  5. package/lib/archive/schema.js.map +1 -0
  6. package/lib/archive/source.d.ts +15 -0
  7. package/lib/archive/source.d.ts.map +1 -0
  8. package/lib/archive/source.js +98 -0
  9. package/lib/archive/source.js.map +1 -0
  10. package/lib/data/fields.d.ts +8 -0
  11. package/lib/data/fields.d.ts.map +1 -0
  12. package/lib/data/fields.js +47 -0
  13. package/lib/data/fields.js.map +1 -0
  14. package/lib/data/model.d.ts +79 -0
  15. package/lib/data/model.d.ts.map +1 -0
  16. package/lib/data/model.js +44 -0
  17. package/lib/data/model.js.map +1 -0
  18. package/lib/data/partial.d.ts +26 -0
  19. package/lib/data/partial.d.ts.map +1 -0
  20. package/lib/data/partial.js +3 -0
  21. package/lib/data/partial.js.map +1 -0
  22. package/lib/data/request.d.ts +104 -0
  23. package/lib/data/request.d.ts.map +1 -0
  24. package/lib/data/request.js +3 -0
  25. package/lib/data/request.js.map +1 -0
  26. package/lib/data/type-util.d.ts +20 -0
  27. package/lib/data/type-util.d.ts.map +1 -0
  28. package/lib/data/type-util.js +3 -0
  29. package/lib/data/type-util.js.map +1 -0
  30. package/lib/index.d.ts +5 -0
  31. package/lib/index.d.ts.map +1 -0
  32. package/lib/index.js +21 -0
  33. package/lib/index.js.map +1 -0
  34. package/lib/instruction.d.ts +13 -0
  35. package/lib/instruction.d.ts.map +1 -0
  36. package/lib/instruction.js +24 -0
  37. package/lib/instruction.js.map +1 -0
  38. package/lib/rpc/client.d.ts +17 -0
  39. package/lib/rpc/client.d.ts.map +1 -0
  40. package/lib/rpc/client.js +15 -0
  41. package/lib/rpc/client.js.map +1 -0
  42. package/lib/rpc/filter.d.ts +4 -0
  43. package/lib/rpc/filter.d.ts.map +1 -0
  44. package/lib/rpc/filter.js +337 -0
  45. package/lib/rpc/filter.js.map +1 -0
  46. package/lib/rpc/mapping.d.ts +5 -0
  47. package/lib/rpc/mapping.d.ts.map +1 -0
  48. package/lib/rpc/mapping.js +13 -0
  49. package/lib/rpc/mapping.js.map +1 -0
  50. package/lib/rpc/project.d.ts +5 -0
  51. package/lib/rpc/project.d.ts.map +1 -0
  52. package/lib/rpc/project.js +61 -0
  53. package/lib/rpc/project.js.map +1 -0
  54. package/lib/rpc/source.d.ts +15 -0
  55. package/lib/rpc/source.d.ts.map +1 -0
  56. package/lib/rpc/source.js +82 -0
  57. package/lib/rpc/source.js.map +1 -0
  58. package/lib/source.d.ts +107 -0
  59. package/lib/source.d.ts.map +1 -0
  60. package/lib/source.js +280 -0
  61. package/lib/source.js.map +1 -0
  62. package/package.json +38 -0
  63. package/src/archive/schema.ts +137 -0
  64. package/src/archive/source.ts +105 -0
  65. package/src/data/fields.ts +50 -0
  66. package/src/data/model.ts +154 -0
  67. package/src/data/partial.ts +31 -0
  68. package/src/data/request.ts +138 -0
  69. package/src/data/type-util.ts +42 -0
  70. package/src/index.ts +4 -0
  71. package/src/instruction.ts +28 -0
  72. package/src/rpc/client.ts +26 -0
  73. package/src/rpc/filter.ts +351 -0
  74. package/src/rpc/mapping.ts +13 -0
  75. package/src/rpc/project.ts +61 -0
  76. package/src/rpc/source.ts +90 -0
  77. package/src/source.ts +392 -0
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # @subsquid/solana-stream
2
+
3
+ Solana block data source, that allows to request and fetch block data from both Subsquid Network
4
+ and traditional RPC endpoint.
@@ -0,0 +1,167 @@
1
+ import { FieldSelection } from '../data/model';
2
+ export declare const getDataSchema: (obj: FieldSelection) => import("@subsquid/util-internal-validation").Validator<{
3
+ header: {
4
+ number: number;
5
+ hash: string;
6
+ parentHash: string;
7
+ slot?: number | undefined;
8
+ parentSlot?: number | undefined;
9
+ timestamp?: number | undefined;
10
+ };
11
+ transactions?: {
12
+ transactionIndex: number;
13
+ version?: number | "legacy" | undefined;
14
+ accountKeys?: string[] | undefined;
15
+ addressTableLookups?: {
16
+ accountKey: string;
17
+ readonlyIndexes: number[];
18
+ writableIndexes: number[];
19
+ }[] | undefined;
20
+ numReadonlySignedAccounts?: number | undefined;
21
+ numReadonlyUnsignedAccounts?: number | undefined;
22
+ numRequiredSignatures?: number | undefined;
23
+ recentBlockhash?: string | undefined;
24
+ signatures?: string[] | undefined;
25
+ err?: object | null | undefined;
26
+ computeUnitsConsumed?: bigint | undefined;
27
+ fee?: bigint | undefined;
28
+ loadedAddresses?: {
29
+ readonly: string[];
30
+ writable: string[];
31
+ } | undefined;
32
+ hasDroppedLogMessages?: boolean | undefined;
33
+ }[] | undefined;
34
+ instructions?: {
35
+ transactionIndex: number;
36
+ instructionAddress: number[];
37
+ programId?: string | undefined;
38
+ accounts?: string[] | undefined;
39
+ data?: string | undefined;
40
+ computeUnitsConsumed?: bigint | undefined;
41
+ d1?: string | undefined;
42
+ d2?: string | undefined;
43
+ d4?: string | undefined;
44
+ d8?: string | undefined;
45
+ error?: string | undefined;
46
+ isCommitted?: boolean | undefined;
47
+ hasDroppedLogMessages?: boolean | undefined;
48
+ }[] | undefined;
49
+ logs?: {
50
+ transactionIndex: number;
51
+ logIndex: number;
52
+ instructionAddress: number[];
53
+ programId?: string | undefined;
54
+ kind?: "data" | "log" | "other" | undefined;
55
+ message?: string | undefined;
56
+ }[] | undefined;
57
+ balances?: {
58
+ transactionIndex: number;
59
+ account: string;
60
+ pre?: bigint | undefined;
61
+ post?: bigint | undefined;
62
+ }[] | undefined;
63
+ tokenBalances?: {
64
+ transactionIndex: number;
65
+ account: string;
66
+ preProgramId?: string | undefined;
67
+ postProgramId?: string | undefined;
68
+ preMint?: string | undefined;
69
+ postMint?: string | undefined;
70
+ preDecimals?: number | undefined;
71
+ postDecimals?: number | undefined;
72
+ preOwner?: string | undefined;
73
+ postOwner?: string | undefined;
74
+ preAmount?: bigint | undefined;
75
+ postAmount?: bigint | undefined;
76
+ }[] | undefined;
77
+ rewards?: {
78
+ pubkey: string;
79
+ lamports?: bigint | undefined;
80
+ postBalance?: bigint | undefined;
81
+ rewardType?: string | undefined;
82
+ commission?: number | undefined;
83
+ }[] | undefined;
84
+ }, {
85
+ header: {
86
+ number: number;
87
+ hash: string;
88
+ parentHash: string;
89
+ slot?: number | undefined;
90
+ parentSlot?: number | undefined;
91
+ timestamp?: number | undefined;
92
+ };
93
+ transactions?: {
94
+ transactionIndex: number;
95
+ version?: number | "legacy" | undefined;
96
+ accountKeys?: string[] | undefined;
97
+ addressTableLookups?: {
98
+ accountKey: string;
99
+ readonlyIndexes: number[];
100
+ writableIndexes: number[];
101
+ }[] | undefined;
102
+ numReadonlySignedAccounts?: number | undefined;
103
+ numReadonlyUnsignedAccounts?: number | undefined;
104
+ numRequiredSignatures?: number | undefined;
105
+ recentBlockhash?: string | undefined;
106
+ signatures?: string[] | undefined;
107
+ err?: object | null | undefined;
108
+ computeUnitsConsumed?: string | undefined;
109
+ fee?: string | undefined;
110
+ loadedAddresses?: {
111
+ readonly: string[];
112
+ writable: string[];
113
+ } | null | undefined;
114
+ hasDroppedLogMessages?: boolean | undefined;
115
+ }[] | null | undefined;
116
+ instructions?: {
117
+ transactionIndex: number;
118
+ instructionAddress: number[];
119
+ programId?: string | undefined;
120
+ accounts?: string[] | undefined;
121
+ data?: string | undefined;
122
+ computeUnitsConsumed?: string | null | undefined;
123
+ d1?: string | undefined;
124
+ d2?: string | undefined;
125
+ d4?: string | undefined;
126
+ d8?: string | undefined;
127
+ error?: string | null | undefined;
128
+ isCommitted?: boolean | undefined;
129
+ hasDroppedLogMessages?: boolean | undefined;
130
+ }[] | null | undefined;
131
+ logs?: {
132
+ transactionIndex: number;
133
+ logIndex: number;
134
+ instructionAddress: number[];
135
+ programId?: string | undefined;
136
+ kind?: "data" | "log" | "other" | undefined;
137
+ message?: string | undefined;
138
+ }[] | null | undefined;
139
+ balances?: {
140
+ transactionIndex: number;
141
+ account: string;
142
+ pre?: string | undefined;
143
+ post?: string | undefined;
144
+ }[] | null | undefined;
145
+ tokenBalances?: {
146
+ transactionIndex: number;
147
+ account: string;
148
+ preProgramId?: string | null | undefined;
149
+ postProgramId?: string | null | undefined;
150
+ preMint?: string | null | undefined;
151
+ postMint?: string | null | undefined;
152
+ preDecimals?: number | null | undefined;
153
+ postDecimals?: number | null | undefined;
154
+ preOwner?: string | null | undefined;
155
+ postOwner?: string | null | undefined;
156
+ preAmount?: string | null | undefined;
157
+ postAmount?: string | null | undefined;
158
+ }[] | null | undefined;
159
+ rewards?: {
160
+ pubkey: string;
161
+ lamports?: string | undefined;
162
+ postBalance?: string | undefined;
163
+ rewardType?: string | null | undefined;
164
+ commission?: number | null | undefined;
165
+ }[] | null | undefined;
166
+ }>;
167
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/archive/schema.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAG5C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmHxB,CAAA"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDataSchema = void 0;
4
+ const solana_rpc_data_1 = require("@subsquid/solana-rpc-data");
5
+ const util_internal_1 = require("@subsquid/util-internal");
6
+ const util_internal_validation_1 = require("@subsquid/util-internal-validation");
7
+ const fields_1 = require("../data/fields");
8
+ exports.getDataSchema = (0, util_internal_1.weakMemo)((fields) => {
9
+ let BlockHeader = (0, util_internal_validation_1.object)({
10
+ number: util_internal_validation_1.NAT,
11
+ hash: util_internal_validation_1.B58,
12
+ parentHash: util_internal_validation_1.B58,
13
+ ...(0, fields_1.project)(fields.block, {
14
+ slot: util_internal_validation_1.NAT,
15
+ parentSlot: util_internal_validation_1.NAT,
16
+ timestamp: util_internal_validation_1.NAT
17
+ })
18
+ });
19
+ let Transaction = (0, util_internal_validation_1.object)({
20
+ transactionIndex: util_internal_validation_1.NAT,
21
+ ...(0, fields_1.project)(fields.transaction, {
22
+ version: (0, util_internal_validation_1.oneOf)({
23
+ legacy: (0, util_internal_validation_1.constant)('legacy'),
24
+ versionNumber: util_internal_validation_1.NAT
25
+ }),
26
+ accountKeys: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
27
+ addressTableLookups: (0, util_internal_validation_1.array)(solana_rpc_data_1.AddressTableLookup),
28
+ numReadonlySignedAccounts: util_internal_validation_1.NAT,
29
+ numReadonlyUnsignedAccounts: util_internal_validation_1.NAT,
30
+ numRequiredSignatures: util_internal_validation_1.NAT,
31
+ recentBlockhash: util_internal_validation_1.B58,
32
+ signatures: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
33
+ err: (0, util_internal_validation_1.nullable)(util_internal_validation_1.ANY_OBJECT),
34
+ computeUnitsConsumed: util_internal_validation_1.BIG_NAT,
35
+ fee: util_internal_validation_1.BIG_NAT,
36
+ loadedAddresses: (0, util_internal_validation_1.option)((0, util_internal_validation_1.object)({
37
+ readonly: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
38
+ writable: (0, util_internal_validation_1.array)(util_internal_validation_1.B58)
39
+ })),
40
+ hasDroppedLogMessages: util_internal_validation_1.BOOLEAN
41
+ })
42
+ });
43
+ let Instruction = (0, util_internal_validation_1.object)({
44
+ transactionIndex: util_internal_validation_1.NAT,
45
+ instructionAddress: (0, util_internal_validation_1.array)(util_internal_validation_1.NAT),
46
+ ...(0, fields_1.project)(fields.instruction, {
47
+ programId: util_internal_validation_1.B58,
48
+ accounts: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
49
+ data: util_internal_validation_1.B58,
50
+ computeUnitsConsumed: (0, util_internal_validation_1.option)(util_internal_validation_1.BIG_NAT),
51
+ d1: util_internal_validation_1.BYTES,
52
+ d2: util_internal_validation_1.BYTES,
53
+ d4: util_internal_validation_1.BYTES,
54
+ d8: util_internal_validation_1.BYTES,
55
+ error: (0, util_internal_validation_1.option)(util_internal_validation_1.STRING),
56
+ isCommitted: util_internal_validation_1.BOOLEAN,
57
+ hasDroppedLogMessages: util_internal_validation_1.BOOLEAN
58
+ })
59
+ });
60
+ let LogMessage = (0, util_internal_validation_1.object)({
61
+ transactionIndex: util_internal_validation_1.NAT,
62
+ logIndex: util_internal_validation_1.NAT,
63
+ instructionAddress: (0, util_internal_validation_1.array)(util_internal_validation_1.NAT),
64
+ ...(0, fields_1.project)(fields.log, {
65
+ programId: util_internal_validation_1.B58,
66
+ kind: (0, util_internal_validation_1.oneOf)({
67
+ log: (0, util_internal_validation_1.constant)('log'),
68
+ data: (0, util_internal_validation_1.constant)('data'),
69
+ other: (0, util_internal_validation_1.constant)('other')
70
+ }),
71
+ message: util_internal_validation_1.STRING
72
+ })
73
+ });
74
+ let Balance = (0, util_internal_validation_1.object)({
75
+ transactionIndex: util_internal_validation_1.NAT,
76
+ account: util_internal_validation_1.B58,
77
+ ...(0, fields_1.project)(fields.balance, {
78
+ pre: util_internal_validation_1.BIG_NAT,
79
+ post: util_internal_validation_1.BIG_NAT
80
+ })
81
+ });
82
+ let TokenBalance = (0, util_internal_validation_1.object)({
83
+ transactionIndex: util_internal_validation_1.NAT,
84
+ account: util_internal_validation_1.B58,
85
+ ...(0, fields_1.project)(fields.tokenBalance, {
86
+ preProgramId: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
87
+ postProgramId: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
88
+ preMint: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
89
+ postMint: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
90
+ preDecimals: (0, util_internal_validation_1.option)(util_internal_validation_1.NAT),
91
+ postDecimals: (0, util_internal_validation_1.option)(util_internal_validation_1.NAT),
92
+ preOwner: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
93
+ postOwner: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
94
+ preAmount: (0, util_internal_validation_1.option)(util_internal_validation_1.BIG_NAT),
95
+ postAmount: (0, util_internal_validation_1.option)(util_internal_validation_1.BIG_NAT)
96
+ })
97
+ });
98
+ let Reward = (0, util_internal_validation_1.object)({
99
+ pubkey: util_internal_validation_1.B58,
100
+ ...(0, fields_1.project)(fields.reward, {
101
+ lamports: util_internal_validation_1.BIG_NAT,
102
+ postBalance: util_internal_validation_1.BIG_NAT,
103
+ rewardType: (0, util_internal_validation_1.option)(util_internal_validation_1.STRING),
104
+ commission: (0, util_internal_validation_1.option)(util_internal_validation_1.NAT)
105
+ })
106
+ });
107
+ return (0, util_internal_validation_1.object)({
108
+ header: BlockHeader,
109
+ transactions: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Transaction)),
110
+ instructions: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Instruction)),
111
+ logs: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(LogMessage)),
112
+ balances: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Balance)),
113
+ tokenBalances: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(TokenBalance)),
114
+ rewards: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Reward))
115
+ });
116
+ });
117
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/archive/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { BlockHeader } from '@subsquid/solana-normalization';
2
+ import { Base58Bytes } from '@subsquid/solana-rpc-data';
3
+ import { ArchiveClient } from '@subsquid/util-internal-archive-client';
4
+ import { RangeRequestList } from '@subsquid/util-internal-range';
5
+ import { PartialBlock } from '../data/partial';
6
+ import { DataRequest } from '../data/request';
7
+ export declare class SolanaArchive {
8
+ private client;
9
+ constructor(client: ArchiveClient);
10
+ getFinalizedHeight(): Promise<number>;
11
+ getBlockHash(height: number): Promise<Base58Bytes | undefined>;
12
+ getBlockHeader(height: number): Promise<BlockHeader>;
13
+ getBlockStream(requests: RangeRequestList<DataRequest>, stopOnHead?: boolean | undefined): AsyncIterable<PartialBlock[]>;
14
+ }
15
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/archive/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAC,aAAa,EAAC,MAAM,wCAAwC,CAAA;AAEpE,OAAO,EAAoC,gBAAgB,EAAC,MAAM,+BAA+B,CAAA;AAGjG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAI3C,qBAAa,aAAa;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAW9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBnD,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;CAkDlI"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SolanaArchive = void 0;
7
+ const util_internal_1 = require("@subsquid/util-internal");
8
+ const util_internal_ingest_tools_1 = require("@subsquid/util-internal-ingest-tools");
9
+ const util_internal_range_1 = require("@subsquid/util-internal-range");
10
+ const util_internal_validation_1 = require("@subsquid/util-internal-validation");
11
+ const assert_1 = __importDefault(require("assert"));
12
+ const schema_1 = require("./schema");
13
+ class SolanaArchive {
14
+ constructor(client) {
15
+ this.client = client;
16
+ }
17
+ getFinalizedHeight() {
18
+ return this.client.getHeight();
19
+ }
20
+ async getBlockHash(height) {
21
+ let blocks = await this.client.query({
22
+ type: 'solana',
23
+ fromBlock: height,
24
+ toBlock: height,
25
+ includeAllBlocks: true
26
+ });
27
+ (0, assert_1.default)(blocks.length == 1);
28
+ return blocks[0].header.hash;
29
+ }
30
+ async getBlockHeader(height) {
31
+ let blocks = await this.client.query({
32
+ type: 'solana',
33
+ fromBlock: height,
34
+ toBlock: height,
35
+ includeAllBlocks: true,
36
+ fields: {
37
+ block: {
38
+ slot: true,
39
+ parentSlot: true,
40
+ parentHash: true,
41
+ timestamp: true
42
+ }
43
+ }
44
+ });
45
+ (0, assert_1.default)(blocks.length == 1);
46
+ let { number, ...rest } = blocks[0].header;
47
+ return {
48
+ height: number,
49
+ ...rest
50
+ };
51
+ }
52
+ async *getBlockStream(requests, stopOnHead) {
53
+ let archiveRequests = (0, util_internal_range_1.mapRangeRequestList)(requests, req => {
54
+ let { fields, includeAllBlocks, ...items } = req;
55
+ let archiveItems = {};
56
+ let key;
57
+ for (key in items) {
58
+ archiveItems[key] = items[key]?.map(it => ({ ...it.where, ...it.include }));
59
+ }
60
+ return {
61
+ type: 'solana',
62
+ fields: {
63
+ block: { parentHash: true, ...fields?.block },
64
+ transaction: fields?.transaction,
65
+ instruction: fields?.instruction,
66
+ log: { instructionAddress: true, ...fields?.log },
67
+ balance: fields?.balance,
68
+ tokenBalance: fields?.tokenBalance,
69
+ reward: fields?.reward
70
+ },
71
+ includeAllBlocks,
72
+ ...archiveItems
73
+ };
74
+ });
75
+ for await (let batch of (0, util_internal_ingest_tools_1.archiveIngest)({
76
+ client: this.client,
77
+ requests: archiveRequests,
78
+ stopOnHead
79
+ })) {
80
+ let req = (0, util_internal_range_1.getRequestAt)(requests, batch.blocks[0].header.number);
81
+ let blocks = (0, util_internal_validation_1.cast)((0, util_internal_validation_1.array)((0, schema_1.getDataSchema)((0, util_internal_1.assertNotNull)(req?.fields))), batch.blocks).map(b => {
82
+ let { header: { number, ...hdr }, ...items } = b;
83
+ return {
84
+ header: { height: number, ...hdr },
85
+ transactions: items.transactions || [],
86
+ instructions: items.instructions || [],
87
+ logs: items.logs || [],
88
+ balances: items.balances || [],
89
+ tokenBalances: items.tokenBalances || [],
90
+ rewards: items.rewards || []
91
+ };
92
+ });
93
+ yield blocks;
94
+ }
95
+ }
96
+ }
97
+ exports.SolanaArchive = SolanaArchive;
98
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/archive/source.ts"],"names":[],"mappings":";;;;;;AAEA,2DAAqD;AAErD,qFAAkE;AAClE,uEAAiG;AACjG,iFAA8D;AAC9D,oDAA2B;AAG3B,qCAAsC;AAGtC,MAAa,aAAa;IACtB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C,kBAAkB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,MAAM;YACf,gBAAgB,EAAE,IAAI;SACzB,CAAC,CAAA;QACF,IAAA,gBAAM,EAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,MAAM;YACf,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE;gBACJ,KAAK,EAAE;oBACH,IAAI,EAAE,IAAI;oBACV,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,IAAI;iBAClB;aACJ;SACJ,CAAC,CAAA;QACF,IAAA,gBAAM,EAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QAC1B,IAAI,EAAC,MAAM,EAAE,GAAG,IAAI,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACxC,OAAO;YACH,MAAM,EAAE,MAAM;YACd,GAAG,IAAI;SACK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,CAAC,cAAc,CAAC,QAAuC,EAAE,UAAgC;QAC3F,IAAI,eAAe,GAAG,IAAA,yCAAmB,EAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;YACtD,IAAI,EAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAC,GAAG,GAAG,CAAA;YAC9C,IAAI,YAAY,GAAQ,EAAE,CAAA;YAC1B,IAAI,GAAuB,CAAA;YAC3B,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;gBAChB,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAC,CAAC,CAAC,CAAA;YAC7E,CAAC;YACD,OAAO;gBACH,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE;oBACJ,KAAK,EAAE,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,KAAK,EAAC;oBAC3C,WAAW,EAAE,MAAM,EAAE,WAAW;oBAChC,WAAW,EAAE,MAAM,EAAE,WAAW;oBAChC,GAAG,EAAE,EAAC,kBAAkB,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,EAAC;oBAC/C,OAAO,EAAE,MAAM,EAAE,OAAO;oBACxB,YAAY,EAAE,MAAM,EAAE,YAAY;oBAClC,MAAM,EAAE,MAAM,EAAE,MAAM;iBACzB;gBACD,gBAAgB;gBAChB,GAAG,YAAY;aAClB,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI,IAAA,0CAAa,EAAC;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,eAAe;YACzB,UAAU;SACb,CAAC,EAAE,CAAC;YACD,IAAI,GAAG,GAAG,IAAA,kCAAY,EAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAE/D,IAAI,MAAM,GAAG,IAAA,+BAAI,EACb,IAAA,gCAAK,EAAC,IAAA,sBAAa,EAAC,IAAA,6BAAa,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAChD,KAAK,CAAC,MAAM,CACf,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACN,IAAI,EAAC,MAAM,EAAE,EAAC,MAAM,EAAE,GAAG,GAAG,EAAC,EAAE,GAAG,KAAK,EAAC,GAAG,CAAC,CAAA;gBAC5C,OAAO;oBACH,MAAM,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,EAAC;oBAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;oBACtC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;oBACtC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;oBAC9B,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE;oBACxC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;iBAC/B,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,MAAM,MAAM,CAAA;QAChB,CAAC;IACL,CAAC;CACJ;AA3FD,sCA2FC"}
@@ -0,0 +1,8 @@
1
+ import { FieldSelection } from './model';
2
+ import { Selector } from './type-util';
3
+ /**
4
+ * Get effective set of selected fields.
5
+ */
6
+ export declare function getFields(fields: FieldSelection | undefined): FieldSelection;
7
+ export declare function project<T>(fields: Selector<keyof T> | undefined, obj: T): Partial<T>;
8
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/data/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAC,MAAM,SAAS,CAAA;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA;AAGpC;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,cAAc,CAU5E;AAsBD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUpF"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.project = exports.getFields = void 0;
4
+ const model_1 = require("./model");
5
+ /**
6
+ * Get effective set of selected fields.
7
+ */
8
+ function getFields(fields) {
9
+ return {
10
+ block: merge(model_1.DEFAULT_FIELDS.block, fields?.block),
11
+ transaction: merge(model_1.DEFAULT_FIELDS.transaction, fields?.transaction),
12
+ instruction: merge(model_1.DEFAULT_FIELDS.instruction, fields?.instruction),
13
+ log: merge(model_1.DEFAULT_FIELDS.log, fields?.log),
14
+ balance: merge(model_1.DEFAULT_FIELDS.balance, fields?.balance),
15
+ tokenBalance: merge(model_1.DEFAULT_FIELDS.tokenBalance, fields?.tokenBalance),
16
+ reward: merge(model_1.DEFAULT_FIELDS.reward, fields?.reward)
17
+ };
18
+ }
19
+ exports.getFields = getFields;
20
+ function merge(def, requested = {}) {
21
+ let fields = {};
22
+ for (let key in def) {
23
+ if (requested[key] !== false) {
24
+ fields[key] = def[key];
25
+ }
26
+ }
27
+ for (let key in requested) {
28
+ if (requested[key]) {
29
+ fields[key] = true;
30
+ }
31
+ }
32
+ return fields;
33
+ }
34
+ function project(fields, obj) {
35
+ if (fields == null)
36
+ return {};
37
+ let result = {};
38
+ let key;
39
+ for (key in obj) {
40
+ if (fields[key]) {
41
+ result[key] = obj[key];
42
+ }
43
+ }
44
+ return result;
45
+ }
46
+ exports.project = project;
47
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/data/fields.ts"],"names":[],"mappings":";;;AAAA,mCAAsD;AAItD;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAkC;IACxD,OAAO;QACH,KAAK,EAAE,KAAK,CAAC,sBAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;QACjD,WAAW,EAAE,KAAK,CAAC,sBAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;QACnE,WAAW,EAAE,KAAK,CAAC,sBAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;QACnE,GAAG,EAAE,KAAK,CAAC,sBAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC;QAC3C,OAAO,EAAE,KAAK,CAAC,sBAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;QACvD,YAAY,EAAE,KAAK,CAAC,sBAAc,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC;QACtE,MAAM,EAAE,KAAK,CAAC,sBAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KACvD,CAAA;AACL,CAAC;AAVD,8BAUC;AAGD,SAAS,KAAK,CAAsB,GAAmB,EAAE,YAA4B,EAAE;IACnF,IAAI,MAAM,GAAmB,EAAE,CAAA;IAE/B,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAClB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;IACL,CAAC;IAED,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QACxB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACtB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAGD,SAAgB,OAAO,CAAI,MAAqC,EAAE,GAAM;IACpE,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,MAAM,GAAe,EAAE,CAAA;IAC3B,IAAI,GAAY,CAAA;IAChB,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAVD,0BAUC"}
@@ -0,0 +1,79 @@
1
+ import type * as data from '@subsquid/solana-normalization';
2
+ import type { BalanceRequiredFields, BlockRequiredFields, InstructionRequiredFields, LogRequiredFields, RewardRequiredFields, TokenBalanceRequiredFields, TransactionRequiredFields } from './partial';
3
+ import type { GetFields, Select, Selector, Simplify } from './type-util';
4
+ /**
5
+ * Hex encoded binary string
6
+ */
7
+ export type Bytes = string;
8
+ /**
9
+ * Base58 encoded binary string
10
+ */
11
+ export type Base58Bytes = string;
12
+ export interface FieldSelection {
13
+ block?: Selector<Exclude<keyof data.BlockHeader, BlockRequiredFields>>;
14
+ transaction?: Selector<Exclude<keyof data.Transaction, TransactionRequiredFields>>;
15
+ instruction?: Selector<Exclude<keyof data.Instruction, InstructionRequiredFields>>;
16
+ log?: Selector<Exclude<keyof data.LogMessage, LogRequiredFields>>;
17
+ balance?: Selector<Exclude<keyof data.Balance, BalanceRequiredFields>>;
18
+ tokenBalance?: Selector<Exclude<keyof data.TokenBalance, TokenBalanceRequiredFields>>;
19
+ reward?: Selector<Exclude<keyof data.Reward, RewardRequiredFields>>;
20
+ }
21
+ export declare const DEFAULT_FIELDS: {
22
+ readonly block: {
23
+ readonly slot: true;
24
+ readonly parentSlot: true;
25
+ readonly timestamp: true;
26
+ };
27
+ readonly transaction: {
28
+ readonly signatures: true;
29
+ readonly err: true;
30
+ };
31
+ readonly instruction: {
32
+ readonly programId: true;
33
+ readonly accounts: true;
34
+ readonly data: true;
35
+ readonly isCommitted: true;
36
+ };
37
+ readonly log: {
38
+ readonly programId: true;
39
+ readonly kind: true;
40
+ readonly message: true;
41
+ };
42
+ readonly balance: {
43
+ readonly pre: true;
44
+ readonly post: true;
45
+ };
46
+ readonly tokenBalance: {
47
+ readonly preMint: true;
48
+ readonly preDecimals: true;
49
+ readonly preOwner: true;
50
+ readonly preAmount: true;
51
+ readonly postMint: true;
52
+ readonly postDecimals: true;
53
+ readonly postOwner: true;
54
+ readonly postAmount: true;
55
+ };
56
+ readonly reward: {
57
+ readonly lamports: true;
58
+ readonly rewardType: true;
59
+ };
60
+ };
61
+ type Item<Data, RequiredFields extends keyof Data, F extends FieldSelection, K extends keyof FieldSelection> = Simplify<Pick<Data, RequiredFields> & Select<Data, GetFields<FieldSelection, typeof DEFAULT_FIELDS, F, K>>>;
62
+ export type BlockHeader<F extends FieldSelection = {}> = Item<data.BlockHeader, BlockRequiredFields, F, 'block'>;
63
+ export type Transaction<F extends FieldSelection = {}> = Item<data.Transaction, TransactionRequiredFields, F, 'transaction'>;
64
+ export type Instruction<F extends FieldSelection = {}> = Item<data.Instruction, InstructionRequiredFields, F, 'instruction'>;
65
+ export type LogMessage<F extends FieldSelection = {}> = Item<data.LogMessage, LogRequiredFields, F, 'log'>;
66
+ export type Balance<F extends FieldSelection = {}> = Item<data.Balance, BalanceRequiredFields, F, 'balance'>;
67
+ export type TokenBalance<F extends FieldSelection = {}> = Item<data.TokenBalance, TokenBalanceRequiredFields, F, 'tokenBalance'>;
68
+ export type Reward<F extends FieldSelection = {}> = Item<data.Reward, RewardRequiredFields, F, 'reward'>;
69
+ export interface Block<F extends FieldSelection = {}> {
70
+ header: BlockHeader<F>;
71
+ transactions: Transaction<F>[];
72
+ instructions: Instruction<F>[];
73
+ logs: LogMessage<F>[];
74
+ balances: Balance<F>[];
75
+ tokenBalances: TokenBalance<F>[];
76
+ rewards: Reward<F>[];
77
+ }
78
+ export {};
79
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/data/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,EACR,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EAC5B,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAA;AAGtE;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;AAG1B;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAGhC,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAA;IACtE,WAAW,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,CAAA;IAClF,WAAW,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,CAAA;IAClF,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACjE,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAA;IACtE,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAA;IACrF,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAA;CACtE;AAGD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCjB,CAAA;AAGV,KAAK,IAAI,CACL,IAAI,EACJ,cAAc,SAAS,MAAM,IAAI,EACjC,CAAC,SAAS,cAAc,EACxB,CAAC,SAAS,MAAM,cAAc,IAC9B,QAAQ,CACR,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,GAC1B,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,EAAE,OAAO,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACvE,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CACzD,IAAI,CAAC,WAAW,EAChB,mBAAmB,EACnB,CAAC,EACD,OAAO,CACV,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CACzD,IAAI,CAAC,WAAW,EAChB,yBAAyB,EACzB,CAAC,EACD,aAAa,CAChB,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CACzD,IAAI,CAAC,WAAW,EAChB,yBAAyB,EACzB,CAAC,EACD,aAAa,CAChB,CAAA;AAGD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CACxD,IAAI,CAAC,UAAU,EACf,iBAAiB,EACjB,CAAC,EACD,KAAK,CACR,CAAA;AAGD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CACrD,IAAI,CAAC,OAAO,EACZ,qBAAqB,EACrB,CAAC,EACD,SAAS,CACZ,CAAA;AAGD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAC1D,IAAI,CAAC,YAAY,EACjB,0BAA0B,EAC1B,CAAC,EACD,cAAc,CACjB,CAAA;AAGD,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CACpD,IAAI,CAAC,MAAM,EACX,oBAAoB,EACpB,CAAC,EACD,QAAQ,CACX,CAAA;AAGD,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE;IAChD,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACtB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9B,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACtB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IAChC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;CACvB"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_FIELDS = void 0;
4
+ exports.DEFAULT_FIELDS = {
5
+ block: {
6
+ slot: true,
7
+ parentSlot: true,
8
+ timestamp: true
9
+ },
10
+ transaction: {
11
+ signatures: true,
12
+ err: true
13
+ },
14
+ instruction: {
15
+ programId: true,
16
+ accounts: true,
17
+ data: true,
18
+ isCommitted: true
19
+ },
20
+ log: {
21
+ programId: true,
22
+ kind: true,
23
+ message: true
24
+ },
25
+ balance: {
26
+ pre: true,
27
+ post: true
28
+ },
29
+ tokenBalance: {
30
+ preMint: true,
31
+ preDecimals: true,
32
+ preOwner: true,
33
+ preAmount: true,
34
+ postMint: true,
35
+ postDecimals: true,
36
+ postOwner: true,
37
+ postAmount: true
38
+ },
39
+ reward: {
40
+ lamports: true,
41
+ rewardType: true
42
+ }
43
+ };
44
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/data/model.ts"],"names":[],"mappings":";;;AAoCa,QAAA,cAAc,GAAG;IAC1B,KAAK,EAAE;QACH,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;KAClB;IACD,WAAW,EAAE;QACT,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,IAAI;KACZ;IACD,WAAW,EAAE;QACT,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI;KACpB;IACD,GAAG,EAAE;QACD,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;KAChB;IACD,OAAO,EAAE;QACL,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;KACb;IACD,YAAY,EAAE;QACV,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACJ,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;KACnB;CACK,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type * as data from '@subsquid/solana-normalization';
2
+ import type { MakePartial } from './type-util';
3
+ export type BlockRequiredFields = 'height' | 'hash' | 'parentHash';
4
+ export type TransactionRequiredFields = 'transactionIndex';
5
+ export type InstructionRequiredFields = 'transactionIndex' | 'instructionAddress';
6
+ export type LogRequiredFields = 'transactionIndex' | 'logIndex' | 'instructionAddress';
7
+ export type BalanceRequiredFields = 'transactionIndex' | 'account';
8
+ export type TokenBalanceRequiredFields = 'transactionIndex' | 'account';
9
+ export type RewardRequiredFields = 'pubkey';
10
+ export type PartialBlockHeader = MakePartial<data.BlockHeader, BlockRequiredFields>;
11
+ export type PartialTransaction = MakePartial<data.Transaction, TransactionRequiredFields>;
12
+ export type PartialInstruction = MakePartial<data.Instruction, InstructionRequiredFields>;
13
+ export type PartialLogMessage = MakePartial<data.LogMessage, LogRequiredFields>;
14
+ export type PartialBalance = MakePartial<data.Balance, BalanceRequiredFields>;
15
+ export type PartialTokenBalance = MakePartial<data.PrePostTokenBalance, TokenBalanceRequiredFields>;
16
+ export type PartialReward = MakePartial<data.Reward, RewardRequiredFields>;
17
+ export interface PartialBlock {
18
+ header: PartialBlockHeader;
19
+ transactions: PartialTransaction[];
20
+ instructions: PartialInstruction[];
21
+ logs: PartialLogMessage[];
22
+ balances: PartialBalance[];
23
+ tokenBalances: PartialTokenBalance[];
24
+ rewards: PartialReward[];
25
+ }
26
+ //# sourceMappingURL=partial.d.ts.map