@sentio/sdk 2.35.0 → 2.35.1-rc.1

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 (81) hide show
  1. package/lib/eth/binds.d.ts +2 -2
  2. package/lib/eth/binds.d.ts.map +1 -1
  3. package/lib/eth/binds.js +4 -4
  4. package/lib/eth/binds.js.map +1 -1
  5. package/lib/eth/codegen/codegen.js +2 -0
  6. package/lib/eth/codegen/codegen.js.map +1 -1
  7. package/lib/eth/codegen/ethers-sentio.d.ts.map +1 -1
  8. package/lib/eth/codegen/ethers-sentio.js +2 -0
  9. package/lib/eth/codegen/ethers-sentio.js.map +1 -1
  10. package/lib/eth/eth-plugin.js +2 -2
  11. package/lib/eth/eth-plugin.js.map +1 -1
  12. package/lib/fuel/base-processor.d.ts +13 -0
  13. package/lib/fuel/base-processor.d.ts.map +1 -0
  14. package/lib/fuel/base-processor.js +26 -0
  15. package/lib/fuel/base-processor.js.map +1 -0
  16. package/lib/fuel/codegen/codegen.d.ts +2 -0
  17. package/lib/fuel/codegen/codegen.d.ts.map +1 -0
  18. package/lib/fuel/codegen/codegen.js +132 -0
  19. package/lib/fuel/codegen/codegen.js.map +1 -0
  20. package/lib/fuel/codegen/index.d.ts +2 -0
  21. package/lib/fuel/codegen/index.d.ts.map +1 -0
  22. package/lib/fuel/codegen/index.js +2 -0
  23. package/lib/fuel/codegen/index.js.map +1 -0
  24. package/lib/fuel/codegen/run.d.ts +2 -0
  25. package/lib/fuel/codegen/run.d.ts.map +1 -0
  26. package/lib/fuel/codegen/run.js +11 -0
  27. package/lib/fuel/codegen/run.js.map +1 -0
  28. package/lib/fuel/codegen/utils.d.ts +2 -0
  29. package/lib/fuel/codegen/utils.d.ts.map +1 -0
  30. package/lib/fuel/codegen/utils.js +4 -0
  31. package/lib/fuel/codegen/utils.js.map +1 -0
  32. package/lib/fuel/context.d.ts +14 -0
  33. package/lib/fuel/context.d.ts.map +1 -0
  34. package/lib/fuel/context.js +27 -0
  35. package/lib/fuel/context.js.map +1 -0
  36. package/lib/fuel/fuel-plugin.d.ts +17 -0
  37. package/lib/fuel/fuel-plugin.d.ts.map +1 -0
  38. package/lib/fuel/fuel-plugin.js +96 -0
  39. package/lib/fuel/fuel-plugin.js.map +1 -0
  40. package/lib/fuel/fuel-processor.d.ts +32 -0
  41. package/lib/fuel/fuel-processor.d.ts.map +1 -0
  42. package/lib/fuel/fuel-processor.js +94 -0
  43. package/lib/fuel/fuel-processor.js.map +1 -0
  44. package/lib/fuel/index.d.ts +7 -0
  45. package/lib/fuel/index.d.ts.map +1 -0
  46. package/lib/fuel/index.js +7 -0
  47. package/lib/fuel/index.js.map +1 -0
  48. package/lib/fuel/network.d.ts +8 -0
  49. package/lib/fuel/network.d.ts.map +1 -0
  50. package/lib/fuel/network.js +14 -0
  51. package/lib/fuel/network.js.map +1 -0
  52. package/lib/fuel/transaction.d.ts +8 -0
  53. package/lib/fuel/transaction.d.ts.map +1 -0
  54. package/lib/fuel/transaction.js +23 -0
  55. package/lib/fuel/transaction.js.map +1 -0
  56. package/lib/testing/fuel-facet.d.ts +9 -0
  57. package/lib/testing/fuel-facet.d.ts.map +1 -0
  58. package/lib/testing/fuel-facet.js +51 -0
  59. package/lib/testing/fuel-facet.js.map +1 -0
  60. package/lib/testing/test-processor-server.d.ts +2 -0
  61. package/lib/testing/test-processor-server.d.ts.map +1 -1
  62. package/lib/testing/test-processor-server.js +3 -0
  63. package/lib/testing/test-processor-server.js.map +1 -1
  64. package/package.json +12 -6
  65. package/src/eth/binds.ts +4 -4
  66. package/src/eth/codegen/codegen.ts +2 -0
  67. package/src/eth/codegen/ethers-sentio.ts +4 -1
  68. package/src/eth/eth-plugin.ts +2 -2
  69. package/src/fuel/base-processor.ts +38 -0
  70. package/src/fuel/codegen/codegen.ts +149 -0
  71. package/src/fuel/codegen/index.ts +1 -0
  72. package/src/fuel/codegen/run.ts +10 -0
  73. package/src/fuel/codegen/utils.ts +6 -0
  74. package/src/fuel/context.ts +34 -0
  75. package/src/fuel/fuel-plugin.ts +128 -0
  76. package/src/fuel/fuel-processor.ts +125 -0
  77. package/src/fuel/index.ts +6 -0
  78. package/src/fuel/network.ts +16 -0
  79. package/src/fuel/transaction.ts +43 -0
  80. package/src/testing/fuel-facet.ts +58 -0
  81. package/src/testing/test-processor-server.ts +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuel-plugin.js","sourceRoot":"","sources":["../../src/fuel/fuel-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { ListStateStorage } from '@sentio/runtime';
2
+ import { Data_FuelCall, FuelCallHandlerConfig, ProcessResult } from '@sentio/protos';
3
+ import { FuelCall, FuelContext } from './context.js';
4
+ import { JsonAbi } from 'fuels';
5
+ import { FuelNetwork } from './network.js';
6
+ import { FuelFetchConfig, FuelTransaction } from './transaction.js';
7
+ export declare class FuelProcessorState extends ListStateStorage<FuelProcessor> {
8
+ static INSTANCE: FuelProcessorState;
9
+ }
10
+ export declare class FuelProcessor {
11
+ readonly config: FuelProcessorConfig;
12
+ callHandlers: CallHandler<Data_FuelCall>[];
13
+ private provider;
14
+ static bind(config: FuelProcessorConfig): FuelProcessor;
15
+ constructor(config: FuelProcessorConfig);
16
+ configure(): Promise<void>;
17
+ onTransaction(handler: (transaction: FuelTransaction, ctx: FuelContext) => void | Promise<void>, config?: FuelFetchConfig): this;
18
+ onCall(nameFilter: string | string[], handler: (call: FuelCall, ctx: FuelContext) => void | Promise<void>, config?: FuelFetchConfig): this;
19
+ }
20
+ export type CallHandler<T> = {
21
+ handler: (call: T) => Promise<ProcessResult>;
22
+ fetchConfig: Partial<FuelCallHandlerConfig>;
23
+ };
24
+ export type FuelProcessorConfig = {
25
+ address: string;
26
+ name?: string;
27
+ chainId: FuelNetwork;
28
+ startBlock?: bigint;
29
+ endBlock?: bigint;
30
+ abi?: JsonAbi;
31
+ };
32
+ //# sourceMappingURL=fuel-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuel-processor.d.ts","sourceRoot":"","sources":["../../src/fuel/fuel-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAkB,qBAAqB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACpG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAiD,OAAO,EAAY,MAAM,OAAO,CAAA;AACxF,OAAO,EAAE,WAAW,EAAkB,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAoD,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAErH,qBAAa,kBAAmB,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IACrE,MAAM,CAAC,QAAQ,qBAA2B;CAC3C;AAED,qBAAa,aAAa;IAWZ,QAAQ,CAAC,MAAM,EAAE,mBAAmB;IAVhD,YAAY,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAK;IAE/C,OAAO,CAAC,QAAQ,CAAU;IAE1B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa;gBAMlC,MAAM,EAAE,mBAAmB;IAE1C,SAAS;IAKR,aAAa,CAClB,OAAO,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACjF,MAAM,GAAE,eAA2C;IAwB9C,MAAM,CACX,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACnE,MAAM,GAAE,eAA2C;CAoDtD;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5C,WAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { ListStateStorage } from '@sentio/runtime';
2
+ import { FuelContext } from './context.js';
3
+ import { bn, Contract, Interface, InvocationCallResult, Provider } from 'fuels';
4
+ import { getRpcEndpoint } from './network.js';
5
+ import { decodeFuelTransaction, DEFAULT_FUEL_FETCH_CONFIG } from './transaction.js';
6
+ export class FuelProcessorState extends ListStateStorage {
7
+ static INSTANCE = new FuelProcessorState();
8
+ }
9
+ export class FuelProcessor {
10
+ config;
11
+ callHandlers = [];
12
+ provider;
13
+ static bind(config) {
14
+ const processor = new FuelProcessor(config);
15
+ FuelProcessorState.INSTANCE.addValue(processor);
16
+ return processor;
17
+ }
18
+ constructor(config) {
19
+ this.config = config;
20
+ }
21
+ async configure() {
22
+ const url = getRpcEndpoint(this.config.chainId);
23
+ this.provider = await Provider.create(url);
24
+ }
25
+ onTransaction(handler, config = DEFAULT_FUEL_FETCH_CONFIG) {
26
+ const callHandler = {
27
+ handler: async (call) => {
28
+ const abiMap = this.config.abi
29
+ ? {
30
+ [this.config.address]: this.config.abi
31
+ }
32
+ : {};
33
+ const tx = decodeFuelTransaction(call.transaction, abiMap, this.provider);
34
+ const ctx = new FuelContext(tx, this.config.chainId);
35
+ await handler(tx, ctx);
36
+ return ctx.stopAndGetResult();
37
+ },
38
+ fetchConfig: {
39
+ filters: [],
40
+ ...config
41
+ }
42
+ };
43
+ this.callHandlers.push(callHandler);
44
+ return this;
45
+ }
46
+ onCall(nameFilter, handler, config = DEFAULT_FUEL_FETCH_CONFIG) {
47
+ const names = new Set(Array.isArray(nameFilter) ? nameFilter : [nameFilter]);
48
+ if (!this.config.abi) {
49
+ throw new Error('ABI must be provided to use onCall');
50
+ }
51
+ const abi = this.config.abi;
52
+ const filters = {};
53
+ const abiInterface = new Interface(abi);
54
+ for (const name of names) {
55
+ try {
56
+ const func = abiInterface.functions[name];
57
+ const filter = bn(func.selector, 'hex').toString();
58
+ filters[func.name] = {
59
+ function: filter,
60
+ includeFailed: !!config.includeFailed
61
+ };
62
+ }
63
+ catch (e) {
64
+ console.error(e);
65
+ }
66
+ }
67
+ const callHandler = {
68
+ handler: async (call) => {
69
+ const contract = new Contract(this.config.address, abi, this.provider);
70
+ const gqlTransaction = call.transaction;
71
+ const tx = decodeFuelTransaction(gqlTransaction, { [this.config.address]: abi }, this.provider);
72
+ const ctx = new FuelContext(tx, this.config.chainId);
73
+ for (const op of tx.operations) {
74
+ for (const call of op.calls || []) {
75
+ if (names.has(call.functionName)) {
76
+ const fn = contract.functions[call.functionName];
77
+ const args = Object.values(call.argumentsProvided || {});
78
+ const scope = fn(...args);
79
+ const invocationResult = await InvocationCallResult.build(scope, tx, false);
80
+ await handler(invocationResult, ctx);
81
+ }
82
+ }
83
+ }
84
+ return ctx.stopAndGetResult();
85
+ },
86
+ fetchConfig: {
87
+ filters: Object.values(filters)
88
+ }
89
+ };
90
+ this.callHandlers.push(callHandler);
91
+ return this;
92
+ }
93
+ }
94
+ //# sourceMappingURL=fuel-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuel-processor.js","sourceRoot":"","sources":["../../src/fuel/fuel-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { FuelPlugin } from './fuel-plugin.js';
2
+ export * from './context.js';
3
+ export * from './fuel-processor.js';
4
+ export * from './network.js';
5
+ export * from './transaction.js';
6
+ export * from './base-processor.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fuel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export { FuelPlugin } from './fuel-plugin.js';
2
+ export * from './context.js';
3
+ export * from './fuel-processor.js';
4
+ export * from './network.js';
5
+ export * from './transaction.js';
6
+ export * from './base-processor.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fuel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { FuelChainId } from '@sentio/chain';
2
+ export type FuelNetwork = FuelChainId;
3
+ export declare const FuelNetwork: {
4
+ readonly MAIN_NET: FuelChainId.FUEL_MAINNET;
5
+ readonly TEST_NET: FuelChainId.FUEL_TESTNET_BETA_V5;
6
+ };
7
+ export declare function getRpcEndpoint(network: FuelNetwork): string;
8
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/fuel/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AACrC,eAAO,MAAM,WAAW;;;CAGvB,CAAA;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAM3D"}
@@ -0,0 +1,14 @@
1
+ import { FuelChainId } from '@sentio/chain';
2
+ import { FUEL_BETA_5_NETWORK_URL, FUEL_NETWORK_URL } from 'fuels';
3
+ export const FuelNetwork = {
4
+ MAIN_NET: FuelChainId.FUEL_MAINNET,
5
+ TEST_NET: FuelChainId.FUEL_TESTNET_BETA_V5
6
+ };
7
+ export function getRpcEndpoint(network) {
8
+ switch (network) {
9
+ case FuelNetwork.TEST_NET:
10
+ return FUEL_BETA_5_NETWORK_URL;
11
+ }
12
+ return FUEL_NETWORK_URL;
13
+ }
14
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/fuel/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAGjE,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,QAAQ,EAAE,WAAW,CAAC,YAAY;IAClC,QAAQ,EAAE,WAAW,CAAC,oBAAoB;CAC3C,CAAA;AAED,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,QAAQ;YACvB,OAAO,uBAAuB,CAAA;IAClC,CAAC;IACD,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AbiMap, Provider, TransactionSummary } from 'fuels';
2
+ export type FuelFetchConfig = {
3
+ includeFailed?: boolean;
4
+ };
5
+ export declare const DEFAULT_FUEL_FETCH_CONFIG: FuelFetchConfig;
6
+ export type FuelTransaction = TransactionSummary;
7
+ export declare function decodeFuelTransaction(gqlTransaction: any, abiMap: AbiMap, provider: Provider): FuelTransaction;
8
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/fuel/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAKN,QAAQ,EAER,kBAAkB,EACnB,MAAM,OAAO,CAAA;AAEd,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,eAEvC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAA;AAEhD,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqB9G"}
@@ -0,0 +1,23 @@
1
+ import { arrayify, assembleTransactionSummary, bn, processGqlReceipt, TransactionCoder } from 'fuels';
2
+ export const DEFAULT_FUEL_FETCH_CONFIG = {
3
+ includeFailed: false
4
+ };
5
+ export function decodeFuelTransaction(gqlTransaction, abiMap, provider) {
6
+ const rawPayload = arrayify(gqlTransaction.rawPayload);
7
+ const [decodedTransaction] = new TransactionCoder().decode(rawPayload, 0);
8
+ const receipts = gqlTransaction.receipts?.map(processGqlReceipt) || [];
9
+ const { gasPerByte, gasPriceFactor, maxInputs, gasCosts } = provider.getChain().consensusParameters;
10
+ return assembleTransactionSummary({
11
+ id: gqlTransaction.id,
12
+ receipts,
13
+ transaction: decodedTransaction,
14
+ transactionBytes: rawPayload,
15
+ gqlTransactionStatus: gqlTransaction.status,
16
+ gasPerByte: bn(gasPerByte),
17
+ gasPriceFactor: bn(gasPriceFactor),
18
+ abiMap,
19
+ maxInputs,
20
+ gasCosts
21
+ });
22
+ }
23
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/fuel/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,0BAA0B,EAC1B,EAAE,EACF,iBAAiB,EAEjB,gBAAgB,EAEjB,MAAM,OAAO,CAAA;AAMd,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,aAAa,EAAE,KAAK;CACrB,CAAA;AAID,MAAM,UAAU,qBAAqB,CAAC,cAAmB,EAAE,MAAc,EAAE,QAAkB;IAC3F,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;IAEtD,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAEzE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAA;IAEtE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAA;IAEnG,OAAO,0BAA0B,CAAC;QAChC,EAAE,EAAE,cAAc,CAAC,EAAE;QACrB,QAAQ;QACR,WAAW,EAAE,kBAAkB;QAC/B,gBAAgB,EAAE,UAAU;QAC5B,oBAAoB,EAAE,cAAc,CAAC,MAAM;QAC3C,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;QAC1B,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC;QAClC,MAAM;QACN,SAAS;QACT,QAAQ;KACT,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { TestProcessorServer } from './test-processor-server.js';
2
+ import { FuelNetwork } from '../fuel/index.js';
3
+ export declare class FuelFacet {
4
+ server: TestProcessorServer;
5
+ constructor(server: TestProcessorServer);
6
+ testOnTransaction(transaction: any, network?: FuelNetwork): Promise<import("@sentio/protos").ProcessBindingResponse>;
7
+ private buildBinding;
8
+ }
9
+ //# sourceMappingURL=fuel-facet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuel-facet.d.ts","sourceRoot":"","sources":["../../src/testing/fuel-facet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,qBAAa,SAAS;IACpB,MAAM,EAAE,mBAAmB,CAAA;gBAEf,MAAM,EAAE,mBAAmB;IAIvC,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,GAAE,WAAkC;IAW/E,OAAO,CAAC,YAAY;CAkCrB"}
@@ -0,0 +1,51 @@
1
+ import { HandlerType } from '@sentio/protos';
2
+ import { FuelNetwork } from '../fuel/index.js';
3
+ export class FuelFacet {
4
+ server;
5
+ constructor(server) {
6
+ this.server = server;
7
+ }
8
+ testOnTransaction(transaction, network = FuelNetwork.TEST_NET) {
9
+ const bindings = this.buildBinding(transaction, network);
10
+ if (!bindings) {
11
+ throw Error('Invalid test transaction: ' + JSON.stringify(transaction));
12
+ }
13
+ return this.server.processBindings({
14
+ bindings
15
+ });
16
+ }
17
+ buildBinding(transaction, network) {
18
+ const res = [];
19
+ for (const config of this.server.contractConfigs) {
20
+ if (config.contract?.chainId !== network) {
21
+ continue;
22
+ }
23
+ for (const callConfig of config.fuelCallConfigs) {
24
+ const binding = {
25
+ data: {
26
+ fuelCall: {
27
+ transaction,
28
+ timestamp: new Date()
29
+ }
30
+ },
31
+ handlerIds: [callConfig.handlerId],
32
+ handlerType: HandlerType.FUEL_CALL
33
+ };
34
+ const filter = callConfig.filters[0]?.function;
35
+ if (filter) {
36
+ // filter out by tx receipt
37
+ for (const receipt of transaction.receipts || []) {
38
+ if (receipt.receiptType == 'CALL' && receipt.param1 == filter) {
39
+ res.push(binding);
40
+ }
41
+ }
42
+ }
43
+ else {
44
+ res.push(binding);
45
+ }
46
+ }
47
+ }
48
+ return res;
49
+ }
50
+ }
51
+ //# sourceMappingURL=fuel-facet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuel-facet.js","sourceRoot":"","sources":["../../src/testing/fuel-facet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAqB;IAE3B,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,iBAAiB,CAAC,WAAgB,EAAE,UAAuB,WAAW,CAAC,QAAQ;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;QACzE,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACjC,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,YAAY,CAAC,WAAgB,EAAE,OAAoB;QACzD,MAAM,GAAG,GAAkB,EAAE,CAAA;QAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;gBACzC,SAAQ;YACV,CAAC;YACD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG;oBACd,IAAI,EAAE;wBACJ,QAAQ,EAAE;4BACR,WAAW;4BACX,SAAS,EAAE,IAAI,IAAI,EAAE;yBACtB;qBACF;oBACD,UAAU,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAClC,WAAW,EAAE,WAAW,CAAC,SAAS;iBACnC,CAAA;gBAED,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAA;gBAC9C,IAAI,MAAM,EAAE,CAAC;oBACX,2BAA2B;oBAC3B,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;wBACjD,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;4BAC9D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;wBACnB,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
@@ -5,6 +5,7 @@ import { AptosFacet } from './aptos-facet.js';
5
5
  import { SolanaFacet } from './solana-facet.js';
6
6
  import { EthFacet } from './eth-facet.js';
7
7
  import { SuiFacet } from './sui-facet.js';
8
+ import { FuelFacet } from './fuel-facet.js';
8
9
  export declare const TEST_CONTEXT: CallContext;
9
10
  export declare function cleanTest(): void;
10
11
  export declare class TestProcessorServer implements ProcessorServiceImplementation {
@@ -15,6 +16,7 @@ export declare class TestProcessorServer implements ProcessorServiceImplementati
15
16
  eth: EthFacet;
16
17
  solana: SolanaFacet;
17
18
  sui: SuiFacet;
19
+ fuel: FuelFacet;
18
20
  constructor(loader: () => Promise<any>, httpEndpoints?: Record<string, string>);
19
21
  start(request?: StartRequest, context?: CallContext): Promise<Empty>;
20
22
  stop(request: Empty, context?: CallContext): Promise<Empty>;
@@ -1 +1 @@
1
- {"version":3,"file":"test-processor-server.d.ts","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,KAAK,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAa,oBAAoB,EAAS,MAAM,iBAAiB,CAAA;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,eAAO,MAAM,YAAY,EAAE,WAA6B,CAAA;AAExD,wBAAgB,SAAS,SAExB;AAED,qBAAa,mBAAoB,YAAW,8BAA8B;IACxE,OAAO,EAAE,oBAAoB,CAAA;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,cAAc,EAAE,aAAa,EAAE,CAAA;IAE/B,KAAK,EAAE,UAAU,CAAA;IACjB,GAAG,EAAE,QAAQ,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,QAAQ,CAAA;gBAED,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAe5E,KAAK,CAAC,OAAO,GAAE,YAAwC,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAQtG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAI5D,SAAS,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhG,eAAe,CACb,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,WAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC;IAIlC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,WAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1G,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW;;;;CAGhF"}
1
+ {"version":3,"file":"test-processor-server.d.ts","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,KAAK,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAa,oBAAoB,EAAS,MAAM,iBAAiB,CAAA;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,eAAO,MAAM,YAAY,EAAE,WAA6B,CAAA;AAExD,wBAAgB,SAAS,SAExB;AAED,qBAAa,mBAAoB,YAAW,8BAA8B;IACxE,OAAO,EAAE,oBAAoB,CAAA;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,cAAc,EAAE,aAAa,EAAE,CAAA;IAE/B,KAAK,EAAE,UAAU,CAAA;IACjB,GAAG,EAAE,QAAQ,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,QAAQ,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;gBAEH,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAgB5E,KAAK,CAAC,OAAO,GAAE,YAAwC,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAQtG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAI5D,SAAS,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhG,eAAe,CACb,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,WAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC;IAIlC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,WAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1G,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW;;;;CAGhF"}
@@ -4,6 +4,7 @@ import { AptosFacet } from './aptos-facet.js';
4
4
  import { SolanaFacet } from './solana-facet.js';
5
5
  import { EthFacet } from './eth-facet.js';
6
6
  import { SuiFacet } from './sui-facet.js';
7
+ import { FuelFacet } from './fuel-facet.js';
7
8
  export const TEST_CONTEXT = {};
8
9
  export function cleanTest() {
9
10
  State.reset();
@@ -16,6 +17,7 @@ export class TestProcessorServer {
16
17
  eth;
17
18
  solana;
18
19
  sui;
20
+ fuel;
19
21
  constructor(loader, httpEndpoints = {}) {
20
22
  cleanTest();
21
23
  this.service = new ProcessorServiceImpl(loader);
@@ -23,6 +25,7 @@ export class TestProcessorServer {
23
25
  this.solana = new SolanaFacet(this);
24
26
  this.eth = new EthFacet(this);
25
27
  this.sui = new SuiFacet(this);
28
+ this.fuel = new FuelFacet(this);
26
29
  for (const k in CHAIN_MAP) {
27
30
  const http = httpEndpoints[k] || '';
28
31
  Endpoints.INSTANCE.chainServer.set(k, http);
@@ -1 +1 @@
1
- {"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,CAAC,MAAM,YAAY,GAA6B,EAAE,CAAA;AAExD,MAAM,UAAU,SAAS;IACvB,KAAK,CAAC,KAAK,EAAE,CAAA;AACf,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC9B,OAAO,CAAsB;IAC7B,eAAe,CAAkB;IACjC,cAAc,CAAiB;IAE/B,KAAK,CAAY;IACjB,GAAG,CAAU;IACb,MAAM,CAAa;IACnB,GAAG,CAAU;IAEb,YAAY,MAA0B,EAAE,gBAAwC,EAAE;QAChF,SAAS,EAAE,CAAA;QAEX,IAAI,CAAC,OAAO,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE7B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACnC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,UAAwB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,OAAO,GAAG,YAAY;QACnF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAA;QAC7C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;QAC3C,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,CAAC,OAAc,EAAE,OAAO,GAAG,YAAY;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,SAAS,CAAC,OAA6B,EAAE,OAAO,GAAG,YAAY;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,eAAe,CACb,OAA+B,EAC/B,UAAuB,YAAY;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IAED,cAAc,CAAC,OAAoB,EAAE,UAAuB,YAAY;QACtE,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACvE,CAAC;IAED,qBAAqB,CAAC,OAAmC,EAAE,OAAoB;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
- "version": "2.35.0",
3
+ "version": "2.35.1-rc.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -33,7 +33,9 @@
33
33
  "./sui/builtin": "./lib/sui/builtin/index.js",
34
34
  "./sui/builtin/0x1": "./lib/sui/builtin/0x1.js",
35
35
  "./sui/builtin/0x2": "./lib/sui/builtin/0x2.js",
36
- "./sui/builtin/0x3": "./lib/sui/builtin/0x3.js"
36
+ "./sui/builtin/0x3": "./lib/sui/builtin/0x3.js",
37
+ "./fuel": "./lib/fuel/index.js",
38
+ "./fuel/codegen": "./lib/fuel/codegen/index.js"
37
39
  },
38
40
  "files": [
39
41
  "{lib,src}",
@@ -43,10 +45,11 @@
43
45
  "dependencies": {
44
46
  "@aptos-labs/ts-sdk": "~1.13.0",
45
47
  "@coral-xyz/borsh": "^0.29.0",
48
+ "@fuel-ts/abi-typegen": "^0.82.0",
46
49
  "@mysten/sui.js": "~0.51.0",
47
50
  "@project-serum/anchor": "^0.26.0",
48
51
  "@sentio/bigdecimal": "9.1.1-patch.3",
49
- "@sentio/chain": "^1.0.16",
52
+ "@sentio/chain": "^1.0.21",
50
53
  "@sentio/ethers-v6": "^1.0.29",
51
54
  "@solana/web3.js": "1.89.1",
52
55
  "@typemove/aptos": "~1.5.6",
@@ -56,6 +59,7 @@
56
59
  "chalk": "^5.3.0",
57
60
  "csv-parse": "^5.5.3",
58
61
  "ethers": "npm:@sentio/ethers@6.7.1-patch.4",
62
+ "fuels": "^0.81.0",
59
63
  "js-sha3": "^0.9.3",
60
64
  "lru-cache": "^10.2.0",
61
65
  "mkdirp": "^1.0.4",
@@ -73,8 +77,8 @@
73
77
  "typedoc": "^0.25.7",
74
78
  "utility-types": "^3.11.0",
75
79
  "yaml": "^2.3.4",
76
- "@sentio/protos": "2.35.0",
77
- "@sentio/runtime": "^2.35.0"
80
+ "@sentio/protos": "2.35.1-rc.1",
81
+ "@sentio/runtime": "^2.35.1-rc.1"
78
82
  },
79
83
  "peerDependencies": {
80
84
  "tsup": "npm:@sentio/tsup@^6.7.2"
@@ -93,12 +97,14 @@
93
97
  "build": "pnpm gen && pnpm compile",
94
98
  "build:all": "pnpm --filter=$(node -p \"require('./package.json').name\")... build",
95
99
  "compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
96
- "gen": "pnpm gen:eth && pnpm gen:aptos && pnpm gen:sui && pnpm gen:solana",
100
+ "gen": "pnpm gen:eth && pnpm gen:aptos && pnpm gen:sui && pnpm gen:solana && pnpm gen:fuel",
97
101
  "gen:aptos": "node --loader ts-node/esm src/aptos/codegen/run.ts src/aptos/abis src/aptos/builtin && pnpm gen:aptos_test",
98
102
  "gen:aptos_test": "node --loader ts-node/esm src/aptos/codegen/run.ts src/aptos/tests/abis src/aptos/tests/types",
99
103
  "gen:docs": "typedoc --options typedoc.json",
100
104
  "gen:eth": "node --loader ts-node/esm src/eth/codegen/run.ts src/eth/abis src/eth/builtin && pnpm gen:eth_test",
101
105
  "gen:eth_test": "node --loader ts-node/esm src/eth/codegen/run.ts src/eth/tests/abis/eth ./src/eth/tests/types",
106
+ "gen:fuel": "node --loader ts-node/esm src/fuel/codegen/run.ts src/fuel/abis src/sui/builtin && pnpm gen:fuel_test",
107
+ "gen:fuel_test": "node --loader ts-node/esm src/fuel/codegen/run.ts src/fuel/tests/abis src/fuel/tests/types",
102
108
  "gen:solana": "node --loader ts-node/esm src/solana/codegen/run.ts src/solana/tests/abis src/solana/tests/types",
103
109
  "gen:sui": "node --loader ts-node/esm src/sui/codegen/run.ts src/sui/abis src/sui/builtin && pnpm gen:sui_test",
104
110
  "gen:sui_test": "node --loader ts-node/esm src/sui/codegen/run.ts src/sui/tests/abis src/sui/tests/types",
package/src/eth/binds.ts CHANGED
@@ -6,8 +6,8 @@ import { BaseContract } from 'ethers'
6
6
  import { MapStateStorage } from '@sentio/runtime'
7
7
  import { EthChainId } from '@sentio/chain'
8
8
 
9
- export class ProcessorState extends MapStateStorage<BaseProcessor<any, any>> {
10
- static INSTANCE = new ProcessorState()
9
+ export class EthProcessorState extends MapStateStorage<BaseProcessor<any, any>> {
10
+ static INSTANCE = new EthProcessorState()
11
11
  }
12
12
 
13
13
  // from abiName_address_chainId => contract wrapper
@@ -20,13 +20,13 @@ function getKey(abiName: string, address: string, network: EthChainId) {
20
20
  // Dedup processor that bind multiple times
21
21
  export function getProcessor(opts: BindOptions) {
22
22
  const sig = getOptionsSignature(opts)
23
- return ProcessorState.INSTANCE.getValue(sig)
23
+ return EthProcessorState.INSTANCE.getValue(sig)
24
24
  }
25
25
 
26
26
  export function addProcessor(opts: BindOptions, processor: BaseProcessor<any, any>) {
27
27
  const sig = getOptionsSignature(opts)
28
28
 
29
- ProcessorState.INSTANCE.getOrSetValue(sig, processor)
29
+ EthProcessorState.INSTANCE.getOrSetValue(sig, processor)
30
30
  }
31
31
 
32
32
  export function getContractByABI(abiName: string, address: string, network: EthChainId) {
@@ -67,9 +67,11 @@ async function codegenInternal(
67
67
 
68
68
  const fileDescriptions = loadFileDescriptions(services, config.filesToProcess)
69
69
 
70
+ // @ts-ignore - no types
70
71
  filesGenerated += processOutput(services, config, await target.beforeRun())
71
72
 
72
73
  for (const fd of fileDescriptions) {
74
+ // @ts-ignore - no types
73
75
  filesGenerated += processOutput(services, config, await target.transformFile(fd))
74
76
  }
75
77
 
@@ -1,3 +1,6 @@
1
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
+ // @ts-nocheck
3
+
1
4
  import Ethers from '@sentio/ethers-v6'
2
5
  import {
3
6
  Config,
@@ -65,7 +68,7 @@ export default class EthersSentio extends Ethers.default {
65
68
  }
66
69
  }
67
70
 
68
- override afterRun() {
71
+ override afterRun(): FileDescription[] {
69
72
  const commonPath = join('internal', 'common.ts')
70
73
  const files = super.afterRun()
71
74
  for (const [idx, file] of files.entries()) {
@@ -16,7 +16,7 @@ import {
16
16
  } from '@sentio/protos'
17
17
 
18
18
  import { ServerError, Status } from 'nice-grpc'
19
- import { ProcessorState } from './binds.js'
19
+ import { EthProcessorState } from './binds.js'
20
20
  import { AccountProcessorState } from './account-processor-state.js'
21
21
  import { ProcessorTemplateProcessorState } from './base-processor-template.js'
22
22
  import { GlobalProcessorState } from './base-processor.js'
@@ -49,7 +49,7 @@ export class EthPlugin extends Plugin {
49
49
  transactionHandlers: []
50
50
  }
51
51
 
52
- for (const processor of ProcessorState.INSTANCE.getValues()) {
52
+ for (const processor of EthProcessorState.INSTANCE.getValues()) {
53
53
  // If server favor incremental update this need to change
54
54
  // Start basic config for contract
55
55
  const chainId = processor.getChainId()
@@ -0,0 +1,38 @@
1
+ import { FuelProcessor, FuelProcessorConfig, FuelProcessorState } from './fuel-processor.js'
2
+ import { JsonAbi } from 'fuels'
3
+ import { FuelCall, FuelContext } from './context.js'
4
+ import { FuelFetchConfig } from './transaction.js'
5
+ import { FuelChainId } from '@sentio/chain'
6
+
7
+
8
+ export abstract class FuelAbstractProcessor extends FuelProcessor {
9
+
10
+ protected constructor(abi: JsonAbi, config?: FuelProcessorConfig) {
11
+ if (!config) {
12
+ config = {
13
+ chainId: FuelChainId.FUEL_MAINNET,
14
+ address: ''
15
+ }
16
+ }
17
+ config.abi = abi
18
+ super(config)
19
+ FuelProcessorState.INSTANCE.addValue(this)
20
+ }
21
+
22
+ protected onCallMethod<T extends Array<any>, R>(method: string, fn: (call: TypedCall<T, R>, ctx: FuelContext) => (void | Promise<void>), config: FuelFetchConfig): this {
23
+ const nameFilter = method
24
+ const handler =async (call: FuelCall, ctx: FuelContext) => {
25
+ await fn({
26
+ args: call.functionScopes[0].getCallConfig().args as T,
27
+ returnValue: call.value as R
28
+ }, ctx)
29
+ }
30
+ return super.onCall(nameFilter, handler, config)
31
+ }
32
+
33
+ }
34
+
35
+ export type TypedCall<T extends Array<any>, R> = {
36
+ args: T
37
+ returnValue: R
38
+ }