@subsquid/solana-stream 0.2.0-2-0.a5e4b7 → 0.2.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 (104) hide show
  1. package/README.md +4 -0
  2. package/lib/{schema.d.ts → archive/schema.d.ts} +22 -32
  3. package/lib/archive/schema.d.ts.map +1 -0
  4. package/lib/{schema.js → archive/schema.js} +39 -55
  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 +46 -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 +108 -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 +3 -3
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +3 -3
  33. package/lib/index.js.map +1 -1
  34. package/lib/instruction.d.ts +3 -2
  35. package/lib/instruction.d.ts.map +1 -1
  36. package/lib/instruction.js +2 -2
  37. package/lib/instruction.js.map +1 -1
  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 +357 -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 +12 -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 +60 -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 +101 -17
  59. package/lib/source.d.ts.map +1 -1
  60. package/lib/source.js +269 -70
  61. package/lib/source.js.map +1 -1
  62. package/package.json +15 -9
  63. package/src/{schema.ts → archive/schema.ts} +35 -54
  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 +142 -0
  69. package/src/data/type-util.ts +42 -0
  70. package/src/index.ts +3 -3
  71. package/src/instruction.ts +9 -4
  72. package/src/rpc/client.ts +26 -0
  73. package/src/rpc/filter.ts +368 -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 +368 -92
  78. package/lib/objects/index.d.ts +0 -4
  79. package/lib/objects/index.d.ts.map +0 -1
  80. package/lib/objects/index.js +0 -23
  81. package/lib/objects/index.js.map +0 -1
  82. package/lib/objects/items.d.ts +0 -83
  83. package/lib/objects/items.d.ts.map +0 -1
  84. package/lib/objects/items.js +0 -260
  85. package/lib/objects/items.js.map +0 -1
  86. package/lib/objects/relations.d.ts +0 -3
  87. package/lib/objects/relations.d.ts.map +0 -1
  88. package/lib/objects/relations.js +0 -82
  89. package/lib/objects/relations.js.map +0 -1
  90. package/lib/objects/types.d.ts +0 -76
  91. package/lib/objects/types.d.ts.map +0 -1
  92. package/lib/objects/types.js +0 -29
  93. package/lib/objects/types.js.map +0 -1
  94. package/lib/query.d.ts +0 -46
  95. package/lib/query.d.ts.map +0 -1
  96. package/lib/query.js +0 -96
  97. package/lib/query.js.map +0 -1
  98. package/lib/schema.d.ts.map +0 -1
  99. package/lib/schema.js.map +0 -1
  100. package/src/objects/index.ts +0 -3
  101. package/src/objects/items.ts +0 -296
  102. package/src/objects/relations.ts +0 -90
  103. package/src/objects/types.ts +0 -88
  104. package/src/query.ts +0 -149
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.
@@ -1,25 +1,15 @@
1
- import type { Selector } from '@subsquid/util-internal';
2
- export declare function project<T>(fields: Selector<keyof T> | undefined, obj: T): Partial<T>;
3
- export declare const AddressTableLookup: import("@subsquid/util-internal-validation").Validator<{
4
- accountKey: string;
5
- readonlyIndexes: number[];
6
- writableIndexes: number[];
7
- }, {
8
- accountKey: string;
9
- readonlyIndexes: number[];
10
- writableIndexes: number[];
11
- }>;
12
- export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/query/solana").FieldSelection) => import("@subsquid/util-internal-validation").Validator<{
1
+ import { FieldSelection } from '../data/model';
2
+ export declare const getDataSchema: (obj: FieldSelection) => import("@subsquid/util-internal-validation").Validator<{
13
3
  header: {
14
4
  number: number;
15
5
  hash: string;
16
6
  parentHash: string;
17
- height?: number | undefined;
7
+ slot?: number | undefined;
18
8
  parentSlot?: number | undefined;
19
9
  timestamp?: number | undefined;
20
10
  };
21
- transactions: {
22
- transactionIndex?: number | undefined;
11
+ transactions?: {
12
+ transactionIndex: number;
23
13
  version?: number | "legacy" | undefined;
24
14
  accountKeys?: string[] | undefined;
25
15
  addressTableLookups?: {
@@ -40,10 +30,10 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
40
30
  writable: string[];
41
31
  } | undefined;
42
32
  hasDroppedLogMessages?: boolean | undefined;
43
- }[];
33
+ }[] | undefined;
44
34
  instructions?: {
45
- transactionIndex?: number | undefined;
46
- instructionAddress?: number[] | undefined;
35
+ transactionIndex: number;
36
+ instructionAddress: number[];
47
37
  programId?: string | undefined;
48
38
  accounts?: string[] | undefined;
49
39
  data?: string | undefined;
@@ -65,14 +55,14 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
65
55
  message?: string | undefined;
66
56
  }[] | undefined;
67
57
  balances?: {
68
- transactionIndex?: number | undefined;
69
- account?: string | undefined;
58
+ transactionIndex: number;
59
+ account: string;
70
60
  pre?: bigint | undefined;
71
61
  post?: bigint | undefined;
72
62
  }[] | undefined;
73
63
  tokenBalances?: {
74
- transactionIndex?: number | undefined;
75
- account?: string | undefined;
64
+ transactionIndex: number;
65
+ account: string;
76
66
  preProgramId?: string | undefined;
77
67
  postProgramId?: string | undefined;
78
68
  preMint?: string | undefined;
@@ -85,7 +75,7 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
85
75
  postAmount?: bigint | undefined;
86
76
  }[] | undefined;
87
77
  rewards?: {
88
- pubkey?: string | undefined;
78
+ pubkey: string;
89
79
  lamports?: bigint | undefined;
90
80
  postBalance?: bigint | undefined;
91
81
  rewardType?: string | undefined;
@@ -96,12 +86,12 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
96
86
  number: number;
97
87
  hash: string;
98
88
  parentHash: string;
99
- height?: number | undefined;
89
+ slot?: number | undefined;
100
90
  parentSlot?: number | undefined;
101
91
  timestamp?: number | undefined;
102
92
  };
103
93
  transactions?: {
104
- transactionIndex?: number | undefined;
94
+ transactionIndex: number;
105
95
  version?: number | "legacy" | undefined;
106
96
  accountKeys?: string[] | undefined;
107
97
  addressTableLookups?: {
@@ -124,8 +114,8 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
124
114
  hasDroppedLogMessages?: boolean | undefined;
125
115
  }[] | null | undefined;
126
116
  instructions?: {
127
- transactionIndex?: number | undefined;
128
- instructionAddress?: number[] | undefined;
117
+ transactionIndex: number;
118
+ instructionAddress: number[];
129
119
  programId?: string | undefined;
130
120
  accounts?: string[] | undefined;
131
121
  data?: string | undefined;
@@ -147,14 +137,14 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
147
137
  message?: string | undefined;
148
138
  }[] | null | undefined;
149
139
  balances?: {
150
- transactionIndex?: number | undefined;
151
- account?: string | undefined;
140
+ transactionIndex: number;
141
+ account: string;
152
142
  pre?: string | undefined;
153
143
  post?: string | undefined;
154
144
  }[] | null | undefined;
155
145
  tokenBalances?: {
156
- transactionIndex?: number | undefined;
157
- account?: string | undefined;
146
+ transactionIndex: number;
147
+ account: string;
158
148
  preProgramId?: string | null | undefined;
159
149
  postProgramId?: string | null | undefined;
160
150
  preMint?: string | null | undefined;
@@ -167,7 +157,7 @@ export declare const getDataSchema: (obj: import("@subsquid/portal-client/lib/qu
167
157
  postAmount?: string | null | undefined;
168
158
  }[] | null | undefined;
169
159
  rewards?: {
170
- pubkey?: string | undefined;
160
+ pubkey: string;
171
161
  lamports?: string | undefined;
172
162
  postBalance?: string | undefined;
173
163
  rewardType?: string | null | undefined;
@@ -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"}
@@ -1,46 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDataSchema = exports.AddressTableLookup = void 0;
4
- exports.project = project;
3
+ exports.getDataSchema = void 0;
4
+ const solana_rpc_data_1 = require("@subsquid/solana-rpc-data");
5
5
  const util_internal_1 = require("@subsquid/util-internal");
6
6
  const util_internal_validation_1 = require("@subsquid/util-internal-validation");
7
- function project(fields, obj) {
8
- if (fields == null)
9
- return {};
10
- let result = {};
11
- let key;
12
- for (key in obj) {
13
- if (fields[key]) {
14
- result[key] = obj[key];
15
- }
16
- }
17
- return result;
18
- }
19
- exports.AddressTableLookup = (0, util_internal_validation_1.object)({
20
- accountKey: util_internal_validation_1.B58,
21
- readonlyIndexes: (0, util_internal_validation_1.array)(util_internal_validation_1.NAT),
22
- writableIndexes: (0, util_internal_validation_1.array)(util_internal_validation_1.NAT),
23
- });
7
+ const fields_1 = require("../data/fields");
24
8
  exports.getDataSchema = (0, util_internal_1.weakMemo)((fields) => {
25
9
  let BlockHeader = (0, util_internal_validation_1.object)({
26
10
  number: util_internal_validation_1.NAT,
27
11
  hash: util_internal_validation_1.B58,
28
12
  parentHash: util_internal_validation_1.B58,
29
- ...project(fields.block, {
30
- height: util_internal_validation_1.NAT,
13
+ ...(0, fields_1.project)(fields.block, {
14
+ slot: util_internal_validation_1.NAT,
31
15
  parentSlot: util_internal_validation_1.NAT,
32
- timestamp: util_internal_validation_1.NAT,
33
- }),
16
+ timestamp: util_internal_validation_1.NAT
17
+ })
34
18
  });
35
19
  let Transaction = (0, util_internal_validation_1.object)({
36
- ...project(fields.transaction, {
37
- transactionIndex: util_internal_validation_1.NAT,
20
+ transactionIndex: util_internal_validation_1.NAT,
21
+ ...(0, fields_1.project)(fields.transaction, {
38
22
  version: (0, util_internal_validation_1.oneOf)({
39
23
  legacy: (0, util_internal_validation_1.constant)('legacy'),
40
- versionNumber: util_internal_validation_1.NAT,
24
+ versionNumber: util_internal_validation_1.NAT
41
25
  }),
42
26
  accountKeys: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
43
- addressTableLookups: (0, util_internal_validation_1.array)(exports.AddressTableLookup),
27
+ addressTableLookups: (0, util_internal_validation_1.array)(solana_rpc_data_1.AddressTableLookup),
44
28
  numReadonlySignedAccounts: util_internal_validation_1.NAT,
45
29
  numReadonlyUnsignedAccounts: util_internal_validation_1.NAT,
46
30
  numRequiredSignatures: util_internal_validation_1.NAT,
@@ -51,15 +35,15 @@ exports.getDataSchema = (0, util_internal_1.weakMemo)((fields) => {
51
35
  fee: util_internal_validation_1.BIG_NAT,
52
36
  loadedAddresses: (0, util_internal_validation_1.option)((0, util_internal_validation_1.object)({
53
37
  readonly: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
54
- writable: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
38
+ writable: (0, util_internal_validation_1.array)(util_internal_validation_1.B58)
55
39
  })),
56
- hasDroppedLogMessages: util_internal_validation_1.BOOLEAN,
57
- }),
40
+ hasDroppedLogMessages: util_internal_validation_1.BOOLEAN
41
+ })
58
42
  });
59
43
  let Instruction = (0, util_internal_validation_1.object)({
60
- ...project(fields.instruction, {
61
- transactionIndex: util_internal_validation_1.NAT,
62
- instructionAddress: (0, util_internal_validation_1.array)(util_internal_validation_1.NAT),
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, {
63
47
  programId: util_internal_validation_1.B58,
64
48
  accounts: (0, util_internal_validation_1.array)(util_internal_validation_1.B58),
65
49
  data: util_internal_validation_1.B58,
@@ -70,35 +54,35 @@ exports.getDataSchema = (0, util_internal_1.weakMemo)((fields) => {
70
54
  d8: util_internal_validation_1.BYTES,
71
55
  error: (0, util_internal_validation_1.option)(util_internal_validation_1.STRING),
72
56
  isCommitted: util_internal_validation_1.BOOLEAN,
73
- hasDroppedLogMessages: util_internal_validation_1.BOOLEAN,
74
- }),
57
+ hasDroppedLogMessages: util_internal_validation_1.BOOLEAN
58
+ })
75
59
  });
76
60
  let LogMessage = (0, util_internal_validation_1.object)({
77
61
  transactionIndex: util_internal_validation_1.NAT,
78
62
  logIndex: util_internal_validation_1.NAT,
79
63
  instructionAddress: (0, util_internal_validation_1.array)(util_internal_validation_1.NAT),
80
- ...project(fields.log, {
64
+ ...(0, fields_1.project)(fields.log, {
81
65
  programId: util_internal_validation_1.B58,
82
66
  kind: (0, util_internal_validation_1.oneOf)({
83
67
  log: (0, util_internal_validation_1.constant)('log'),
84
68
  data: (0, util_internal_validation_1.constant)('data'),
85
- other: (0, util_internal_validation_1.constant)('other'),
69
+ other: (0, util_internal_validation_1.constant)('other')
86
70
  }),
87
- message: util_internal_validation_1.STRING,
88
- }),
71
+ message: util_internal_validation_1.STRING
72
+ })
89
73
  });
90
74
  let Balance = (0, util_internal_validation_1.object)({
91
- ...project(fields.balance, {
92
- transactionIndex: util_internal_validation_1.NAT,
93
- account: util_internal_validation_1.B58,
75
+ transactionIndex: util_internal_validation_1.NAT,
76
+ account: util_internal_validation_1.B58,
77
+ ...(0, fields_1.project)(fields.balance, {
94
78
  pre: util_internal_validation_1.BIG_NAT,
95
- post: util_internal_validation_1.BIG_NAT,
96
- }),
79
+ post: util_internal_validation_1.BIG_NAT
80
+ })
97
81
  });
98
82
  let TokenBalance = (0, util_internal_validation_1.object)({
99
- ...project(fields.tokenBalance, {
100
- transactionIndex: util_internal_validation_1.NAT,
101
- account: util_internal_validation_1.B58,
83
+ transactionIndex: util_internal_validation_1.NAT,
84
+ account: util_internal_validation_1.B58,
85
+ ...(0, fields_1.project)(fields.tokenBalance, {
102
86
  preProgramId: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
103
87
  postProgramId: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
104
88
  preMint: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
@@ -108,26 +92,26 @@ exports.getDataSchema = (0, util_internal_1.weakMemo)((fields) => {
108
92
  preOwner: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
109
93
  postOwner: (0, util_internal_validation_1.option)(util_internal_validation_1.B58),
110
94
  preAmount: (0, util_internal_validation_1.option)(util_internal_validation_1.BIG_NAT),
111
- postAmount: (0, util_internal_validation_1.option)(util_internal_validation_1.BIG_NAT),
112
- }),
95
+ postAmount: (0, util_internal_validation_1.option)(util_internal_validation_1.BIG_NAT)
96
+ })
113
97
  });
114
98
  let Reward = (0, util_internal_validation_1.object)({
115
- ...project(fields.reward, {
116
- pubkey: util_internal_validation_1.B58,
99
+ pubkey: util_internal_validation_1.B58,
100
+ ...(0, fields_1.project)(fields.reward, {
117
101
  lamports: util_internal_validation_1.BIG_NAT,
118
102
  postBalance: util_internal_validation_1.BIG_NAT,
119
103
  rewardType: (0, util_internal_validation_1.option)(util_internal_validation_1.STRING),
120
- commission: (0, util_internal_validation_1.option)(util_internal_validation_1.NAT),
121
- }),
104
+ commission: (0, util_internal_validation_1.option)(util_internal_validation_1.NAT)
105
+ })
122
106
  });
123
107
  return (0, util_internal_validation_1.object)({
124
108
  header: BlockHeader,
125
- transactions: (0, util_internal_validation_1.withDefault)([], (0, util_internal_validation_1.array)(Transaction)),
109
+ transactions: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Transaction)),
126
110
  instructions: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Instruction)),
127
111
  logs: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(LogMessage)),
128
112
  balances: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Balance)),
129
113
  tokenBalances: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(TokenBalance)),
130
- rewards: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Reward)),
114
+ rewards: (0, util_internal_validation_1.option)((0, util_internal_validation_1.array)(Reward))
131
115
  });
132
116
  });
133
117
  //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/archive/schema.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAC5D,2DAAgD;AAChD,iFAc2C;AAC3C,2CAAsC;AAIzB,QAAA,aAAa,GAAG,IAAA,wBAAQ,EAAC,CAAC,MAAsB,EAAE,EAAE;IAC7D,IAAI,WAAW,GAAG,IAAA,iCAAM,EAAC;QACrB,MAAM,EAAE,8BAAG;QACX,IAAI,EAAE,8BAAG;QACT,UAAU,EAAE,8BAAG;QACf,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE,8BAAG;YACT,UAAU,EAAE,8BAAG;YACf,SAAS,EAAE,8BAAG;SACjB,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,WAAW,GAAG,IAAA,iCAAM,EAAC;QACrB,gBAAgB,EAAE,8BAAG;QACrB,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,OAAO,EAAE,IAAA,gCAAK,EAAC;gBACX,MAAM,EAAE,IAAA,mCAAQ,EAAC,QAAQ,CAAC;gBAC1B,aAAa,EAAE,8BAAG;aACrB,CAAC;YACF,WAAW,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;YACvB,mBAAmB,EAAE,IAAA,gCAAK,EAAC,oCAAkB,CAAC;YAC9C,yBAAyB,EAAE,8BAAG;YAC9B,2BAA2B,EAAE,8BAAG;YAChC,qBAAqB,EAAE,8BAAG;YAC1B,eAAe,EAAE,8BAAG;YACpB,UAAU,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;YACtB,GAAG,EAAE,IAAA,mCAAQ,EAAC,qCAAU,CAAC;YACzB,oBAAoB,EAAE,kCAAO;YAC7B,GAAG,EAAE,kCAAO;YACZ,eAAe,EAAE,IAAA,iCAAM,EAAC,IAAA,iCAAM,EAAC;gBAC3B,QAAQ,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;gBACpB,QAAQ,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;aACvB,CAAC,CAAC;YACH,qBAAqB,EAAE,kCAAO;SACjC,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,WAAW,GAAG,IAAA,iCAAM,EAAC;QACrB,gBAAgB,EAAE,8BAAG;QACrB,kBAAkB,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;QAC9B,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,SAAS,EAAE,8BAAG;YACd,QAAQ,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;YACpB,IAAI,EAAE,8BAAG;YACT,oBAAoB,EAAE,IAAA,iCAAM,EAAC,kCAAO,CAAC;YACrC,EAAE,EAAE,gCAAK;YACT,EAAE,EAAE,gCAAK;YACT,EAAE,EAAE,gCAAK;YACT,EAAE,EAAE,gCAAK;YACT,KAAK,EAAE,IAAA,iCAAM,EAAC,iCAAM,CAAC;YACrB,WAAW,EAAE,kCAAO;YACpB,qBAAqB,EAAE,kCAAO;SACjC,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,UAAU,GAAG,IAAA,iCAAM,EAAC;QACpB,gBAAgB,EAAE,8BAAG;QACrB,QAAQ,EAAE,8BAAG;QACb,kBAAkB,EAAE,IAAA,gCAAK,EAAC,8BAAG,CAAC;QAC9B,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,GAAG,EAAE;YACnB,SAAS,EAAE,8BAAG;YACd,IAAI,EAAE,IAAA,gCAAK,EAAC;gBACR,GAAG,EAAE,IAAA,mCAAQ,EAAC,KAAK,CAAC;gBACpB,IAAI,EAAE,IAAA,mCAAQ,EAAC,MAAM,CAAC;gBACtB,KAAK,EAAE,IAAA,mCAAQ,EAAC,OAAO,CAAC;aAC3B,CAAC;YACF,OAAO,EAAE,iCAAM;SAClB,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,OAAO,GAAG,IAAA,iCAAM,EAAC;QACjB,gBAAgB,EAAE,8BAAG;QACrB,OAAO,EAAE,8BAAG;QACZ,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,OAAO,EAAE;YACvB,GAAG,EAAE,kCAAO;YACZ,IAAI,EAAE,kCAAO;SAChB,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,YAAY,GAAG,IAAA,iCAAM,EAAC;QACtB,gBAAgB,EAAE,8BAAG;QACrB,OAAO,EAAE,8BAAG;QACZ,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,YAAY,EAAE;YAC5B,YAAY,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACzB,aAAa,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YAC1B,OAAO,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACpB,QAAQ,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACrB,WAAW,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACxB,YAAY,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACzB,QAAQ,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACrB,SAAS,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;YACtB,SAAS,EAAE,IAAA,iCAAM,EAAC,kCAAO,CAAC;YAC1B,UAAU,EAAE,IAAA,iCAAM,EAAC,kCAAO,CAAC;SAC9B,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,MAAM,GAAG,IAAA,iCAAM,EAAC;QAChB,MAAM,EAAE,8BAAG;QACX,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,MAAM,EAAE;YACtB,QAAQ,EAAE,kCAAO;YACjB,WAAW,EAAE,kCAAO;YACpB,UAAU,EAAE,IAAA,iCAAM,EAAC,iCAAM,CAAC;YAC1B,UAAU,EAAE,IAAA,iCAAM,EAAC,8BAAG,CAAC;SAC1B,CAAC;KACL,CAAC,CAAA;IAEF,OAAO,IAAA,iCAAM,EAAC;QACV,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,IAAA,iCAAM,EAAC,IAAA,gCAAK,EAAC,WAAW,CAAC,CAAC;QACxC,YAAY,EAAE,IAAA,iCAAM,EAAC,IAAA,gCAAK,EAAC,WAAW,CAAC,CAAC;QACxC,IAAI,EAAE,IAAA,iCAAM,EAAC,IAAA,gCAAK,EAAC,UAAU,CAAC,CAAC;QAC/B,QAAQ,EAAE,IAAA,iCAAM,EAAC,IAAA,gCAAK,EAAC,OAAO,CAAC,CAAC;QAChC,aAAa,EAAE,IAAA,iCAAM,EAAC,IAAA,gCAAK,EAAC,YAAY,CAAC,CAAC;QAC1C,OAAO,EAAE,IAAA,iCAAM,EAAC,IAAA,gCAAK,EAAC,MAAM,CAAC,CAAC;KACjC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -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":"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"}
@@ -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,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFields = getFields;
4
+ exports.project = project;
5
+ const model_1 = require("./model");
6
+ /**
7
+ * Get effective set of selected fields.
8
+ */
9
+ function getFields(fields) {
10
+ return {
11
+ block: merge(model_1.DEFAULT_FIELDS.block, fields?.block),
12
+ transaction: merge(model_1.DEFAULT_FIELDS.transaction, fields?.transaction),
13
+ instruction: merge(model_1.DEFAULT_FIELDS.instruction, fields?.instruction),
14
+ log: merge(model_1.DEFAULT_FIELDS.log, fields?.log),
15
+ balance: merge(model_1.DEFAULT_FIELDS.balance, fields?.balance),
16
+ tokenBalance: merge(model_1.DEFAULT_FIELDS.tokenBalance, fields?.tokenBalance),
17
+ reward: merge(model_1.DEFAULT_FIELDS.reward, fields?.reward)
18
+ };
19
+ }
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
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/data/fields.ts"],"names":[],"mappings":";;AAOA,8BAUC;AAsBD,0BAUC;AAjDD,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;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"}
@@ -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"}