@sentio/sdk 2.1.5 → 2.2.0-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.
- package/lib/aptos/aptos-plugin.js +5 -13
- package/lib/aptos/aptos-plugin.js.map +1 -1
- package/lib/aptos/aptos-processor.d.ts +5 -28
- package/lib/aptos/aptos-processor.js +4 -14
- package/lib/aptos/aptos-processor.js.map +1 -1
- package/lib/aptos/builtin/0x1.d.ts +116 -115
- package/lib/aptos/builtin/0x1.js +0 -1
- package/lib/aptos/builtin/0x1.js.map +1 -1
- package/lib/aptos/builtin/0x3.d.ts +28 -27
- package/lib/aptos/builtin/0x3.js +0 -1
- package/lib/aptos/builtin/0x3.js.map +1 -1
- package/lib/aptos/codegen/codegen.js +5 -5
- package/lib/aptos/codegen/codegen.js.map +1 -1
- package/lib/aptos/index.d.ts +0 -1
- package/lib/aptos/index.js.map +1 -1
- package/lib/aptos/tests/types/reserved.d.ts +21 -20
- package/lib/aptos/tests/types/reserved.js +0 -1
- package/lib/aptos/tests/types/reserved.js.map +1 -1
- package/lib/aptos/tests/types/soffl3.d.ts +37 -36
- package/lib/aptos/tests/types/soffl3.js +0 -1
- package/lib/aptos/tests/types/soffl3.js.map +1 -1
- package/lib/aptos/tests/types/souffle.d.ts +21 -20
- package/lib/aptos/tests/types/souffle.js +0 -1
- package/lib/aptos/tests/types/souffle.js.map +1 -1
- package/lib/core/chain.d.ts +3 -2
- package/lib/core/chain.js +3 -2
- package/lib/core/chain.js.map +1 -1
- package/lib/core/index.d.ts +0 -2
- package/lib/core/index.js +0 -2
- package/lib/core/index.js.map +1 -1
- package/lib/eth/context.d.ts +0 -7
- package/lib/eth/context.js +0 -24
- package/lib/eth/context.js.map +1 -1
- package/lib/eth/eth-plugin.js +4 -14
- package/lib/eth/eth-plugin.js.map +1 -1
- package/lib/move/index.d.ts +25 -0
- package/lib/move/index.js +11 -0
- package/lib/move/index.js.map +1 -0
- package/lib/solana/solana-plugin.js +3 -10
- package/lib/solana/solana-plugin.js.map +1 -1
- package/lib/sui/context.d.ts +13 -0
- package/lib/sui/context.js +33 -0
- package/lib/sui/context.js.map +1 -0
- package/lib/sui/index.d.ts +2 -0
- package/lib/sui/index.js +3 -0
- package/lib/sui/index.js.map +1 -0
- package/lib/sui/models.d.ts +8 -0
- package/lib/sui/models.js +25 -0
- package/lib/sui/models.js.map +1 -0
- package/lib/sui/network.d.ts +11 -0
- package/lib/sui/network.js +26 -0
- package/lib/sui/network.js.map +1 -0
- package/lib/sui/sui-plugin.d.ts +12 -0
- package/lib/sui/sui-plugin.js +96 -0
- package/lib/sui/sui-plugin.js.map +1 -0
- package/lib/sui/sui-processor.d.ts +29 -0
- package/lib/sui/sui-processor.js +120 -0
- package/lib/sui/sui-processor.js.map +1 -0
- package/lib/sui/tests/sui.test.d.ts +1 -0
- package/lib/sui/tests/sui.test.js.map +1 -0
- package/lib/testing/test-processor-server.d.ts +1 -0
- package/lib/testing/test-processor-server.js +3 -0
- package/lib/testing/test-processor-server.js.map +1 -1
- package/lib/utils/price.d.ts +6 -2
- package/lib/utils/price.js +15 -6
- package/lib/utils/price.js.map +1 -1
- package/package.json +14 -7
- package/src/aptos/aptos-plugin.ts +8 -16
- package/src/aptos/aptos-processor.ts +8 -46
- package/src/aptos/builtin/0x1.ts +115 -115
- package/src/aptos/builtin/0x3.ts +27 -27
- package/src/aptos/codegen/codegen.ts +5 -5
- package/src/aptos/index.ts +0 -1
- package/src/aptos/tests/types/reserved.ts +20 -20
- package/src/aptos/tests/types/soffl3.ts +36 -36
- package/src/aptos/tests/types/souffle.ts +20 -20
- package/src/core/chain.ts +4 -3
- package/src/core/index.ts +0 -3
- package/src/eth/context.ts +0 -26
- package/src/eth/eth-plugin.ts +3 -13
- package/src/move/index.ts +33 -0
- package/src/solana/solana-plugin.ts +2 -9
- package/src/sui/abis/0x1.json +2067 -0
- package/src/sui/abis/0x2.json +15598 -0
- package/src/sui/context.ts +43 -0
- package/src/sui/index.ts +3 -0
- package/src/sui/models.ts +38 -0
- package/src/sui/network.ts +28 -0
- package/src/sui/sui-plugin.ts +122 -0
- package/src/sui/sui-processor.ts +159 -0
- package/src/testing/test-processor-server.ts +4 -0
- package/src/utils/price.ts +31 -10
- package/lib/core/sui-plugin.d.ts +0 -8
- package/lib/core/sui-plugin.js +0 -42
- package/lib/core/sui-plugin.js.map +0 -1
- package/lib/core/sui-processor.d.ts +0 -25
- package/lib/core/sui-processor.js +0 -43
- package/lib/core/sui-processor.js.map +0 -1
- package/src/aptos/codegen/tsconfig.json +0 -8
- package/src/core/sui-plugin.ts +0 -48
- package/src/core/sui-processor.ts +0 -58
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-plugin.js","sourceRoot":"","sources":["../../src/solana/solana-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,
|
|
1
|
+
{"version":3,"file":"solana-plugin.js","sourceRoot":"","sources":["../../src/solana/solana-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAe,WAAW,EAAwC,MAAM,gBAAgB,CAAA;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG5D,MAAM,OAAO,YAAa,SAAQ,MAAM;IACtC,IAAI,GAAW,cAAc,CAAA;IAE7B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,sCAAsC;QACtC,KAAK,MAAM,eAAe,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACvE,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;gBAChD,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,eAAe,CAAC,YAAY;oBAClC,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS;gBAC5C,iBAAiB,EAAE;oBACjB,gBAAgB,EAAE,eAAe,CAAC,uBAAuB;oBACzD,iBAAiB,EAAE,eAAe,CAAC,qBAAqB,KAAK,IAAI;oBACjE,kBAAkB,EAAE,eAAe,CAAC,iBAAiB,KAAK,IAAI;iBAC/D;aACF,CAAC,CAAA;YACF,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,iBAAiB,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;IAEjD,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,WAAW,CAAC,eAAe;gBAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAC5C;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAoB;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAA;SACnF;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE;YAChC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAA;SACnF;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAA;QAC/C,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAE7C,uDAAuD;QACvD,KAAK,MAAM,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,IAAI,SAAS,CAAC,OAAO,KAAK,WAAW,CAAC,gBAAgB,EAAE;gBACtD,IAAI,iBAAiB,GAA0B,IAAI,CAAA;gBAEnD,IAAI;oBACF,IAAI,WAAW,CAAC,MAAM,EAAE;wBACtB,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAqC,CAAC,CAAA;qBACtG;yBAAM,IAAI,WAAW,CAAC,eAAe,EAAE;wBACtC,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;qBAChF;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAChF,CAAA;iBACF;gBACD,IAAI,iBAAiB,IAAI,IAAI,EAAE;oBAC7B,SAAQ;iBACT;gBACD,MAAM,UAAU,GAAG,SAAS,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;gBACrE,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,SAAQ;iBACT;gBACD,MAAM,GAAG,GAAG,SAAS;qBAClB,iBAAiB,CAAC,iBAAiB,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC;qBACxF,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CACvF,CAAA;gBACH,CAAC,CAAC,CAAA;gBAEJ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACnB;SACF;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA","sourcesContent":["import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport { ContractConfig, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SolanaProcessorState } from './solana-processor.js'\nimport { Instruction as SolInstruction } from '@project-serum/anchor'\n\nexport class SolanaPlugin extends Plugin {\n name: string = 'SolanaPlugin'\n\n async configure(config: ProcessConfigResponse) {\n // Part 2, prepare solana constractors\n for (const solanaProcessor of SolanaProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: solanaProcessor.contractName,\n chainId: solanaProcessor.network,\n address: solanaProcessor.address,\n abi: '',\n },\n startBlock: solanaProcessor.config.startSlot,\n instructionConfig: {\n innerInstruction: solanaProcessor.processInnerInstruction,\n parsedInstruction: solanaProcessor.fromParsedInstruction !== null,\n rawDataInstruction: solanaProcessor.decodeInstruction !== null,\n },\n })\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = [HandlerType.SOL_INSTRUCTION]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SOL_INSTRUCTION:\n return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async processSolInstruction(request: DataBinding): Promise<ProcessResult> {\n if (!request.data) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'instruction data cannot be empty')\n }\n if (!request.data.solInstruction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'instruction data cannot be empty')\n }\n\n const instruction = request.data.solInstruction\n const promises: Promise<ProcessResult>[] = []\n\n // Only have instruction handlers for solana processors\n for (const processor of SolanaProcessorState.INSTANCE.getValues()) {\n if (processor.address === instruction.programAccountId) {\n let parsedInstruction: SolInstruction | null = null\n\n try {\n if (instruction.parsed) {\n parsedInstruction = processor.getParsedInstruction(instruction.parsed as { type: string; info: any })\n } else if (instruction.instructionData) {\n parsedInstruction = processor.getParsedInstruction(instruction.instructionData)\n }\n } catch (e) {\n throw new ServerError(\n Status.INTERNAL,\n 'Failed to decode instruction: ' + JSON.stringify(instruction) + errorString(e)\n )\n }\n if (parsedInstruction == null) {\n continue\n }\n const insHandler = processor.getInstructionHandler(parsedInstruction)\n if (insHandler == null) {\n continue\n }\n const res = processor\n .handleInstruction(parsedInstruction, instruction.accounts, insHandler, instruction.slot)\n .catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'Error processing instruction: ' + JSON.stringify(instruction) + '\\n' + errorString(e)\n )\n })\n\n promises.push(res)\n }\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new SolanaPlugin())\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RecordMetaData } from '@sentio/protos';
|
|
2
|
+
import { type Labels, BaseContext } from '@sentio/sdk';
|
|
3
|
+
import { SuiNetwork } from './network.js';
|
|
4
|
+
import { SuiTransactionResponse } from '@mysten/sui.js';
|
|
5
|
+
export declare class SuiContext extends BaseContext {
|
|
6
|
+
address: string;
|
|
7
|
+
network: SuiNetwork;
|
|
8
|
+
moduleName: string;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
transaction: SuiTransactionResponse;
|
|
11
|
+
constructor(moduleName: string, network: SuiNetwork, address: string, version: number, transaction?: SuiTransactionResponse);
|
|
12
|
+
getMetaData(name: string, labels: Labels): RecordMetaData;
|
|
13
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BaseContext, normalizeLabels } from '@sentio/sdk';
|
|
2
|
+
import { getChainId } from './network.js';
|
|
3
|
+
export class SuiContext extends BaseContext {
|
|
4
|
+
address;
|
|
5
|
+
network;
|
|
6
|
+
moduleName;
|
|
7
|
+
timestamp;
|
|
8
|
+
transaction;
|
|
9
|
+
constructor(moduleName, network, address, version, transaction) {
|
|
10
|
+
super();
|
|
11
|
+
this.address = address;
|
|
12
|
+
this.network = network;
|
|
13
|
+
this.moduleName = moduleName;
|
|
14
|
+
this.timestamp = version;
|
|
15
|
+
if (transaction) {
|
|
16
|
+
this.transaction = transaction;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
getMetaData(name, labels) {
|
|
20
|
+
return {
|
|
21
|
+
address: this.address,
|
|
22
|
+
contractName: this.moduleName,
|
|
23
|
+
blockNumber: BigInt(this.timestamp),
|
|
24
|
+
transactionIndex: 0,
|
|
25
|
+
transactionHash: this.transaction?.certificate.transactionDigest || '',
|
|
26
|
+
logIndex: 0,
|
|
27
|
+
chainId: getChainId(this.network),
|
|
28
|
+
name: name,
|
|
29
|
+
labels: normalizeLabels(labels),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAA;AAGrD,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,UAAU,CAAQ;IAClB,SAAS,CAAQ;IACjB,WAAW,CAAwB;IAEnC,YACE,UAAkB,EAClB,OAAmB,EACnB,OAAe,EACf,OAAe,EACf,WAAoC;QAEpC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAA;QACxB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;SAC/B;IACH,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;YACtE,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '@sentio/sdk'\nimport { SuiNetwork, getChainId } from './network.js'\nimport { SuiTransactionResponse } from '@mysten/sui.js'\n\nexport class SuiContext extends BaseContext {\n address: string\n network: SuiNetwork\n moduleName: string\n timestamp: number\n transaction: SuiTransactionResponse\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n version: number,\n transaction?: SuiTransactionResponse\n ) {\n super()\n this.address = address\n this.network = network\n this.moduleName = moduleName\n this.timestamp = version\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: BigInt(this.timestamp),\n transactionIndex: 0,\n transactionHash: this.transaction?.certificate.transactionDigest || '', // TODO\n logIndex: 0,\n chainId: getChainId(this.network),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
|
package/lib/sui/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA","sourcesContent":["export { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//
|
|
3
|
+
// // Don't use intermediate type to make IDE happier
|
|
4
|
+
// export type TypedEntryFunctionPayload<T extends Array<any>> = TransactionPayload_EntryFunctionPayload & {
|
|
5
|
+
// /**
|
|
6
|
+
// * decoded argument data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch
|
|
7
|
+
// */
|
|
8
|
+
// arguments_decoded: T
|
|
9
|
+
// }
|
|
10
|
+
//
|
|
11
|
+
// export type TypedMoveResource<T> = MoveResource & {
|
|
12
|
+
// data_decoded: T
|
|
13
|
+
// type_arguments: string[]
|
|
14
|
+
// }
|
|
15
|
+
//
|
|
16
|
+
// export interface StructWithTag {
|
|
17
|
+
// type: string
|
|
18
|
+
// data: any
|
|
19
|
+
// }
|
|
20
|
+
//
|
|
21
|
+
// export interface StructWithType<T> extends StructWithTag {
|
|
22
|
+
// data_decoded: T
|
|
23
|
+
// type_arguments: string[]
|
|
24
|
+
// }
|
|
25
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/sui/models.ts"],"names":[],"mappings":";AAeA,EAAE;AACF,qDAAqD;AACrD,4GAA4G;AAC5G,QAAQ;AACR,oHAAoH;AACpH,QAAQ;AACR,yBAAyB;AACzB,IAAI;AACJ,EAAE;AACF,sDAAsD;AACtD,oBAAoB;AACpB,6BAA6B;AAC7B,IAAI;AACJ,EAAE;AACF,mCAAmC;AACnC,iBAAiB;AACjB,cAAc;AACd,IAAI;AACJ,EAAE;AACF,6DAA6D;AAC7D,oBAAoB;AACpB,6BAA6B;AAC7B,IAAI","sourcesContent":["import { MoveEvent } from '@mysten/sui.js'\n\n// export type MoveEvent = MoveEvent & {\n// }\n\n//\nexport type TypedEventInstance<T> = MoveEvent & {\n /**\n * decoded data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n */\n fields_decoded: T\n\n type_arguments: string[]\n}\n\n//\n// // Don't use intermediate type to make IDE happier\n// export type TypedEntryFunctionPayload<T extends Array<any>> = TransactionPayload_EntryFunctionPayload & {\n// /**\n// * decoded argument data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n// */\n// arguments_decoded: T\n// }\n//\n// export type TypedMoveResource<T> = MoveResource & {\n// data_decoded: T\n// type_arguments: string[]\n// }\n//\n// export interface StructWithTag {\n// type: string\n// data: any\n// }\n//\n// export interface StructWithType<T> extends StructWithTag {\n// data_decoded: T\n// type_arguments: string[]\n// }\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum SuiNetwork {
|
|
2
|
+
MAIN_NET = 1,
|
|
3
|
+
TEST_NET = 2
|
|
4
|
+
}
|
|
5
|
+
export declare function getChainId(network: SuiNetwork): string;
|
|
6
|
+
export declare function getSuiChainName(network: SuiNetwork): string;
|
|
7
|
+
export declare class SuiBindOptions {
|
|
8
|
+
address: string;
|
|
9
|
+
network?: SuiNetwork;
|
|
10
|
+
startVersion?: bigint | number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CHAIN_IDS, getChainName } from '../core/chain.js';
|
|
2
|
+
export var SuiNetwork;
|
|
3
|
+
(function (SuiNetwork) {
|
|
4
|
+
SuiNetwork[SuiNetwork["MAIN_NET"] = 1] = "MAIN_NET";
|
|
5
|
+
SuiNetwork[SuiNetwork["TEST_NET"] = 2] = "TEST_NET";
|
|
6
|
+
})(SuiNetwork || (SuiNetwork = {}));
|
|
7
|
+
export function getChainId(network) {
|
|
8
|
+
switch (network) {
|
|
9
|
+
case SuiNetwork.TEST_NET:
|
|
10
|
+
return CHAIN_IDS.SUI_TESTNET;
|
|
11
|
+
}
|
|
12
|
+
return CHAIN_IDS.SUI_MAINNET;
|
|
13
|
+
}
|
|
14
|
+
export function getSuiChainName(network) {
|
|
15
|
+
switch (network) {
|
|
16
|
+
case SuiNetwork.TEST_NET:
|
|
17
|
+
return getChainName(CHAIN_IDS.SUI_TESTNET);
|
|
18
|
+
}
|
|
19
|
+
return getChainName(CHAIN_IDS.SUI_MAINNET);
|
|
20
|
+
}
|
|
21
|
+
export class SuiBindOptions {
|
|
22
|
+
address;
|
|
23
|
+
network = SuiNetwork.MAIN_NET;
|
|
24
|
+
startVersion;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/sui/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mDAAY,CAAA;IACZ,mDAAY,CAAA;AACd,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,QAAQ,OAAO,EAAE;QACf,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,SAAS,CAAC,WAAW,CAAA;KAC/B;IACD,OAAO,SAAS,CAAC,WAAW,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAmB;IACjD,QAAQ,OAAO,EAAE;QACf,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;KAC7C;IACD,OAAO,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,OAAO,cAAc;IACzB,OAAO,CAAQ;IACf,OAAO,GAAgB,UAAU,CAAC,QAAQ,CAAA;IAC1C,YAAY,CAAkB;CAC/B","sourcesContent":["import { CHAIN_IDS, getChainName } from '../core/chain.js'\n\nexport enum SuiNetwork {\n MAIN_NET = 1,\n TEST_NET = 2,\n}\n\nexport function getChainId(network: SuiNetwork): string {\n switch (network) {\n case SuiNetwork.TEST_NET:\n return CHAIN_IDS.SUI_TESTNET\n }\n return CHAIN_IDS.SUI_MAINNET\n}\n\nexport function getSuiChainName(network: SuiNetwork): string {\n switch (network) {\n case SuiNetwork.TEST_NET:\n return getChainName(CHAIN_IDS.SUI_TESTNET)\n }\n return getChainName(CHAIN_IDS.SUI_MAINNET)\n}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork = SuiNetwork.MAIN_NET\n startVersion?: bigint | number\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Plugin } from '@sentio/runtime';
|
|
2
|
+
import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '@sentio/protos';
|
|
3
|
+
export declare class SuiPlugin extends Plugin {
|
|
4
|
+
name: string;
|
|
5
|
+
private suiEventHandlers;
|
|
6
|
+
private suiCallHandlers;
|
|
7
|
+
configure(config: ProcessConfigResponse): Promise<void>;
|
|
8
|
+
supportedHandlers: HandlerType[];
|
|
9
|
+
processSuiEvent(binding: DataBinding): Promise<ProcessResult>;
|
|
10
|
+
processSuiFunctionCall(binding: DataBinding): Promise<ProcessResult>;
|
|
11
|
+
processBinding(request: DataBinding): Promise<ProcessResult>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime';
|
|
2
|
+
import { ContractConfig, HandlerType, } from '@sentio/protos';
|
|
3
|
+
import { ServerError, Status } from 'nice-grpc';
|
|
4
|
+
import { SuiProcessorState } from './sui-processor.js';
|
|
5
|
+
import { getChainId } from './network.js';
|
|
6
|
+
export class SuiPlugin extends Plugin {
|
|
7
|
+
name = 'SuiPlugin';
|
|
8
|
+
suiEventHandlers = [];
|
|
9
|
+
suiCallHandlers = [];
|
|
10
|
+
async configure(config) {
|
|
11
|
+
for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {
|
|
12
|
+
const contractConfig = ContractConfig.fromPartial({
|
|
13
|
+
transactionConfig: [],
|
|
14
|
+
processorType: USER_PROCESSOR,
|
|
15
|
+
contract: {
|
|
16
|
+
name: suiProcessor.moduleName,
|
|
17
|
+
chainId: getChainId(suiProcessor.config.network),
|
|
18
|
+
address: suiProcessor.config.address,
|
|
19
|
+
abi: '',
|
|
20
|
+
},
|
|
21
|
+
startBlock: BigInt(suiProcessor.config.startTimestamp),
|
|
22
|
+
});
|
|
23
|
+
for (const handler of suiProcessor.eventHandlers) {
|
|
24
|
+
const handlerId = this.suiEventHandlers.push(handler.handler) - 1;
|
|
25
|
+
const eventHandlerConfig = {
|
|
26
|
+
filters: handler.filters.map((f) => {
|
|
27
|
+
return {
|
|
28
|
+
type: f.type,
|
|
29
|
+
account: f.account || '',
|
|
30
|
+
};
|
|
31
|
+
}),
|
|
32
|
+
fetchConfig: handler.fetchConfig,
|
|
33
|
+
handlerId,
|
|
34
|
+
};
|
|
35
|
+
contractConfig.moveEventConfigs.push(eventHandlerConfig);
|
|
36
|
+
}
|
|
37
|
+
for (const handler of suiProcessor.callHandlers) {
|
|
38
|
+
const handlerId = this.suiCallHandlers.push(handler.handler) - 1;
|
|
39
|
+
const functionHandlerConfig = {
|
|
40
|
+
filters: handler.filters.map((filter) => {
|
|
41
|
+
return {
|
|
42
|
+
function: filter.function,
|
|
43
|
+
typeArguments: filter.typeArguments || [],
|
|
44
|
+
withTypeArguments: !!filter.typeArguments,
|
|
45
|
+
includeFailed: filter.includeFailed || false,
|
|
46
|
+
};
|
|
47
|
+
}),
|
|
48
|
+
fetchConfig: handler.fetchConfig,
|
|
49
|
+
handlerId,
|
|
50
|
+
};
|
|
51
|
+
contractConfig.moveCallConfigs.push(functionHandlerConfig);
|
|
52
|
+
}
|
|
53
|
+
config.contractConfigs.push(contractConfig);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
supportedHandlers = [HandlerType.SUI_EVENT, HandlerType.SUI_CALL];
|
|
57
|
+
async processSuiEvent(binding) {
|
|
58
|
+
if (!binding.data?.suiEvent) {
|
|
59
|
+
throw new ServerError(Status.INVALID_ARGUMENT, "Event can't be empty");
|
|
60
|
+
}
|
|
61
|
+
const promises = [];
|
|
62
|
+
const event = binding.data.suiEvent;
|
|
63
|
+
for (const handlerId of binding.handlerIds) {
|
|
64
|
+
promises.push(this.suiEventHandlers[handlerId](event).catch((e) => {
|
|
65
|
+
throw new ServerError(Status.INTERNAL, 'error processing event: ' + JSON.stringify(event) + '\n' + errorString(e));
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
return mergeProcessResults(await Promise.all(promises));
|
|
69
|
+
}
|
|
70
|
+
async processSuiFunctionCall(binding) {
|
|
71
|
+
if (!binding.data?.suiCall) {
|
|
72
|
+
throw new ServerError(Status.INVALID_ARGUMENT, "Call can't be empty");
|
|
73
|
+
}
|
|
74
|
+
const call = binding.data.suiCall;
|
|
75
|
+
const promises = [];
|
|
76
|
+
for (const handlerId of binding.handlerIds) {
|
|
77
|
+
const promise = this.suiCallHandlers[handlerId](call).catch((e) => {
|
|
78
|
+
throw new ServerError(Status.INTERNAL, 'error processing call: ' + JSON.stringify(call) + '\n' + errorString(e));
|
|
79
|
+
});
|
|
80
|
+
promises.push(promise);
|
|
81
|
+
}
|
|
82
|
+
return mergeProcessResults(await Promise.all(promises));
|
|
83
|
+
}
|
|
84
|
+
processBinding(request) {
|
|
85
|
+
switch (request.handlerType) {
|
|
86
|
+
case HandlerType.SUI_EVENT:
|
|
87
|
+
return this.processSuiEvent(request);
|
|
88
|
+
case HandlerType.SUI_CALL:
|
|
89
|
+
return this.processSuiFunctionCall(request);
|
|
90
|
+
default:
|
|
91
|
+
throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
PluginManager.INSTANCE.register(new SuiPlugin());
|
|
96
|
+
//# sourceMappingURL=sui-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/sui/sui-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n ContractConfig,\n Data_SuiCall,\n Data_SuiEvent,\n DataBinding,\n HandlerType,\n MoveCallHandlerConfig,\n MoveEventHandlerConfig,\n ProcessConfigResponse,\n ProcessResult,\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SuiProcessorState } from './sui-processor.js'\nimport { getChainId } from './network.js'\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n\n private suiEventHandlers: ((event: Data_SuiEvent) => Promise<ProcessResult>)[] = []\n private suiCallHandlers: ((func: Data_SuiCall) => Promise<ProcessResult>)[] = []\n\n async configure(config: ProcessConfigResponse) {\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: suiProcessor.moduleName,\n chainId: getChainId(suiProcessor.config.network),\n address: suiProcessor.config.address,\n abi: '',\n },\n startBlock: BigInt(suiProcessor.config.startTimestamp),\n })\n for (const handler of suiProcessor.eventHandlers) {\n const handlerId = this.suiEventHandlers.push(handler.handler) - 1\n const eventHandlerConfig: MoveEventHandlerConfig = {\n filters: handler.filters.map((f) => {\n return {\n type: f.type,\n account: f.account || '',\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n }\n contractConfig.moveEventConfigs.push(eventHandlerConfig)\n }\n for (const handler of suiProcessor.callHandlers) {\n const handlerId = this.suiCallHandlers.push(handler.handler) - 1\n const functionHandlerConfig: MoveCallHandlerConfig = {\n filters: handler.filters.map((filter) => {\n return {\n function: filter.function,\n typeArguments: filter.typeArguments || [],\n withTypeArguments: !!filter.typeArguments,\n includeFailed: filter.includeFailed || false,\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n }\n contractConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = [HandlerType.SUI_EVENT, HandlerType.SUI_CALL]\n\n async processSuiEvent(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiEvent) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Event can't be empty\")\n }\n const promises: Promise<ProcessResult>[] = []\n const event = binding.data.suiEvent\n\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.suiEventHandlers[handlerId](event).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing event: ' + JSON.stringify(event) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiFunctionCall(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiCall) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Call can't be empty\")\n }\n const call = binding.data.suiCall\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.suiCallHandlers[handlerId](call).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing call: ' + JSON.stringify(call) + '\\n' + errorString(e))\n })\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_EVENT:\n return this.processSuiEvent(request)\n case HandlerType.SUI_CALL:\n return this.processSuiFunctionCall(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MoveFetchConfig } from '@sentio/protos';
|
|
2
|
+
import { ListStateStorage } from '@sentio/runtime';
|
|
3
|
+
import { SuiNetwork } from './network.js';
|
|
4
|
+
import { SuiContext } from './context.js';
|
|
5
|
+
import { MoveEvent, MoveCall } from '@mysten/sui.js';
|
|
6
|
+
import { CallHandler, EventFilter, EventHandler, FunctionNameAndCallFilter } from '../move/index.js';
|
|
7
|
+
export declare class IndexConfigure {
|
|
8
|
+
address: string;
|
|
9
|
+
network: SuiNetwork;
|
|
10
|
+
startTimestamp: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class SuiBindOptions {
|
|
13
|
+
address: string;
|
|
14
|
+
network?: SuiNetwork;
|
|
15
|
+
startTimestamp?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {
|
|
18
|
+
static INSTANCE: SuiProcessorState;
|
|
19
|
+
}
|
|
20
|
+
export declare class SuiBaseProcessor {
|
|
21
|
+
readonly moduleName: string;
|
|
22
|
+
config: IndexConfigure;
|
|
23
|
+
eventHandlers: EventHandler[];
|
|
24
|
+
callHandlers: CallHandler[];
|
|
25
|
+
constructor(name: string, options: SuiBindOptions);
|
|
26
|
+
getChainId(): string;
|
|
27
|
+
onMoveEvent(handler: (event: MoveEvent, ctx: SuiContext) => void, filter: EventFilter | EventFilter[], fetchConfig?: MoveFetchConfig): SuiBaseProcessor;
|
|
28
|
+
onEntryFunctionCall(handler: (call: MoveCall, ctx: SuiContext) => void, filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[], fetchConfig?: MoveFetchConfig): SuiBaseProcessor;
|
|
29
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { MoveFetchConfig } from '@sentio/protos';
|
|
2
|
+
import { ListStateStorage } from '@sentio/runtime';
|
|
3
|
+
import { SuiNetwork, getChainId } from './network.js';
|
|
4
|
+
import { ServerError, Status } from 'nice-grpc';
|
|
5
|
+
import { SuiContext } from './context.js';
|
|
6
|
+
import { getMoveCallTransaction } from '@mysten/sui.js';
|
|
7
|
+
export class IndexConfigure {
|
|
8
|
+
address;
|
|
9
|
+
network;
|
|
10
|
+
startTimestamp;
|
|
11
|
+
}
|
|
12
|
+
export class SuiBindOptions {
|
|
13
|
+
address;
|
|
14
|
+
network;
|
|
15
|
+
startTimestamp;
|
|
16
|
+
}
|
|
17
|
+
export class SuiProcessorState extends ListStateStorage {
|
|
18
|
+
static INSTANCE = new SuiProcessorState();
|
|
19
|
+
}
|
|
20
|
+
export class SuiBaseProcessor {
|
|
21
|
+
moduleName;
|
|
22
|
+
config;
|
|
23
|
+
eventHandlers = [];
|
|
24
|
+
callHandlers = [];
|
|
25
|
+
constructor(name, options) {
|
|
26
|
+
this.config = configure(options);
|
|
27
|
+
SuiProcessorState.INSTANCE.addValue(this);
|
|
28
|
+
}
|
|
29
|
+
getChainId() {
|
|
30
|
+
return getChainId(this.config.network);
|
|
31
|
+
}
|
|
32
|
+
onMoveEvent(handler, filter, fetchConfig) {
|
|
33
|
+
let _filters = [];
|
|
34
|
+
const _fetchConfig = fetchConfig || MoveFetchConfig.fromPartial({});
|
|
35
|
+
if (Array.isArray(filter)) {
|
|
36
|
+
_filters = filter;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
_filters.push(filter);
|
|
40
|
+
}
|
|
41
|
+
// const address = this.config.address
|
|
42
|
+
// const moduleName = this.moduleName
|
|
43
|
+
const processor = this;
|
|
44
|
+
this.eventHandlers.push({
|
|
45
|
+
handler: async function (data) {
|
|
46
|
+
if (!data.transaction) {
|
|
47
|
+
throw new ServerError(Status.INVALID_ARGUMENT, 'event is null');
|
|
48
|
+
}
|
|
49
|
+
const txn = data.transaction;
|
|
50
|
+
if (!txn.effects.events || !txn.effects.events.length) {
|
|
51
|
+
throw new ServerError(Status.INVALID_ARGUMENT, 'no event in the transactions');
|
|
52
|
+
}
|
|
53
|
+
const ctx = new SuiContext(processor.moduleName, processor.config.network, processor.config.address, txn.timestamp_ms || 0, txn);
|
|
54
|
+
const events = txn.effects.events;
|
|
55
|
+
txn.effects.events = [];
|
|
56
|
+
for (const evt of events) {
|
|
57
|
+
if ('moveEvent' in evt) {
|
|
58
|
+
const eventInstance = evt.moveEvent;
|
|
59
|
+
const decoded = eventInstance; // TODO
|
|
60
|
+
// const decoded = MOVE_CODER.decodeEvent<any>(eventInstance)
|
|
61
|
+
await handler(decoded || eventInstance, ctx);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return ctx.getProcessResult();
|
|
65
|
+
},
|
|
66
|
+
filters: _filters,
|
|
67
|
+
fetchConfig: _fetchConfig,
|
|
68
|
+
});
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
onEntryFunctionCall(handler, filter, fetchConfig) {
|
|
72
|
+
let _filters = [];
|
|
73
|
+
const _fetchConfig = fetchConfig || MoveFetchConfig.fromPartial({});
|
|
74
|
+
if (Array.isArray(filter)) {
|
|
75
|
+
_filters = filter;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
_filters.push(filter);
|
|
79
|
+
}
|
|
80
|
+
// const address = this.config.address
|
|
81
|
+
// const moduleName = this.moduleName
|
|
82
|
+
const processor = this;
|
|
83
|
+
this.callHandlers.push({
|
|
84
|
+
handler: async function (data) {
|
|
85
|
+
if (!data.transaction) {
|
|
86
|
+
throw new ServerError(Status.INVALID_ARGUMENT, 'call is null');
|
|
87
|
+
}
|
|
88
|
+
const tx = data.transaction;
|
|
89
|
+
const ctx = new SuiContext(processor.moduleName, processor.config.network, processor.config.address, tx.timestamp_ms || 0, tx);
|
|
90
|
+
if (tx) {
|
|
91
|
+
const calls = tx.certificate.data.transactions.flatMap((tx) => {
|
|
92
|
+
const call = getMoveCallTransaction(tx);
|
|
93
|
+
if (call) {
|
|
94
|
+
return [call];
|
|
95
|
+
}
|
|
96
|
+
return [];
|
|
97
|
+
});
|
|
98
|
+
if (calls.length !== 1) {
|
|
99
|
+
throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected number of call transactions ' + calls.length);
|
|
100
|
+
}
|
|
101
|
+
const payload = calls[0];
|
|
102
|
+
const decoded = payload; // MOVE_CODER.decodeFunctionPayload(payload)
|
|
103
|
+
await handler(decoded, ctx);
|
|
104
|
+
}
|
|
105
|
+
return ctx.getProcessResult();
|
|
106
|
+
},
|
|
107
|
+
filters: _filters,
|
|
108
|
+
fetchConfig: _fetchConfig,
|
|
109
|
+
});
|
|
110
|
+
return this;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function configure(options) {
|
|
114
|
+
return {
|
|
115
|
+
startTimestamp: options.startTimestamp || 0,
|
|
116
|
+
address: options.address,
|
|
117
|
+
network: options.network || SuiNetwork.MAIN_NET,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=sui-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sui-processor.js","sourceRoot":"","sources":["../../src/sui/sui-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork, getChainId } from './network.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { SuiContext } from './context.js'\nimport { MoveEvent, SuiTransactionResponse, getMoveCallTransaction, MoveCall } from '@mysten/sui.js'\nimport { CallHandler, EventFilter, EventHandler, FunctionNameAndCallFilter } from '../move/index.js'\n\nexport class IndexConfigure {\n address: string\n network: SuiNetwork\n startTimestamp: number\n}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork\n startTimestamp?: number\n}\n\nexport class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {\n static INSTANCE = new SuiProcessorState()\n}\n\nexport class SuiBaseProcessor {\n readonly moduleName: string\n config: IndexConfigure\n\n eventHandlers: EventHandler[] = []\n callHandlers: CallHandler[] = []\n\n constructor(name: string, options: SuiBindOptions) {\n this.config = configure(options)\n SuiProcessorState.INSTANCE.addValue(this)\n }\n\n getChainId(): string {\n return getChainId(this.config.network)\n }\n\n public onMoveEvent(\n handler: (event: MoveEvent, ctx: SuiContext) => void,\n filter: EventFilter | EventFilter[],\n fetchConfig?: MoveFetchConfig\n ): SuiBaseProcessor {\n let _filters: EventFilter[] = []\n const _fetchConfig = fetchConfig || MoveFetchConfig.fromPartial({})\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n\n const processor = this\n\n this.eventHandlers.push({\n handler: async function (data) {\n if (!data.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'event is null')\n }\n const txn = data.transaction as SuiTransactionResponse\n if (!txn.effects.events || !txn.effects.events.length) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'no event in the transactions')\n }\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n txn.timestamp_ms || 0,\n txn\n )\n\n const events = txn.effects.events\n txn.effects.events = []\n for (const evt of events) {\n if ('moveEvent' in evt) {\n const eventInstance = evt.moveEvent as MoveEvent\n const decoded = eventInstance // TODO\n // const decoded = MOVE_CODER.decodeEvent<any>(eventInstance)\n await handler(decoded || eventInstance, ctx)\n }\n }\n\n return ctx.getProcessResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig,\n })\n return this\n }\n\n public onEntryFunctionCall(\n handler: (call: MoveCall, ctx: SuiContext) => void,\n filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],\n fetchConfig?: MoveFetchConfig\n ): SuiBaseProcessor {\n let _filters: FunctionNameAndCallFilter[] = []\n const _fetchConfig = fetchConfig || MoveFetchConfig.fromPartial({})\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n const processor = this\n\n this.callHandlers.push({\n handler: async function (data) {\n if (!data.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')\n }\n const tx = data.transaction as SuiTransactionResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n tx.timestamp_ms || 0,\n tx\n )\n if (tx) {\n const calls: MoveCall[] = tx.certificate.data.transactions.flatMap((tx) => {\n const call = getMoveCallTransaction(tx)\n if (call) {\n return [call]\n }\n return []\n })\n if (calls.length !== 1) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected number of call transactions ' + calls.length)\n }\n const payload = calls[0]\n const decoded = payload // MOVE_CODER.decodeFunctionPayload(payload)\n await handler(decoded, ctx)\n }\n return ctx.getProcessResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig,\n })\n return this\n }\n}\n\nfunction configure(options: SuiBindOptions): IndexConfigure {\n return {\n startTimestamp: options.startTimestamp || 0,\n address: options.address,\n network: options.network || SuiNetwork.MAIN_NET,\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sui.test.js","sourceRoot":"","sources":["../../../src/sui/tests/sui.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { SuiBaseProcessor, SuiBindOptions } from '../index.js'\n\nimport { TestProcessorServer } from '@sentio/sdk/testing'\nimport { DataBinding, HandlerType } from '@sentio/protos'\n\ndescribe('Test Sui Example', () => {\n const service = new TestProcessorServer(async () => {\n class SwapProcessor extends SuiBaseProcessor {\n static bind(options: SuiBindOptions): SwapProcessor {\n return new SwapProcessor('TicTacToe', options)\n }\n }\n\n SwapProcessor.bind({\n startTimestamp: 0,\n address: '0x8235459df815e77668b4a49bb36e229f3321f432',\n }).onMoveEvent(\n (evt, ctx) => {\n const amount = parseInt(evt.fields?.x_amount)\n ctx.meter.Counter('amount').add(amount)\n },\n {\n type: 'pool::LiquidityEvent',\n }\n )\n })\n\n beforeAll(async () => {\n await service.start({ templateInstances: [] })\n })\n\n test('check configuration ', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(1)\n })\n\n test('Check transaction dispatch', async () => {\n const data = testData\n data.effects.events = [data.effects.events[data.effects.events.length - 1]]\n const request: DataBinding = {\n data: {\n suiEvent: {\n transaction: data,\n },\n },\n handlerIds: [0],\n handlerType: HandlerType.SUI_EVENT,\n }\n const res = await service.processBinding(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n // expect(res.result?.counters[0].metadata?.toInt()).equal(12345)\n })\n})\n\nconst testData = {\n certificate: {\n transactionDigest: '7DSTY6euDQKq7fn3N7654Xf1pbpSuBuYarW2c6B6ixio',\n data: {\n transactions: [\n {\n Call: {\n package: {\n objectId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n version: 1,\n digest: 'THgI2ZcsS4aU5UNvLjB1huyOTXZ+QEavMOWGPC1UnHE=',\n },\n module: 'pool',\n function: 'add_liquidity',\n typeArguments: ['0x8235459df815e77668b4a49bb36e229f3321f432::pool::TestSOL', '0x2::sui::SUI'],\n arguments: [\n '0x481a9c313aa7275e6fc9ff60eba919564b385086',\n '0xc9b60a9fd79a9536f2f49e6827a51e8e62a7a544',\n '0x84210e7d5fb0be0b359ef8cdacb0d0448baf8478',\n [64, 13, 3, 0, 0, 0, 0, 0],\n [16, 0, 0, 0, 0, 0, 0, 0],\n ],\n },\n },\n ],\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n gasPayment: {\n objectId: '0xd5bc168c9cbddf5918818c1d544580e97de3bd46',\n version: 2493759,\n digest: '+AVDN5/rqB755p9bU4Qh0gpn8FlaA6+ZRO//VPUSTVA=',\n },\n gasPrice: 618,\n gasBudget: 1000,\n },\n txSignature:\n 'ANprZ/tjWOt7YBpfksRHlcRfMzHFNd1flhkSs6ld/CX8h6CYkdctIXPrcyLrUpwEDqM7XLJ1v4x/1670E6sfngv83dcb+0vmesdX0PdnU6Mte4NGe5+0kTZ3/sb71VTMNA==',\n authSignInfo: {\n epoch: 22,\n signature: 'AZKQTmXsBGPz0Z3IKNXJCiCuIkFEqmGfQnm6R+umm34ppHHMSIvre1ThTcwSAnp3zQ==',\n signers_map: [\n 58, 48, 0, 0, 1, 0, 0, 0, 0, 0, 27, 0, 16, 0, 0, 0, 0, 0, 1, 0, 3, 0, 4, 0, 7, 0, 8, 0, 9, 0, 10, 0, 13, 0, 15,\n 0, 16, 0, 18, 0, 19, 0, 21, 0, 22, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 32, 0, 33, 0, 35,\n 0, 36, 0, 40, 0,\n ],\n },\n },\n effects: {\n status: {\n status: 'success',\n },\n gasUsed: {\n computationCost: 268212,\n storageCost: 95,\n storageRebate: 73,\n },\n sharedObjects: [\n {\n objectId: '0x481a9c313aa7275e6fc9ff60eba919564b385086',\n version: 2493761,\n digest: 'SoxFXUfrWjtkqQ2zfCFxykkM0epbShSqc/5JfSAJgB4=',\n },\n ],\n transactionDigest: '7DSTY6euDQKq7fn3N7654Xf1pbpSuBuYarW2c6B6ixio',\n created: [\n {\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n reference: {\n objectId: '0x3f0b179f7787ed98a2ef2e6f5c6a016c982c6c6c',\n version: 2493762,\n digest: '6HGSh1X72r21XbHg0zEo43uIkEfyVVALbASxB7N1eIs=',\n },\n },\n {\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n reference: {\n objectId: '0xa7fe715725aa608e5102765f3af7d4d85de1a24f',\n version: 2493762,\n digest: 'pTWwShZgjwZAZrVDI/i0xV25TTWEPBRbsCBBVZJsiXc=',\n },\n },\n {\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n reference: {\n objectId: '0xcd127e648c10649935a86d74833a9c22b7ccb10c',\n version: 2493762,\n digest: '0Wo2uSBUhqNGI6mveDBAwlckVKBFkW9MjPjjTiiKBHU=',\n },\n },\n ],\n mutated: [\n {\n owner: {\n Shared: {\n initial_shared_version: 1020,\n },\n },\n reference: {\n objectId: '0x481a9c313aa7275e6fc9ff60eba919564b385086',\n version: 2493762,\n digest: 'Y7lbJv2OkIe+awkSaZn6RGw6ga1IhklP1/Ij+vhu1Ns=',\n },\n },\n {\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n reference: {\n objectId: '0xd5bc168c9cbddf5918818c1d544580e97de3bd46',\n version: 2493762,\n digest: 'V1y2V81JUTb1YTAy9bh/b7QOXH4RGbZ71Pstxf+6bjQ=',\n },\n },\n ],\n deleted: [\n {\n objectId: '0x84210e7d5fb0be0b359ef8cdacb0d0448baf8478',\n version: 2493762,\n digest: 'Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2M=',\n },\n {\n objectId: '0xc9b60a9fd79a9536f2f49e6827a51e8e62a7a544',\n version: 2493762,\n digest: 'Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2M=',\n },\n ],\n gasObject: {\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n reference: {\n objectId: '0xd5bc168c9cbddf5918818c1d544580e97de3bd46',\n version: 2493762,\n digest: 'V1y2V81JUTb1YTAy9bh/b7QOXH4RGbZ71Pstxf+6bjQ=',\n },\n },\n events: [\n {\n coinBalanceChange: {\n packageId: '0x0000000000000000000000000000000000000002',\n transactionModule: 'gas',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Gas',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType: '0x2::sui::SUI',\n coinObjectId: '0xd5bc168c9cbddf5918818c1d544580e97de3bd46',\n version: 2493759,\n amount: -268234,\n },\n },\n {\n coinBalanceChange: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Receive',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType: '0x2::sui::SUI',\n coinObjectId: '0x3f0b179f7787ed98a2ef2e6f5c6a016c982c6c6c',\n version: 2493762,\n amount: 199999984,\n },\n },\n {\n mutateObject: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n objectType:\n '0x8235459df815e77668b4a49bb36e229f3321f432::pool::Pool<0x8235459df815e77668b4a49bb36e229f3321f432::pool::TestSOL, 0x2::sui::SUI>',\n objectId: '0x481a9c313aa7275e6fc9ff60eba919564b385086',\n version: 2493762,\n },\n },\n {\n coinBalanceChange: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Receive',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType:\n '0x8235459df815e77668b4a49bb36e229f3321f432::pool::LSP<0x8235459df815e77668b4a49bb36e229f3321f432::pool::TestSOL, 0x2::sui::SUI>',\n coinObjectId: '0xa7fe715725aa608e5102765f3af7d4d85de1a24f',\n version: 2493762,\n amount: 741,\n },\n },\n {\n coinBalanceChange: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Receive',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType: '0x8235459df815e77668b4a49bb36e229f3321f432::pool::TestSOL',\n coinObjectId: '0xcd127e648c10649935a86d74833a9c22b7ccb10c',\n version: 2493762,\n amount: 800000,\n },\n },\n {\n coinBalanceChange: {\n packageId: '0x0000000000000000000000000000000000000002',\n transactionModule: 'gas',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Pay',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType: '0x2::sui::SUI',\n coinObjectId: '0xd5bc168c9cbddf5918818c1d544580e97de3bd46',\n version: 2493759,\n amount: -1,\n },\n },\n {\n coinBalanceChange: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Pay',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType: '0x2::sui::SUI',\n coinObjectId: '0x84210e7d5fb0be0b359ef8cdacb0d0448baf8478',\n version: 5624,\n amount: -200000000,\n },\n },\n {\n coinBalanceChange: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n changeType: 'Pay',\n owner: {\n AddressOwner: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n },\n coinType: '0x8235459df815e77668b4a49bb36e229f3321f432::pool::TestSOL',\n coinObjectId: '0xc9b60a9fd79a9536f2f49e6827a51e8e62a7a544',\n version: 2492561,\n amount: -1000000,\n },\n },\n {\n moveEvent: {\n packageId: '0x8235459df815e77668b4a49bb36e229f3321f432',\n transactionModule: 'pool',\n sender: '0x4b63cec2b85cf31ed0ec42e5c7e79d54db1411b6',\n type: '0x8235459df815e77668b4a49bb36e229f3321f432::pool::LiquidityEvent',\n fields: {\n is_added: true,\n lsp_amount: '741',\n pool_id: '0x481a9c313aa7275e6fc9ff60eba919564b385086',\n x_amount: '200000',\n y_amount: '16',\n },\n bcs: 'SBqcMTqnJ15vyf9g66kZVks4UIYBQA0DAAAAAAAQAAAAAAAAAOUCAAAAAAAA',\n },\n },\n ],\n dependencies: [\n '4EXKjF3vTnoDEz54pDk6d2njs8roWwq3cfFAg2kUgKU4',\n '791GgUyLfBEhdsPSJ2HrHBPTm2599JLBnjbn6ySZhK3z',\n '8rq48ohgYu2QAHbwNHv1bLh8ZMgwiyghx1rzTzbWUB5B',\n 'CN8EG4p7x2mWuX8Tt82kWuSWLC43Vjfgp1nDzRLkibYE',\n 'DYUqe5hDjvyhG2EF2WsShTYAauVuC8oavB9U3eABScu3',\n ],\n },\n timestamp_ms: 1676013644266,\n parsed_data: null,\n}\n"]}
|
|
@@ -34,6 +34,7 @@ export declare class TestProcessorServer implements ProcessorServiceImplementati
|
|
|
34
34
|
}, network?: Networkish): DataBinding;
|
|
35
35
|
testInstructions(instructions: Data_SolInstruction[]): Promise<ProcessBindingResponse>;
|
|
36
36
|
processBindings(request: ProcessBindingsRequest, context?: CallContext): Promise<ProcessBindingResponse>;
|
|
37
|
+
processBinding(request: DataBinding, context?: CallContext): Promise<ProcessBindingResponse>;
|
|
37
38
|
processBindingsStream(request: AsyncIterable<DataBinding>, context: CallContext): AsyncGenerator<{
|
|
38
39
|
result: import("@sentio/protos").ProcessResult;
|
|
39
40
|
configUpdated: boolean;
|
|
@@ -258,6 +258,9 @@ export class TestProcessorServer {
|
|
|
258
258
|
processBindings(request, context = TEST_CONTEXT) {
|
|
259
259
|
return this.service.processBindings(request, context);
|
|
260
260
|
}
|
|
261
|
+
processBinding(request, context = TEST_CONTEXT) {
|
|
262
|
+
return this.service.processBindings({ bindings: [request] }, context);
|
|
263
|
+
}
|
|
261
264
|
processBindingsStream(request, context) {
|
|
262
265
|
return this.service.processBindingsStream(request, context);
|
|
263
266
|
}
|