@sentio/sdk 2.57.12-rc.d → 2.57.12-rc.f
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/{chunk-7S6WQ4RL.js → chunk-2S4VBXER.js} +3 -3
- package/lib/{chunk-4OCWUYSJ.js → chunk-3NTVNR24.js} +2 -2
- package/lib/{chunk-LPSNAS2G.js → chunk-BRHYXWEW.js} +3 -3
- package/lib/{chunk-2F2KNF4Z.js → chunk-FDFFHCFA.js} +3891 -16117
- package/lib/chunk-FDFFHCFA.js.map +1 -0
- package/lib/{chunk-OJG2VJ5T.js → chunk-FLCIAA4G.js} +5 -5
- package/lib/{chunk-OJG2VJ5T.js.map → chunk-FLCIAA4G.js.map} +1 -1
- package/lib/{chunk-AZFMPZRN.js → chunk-FTNDYH4A.js} +418 -200
- package/lib/chunk-FTNDYH4A.js.map +1 -0
- package/lib/{chunk-UIBPOKNT.js → chunk-FV4WLDIZ.js} +16 -16
- package/lib/chunk-FV4WLDIZ.js.map +1 -0
- package/lib/{chunk-PVX2LIM5.js → chunk-IGFULPWN.js} +4 -4
- package/lib/{chunk-73SHERGU.js → chunk-M2LXR3BO.js} +1459 -968
- package/lib/chunk-M2LXR3BO.js.map +1 -0
- package/lib/{chunk-J3I3VNTV.js → chunk-MERD27M6.js} +3 -3
- package/lib/{chunk-DUYQHA3W.js → chunk-MNZ4WYMA.js} +3015 -2901
- package/lib/chunk-MNZ4WYMA.js.map +1 -0
- package/lib/{chunk-J3QOJ2RV.js → chunk-NMHIV5TJ.js} +4 -4
- package/lib/{chunk-E2DS6WZF.js → chunk-Q52U5JD3.js} +14 -14
- package/lib/{chunk-E2DS6WZF.js.map → chunk-Q52U5JD3.js.map} +1 -1
- package/lib/{chunk-BZCXYTDE.js → chunk-QSUUYUJL.js} +3 -3
- package/lib/{chunk-4HPFNKDX.js → chunk-QT2RHOVE.js} +146 -76
- package/lib/chunk-QT2RHOVE.js.map +1 -0
- package/lib/{chunk-GE6BRIGS.js → chunk-QUMTLHC5.js} +5 -5
- package/lib/{chunk-N36N7RXJ.js → chunk-TOXC2A6K.js} +3 -3
- package/lib/{chunk-ONBEMKI5.js → chunk-U5FYYK4Y.js} +2 -2
- package/lib/{chunk-S6MJ3KIL.js → chunk-VWXVCB2D.js} +384 -269
- package/lib/chunk-VWXVCB2D.js.map +1 -0
- package/lib/{chunk-RMT2JEWA.js → chunk-ZAY2PRBU.js} +37 -37
- package/lib/{chunk-RMT2JEWA.js.map → chunk-ZAY2PRBU.js.map} +1 -1
- package/lib/store/decorators.d.ts.map +1 -1
- package/package.json +3 -3
- package/lib/chunk-2F2KNF4Z.js.map +0 -1
- package/lib/chunk-4HPFNKDX.js.map +0 -1
- package/lib/chunk-73SHERGU.js.map +0 -1
- package/lib/chunk-AZFMPZRN.js.map +0 -1
- package/lib/chunk-DUYQHA3W.js.map +0 -1
- package/lib/chunk-LR232ZJV.js +0 -2593
- package/lib/chunk-LR232ZJV.js.map +0 -1
- package/lib/chunk-S6MJ3KIL.js.map +0 -1
- package/lib/chunk-UIBPOKNT.js.map +0 -1
- /package/lib/{chunk-7S6WQ4RL.js.map → chunk-2S4VBXER.js.map} +0 -0
- /package/lib/{chunk-4OCWUYSJ.js.map → chunk-3NTVNR24.js.map} +0 -0
- /package/lib/{chunk-LPSNAS2G.js.map → chunk-BRHYXWEW.js.map} +0 -0
- /package/lib/{chunk-PVX2LIM5.js.map → chunk-IGFULPWN.js.map} +0 -0
- /package/lib/{chunk-J3I3VNTV.js.map → chunk-MERD27M6.js.map} +0 -0
- /package/lib/{chunk-J3QOJ2RV.js.map → chunk-NMHIV5TJ.js.map} +0 -0
- /package/lib/{chunk-BZCXYTDE.js.map → chunk-QSUUYUJL.js.map} +0 -0
- /package/lib/{chunk-GE6BRIGS.js.map → chunk-QUMTLHC5.js.map} +0 -0
- /package/lib/{chunk-N36N7RXJ.js.map → chunk-TOXC2A6K.js.map} +0 -0
- /package/lib/{chunk-ONBEMKI5.js.map → chunk-U5FYYK4Y.js.map} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/sui/sui-processor.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/models.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/transaction.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/to-internal.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/sui-chain-adapter.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/move-coder.ts","../src/sui/move-coder.ts","../src/sui/context.ts","../src/sui/utils.ts","../src/sui/sui-object-processor.ts","../src/sui/sui-object-processor-template.ts","../src/sui/models.ts","../src/sui/sui-plugin.ts","../src/sui/index.ts"],"sourcesContent":["import { Data_SuiCall, Data_SuiEvent, Data_SuiObjectChange, MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { SuiContext, SuiObjectChangeContext } from './context.js'\nimport { MoveCallSuiTransaction, SuiEvent, SuiTransactionBlockResponse, SuiObjectChange } from '@mysten/sui/client'\nimport {\n accountAddressString,\n CallHandler,\n EventFilter,\n EventHandler,\n FunctionNameAndCallFilter,\n ObjectChangeHandler,\n SPLITTER,\n TransactionFilter\n} from '../move/index.js'\nimport { getMoveCalls } from './utils.js'\nimport { defaultMoveCoder, MoveCoder } from './index.js'\nimport { ALL_ADDRESS, Labels, PromiseOrVoid } from '../core/index.js'\nimport { Required } from 'utility-types'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport const DEFAULT_FETCH_CONFIG: MoveFetchConfig = {\n resourceChanges: false,\n allEvents: true,\n inputs: true\n}\n\nexport type IndexConfigure = Required<SuiBindOptions, 'startCheckpoint' | 'network'>\n\nexport function configure(options: SuiBindOptions): IndexConfigure {\n return {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address === ALL_ADDRESS ? ALL_ADDRESS : accountAddressString(options.address),\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels\n }\n}\n\nexport interface SuiBindOptions {\n address: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: Labels\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<Data_SuiEvent>[] = []\n callHandlers: CallHandler<Data_SuiCall>[] = []\n objectChangeHandlers: ObjectChangeHandler<Data_SuiObjectChange>[] = []\n\n coder: MoveCoder\n\n constructor(name: string, options: SuiBindOptions) {\n this.moduleName = name\n this.config = configure(options)\n SuiProcessorState.INSTANCE.addValue(this)\n this.coder = defaultMoveCoder(this.config.network)\n\n return proxyProcessor(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n protected onMoveEvent(\n handler: (event: SuiEvent, ctx: SuiContext) => PromiseOrVoid,\n filter: EventFilter | EventFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: EventFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\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 handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'event is null')\n }\n const txn = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n if (txn.events == null) {\n txn.events = []\n }\n\n const evt = JSON.parse(data.rawEvent) as SuiEvent\n const idx = Number(evt.id.eventSeq) || 0\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n txn,\n idx,\n processor.config.baseLabels\n )\n\n const decoded = await processor.coder.decodeEvent<any>(evt)\n await handler(decoded || evt, ctx)\n\n return ctx.stopAndGetResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n protected onEntryFunctionCall(\n handler: (call: MoveCallSuiTransaction, ctx: SuiContext) => PromiseOrVoid,\n filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: FunctionNameAndCallFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n const processor = this\n const allFunctionType = new Set(_filters.map((f) => f.function))\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n const calls: MoveCallSuiTransaction[] = getMoveCalls(tx)\n const txKind = tx.transaction?.data?.transaction\n if (!txKind) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected getTransactionKind get empty')\n }\n\n // getProgrammableTransaction(txKind)\n const programmableTx = txKind.kind === 'ProgrammableTransaction' ? txKind : undefined\n\n // TODO potential pass index\n for (const call of calls) {\n const functionType = [call.module, call.function].join(SPLITTER)\n if (!allFunctionType.has(functionType)) {\n continue\n }\n\n // TODO maybe do in parallel\n const decoded = await processor.coder.decodeFunctionPayload(call, programmableTx?.inputs || [])\n await handler(decoded, ctx)\n }\n }\n return ctx.stopAndGetResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n onEvent(handler: (event: SuiEvent, ctx: SuiContext) => void, fetchConfig?: Partial<MoveFetchConfig>): this {\n this.onMoveEvent(handler, { type: '' }, fetchConfig)\n return this\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => PromiseOrVoid,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n const processor = this\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n await handler(tx, ctx)\n }\n return ctx.stopAndGetResult()\n },\n filters: [{ ...filter, function: '' }],\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n protected onObjectChange(\n handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid,\n type: string\n ): this {\n if (this.config.network === SuiNetwork.TEST_NET) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')\n }\n const processor = this\n this.objectChangeHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_SuiObjectChange) {\n const ctx = new SuiObjectChangeContext(\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n data.txDigest,\n processor.config.baseLabels\n )\n await handler(data.rawChanges.map((r) => JSON.parse(r)) as SuiObjectChange[], ctx)\n return ctx.stopAndGetResult()\n },\n type\n })\n\n return this\n }\n}\n\nexport class SuiModulesProcessor extends SuiBaseProcessor {\n static bind(options: SuiBindOptions): SuiModulesProcessor {\n return new SuiModulesProcessor(ALL_ADDRESS, options)\n }\n}\n\nexport class SuiGlobalProcessor extends SuiBaseProcessor {\n static bind(options: Omit<SuiBindOptions, 'address'>): SuiGlobalProcessor {\n return new SuiGlobalProcessor(ALL_ADDRESS, { ...options, address: ALL_ADDRESS })\n }\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void,\n filter: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n // TODO enable more strict check\n // if (!filter.publicKeyPrefix || filter.publicKeyPrefix.length < 2) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'restriction too low for global processor')\n // }\n return super.onTransactionBlock(handler, filter, fetchConfig)\n }\n\n // deprecated,, use object type processor\n public onObjectChange(\n handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => void,\n type: string\n ): this {\n return super.onObjectChange(handler, type)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject, DevInspectResults } from '@mysten/sui/client'\nimport { DecodedStruct } from '@typemove/move'\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nexport type TypedEventInstance<T> = DecodedStruct<SuiEvent, T>\nexport type TypedSuiMoveObject<T> = DecodedStruct<SuiMoveObject, T>\n\nexport type TypedFunctionPayload<T extends Array<any>> = MoveCallSuiTransaction & {\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\nexport type TypedDevInspectResults<T extends Array<any>> = DevInspectResults & {\n /**\n * Decoded return values using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n */\n results_decoded?: T\n}\n","import { Transaction, TransactionArgument, TransactionObjectInput } from '@mysten/sui/transactions'\n\nexport function isTransactionArgument(value: any): boolean {\n if (typeof value !== 'object') return false\n if (value === null || value === undefined) return false\n\n return (\n value.$kind === 'GasCoin' || value.$kind === 'Result' || value.$kind === 'NestedResult' || value.$kind === 'Input'\n )\n}\n\nexport function transactionArgumentOrObject(\n value: TransactionArgument | TransactionObjectInput,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.object(value)\n}\n\nexport function transactionArgumentOrPure(value: any, transactionBlock: Transaction): any {\n if (isTransactionArgument(value)) {\n return value\n }\n return typeof value == 'string' ? transactionBlock.pure.string(value) : transactionBlock.pure.u64(value)\n}\n\nexport function transactionArgumentOrPureString(\n value: TransactionArgument | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.string(value as string)\n}\n\nexport function transactionArgumentOrPureAddress(\n value: TransactionArgument | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.address(value as string)\n}\n\nexport function transactionArgumentOrPureU8(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u8(value as number)\n}\n\nexport function transactionArgumentOrPureU16(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u16(value as number)\n}\n\nexport function transactionArgumentOrPureU32(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u32(value as number)\n}\n\nexport function transactionArgumentOrPureU64(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u64(value as number)\n}\n\nexport function transactionArgumentOrPureU128(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u128(value as number)\n}\n\nexport function transactionArgumentOrPureU256(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u256(value as number)\n}\n\nexport function transactionArgumentOrPureBool(\n value: TransactionArgument | boolean,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.bool(value as boolean)\n}\n\n// TODO vector might be nested\nexport function transactionArgumentOrVec(value: any, transactionBlock: Transaction): any {\n if (isTransactionArgument(value)) {\n return value\n }\n return transactionBlock.makeMoveVec({\n elements: value.map((a: any) => transactionBlock.object(a))\n })\n}\n","import type {\n SuiMoveNormalizedEnum,\n SuiMoveNormalizedField,\n SuiMoveNormalizedFunction,\n SuiMoveNormalizedModule,\n SuiMoveNormalizedStruct,\n SuiMoveNormalizedType\n} from '@mysten/sui/client'\nimport {\n InternalMoveEnum,\n InternalMoveFunction,\n InternalMoveFunctionVisibility,\n InternalMoveModule,\n InternalMoveStruct,\n InternalMoveStructField,\n SPLITTER,\n TypeDescriptor\n} from '@typemove/move'\n\nexport function toInternalModule(module: SuiMoveNormalizedModule): InternalMoveModule {\n return {\n address: module.address,\n exposedFunctions: Object.entries(module.exposedFunctions).map(([n, f]) => toInternalFunction(n, f)),\n name: module.name,\n structs: Object.entries(module.structs).map(([n, s]) => toInternalStruct(n, s)),\n enums: Object.entries(module.enums || {}).map(([n, e]) => toInternalEnum(n, e))\n }\n}\n\nfunction toInternalFunction(name: string, func: SuiMoveNormalizedFunction): InternalMoveFunction {\n let visibility\n switch (func.visibility) {\n case 'Private':\n visibility = InternalMoveFunctionVisibility.PRIVATE\n break\n case 'Public':\n visibility = InternalMoveFunctionVisibility.PUBLIC\n break\n case 'Friend':\n visibility = InternalMoveFunctionVisibility.FRIEND\n break\n default:\n throw Error('No visibility for function' + name)\n }\n return {\n typeParams: func.typeParameters.map((p: any) => {\n return { constraints: p.abilities }\n }),\n isEntry: func.isEntry,\n name: name,\n params: func.parameters.map(toTypeDescriptor),\n return: func.return.map(toTypeDescriptor),\n visibility: visibility\n }\n}\n\nfunction toInternalStruct(name: string, struct: SuiMoveNormalizedStruct): InternalMoveStruct {\n return {\n abilities: struct.abilities.abilities,\n fields: struct.fields.map(toInternalField),\n typeParams: struct.typeParameters.map((p: any) => {\n return { constraints: p.constraints.abilities }\n }),\n isNative: false,\n isEvent: false,\n name: name\n }\n}\n\nfunction toInternalEnum(name: string, enumType: SuiMoveNormalizedEnum): InternalMoveEnum {\n return {\n name: name,\n abilities: enumType.abilities.abilities,\n typeParams: enumType.typeParameters.map((p: any) => {\n return { constraints: p.constraints.abilities }\n }),\n variants: Object.entries(enumType.variants).reduce((acc: { [key: string]: InternalMoveStructField[] }, [k, v]) => {\n acc[k] = v.map(toInternalField)\n return acc\n }, {})\n }\n}\n\nfunction toInternalField(module: SuiMoveNormalizedField): InternalMoveStructField {\n return {\n name: module.name,\n type: toTypeDescriptor(module.type)\n }\n}\n\nfunction toTypeDescriptor(normalizedType: SuiMoveNormalizedType): TypeDescriptor {\n if (typeof normalizedType === 'string') {\n return new TypeDescriptor(normalizedType)\n }\n\n if ('Struct' in normalizedType) {\n const qname = [normalizedType.Struct.address, normalizedType.Struct.module, normalizedType.Struct.name].join(\n SPLITTER\n )\n\n const args = normalizedType.Struct.typeArguments.map(toTypeDescriptor)\n\n return new TypeDescriptor(qname, args)\n }\n\n if ('Vector' in normalizedType) {\n return new TypeDescriptor('Vector', [toTypeDescriptor(normalizedType.Vector)])\n }\n if ('TypeParameter' in normalizedType) {\n return new TypeDescriptor('T' + normalizedType.TypeParameter)\n }\n\n if ('Reference' in normalizedType) {\n const res = toTypeDescriptor(normalizedType.Reference)\n res.reference = true\n return res\n }\n\n if ('MutableReference' in normalizedType) {\n const res = toTypeDescriptor(normalizedType.MutableReference)\n res.reference = true\n res.mutable = true\n return res\n }\n\n throw new Error('Unexpected sui type')\n}\n","import { toInternalModule } from './to-internal.js'\nimport {\n InternalMoveModule,\n InternalMoveStruct,\n ChainAdapter,\n moduleQname,\n SPLITTER,\n TypeDescriptor\n} from '@typemove/move'\n\nimport { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui/client'\n\nexport class SuiChainAdapter extends ChainAdapter<\n // SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n async getChainId() {\n return this.client.getChainIdentifier()\n }\n // static INSTANCE = new SuiChainAdapter()\n\n client: SuiClient\n constructor(client: SuiClient) {\n super()\n this.client = client\n }\n\n async fetchModule(\n account: string,\n module: string\n // network: SuiNetwork\n ): Promise<SuiMoveNormalizedModule> {\n return await this.client.getNormalizedMoveModule({ package: account, module })\n }\n\n async fetchModules(\n account: string\n // network: SuiNetwork\n ): Promise<SuiMoveNormalizedModule[]> {\n const modules = await this.client.getNormalizedMoveModulesByPackage({\n package: account\n })\n return Object.values(modules)\n }\n\n getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {\n return params\n // if (params.length === 0) {\n // return params\n // }\n // return params.slice(0, params.length - 1)\n }\n\n toInternalModules(modules: SuiMoveNormalizedModule[]): InternalMoveModule[] {\n return Object.values(modules).map(toInternalModule)\n }\n\n getAllEventStructs(modules: InternalMoveModule[]): Map<string, InternalMoveStruct> {\n const eventMap = new Map<string, InternalMoveStruct>()\n\n for (const module of modules) {\n const qname = moduleQname(module)\n\n for (const struct of module.structs) {\n const abilities = new Set(struct.abilities)\n if (abilities.has('Drop') && abilities.has('Copy')) {\n eventMap.set(qname + SPLITTER + struct.name, struct)\n }\n }\n }\n return eventMap\n }\n\n getType(base: SuiEvent | SuiMoveObject): string {\n return base.type\n }\n\n getData(val: SuiEvent | SuiMoveObject) {\n // if (val.parsedJson) {\n // return val.parsedJson as any\n // }\n if (val === undefined) {\n throw Error('val is undefined')\n }\n if ('parsedJson' in val) {\n return val.parsedJson as any\n }\n // if (SuiParsedData.is(val)) {\n // return val.fields as any\n // }\n if (val.dataType === 'moveObject') {\n return val.fields as any\n }\n // if (SuiMoveObject.is(val)) {\n // return val.fields as any\n // }\n // This may not be perfect, just think everything has\n if ('fields' in val) {\n if ('type' in val && Object.keys(val).length === 2) {\n return val.fields as any\n }\n }\n return val as any\n }\n // validateAndNormalizeAddress(address: string) {\n // return validateAndNormalizeAddress(address)\n // }\n}\n\n// function getRpcEndpoint(network: SuiNetwork): string {\n// switch (network) {\n// case SuiNetwork.TEST_NET:\n// return 'https://fullnode.testnet.sui.io/'\n// }\n// return 'https://fullnode.mainnet.sui.io/'\n// }\n\nfunction getRpcClient(endpoint: string): SuiClient {\n return new SuiClient({ url: endpoint })\n}\n","import { TypedDevInspectResults, TypedEventInstance, TypedFunctionPayload } from './models.js'\nimport {\n AbstractMoveCoder,\n ANY_TYPE,\n DecodedStruct,\n parseMoveType,\n SPLITTER,\n TypeDescriptor,\n InternalMoveModule\n} from '@typemove/move'\nimport {\n MoveCallSuiTransaction,\n SuiCallArg,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n DevInspectResults,\n SuiClient\n} from '@mysten/sui/client'\nimport { toInternalModule } from './to-internal.js'\nimport { SuiChainAdapter } from './sui-chain-adapter.js'\nimport { dynamic_field } from './builtin/0x2.js'\nimport { BcsType, bcs } from '@mysten/sui/bcs'\n\n// import { Encoding } from '@mysten/bcs/types', this doesn't get exported correctly\nexport type Encoding = 'base58' | 'base64' | 'hex'\n\nimport { normalizeSuiObjectId, normalizeSuiAddress } from '@mysten/sui/utils'\n\nexport class MoveCoder extends AbstractMoveCoder<\n // SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n constructor(client: SuiClient) {\n super(new SuiChainAdapter(client))\n }\n\n load(module: SuiMoveNormalizedModule, address: string): InternalMoveModule {\n let m = this.moduleMapping.get(module.address + '::' + module.name)\n const mDeclared = this.moduleMapping.get(address + '::' + module.name)\n if (m && mDeclared) {\n return m\n }\n this.accounts.add(module.address)\n m = toInternalModule(module)\n this.loadInternal(m, address)\n return m\n }\n\n protected async decode(data: any, type: TypeDescriptor): Promise<any> {\n switch (type.qname) {\n case '0x1::ascii::Char':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n const byte = (await super.decode(data, type)).byte as number\n return String.fromCharCode(byte)\n }\n case '0x1::ascii::String':\n if (data !== undefined && typeof data !== 'string') {\n // bcs verified\n const bytes = (await super.decode(data, type)).bytes as number[]\n return new TextDecoder().decode(new Uint8Array(bytes))\n }\n case '0x2::object::ID':\n if (data !== undefined && typeof data !== 'string') {\n // bcs verified\n const bytes = (await super.decode(data, type)).bytes as string\n return normalizeSuiObjectId(bytes)\n }\n case '0x2::url::Url':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n return (await super.decode(data, type)).url\n }\n case '0x2::coin::Coin':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n const bytes = (await super.decode(data, type)).id.id.bytes as number[]\n return new TextDecoder().decode(new Uint8Array(bytes))\n }\n return data\n case '0x2::balance::Balance':\n if (data.value) {\n // bcs verfied\n const balance = await super.decode(data, type)\n return balance.value\n }\n return BigInt(data)\n case '0x1::option::Option':\n if (data === null) {\n return data\n }\n if (data.vec) {\n // bcs verifed\n let vec = await super.decode(data, type)\n vec = vec.vec\n if (vec.length === 0) {\n return null\n }\n return vec[0]\n }\n return this.decode(data, type.typeArgs[0])\n case 'Address':\n const str = data as string\n return normalizeSuiAddress(str)\n case '0x1::string::String':\n if (typeof data !== 'string') {\n // bcs\n return new TextDecoder().decode(new Uint8Array(data.bytes))\n }\n default:\n return super.decode(data, type)\n }\n }\n\n decodeEvent<T>(event: SuiEvent): Promise<TypedEventInstance<T> | undefined> {\n return this.decodedStruct(event)\n }\n filterAndDecodeEvents<T>(type: TypeDescriptor<T> | string, resources: SuiEvent[]): Promise<TypedEventInstance<T>[]> {\n if (typeof type === 'string') {\n type = parseMoveType(type)\n }\n return this.filterAndDecodeStruct(type, resources)\n }\n\n async getDynamicFields<T1, T2>(\n objects: SuiMoveObject[],\n keyType: TypeDescriptor<T1> = ANY_TYPE,\n valueType: TypeDescriptor<T2> = ANY_TYPE\n ): Promise<dynamic_field.Field<T1, T2>[]> {\n // const type = dynamic_field.Field.TYPE\n // Not using the code above to avoid cycle initialize failed\n const type = new TypeDescriptor<dynamic_field.Field<T1, T2>>('0x2::dynamic_field::Field')\n type.typeArgs = [keyType, valueType]\n const res = await this.filterAndDecodeObjects(type, objects)\n return res.map((o) => o.data_decoded)\n }\n\n filterAndDecodeObjects<T>(\n type: TypeDescriptor<T>,\n objects: SuiMoveObject[]\n ): Promise<DecodedStruct<SuiMoveObject, T>[]> {\n return this.filterAndDecodeStruct(type, objects)\n }\n\n async decodeFunctionPayload(payload: MoveCallSuiTransaction, inputs: SuiCallArg[]): Promise<MoveCallSuiTransaction> {\n const functionType = [payload.package, payload.module, payload.function].join(SPLITTER)\n const func = await this.getMoveFunction(functionType)\n const params = this.adapter.getMeaningfulFunctionParams(func.params)\n const args = []\n for (const value of payload.arguments || []) {\n const argValue = value as any\n if ('Input' in (argValue as any)) {\n const idx = argValue.Input\n const arg = inputs[idx]\n if (arg.type === 'pure') {\n args.push(arg.value)\n } else if (arg.type === 'object') {\n // object is not there\n args.push(undefined)\n } else {\n console.error('unexpected function arg value')\n args.push(undefined)\n }\n // args.push(arg) // TODO check why ts not work using arg.push(arg)\n } else {\n args.push(undefined)\n }\n }\n\n const argumentsTyped = await this.decodeArray(args, params, false)\n return {\n ...payload,\n arguments_decoded: argumentsTyped\n } as TypedFunctionPayload<any>\n }\n\n private bcsRegistered = new Set<string>()\n private bcsRegistry = new Map<string, BcsType<any>>()\n\n private async getBCSTypeWithArgs(type: TypeDescriptor, args: BcsType<any>[] = []): Promise<BcsType<any>> {\n const qname = type.qname\n const sig = type.getNormalizedSignature()\n const cached = this.bcsRegistry.get(sig)\n if (cached) {\n return cached\n }\n const lowerQname = qname.toLowerCase()\n switch (lowerQname) {\n case 'u8':\n case 'u16':\n case 'u32':\n case 'u64':\n case 'u128':\n case 'u256':\n case 'bool':\n return bcs[lowerQname]()\n case 'address':\n return bcs.Address\n case 'vector':\n return bcs.vector(args[0])\n default:\n if (!qname.includes('::')) {\n throw `Unimplemented builtin type ${qname}`\n }\n }\n let moveStruct\n try {\n moveStruct = await this.getMoveStruct(qname)\n } catch (e) {\n console.error('Invalid move address', qname)\n throw e\n }\n const structDef: Record<string, any> = {}\n for (const field of moveStruct.fields) {\n if (field.type.qname.startsWith('T') && args.length) {\n const index = +field.type.qname.slice(1)\n structDef[field.name] = args[index]\n } else if (field.type.typeArgs.length && args.length) {\n structDef[field.name] = await this.getBCSTypeWithArgs(field.type, args)\n } else {\n structDef[field.name] = await this.getBCSType(field.type)\n }\n }\n return bcs.struct(qname, structDef)\n }\n\n async getBCSType(type: TypeDescriptor): Promise<BcsType<any>> {\n const args = await Promise.all(type.typeArgs.map((x) => this.getBCSType(x)))\n const bcsType = await this.getBCSTypeWithArgs(type, args)\n this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)\n return bcsType\n }\n\n async registerBCSTypes(type: TypeDescriptor): Promise<void> {\n const sig = type.getNormalizedSignature()\n if (this.bcsRegistered.has(sig)) {\n return\n }\n this.bcsRegistered.add(sig)\n\n const bcsType = await this.getBCSType(type)\n this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)\n }\n\n async decodeBCS(type: TypeDescriptor, data: Uint8Array | string, encoding?: Encoding): Promise<any> {\n await this.registerBCSTypes(type)\n if (typeof data == 'string') {\n const buf = Buffer.from(data, encoding as any)\n data = new Uint8Array(buf, buf.byteOffset, buf.byteLength)\n }\n const bcsType = this.bcsRegistry.get(type.getNormalizedSignature())\n return bcsType?.parse(data)\n }\n\n async decodeDevInspectResult<T extends any[]>(inspectRes: DevInspectResults): Promise<TypedDevInspectResults<T>> {\n const returnValues = []\n if (inspectRes.results != null) {\n for (const r of inspectRes.results) {\n if (r.returnValues) {\n for (const returnValue of r.returnValues) {\n const type = parseMoveType(returnValue[1])\n const bcsDecoded = await this.decodeBCS(type, new Uint8Array(returnValue[0]))\n const decoded = await this.decodeType(bcsDecoded, type)\n returnValues.push(decoded)\n }\n } else {\n returnValues.push(null)\n }\n }\n }\n return { ...inspectRes, results_decoded: returnValues as any }\n }\n}\n\nconst DEFAULT_ENDPOINT = 'https://fullnode.mainnet.sui.io/'\nconst CODER_MAP = new Map<string, MoveCoder>()\nconst CHAIN_ID_CODER_MAP = new Map<string, MoveCoder>()\n\nexport function defaultMoveCoder(endpoint: string = DEFAULT_ENDPOINT): MoveCoder {\n let coder = CODER_MAP.get(endpoint)\n if (!coder) {\n coder = new MoveCoder(new SuiClient({ url: endpoint }))\n CODER_MAP.set(endpoint, coder)\n }\n return coder\n}\n\nconst PROVIDER_CODER_MAP = new Map<SuiClient, MoveCoder>()\n\nlet DEFAULT_CHAIN_ID: string | undefined\n\nexport async function getMoveCoder(client: SuiClient): Promise<MoveCoder> {\n let coder = PROVIDER_CODER_MAP.get(client)\n if (!coder) {\n coder = new MoveCoder(client)\n // TODO how to dedup\n const id = await client.getChainIdentifier()\n const defaultCoder = defaultMoveCoder()\n if (!DEFAULT_CHAIN_ID) {\n DEFAULT_CHAIN_ID = await defaultCoder.adapter.getChainId()\n }\n if (id === DEFAULT_CHAIN_ID) {\n coder = defaultCoder\n }\n\n PROVIDER_CODER_MAP.set(client, coder)\n }\n return coder\n}\n","import { MoveCoder } from '@typemove/sui'\n\nimport { getClient, SuiNetwork } from './network.js'\n\nconst CODERS = new Map<SuiNetwork, MoveCoder>()\n\nexport function defaultMoveCoder(network: SuiNetwork = SuiNetwork.MAIN_NET): MoveCoder {\n let coder = CODERS.get(network)\n if (!coder) {\n coder = new MoveCoder(getClient(network))\n CODERS.set(network, coder)\n }\n\n return coder\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, normalizeLabels } from '../index.js'\nimport { getClient, SuiNetwork } from './network.js'\nimport {\n SuiTransactionBlockResponse,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n SuiClient\n} from '@mysten/sui/client'\nimport { MoveCoder } from './index.js'\nimport { defaultMoveCoder } from './move-coder.js'\nimport { MoveAccountContext, MoveContext } from '../move/index.js'\n\nexport class SuiContext extends MoveContext<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n moduleName: string\n timestamp: Date\n checkpoint: bigint\n transaction: SuiTransactionBlockResponse\n eventIndex: number\n coder: MoveCoder\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n checkpoint: bigint,\n transaction: SuiTransactionBlockResponse,\n eventIndex: number,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.checkpoint = checkpoint\n this.eventIndex = eventIndex\n this.coder = defaultMoveCoder(network)\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getChainId() {\n return this.network\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.checkpoint,\n transactionIndex: 0,\n transactionHash: this.transaction?.digest || '', // TODO\n logIndex: this.eventIndex,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n}\n\nexport class SuiObjectChangeContext extends MoveContext<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n timestamp: Date\n checkpoint: bigint\n coder: MoveCoder\n txDigest: string\n\n constructor(\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n checkpoint: bigint,\n txDigest: string,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.timestamp = timestamp\n this.checkpoint = checkpoint\n this.txDigest = txDigest\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: '*',\n blockNumber: this.checkpoint,\n transactionIndex: -1,\n transactionHash: this.txDigest,\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n}\n\n// TODO address handler should use this context\nexport class SuiAddressContext extends MoveAccountContext<\n SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n address: string\n network: SuiNetwork\n checkpoint: bigint\n timestamp: Date\n coder: MoveCoder\n\n protected contractName = 'address'\n\n constructor(\n network: SuiNetwork,\n address: string,\n checkpoint: bigint,\n timestamp: Date,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.checkpoint = checkpoint\n this.timestamp = timestamp\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.contractName,\n blockNumber: this.checkpoint,\n transactionIndex: 0,\n transactionHash: '',\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n}\n\nexport class SuiObjectContext extends SuiAddressContext {\n contractName = 'object'\n objectId: string\n objectVersion: bigint\n\n constructor(\n network: SuiNetwork,\n objectId: string,\n objectVersion: bigint,\n checkpoint: bigint,\n timestamp: Date,\n baseLabels: Labels | undefined\n ) {\n super(network, objectId, checkpoint, timestamp, baseLabels)\n this.objectId = objectId\n this.objectVersion = objectVersion\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n SuiTransactionBlockResponse,\n MoveCallSuiTransaction,\n ProgrammableTransaction,\n SuiTransaction\n} from '@mysten/sui/client'\nimport { accountTypeString } from '@typemove/move'\n\nexport function getMoveCalls(txBlock: SuiTransactionBlockResponse) {\n const txKind = txBlock.transaction?.data.transaction\n if (!txKind) {\n return []\n }\n const programmableTx: ProgrammableTransaction | undefined =\n txKind.kind === 'ProgrammableTransaction' ? txKind : undefined\n if (!programmableTx) {\n return []\n }\n\n return programmableTx.transactions.flatMap((tx: SuiTransaction) => {\n if ('MoveCall' in tx) {\n const call = tx.MoveCall as MoveCallSuiTransaction\n call.package = accountTypeString(call.package)\n\n return [call]\n }\n return []\n })\n}\n\n// function isHex(value: string): boolean {\n// return /^(0x|0X)?[a-fA-F0-9]+$/.test(value)\n// }\n//\n// function getHexByteLength(value: string): number {\n// return /^(0x|0X)/.test(value) ? (value.length - 2) / 2 : value.length / 2\n// }\n//\n// export function isValidSuiAddress(value: string): value is SuiAddress {\n// return isHex(value) && getHexByteLength(value) <= SUI_ADDRESS_LENGTH\n// }\n\n// export function validateAndNormalizeAddress(address: string): string {\n// // if (isFrameworkAccount(address)) {\n// // const n = parseInt(address, 16)\n// // return `0x${n.toString(16)}`\n// // }\n// if (!isValidSuiAddress(address)) {\n// throw Error('Not valid Address')\n// }\n// return normalizeSuiAddress(address)\n// }\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n Data_SuiCall,\n Data_SuiObject,\n Data_SuiObjectChange,\n HandleInterval,\n MoveAccountFetchConfig,\n MoveFetchConfig,\n MoveOwnerType,\n ProcessResult\n} from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { SuiAddressContext, SuiContext, SuiObjectChangeContext, SuiObjectContext } from './context.js'\nimport { SuiMoveObject, SuiObjectChange, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { ALL_ADDRESS, PromiseOrVoid } from '../core/index.js'\nimport { configure, DEFAULT_FETCH_CONFIG, IndexConfigure, SuiBindOptions } from './sui-processor.js'\nimport { CallHandler, TransactionFilter, accountTypeString, ObjectChangeHandler } from '../move/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { TypeDescriptor } from '@typemove/move'\nimport { TypedSuiMoveObject } from './models.js'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport interface SuiObjectBindOptions {\n objectId: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\nexport interface SuiObjectTypeBindOptions<T> {\n objectType: TypeDescriptor<T>\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\ninterface ObjectHandler {\n type?: string\n checkPointInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n fetchConfig: MoveAccountFetchConfig\n handler: (resource: Data_SuiObject) => Promise<ProcessResult>\n handlerName: string\n}\n\nexport const DEFAULT_ACCOUNT_FETCH_CONFIG: MoveAccountFetchConfig = {\n owned: false\n}\n\nexport class SuiAccountProcessorState extends ListStateStorage<SuiBaseObjectOrAddressProcessor<any>> {\n static INSTANCE = new SuiAccountProcessorState()\n}\n\nexport interface SuiInternalObjectsBindOptions extends SuiBindOptions {\n ownerType: MoveOwnerType\n}\n\nexport abstract class SuiBaseObjectOrAddressProcessor<HandlerType> {\n config: IndexConfigure\n ownerType: MoveOwnerType\n templateId: number | undefined\n\n objectHandlers: ObjectHandler[] = []\n objectChangeHandlers: ObjectChangeHandler<Data_SuiObjectChange>[] = []\n\n // static bind(options: SuiObjectsBindOptions): SuiBaseObjectsProcessor<any> {\n // return new SuiBaseObjectsProcessor(options)\n // }\n\n protected constructor(options: SuiInternalObjectsBindOptions) {\n if (options.ownerType === MoveOwnerType.TYPE) {\n this.config = {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address === '*' ? '*' : accountTypeString(options.address),\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels\n }\n } else {\n this.config = configure(options)\n }\n this.ownerType = options.ownerType\n SuiAccountProcessorState.INSTANCE.addValue(this)\n\n return proxyProcessor(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n // protected abstract transformObjects(objects: SuiMoveObject[]): SuiMoveObject[]\n\n protected abstract doHandle(handler: HandlerType, data: Data_SuiObject, ctx: SuiObjectContext): Promise<any>\n\n public onInterval(\n handler: HandlerType, //(resources: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n checkpointInterval: HandleInterval | undefined,\n type: string | undefined,\n fetchConfig: Partial<MoveAccountFetchConfig> | undefined,\n handlerName = getHandlerName()\n ): this {\n const processor = this\n this.objectHandlers.push({\n handlerName,\n handler: async function (data) {\n const ctx = new SuiObjectContext(\n processor.config.network,\n data.objectId,\n data.objectVersion,\n data.slot,\n data.timestamp || new Date(0),\n processor.config.baseLabels\n )\n await processor.doHandle(handler, data, ctx)\n return ctx.stopAndGetResult()\n },\n timeIntervalInMinutes: timeInterval,\n checkPointInterval: checkpointInterval,\n type,\n fetchConfig: { ...DEFAULT_ACCOUNT_FETCH_CONFIG, ...fetchConfig }\n })\n return this\n }\n}\n\nabstract class SuiBaseObjectOrAddressProcessorInternal<\n HandlerType\n> extends SuiBaseObjectOrAddressProcessor<HandlerType> {\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n type,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: HandlerType,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n type,\n fetchConfig\n )\n }\n}\n\nexport class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (objects: SuiMoveObject[], ctx: SuiAddressContext) => PromiseOrVoid\n> {\n callHandlers: CallHandler<Data_SuiCall>[] = []\n\n static bind(options: SuiBindOptions): SuiAddressProcessor {\n return new SuiAddressProcessor({ ...options, ownerType: MoveOwnerType.ADDRESS })\n }\n\n protected async doHandle(\n handler: (objects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => PromiseOrVoid,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ) {\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n const _filter: TransactionFilter = {\n fromAndToAddress: {\n from: '',\n to: this.config.address\n },\n ...filter\n }\n\n const processor = this\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n 'object',\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n await handler(tx, ctx)\n }\n return ctx.stopAndGetResult()\n },\n filters: [{ ..._filter, function: '' }],\n fetchConfig: _fetchConfig\n })\n return this\n }\n}\n\nexport class SuiObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiObjectProcessor {\n return new SuiObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.OBJECT,\n baseLabels: options.baseLabels\n })\n }\n\n protected async doHandle(\n handler: (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n if (!data.rawSelf) {\n console.log(`Sui object not existed in ${ctx.checkpoint}, please specific a start time`)\n return\n }\n return handler(\n JSON.parse(data.rawSelf) as SuiMoveObject,\n data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[],\n ctx\n )\n }\n}\n\nexport class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<\n (self: TypedSuiMoveObject<T>, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n objectType: TypeDescriptor<T>\n\n static bind<T>(options: SuiObjectTypeBindOptions<T>): SuiObjectTypeProcessor<T> {\n const processor = new SuiObjectTypeProcessor<T>({\n address: ALL_ADDRESS, // current only support on all address\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.TYPE,\n baseLabels: options.baseLabels\n })\n processor.objectType = options.objectType\n return processor\n }\n\n protected async doHandle(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n if (!data.rawSelf) {\n console.log(`Sui object not existed in ${ctx.checkpoint}, please specific a start time`)\n return\n }\n const object = await ctx.coder.filterAndDecodeObjects(this.objectType, [JSON.parse(data.rawSelf) as SuiMoveObject])\n return handler(object[0], data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n\n public onObjectChange(handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid): this {\n if (this.config.network === SuiNetwork.TEST_NET) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')\n }\n const processor = this\n this.objectChangeHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_SuiObjectChange) {\n const ctx = new SuiObjectChangeContext(\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n data.txDigest,\n processor.config.baseLabels\n )\n await handler(data.rawChanges.map((r) => JSON.parse(r)) as SuiObjectChange[], ctx)\n return ctx.stopAndGetResult()\n },\n type: this.objectType.qname\n })\n\n return this\n }\n\n public onTimeInterval(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n this.objectType.qname,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n this.objectType.qname,\n fetchConfig\n )\n }\n}\n\nexport class SuiWrappedObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {\n return new SuiWrappedObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.WRAPPED_OBJECT,\n baseLabels: options.baseLabels\n })\n }\n\n protected async doHandle(\n handler: (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { HandleInterval, MoveAccountFetchConfig, MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiAddressContext, SuiContext, SuiObjectContext } from './context.js'\nimport { SuiMoveObject, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { PromiseOrVoid } from '../core/index.js'\nimport {\n DEFAULT_ACCOUNT_FETCH_CONFIG,\n SuiAccountProcessorState,\n SuiAddressProcessor,\n SuiBaseObjectOrAddressProcessor,\n SuiObjectBindOptions,\n SuiObjectProcessor,\n SuiWrappedObjectProcessor\n} from './sui-object-processor.js'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { SuiBindOptions } from './sui-processor.js'\nimport { TransactionFilter, accountAddressString } from '../move/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nclass ObjectHandler<HandlerType> {\n type?: string\n checkpointInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handlerName: string\n handler: HandlerType\n fetchConfig: MoveAccountFetchConfig\n}\n\nexport class SuiAccountProcessorTemplateState extends ListStateStorage<\n SuiObjectOrAddressProcessorTemplate<any, any, any>\n> {\n static INSTANCE = new SuiAccountProcessorTemplateState()\n}\n\nexport abstract class SuiObjectOrAddressProcessorTemplate<\n HandlerType,\n OptionType extends SuiObjectBindOptions | SuiBindOptions,\n ProcessorType extends SuiBaseObjectOrAddressProcessor<HandlerType>\n> {\n id: number\n objectHandlers: ObjectHandler<HandlerType>[] = []\n binds = new Set<string>()\n\n constructor() {\n this.id = SuiAccountProcessorTemplateState.INSTANCE.getValues().length\n SuiAccountProcessorTemplateState.INSTANCE.addValue(this)\n return proxyProcessor(this)\n }\n\n protected abstract createProcessor(options: SuiObjectBindOptions | SuiBindOptions): ProcessorType\n\n bind(options: OptionType, ctx: SuiContext): void {\n options.network = options.network || ctx.network\n options.startCheckpoint = options.startCheckpoint || ctx.checkpoint\n let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address\n\n if (id === '*') {\n throw new ServerError(Status.INVALID_ARGUMENT, \"can't bind template instance with *\")\n }\n id = accountAddressString(id)\n\n const sig = [options.network, id].join('_')\n if (this.binds.has(sig)) {\n console.log(`Same object id can be bind to one template only once, ignore duplicate bind: ${sig}`)\n return\n }\n this.binds.add(sig)\n\n const processor = this.createProcessor(options)\n for (const h of this.objectHandlers) {\n processor.onInterval(\n h.handler,\n h.timeIntervalInMinutes,\n h.checkpointInterval,\n h.type,\n h.fetchConfig,\n h.handlerName\n )\n }\n const config = processor.config\n\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n TemplateInstanceState.INSTANCE.addValue({\n templateId: this.id,\n contract: {\n name: '',\n chainId: config.network,\n address: config.address,\n abi: ''\n },\n startBlock: config.startCheckpoint,\n endBlock: 0n,\n baseLabels: config.baseLabels\n })\n console.log(`successfully bind template ${sig}`)\n }\n\n unbind(options: OptionType, ctx: SuiContext): void {\n options.network = options.network || ctx.network\n options.startCheckpoint = options.startCheckpoint || ctx.checkpoint\n let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address\n\n if (id === '*') {\n throw new ServerError(Status.INVALID_ARGUMENT, \"can't delete template instance bind with *\")\n }\n id = accountAddressString(id)\n\n const sig = [options.network, id].join('_')\n if (!this.binds.has(sig)) {\n console.log(`the template instance ${sig} not existed or already unbind`)\n return\n }\n this.binds.delete(sig)\n\n let deleted = 0\n const oldTemplateInstances = TemplateInstanceState.INSTANCE.unregister()\n for (const templateInstance of oldTemplateInstances) {\n if (templateInstance.contract?.chainId === options.network && templateInstance.contract.address == id) {\n deleted++\n continue\n }\n TemplateInstanceState.INSTANCE.addValue(templateInstance)\n }\n\n if (deleted !== 1) {\n throw new ServerError(\n Status.INVALID_ARGUMENT,\n `Failed to delete template instance ${sig}, deleted ${deleted} times`\n )\n }\n\n const oldProcessors = SuiAccountProcessorState.INSTANCE.unregister()\n deleted = 0\n for (const processor of oldProcessors) {\n if (processor.templateId === this.id) {\n if (processor.config.network == options.network && processor.config.address === id) {\n deleted++\n continue\n }\n }\n SuiAccountProcessorState.INSTANCE.addValue(processor)\n }\n\n if (deleted !== 1) {\n throw new ServerError(\n Status.INVALID_ARGUMENT,\n `Failed to delete processor for template ${this.id}, ${sig}. deleted ${deleted} times`\n )\n }\n\n console.log(`successfully unbind template ${sig}`)\n\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n }\n\n protected onInterval(\n handler: HandlerType,\n timeInterval: HandleInterval | undefined,\n checkpointInterval: HandleInterval | undefined,\n type: string | undefined,\n fetchConfig: Partial<MoveAccountFetchConfig> | undefined\n ): this {\n this.objectHandlers.push({\n handlerName: getHandlerName(),\n handler: handler,\n timeIntervalInMinutes: timeInterval,\n checkpointInterval: checkpointInterval,\n type,\n fetchConfig: { ...DEFAULT_ACCOUNT_FETCH_CONFIG, ...fetchConfig }\n })\n return this\n }\n\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n type,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: HandlerType,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n type,\n fetchConfig\n )\n }\n}\n\nclass AddressTransactionHandler {\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void\n filter?: TransactionFilter\n fetchConfig?: Partial<MoveFetchConfig>\n}\n\nexport class SuiAddressProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (objects: SuiMoveObject[], ctx: SuiAddressContext) => PromiseOrVoid,\n SuiBindOptions,\n SuiAddressProcessor\n> {\n private handlers: AddressTransactionHandler[] = []\n\n createProcessor(options: SuiBindOptions): SuiAddressProcessor {\n const p = SuiAddressProcessor.bind(options)\n for (const handler of this.handlers) {\n p.onTransactionBlock(handler.handler, handler.filter, handler.fetchConfig)\n }\n p.templateId = this.id\n return p\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n this.handlers.push({\n handler,\n filter,\n fetchConfig\n })\n return this\n }\n}\n\nexport class SuiObjectProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n SuiObjectBindOptions,\n SuiObjectProcessor\n> {\n createProcessor(options: SuiObjectBindOptions): SuiObjectProcessor {\n const p = SuiObjectProcessor.bind(options)\n p.templateId = this.id\n return p\n }\n}\n\nexport class SuiWrappedObjectProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n SuiObjectBindOptions,\n SuiWrappedObjectProcessor\n> {\n createProcessor(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {\n const p = SuiWrappedObjectProcessor.bind(options)\n p.templateId = this.id\n return p\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject } from '@mysten/sui/client'\nimport { DecodedStruct } from '@typemove/move'\n\nexport type TypedEventInstance<T> = DecodedStruct<SuiEvent, T>\nexport type TypedSuiMoveObject<T> = DecodedStruct<SuiMoveObject, T>\n\nexport type TypedFunctionPayload<T extends Array<any>> = MoveCallSuiTransaction & {\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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n AccountConfig,\n ContractConfig,\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n Data_SuiObjectChange,\n DataBinding,\n HandlerType,\n MoveCallHandlerConfig,\n MoveEventHandlerConfig,\n MoveResourceChangeConfig,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SuiProcessorState } from './sui-processor.js'\nimport { SuiAccountProcessorState, SuiAddressProcessor } from './sui-object-processor.js'\nimport { initCoinList } from './ext/coin.js'\nimport { SuiChainId } from '@sentio/chain'\nimport {\n SuiAccountProcessorTemplateState,\n SuiObjectOrAddressProcessorTemplate\n} from './sui-object-processor-template.js'\nimport { SuiNetwork } from './network.js'\nimport { SuiContext } from './context.js'\n\ninterface Handlers {\n suiEventHandlers: ((event: Data_SuiEvent) => Promise<ProcessResult>)[]\n suiCallHandlers: ((func: Data_SuiCall) => Promise<ProcessResult>)[]\n suiObjectHandlers: ((object: Data_SuiObject) => Promise<ProcessResult>)[]\n suiObjectChangeHandlers: ((object: Data_SuiObjectChange) => Promise<ProcessResult>)[]\n}\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n suiObjectChangeHandlers: []\n }\n async start(request: StartRequest): Promise<void> {\n await initCoinList()\n\n console.log('total instances:', request.templateInstances.length)\n const allowedChainIds = new Set<string>(Object.values(SuiChainId))\n for (const instance of request.templateInstances) {\n if (!allowedChainIds.has(instance.contract?.chainId || '')) {\n continue\n }\n\n console.log('start template instance', instance.templateId)\n const template: SuiObjectOrAddressProcessorTemplate<any, any, any> =\n SuiAccountProcessorTemplateState.INSTANCE.getValues()[instance.templateId]\n\n template.bind(\n {\n address: instance.contract?.address || '',\n objectId: instance.contract?.address || '',\n network: <SuiNetwork>instance.contract?.chainId || SuiNetwork.MAIN_NET,\n startCheckpoint: instance.startBlock || 0n,\n baseLabels: instance.baseLabels\n },\n NoopContext\n )\n }\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n suiObjectChangeHandlers: []\n }\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: suiProcessor.config.network,\n address: suiProcessor.config.address,\n abi: ''\n },\n startBlock: suiProcessor.config.startCheckpoint\n })\n for (const handler of suiProcessor.eventHandlers) {\n const handlerId = handlers.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 eventAccount: f.eventAccount || ''\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveEventConfigs.push(eventHandlerConfig)\n }\n for (const handler of suiProcessor.callHandlers) {\n const handlerId = handlers.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 publicKeyPrefix: filter.publicKeyPrefix || '',\n fromAndToAddress: filter.fromAndToAddress\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n // deprecated, use objectType processor instead\n for (const handler of suiProcessor.objectChangeHandlers) {\n const handlerId = handlers.suiObjectChangeHandlers.push(handler.handler) - 1\n const objectChangeHandler: MoveResourceChangeConfig = {\n type: handler.type,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveResourceChangeConfigs.push(objectChangeHandler)\n }\n config.contractConfigs.push(contractConfig)\n }\n\n for (const processor of SuiAccountProcessorState.INSTANCE.getValues()) {\n const accountConfig = AccountConfig.fromPartial({\n address: processor.config.address,\n chainId: processor.getChainId(),\n startBlock: processor.config.startCheckpoint // TODO maybe use another field\n })\n\n for (const handler of processor.objectChangeHandlers) {\n const handlerId = handlers.suiObjectChangeHandlers.push(handler.handler) - 1\n const objectChangeHandler: MoveResourceChangeConfig = {\n type: handler.type,\n handlerId,\n handlerName: handler.handlerName\n }\n accountConfig.moveResourceChangeConfigs.push(objectChangeHandler)\n }\n\n for (const handler of processor.objectHandlers) {\n const handlerId = handlers.suiObjectHandlers.push(handler.handler) - 1\n\n accountConfig.moveIntervalConfigs.push({\n intervalConfig: {\n handlerId: handlerId,\n handlerName: handler.handlerName,\n minutes: 0,\n minutesInterval: handler.timeIntervalInMinutes,\n slot: 0,\n slotInterval: handler.checkPointInterval,\n fetchConfig: undefined\n },\n type: handler.type || '',\n ownerType: processor.ownerType,\n resourceFetchConfig: handler.fetchConfig,\n fetchConfig: undefined\n })\n }\n\n if (processor instanceof SuiAddressProcessor) {\n for (const handler of processor.callHandlers) {\n const handlerId = handlers.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 publicKeyPrefix: filter.publicKeyPrefix || '',\n fromAndToAddress: filter.fromAndToAddress\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n accountConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n }\n\n config.accountConfigs.push(accountConfig)\n }\n this.handlers = handlers\n }\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.handlers.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.handlers.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 async processSuiObject(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObject) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object can't be empty\")\n }\n const object = binding.data.suiObject\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectHandlers[handlerId](object).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object: ' + JSON.stringify(object) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiObjectChange(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObjectChange) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object change can't be empty\")\n }\n const objectChange = binding.data.suiObjectChange\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectChangeHandlers[handlerId](objectChange).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object change: ' + JSON.stringify(objectChange) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n supportedHandlers = [\n HandlerType.SUI_EVENT,\n HandlerType.SUI_CALL,\n HandlerType.SUI_OBJECT,\n HandlerType.SUI_OBJECT_CHANGE\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 case HandlerType.SUI_OBJECT:\n return this.processSuiObject(request)\n case HandlerType.SUI_OBJECT_CHANGE:\n return this.processSuiObjectChange(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\nconst NoopContext = new SuiContext('', SuiChainId.SUI_MAINNET, '', new Date(), 0n, {} as any, 0, {})\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","export { SuiBaseProcessor, SuiGlobalProcessor, SuiModulesProcessor, type SuiBindOptions } from './sui-processor.js'\nexport {\n SuiAddressProcessor,\n SuiObjectProcessor,\n SuiObjectTypeProcessor,\n SuiWrappedObjectProcessor,\n type SuiObjectBindOptions,\n type SuiObjectTypeBindOptions\n} from './sui-object-processor.js'\n\nexport {\n SuiAddressProcessorTemplate,\n SuiObjectProcessorTemplate,\n SuiWrappedObjectProcessorTemplate\n} from './sui-object-processor-template.js'\n\nexport * from './network.js'\nexport * from './context.js'\nexport * from './models.js'\n\nexport * from './move-coder.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\n\nexport { BUILTIN_TYPES } from '@typemove/move'\n\nexport { MoveCoder } from '@typemove/sui'\n\n// export { validateAndNormalizeAddress, isValidSuiAddress } from './utils.js'\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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","names":["defaultMoveCoder","defaultMoveCoder","defaultMoveCoder","ListStateStorage","import_nice_grpc","ListStateStorage","ListStateStorage","import_nice_grpc","ListStateStorage","import_nice_grpc"]}
|
1
|
+
{"version":3,"sources":["../src/sui/sui-processor.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.8.2/node_modules/@typemove/sui/src/models.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.8.2/node_modules/@typemove/sui/src/transaction.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.8.2/node_modules/@typemove/sui/src/to-internal.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.8.2/node_modules/@typemove/sui/src/sui-chain-adapter.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.8.2/node_modules/@typemove/sui/src/move-coder.ts","../src/sui/move-coder.ts","../src/sui/context.ts","../src/sui/utils.ts","../src/sui/sui-object-processor.ts","../src/sui/sui-object-processor-template.ts","../src/sui/models.ts","../src/sui/sui-plugin.ts","../src/sui/index.ts"],"sourcesContent":["import { Data_SuiCall, Data_SuiEvent, Data_SuiObjectChange, MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { SuiContext, SuiObjectChangeContext } from './context.js'\nimport { MoveCallSuiTransaction, SuiEvent, SuiTransactionBlockResponse, SuiObjectChange } from '@mysten/sui/client'\nimport {\n accountAddressString,\n CallHandler,\n EventFilter,\n EventHandler,\n FunctionNameAndCallFilter,\n ObjectChangeHandler,\n SPLITTER,\n TransactionFilter\n} from '../move/index.js'\nimport { getMoveCalls } from './utils.js'\nimport { defaultMoveCoder, MoveCoder } from './index.js'\nimport { ALL_ADDRESS, Labels, PromiseOrVoid } from '../core/index.js'\nimport { Required } from 'utility-types'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport const DEFAULT_FETCH_CONFIG: MoveFetchConfig = {\n resourceChanges: false,\n allEvents: true,\n inputs: true\n}\n\nexport type IndexConfigure = Required<SuiBindOptions, 'startCheckpoint' | 'network'>\n\nexport function configure(options: SuiBindOptions): IndexConfigure {\n return {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address === ALL_ADDRESS ? ALL_ADDRESS : accountAddressString(options.address),\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels\n }\n}\n\nexport interface SuiBindOptions {\n address: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: Labels\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<Data_SuiEvent>[] = []\n callHandlers: CallHandler<Data_SuiCall>[] = []\n objectChangeHandlers: ObjectChangeHandler<Data_SuiObjectChange>[] = []\n\n coder: MoveCoder\n\n constructor(name: string, options: SuiBindOptions) {\n this.moduleName = name\n this.config = configure(options)\n SuiProcessorState.INSTANCE.addValue(this)\n this.coder = defaultMoveCoder(this.config.network)\n\n return proxyProcessor(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n protected onMoveEvent(\n handler: (event: SuiEvent, ctx: SuiContext) => PromiseOrVoid,\n filter: EventFilter | EventFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: EventFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\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 handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'event is null')\n }\n const txn = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n if (txn.events == null) {\n txn.events = []\n }\n\n const evt = JSON.parse(data.rawEvent) as SuiEvent\n const idx = Number(evt.id.eventSeq) || 0\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n txn,\n idx,\n processor.config.baseLabels\n )\n\n const decoded = await processor.coder.decodeEvent<any>(evt)\n await handler(decoded || evt, ctx)\n\n return ctx.stopAndGetResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n protected onEntryFunctionCall(\n handler: (call: MoveCallSuiTransaction, ctx: SuiContext) => PromiseOrVoid,\n filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: FunctionNameAndCallFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n const processor = this\n const allFunctionType = new Set(_filters.map((f) => f.function))\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n const calls: MoveCallSuiTransaction[] = getMoveCalls(tx)\n const txKind = tx.transaction?.data?.transaction\n if (!txKind) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected getTransactionKind get empty')\n }\n\n // getProgrammableTransaction(txKind)\n const programmableTx = txKind.kind === 'ProgrammableTransaction' ? txKind : undefined\n\n // TODO potential pass index\n for (const call of calls) {\n const functionType = [call.module, call.function].join(SPLITTER)\n if (!allFunctionType.has(functionType)) {\n continue\n }\n\n // TODO maybe do in parallel\n const decoded = await processor.coder.decodeFunctionPayload(call, programmableTx?.inputs || [])\n await handler(decoded, ctx)\n }\n }\n return ctx.stopAndGetResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n onEvent(handler: (event: SuiEvent, ctx: SuiContext) => void, fetchConfig?: Partial<MoveFetchConfig>): this {\n this.onMoveEvent(handler, { type: '' }, fetchConfig)\n return this\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => PromiseOrVoid,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n const processor = this\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n await handler(tx, ctx)\n }\n return ctx.stopAndGetResult()\n },\n filters: [{ ...filter, function: '' }],\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n protected onObjectChange(\n handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid,\n type: string\n ): this {\n if (this.config.network === SuiNetwork.TEST_NET) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')\n }\n const processor = this\n this.objectChangeHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_SuiObjectChange) {\n const ctx = new SuiObjectChangeContext(\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n data.txDigest,\n processor.config.baseLabels\n )\n await handler(data.rawChanges.map((r) => JSON.parse(r)) as SuiObjectChange[], ctx)\n return ctx.stopAndGetResult()\n },\n type\n })\n\n return this\n }\n}\n\nexport class SuiModulesProcessor extends SuiBaseProcessor {\n static bind(options: SuiBindOptions): SuiModulesProcessor {\n return new SuiModulesProcessor(ALL_ADDRESS, options)\n }\n}\n\nexport class SuiGlobalProcessor extends SuiBaseProcessor {\n static bind(options: Omit<SuiBindOptions, 'address'>): SuiGlobalProcessor {\n return new SuiGlobalProcessor(ALL_ADDRESS, { ...options, address: ALL_ADDRESS })\n }\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void,\n filter: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n // TODO enable more strict check\n // if (!filter.publicKeyPrefix || filter.publicKeyPrefix.length < 2) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'restriction too low for global processor')\n // }\n return super.onTransactionBlock(handler, filter, fetchConfig)\n }\n\n // deprecated,, use object type processor\n public onObjectChange(\n handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => void,\n type: string\n ): this {\n return super.onObjectChange(handler, type)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject, DevInspectResults } from '@mysten/sui/client'\nimport { DecodedStruct } from '@typemove/move'\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nexport type TypedEventInstance<T> = DecodedStruct<SuiEvent, T>\nexport type TypedSuiMoveObject<T> = DecodedStruct<SuiMoveObject, T>\n\nexport type TypedFunctionPayload<T extends Array<any>> = MoveCallSuiTransaction & {\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\nexport type TypedDevInspectResults<T extends Array<any>> = DevInspectResults & {\n /**\n * Decoded return values using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n */\n results_decoded?: T\n}\n","import { Transaction, TransactionArgument, TransactionObjectInput } from '@mysten/sui/transactions'\n\nexport function isTransactionArgument(value: any): boolean {\n if (typeof value !== 'object') return false\n if (value === null || value === undefined) return false\n\n return (\n value.$kind === 'GasCoin' || value.$kind === 'Result' || value.$kind === 'NestedResult' || value.$kind === 'Input'\n )\n}\n\nexport function transactionArgumentOrObject(\n value: TransactionArgument | TransactionObjectInput,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.object(value)\n}\n\nexport function transactionArgumentOrPure(value: any, transactionBlock: Transaction): any {\n if (isTransactionArgument(value)) {\n return value\n }\n return typeof value == 'string' ? transactionBlock.pure.string(value) : transactionBlock.pure.u64(value)\n}\n\nexport function transactionArgumentOrPureString(\n value: TransactionArgument | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.string(value as string)\n}\n\nexport function transactionArgumentOrPureAddress(\n value: TransactionArgument | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.address(value as string)\n}\n\nexport function transactionArgumentOrPureU8(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u8(value as number)\n}\n\nexport function transactionArgumentOrPureU16(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u16(value as number)\n}\n\nexport function transactionArgumentOrPureU32(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u32(value as number)\n}\n\nexport function transactionArgumentOrPureU64(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u64(value as number)\n}\n\nexport function transactionArgumentOrPureU128(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u128(value as number)\n}\n\nexport function transactionArgumentOrPureU256(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u256(value as number)\n}\n\nexport function transactionArgumentOrPureBool(\n value: TransactionArgument | boolean,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.bool(value as boolean)\n}\n\n// TODO vector might be nested\nexport function transactionArgumentOrVec(value: any, transactionBlock: Transaction): any {\n if (isTransactionArgument(value)) {\n return value\n }\n return transactionBlock.makeMoveVec({\n elements: value.map((a: any) => transactionBlock.object(a))\n })\n}\n","import type {\n SuiMoveNormalizedEnum,\n SuiMoveNormalizedField,\n SuiMoveNormalizedFunction,\n SuiMoveNormalizedModule,\n SuiMoveNormalizedStruct,\n SuiMoveNormalizedType\n} from '@mysten/sui/client'\nimport {\n InternalMoveEnum,\n InternalMoveFunction,\n InternalMoveFunctionVisibility,\n InternalMoveModule,\n InternalMoveStruct,\n InternalMoveStructField,\n SPLITTER,\n TypeDescriptor\n} from '@typemove/move'\n\nexport function toInternalModule(module: SuiMoveNormalizedModule): InternalMoveModule {\n return {\n address: module.address,\n exposedFunctions: Object.entries(module.exposedFunctions).map(([n, f]) => toInternalFunction(n, f)),\n name: module.name,\n structs: Object.entries(module.structs).map(([n, s]) => toInternalStruct(n, s)),\n enums: Object.entries(module.enums || {}).map(([n, e]) => toInternalEnum(n, e))\n }\n}\n\nfunction toInternalFunction(name: string, func: SuiMoveNormalizedFunction): InternalMoveFunction {\n let visibility\n switch (func.visibility) {\n case 'Private':\n visibility = InternalMoveFunctionVisibility.PRIVATE\n break\n case 'Public':\n visibility = InternalMoveFunctionVisibility.PUBLIC\n break\n case 'Friend':\n visibility = InternalMoveFunctionVisibility.FRIEND\n break\n default:\n throw Error('No visibility for function' + name)\n }\n return {\n typeParams: func.typeParameters.map((p: any) => {\n return { constraints: p.abilities }\n }),\n isEntry: func.isEntry,\n name: name,\n params: func.parameters.map(toTypeDescriptor),\n return: func.return.map(toTypeDescriptor),\n visibility: visibility\n }\n}\n\nfunction toInternalStruct(name: string, struct: SuiMoveNormalizedStruct): InternalMoveStruct {\n return {\n abilities: struct.abilities.abilities,\n fields: struct.fields.map(toInternalField),\n typeParams: struct.typeParameters.map((p: any) => {\n return { constraints: p.constraints.abilities }\n }),\n isNative: false,\n isEvent: false,\n name: name\n }\n}\n\nfunction toInternalEnum(name: string, enumType: SuiMoveNormalizedEnum): InternalMoveEnum {\n return {\n name: name,\n abilities: enumType.abilities.abilities,\n typeParams: enumType.typeParameters.map((p: any) => {\n return { constraints: p.constraints.abilities }\n }),\n variants: Object.entries(enumType.variants).reduce((acc: { [key: string]: InternalMoveStructField[] }, [k, v]) => {\n acc[k] = v.map(toInternalField)\n return acc\n }, {})\n }\n}\n\nfunction toInternalField(module: SuiMoveNormalizedField): InternalMoveStructField {\n return {\n name: module.name,\n type: toTypeDescriptor(module.type)\n }\n}\n\nfunction toTypeDescriptor(normalizedType: SuiMoveNormalizedType): TypeDescriptor {\n if (typeof normalizedType === 'string') {\n return new TypeDescriptor(normalizedType)\n }\n\n if ('Struct' in normalizedType) {\n const qname = [normalizedType.Struct.address, normalizedType.Struct.module, normalizedType.Struct.name].join(\n SPLITTER\n )\n\n const args = normalizedType.Struct.typeArguments.map(toTypeDescriptor)\n\n return new TypeDescriptor(qname, args)\n }\n\n if ('Vector' in normalizedType) {\n return new TypeDescriptor('Vector', [toTypeDescriptor(normalizedType.Vector)])\n }\n if ('TypeParameter' in normalizedType) {\n return new TypeDescriptor('T' + normalizedType.TypeParameter)\n }\n\n if ('Reference' in normalizedType) {\n const res = toTypeDescriptor(normalizedType.Reference)\n res.reference = true\n return res\n }\n\n if ('MutableReference' in normalizedType) {\n const res = toTypeDescriptor(normalizedType.MutableReference)\n res.reference = true\n res.mutable = true\n return res\n }\n\n throw new Error('Unexpected sui type')\n}\n","import { toInternalModule } from './to-internal.js'\nimport {\n InternalMoveModule,\n InternalMoveStruct,\n ChainAdapter,\n moduleQname,\n SPLITTER,\n TypeDescriptor\n} from '@typemove/move'\n\nimport { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui/client'\n\nexport class SuiChainAdapter extends ChainAdapter<\n // SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n async getChainId() {\n return this.client.getChainIdentifier()\n }\n // static INSTANCE = new SuiChainAdapter()\n\n client: SuiClient\n constructor(client: SuiClient) {\n super()\n this.client = client\n }\n\n async fetchModule(\n account: string,\n module: string\n // network: SuiNetwork\n ): Promise<SuiMoveNormalizedModule> {\n return await this.client.getNormalizedMoveModule({ package: account, module })\n }\n\n async fetchModules(\n account: string\n // network: SuiNetwork\n ): Promise<SuiMoveNormalizedModule[]> {\n const modules = await this.client.getNormalizedMoveModulesByPackage({\n package: account\n })\n return Object.values(modules)\n }\n\n getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {\n return params\n // if (params.length === 0) {\n // return params\n // }\n // return params.slice(0, params.length - 1)\n }\n\n toInternalModules(modules: SuiMoveNormalizedModule[]): InternalMoveModule[] {\n return Object.values(modules).map(toInternalModule)\n }\n\n getAllEventStructs(modules: InternalMoveModule[]): Map<string, InternalMoveStruct> {\n const eventMap = new Map<string, InternalMoveStruct>()\n\n for (const module of modules) {\n const qname = moduleQname(module)\n\n for (const struct of module.structs) {\n const abilities = new Set(struct.abilities)\n if (abilities.has('Drop') && abilities.has('Copy')) {\n eventMap.set(qname + SPLITTER + struct.name, struct)\n }\n }\n }\n return eventMap\n }\n\n getType(base: SuiEvent | SuiMoveObject): string {\n return base.type\n }\n\n getData(val: SuiEvent | SuiMoveObject) {\n // if (val.parsedJson) {\n // return val.parsedJson as any\n // }\n if (val === undefined) {\n throw Error('val is undefined')\n }\n if ('parsedJson' in val) {\n return val.parsedJson as any\n }\n // if (SuiParsedData.is(val)) {\n // return val.fields as any\n // }\n if (val.dataType === 'moveObject') {\n return val.fields as any\n }\n // if (SuiMoveObject.is(val)) {\n // return val.fields as any\n // }\n // This may not be perfect, just think everything has\n if ('fields' in val) {\n if ('type' in val && Object.keys(val).length === 2) {\n return val.fields as any\n }\n }\n return val as any\n }\n // validateAndNormalizeAddress(address: string) {\n // return validateAndNormalizeAddress(address)\n // }\n}\n\n// function getRpcEndpoint(network: SuiNetwork): string {\n// switch (network) {\n// case SuiNetwork.TEST_NET:\n// return 'https://fullnode.testnet.sui.io/'\n// }\n// return 'https://fullnode.mainnet.sui.io/'\n// }\n\nfunction getRpcClient(endpoint: string): SuiClient {\n return new SuiClient({ url: endpoint })\n}\n","import { TypedDevInspectResults, TypedEventInstance, TypedFunctionPayload } from './models.js'\nimport {\n AbstractMoveCoder,\n ANY_TYPE,\n DecodedStruct,\n parseMoveType,\n SPLITTER,\n TypeDescriptor,\n InternalMoveModule\n} from '@typemove/move'\nimport {\n MoveCallSuiTransaction,\n SuiCallArg,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n DevInspectResults,\n SuiClient\n} from '@mysten/sui/client'\nimport { toInternalModule } from './to-internal.js'\nimport { SuiChainAdapter } from './sui-chain-adapter.js'\nimport { dynamic_field } from './builtin/0x2.js'\nimport { BcsType, bcs } from '@mysten/sui/bcs'\n\n// import { Encoding } from '@mysten/bcs/types', this doesn't get exported correctly\nexport type Encoding = 'base58' | 'base64' | 'hex'\n\nimport { normalizeSuiObjectId, normalizeSuiAddress } from '@mysten/sui/utils'\n\nexport class MoveCoder extends AbstractMoveCoder<\n // SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n constructor(client: SuiClient) {\n super(new SuiChainAdapter(client))\n }\n\n load(module: SuiMoveNormalizedModule, address: string): InternalMoveModule {\n let m = this.moduleMapping.get(module.address + '::' + module.name)\n const mDeclared = this.moduleMapping.get(address + '::' + module.name)\n if (m && mDeclared) {\n return m\n }\n this.accounts.add(module.address)\n m = toInternalModule(module)\n this.loadInternal(m, address)\n return m\n }\n\n protected async decode(data: any, type: TypeDescriptor): Promise<any> {\n switch (type.qname) {\n case '0x1::ascii::Char':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n const byte = (await super.decode(data, type)).byte as number\n return String.fromCharCode(byte)\n }\n case '0x1::ascii::String':\n if (data !== undefined && typeof data !== 'string') {\n // bcs verified\n const bytes = (await super.decode(data, type)).bytes as number[]\n return new TextDecoder().decode(new Uint8Array(bytes))\n }\n case '0x2::object::ID':\n if (data !== undefined && typeof data !== 'string') {\n // bcs verified\n const bytes = (await super.decode(data, type)).bytes as string\n return normalizeSuiObjectId(bytes)\n }\n case '0x2::url::Url':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n return (await super.decode(data, type)).url\n }\n case '0x2::coin::Coin':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n const bytes = (await super.decode(data, type)).id.id.bytes as number[]\n return new TextDecoder().decode(new Uint8Array(bytes))\n }\n return data\n case '0x2::balance::Balance':\n if (data.value) {\n // bcs verfied\n const balance = await super.decode(data, type)\n return balance.value\n }\n return BigInt(data)\n case '0x1::option::Option':\n if (data === null) {\n return data\n }\n if (data.vec) {\n // bcs verifed\n let vec = await super.decode(data, type)\n vec = vec.vec\n if (vec.length === 0) {\n return null\n }\n return vec[0]\n }\n return this.decode(data, type.typeArgs[0])\n case 'Address':\n const str = data as string\n return normalizeSuiAddress(str)\n case '0x1::string::String':\n if (typeof data !== 'string') {\n // bcs\n return new TextDecoder().decode(new Uint8Array(data.bytes))\n }\n default:\n return super.decode(data, type)\n }\n }\n\n decodeEvent<T>(event: SuiEvent): Promise<TypedEventInstance<T> | undefined> {\n return this.decodedStruct(event)\n }\n filterAndDecodeEvents<T>(type: TypeDescriptor<T> | string, resources: SuiEvent[]): Promise<TypedEventInstance<T>[]> {\n if (typeof type === 'string') {\n type = parseMoveType(type)\n }\n return this.filterAndDecodeStruct(type, resources)\n }\n\n async getDynamicFields<T1, T2>(\n objects: SuiMoveObject[],\n keyType: TypeDescriptor<T1> = ANY_TYPE,\n valueType: TypeDescriptor<T2> = ANY_TYPE\n ): Promise<dynamic_field.Field<T1, T2>[]> {\n // const type = dynamic_field.Field.TYPE\n // Not using the code above to avoid cycle initialize failed\n const type = new TypeDescriptor<dynamic_field.Field<T1, T2>>('0x2::dynamic_field::Field')\n type.typeArgs = [keyType, valueType]\n const res = await this.filterAndDecodeObjects(type, objects)\n return res.map((o) => o.data_decoded)\n }\n\n filterAndDecodeObjects<T>(\n type: TypeDescriptor<T>,\n objects: SuiMoveObject[]\n ): Promise<DecodedStruct<SuiMoveObject, T>[]> {\n return this.filterAndDecodeStruct(type, objects)\n }\n\n async decodeFunctionPayload(payload: MoveCallSuiTransaction, inputs: SuiCallArg[]): Promise<MoveCallSuiTransaction> {\n const functionType = [payload.package, payload.module, payload.function].join(SPLITTER)\n const func = await this.getMoveFunction(functionType)\n const params = this.adapter.getMeaningfulFunctionParams(func.params)\n const args = []\n for (const value of payload.arguments || []) {\n const argValue = value as any\n if ('Input' in (argValue as any)) {\n const idx = argValue.Input\n const arg = inputs[idx]\n if (arg.type === 'pure') {\n args.push(arg.value)\n } else if (arg.type === 'object') {\n // object is not there\n args.push(undefined)\n } else {\n console.error('unexpected function arg value')\n args.push(undefined)\n }\n // args.push(arg) // TODO check why ts not work using arg.push(arg)\n } else {\n args.push(undefined)\n }\n }\n\n const argumentsTyped = await this.decodeArray(args, params, false)\n return {\n ...payload,\n arguments_decoded: argumentsTyped\n } as TypedFunctionPayload<any>\n }\n\n private bcsRegistered = new Set<string>()\n private bcsRegistry = new Map<string, BcsType<any>>()\n\n private async getBCSTypeWithArgs(type: TypeDescriptor, args: BcsType<any>[] = []): Promise<BcsType<any>> {\n const qname = type.qname\n const sig = type.getNormalizedSignature()\n const cached = this.bcsRegistry.get(sig)\n if (cached) {\n return cached\n }\n const lowerQname = qname.toLowerCase()\n switch (lowerQname) {\n case 'u8':\n case 'u16':\n case 'u32':\n case 'u64':\n case 'u128':\n case 'u256':\n case 'bool':\n return bcs[lowerQname]()\n case 'address':\n return bcs.Address\n case 'vector':\n return bcs.vector(args[0])\n default:\n if (!qname.includes('::')) {\n throw `Unimplemented builtin type ${qname}`\n }\n }\n let moveStruct\n try {\n moveStruct = await this.getMoveStruct(qname)\n } catch (e) {\n console.error('Invalid move address', qname)\n throw e\n }\n const structDef: Record<string, any> = {}\n for (const field of moveStruct.fields) {\n if (field.type.qname.startsWith('T') && args.length) {\n const index = +field.type.qname.slice(1)\n structDef[field.name] = args[index]\n } else if (field.type.typeArgs.length && args.length) {\n structDef[field.name] = await this.getBCSTypeWithArgs(field.type, args)\n } else {\n structDef[field.name] = await this.getBCSType(field.type)\n }\n }\n return bcs.struct(qname, structDef)\n }\n\n async getBCSType(type: TypeDescriptor): Promise<BcsType<any>> {\n const args = await Promise.all(type.typeArgs.map((x) => this.getBCSType(x)))\n const bcsType = await this.getBCSTypeWithArgs(type, args)\n this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)\n return bcsType\n }\n\n async registerBCSTypes(type: TypeDescriptor): Promise<void> {\n const sig = type.getNormalizedSignature()\n if (this.bcsRegistered.has(sig)) {\n return\n }\n this.bcsRegistered.add(sig)\n\n const bcsType = await this.getBCSType(type)\n this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)\n }\n\n async decodeBCS(type: TypeDescriptor, data: Uint8Array | string, encoding?: Encoding): Promise<any> {\n await this.registerBCSTypes(type)\n if (typeof data == 'string') {\n const buf = Buffer.from(data, encoding as any)\n data = new Uint8Array(buf, buf.byteOffset, buf.byteLength)\n }\n const bcsType = this.bcsRegistry.get(type.getNormalizedSignature())\n return bcsType?.parse(data)\n }\n\n async decodeDevInspectResult<T extends any[]>(inspectRes: DevInspectResults): Promise<TypedDevInspectResults<T>> {\n const returnValues = []\n if (inspectRes.results != null) {\n for (const r of inspectRes.results) {\n if (r.returnValues) {\n for (const returnValue of r.returnValues) {\n const type = parseMoveType(returnValue[1])\n const bcsDecoded = await this.decodeBCS(type, new Uint8Array(returnValue[0]))\n const decoded = await this.decodeType(bcsDecoded, type)\n returnValues.push(decoded)\n }\n } else {\n returnValues.push(null)\n }\n }\n }\n return { ...inspectRes, results_decoded: returnValues as any }\n }\n}\n\nconst DEFAULT_ENDPOINT = 'https://fullnode.mainnet.sui.io/'\nconst CODER_MAP = new Map<string, MoveCoder>()\nconst CHAIN_ID_CODER_MAP = new Map<string, MoveCoder>()\n\nexport function defaultMoveCoder(endpoint: string = DEFAULT_ENDPOINT): MoveCoder {\n let coder = CODER_MAP.get(endpoint)\n if (!coder) {\n coder = new MoveCoder(new SuiClient({ url: endpoint }))\n CODER_MAP.set(endpoint, coder)\n }\n return coder\n}\n\nconst PROVIDER_CODER_MAP = new Map<SuiClient, MoveCoder>()\n\nlet DEFAULT_CHAIN_ID: string | undefined\n\nexport async function getMoveCoder(client: SuiClient): Promise<MoveCoder> {\n let coder = PROVIDER_CODER_MAP.get(client)\n if (!coder) {\n coder = new MoveCoder(client)\n // TODO how to dedup\n const id = await client.getChainIdentifier()\n const defaultCoder = defaultMoveCoder()\n if (!DEFAULT_CHAIN_ID) {\n DEFAULT_CHAIN_ID = await defaultCoder.adapter.getChainId()\n }\n if (id === DEFAULT_CHAIN_ID) {\n coder = defaultCoder\n }\n\n PROVIDER_CODER_MAP.set(client, coder)\n }\n return coder\n}\n","import { MoveCoder } from '@typemove/sui'\n\nimport { getClient, SuiNetwork } from './network.js'\n\nconst CODERS = new Map<SuiNetwork, MoveCoder>()\n\nexport function defaultMoveCoder(network: SuiNetwork = SuiNetwork.MAIN_NET): MoveCoder {\n let coder = CODERS.get(network)\n if (!coder) {\n coder = new MoveCoder(getClient(network))\n CODERS.set(network, coder)\n }\n\n return coder\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, normalizeLabels } from '../index.js'\nimport { getClient, SuiNetwork } from './network.js'\nimport {\n SuiTransactionBlockResponse,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n SuiClient\n} from '@mysten/sui/client'\nimport { MoveCoder } from './index.js'\nimport { defaultMoveCoder } from './move-coder.js'\nimport { MoveAccountContext, MoveContext } from '../move/index.js'\n\nexport class SuiContext extends MoveContext<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n moduleName: string\n timestamp: Date\n checkpoint: bigint\n transaction: SuiTransactionBlockResponse\n eventIndex: number\n coder: MoveCoder\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n checkpoint: bigint,\n transaction: SuiTransactionBlockResponse,\n eventIndex: number,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.checkpoint = checkpoint\n this.eventIndex = eventIndex\n this.coder = defaultMoveCoder(network)\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getChainId() {\n return this.network\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.checkpoint,\n transactionIndex: 0,\n transactionHash: this.transaction?.digest || '', // TODO\n logIndex: this.eventIndex,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n}\n\nexport class SuiObjectChangeContext extends MoveContext<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n timestamp: Date\n checkpoint: bigint\n coder: MoveCoder\n txDigest: string\n\n constructor(\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n checkpoint: bigint,\n txDigest: string,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.timestamp = timestamp\n this.checkpoint = checkpoint\n this.txDigest = txDigest\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: '*',\n blockNumber: this.checkpoint,\n transactionIndex: -1,\n transactionHash: this.txDigest,\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n}\n\n// TODO address handler should use this context\nexport class SuiAddressContext extends MoveAccountContext<\n SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n address: string\n network: SuiNetwork\n checkpoint: bigint\n timestamp: Date\n coder: MoveCoder\n\n protected contractName = 'address'\n\n constructor(\n network: SuiNetwork,\n address: string,\n checkpoint: bigint,\n timestamp: Date,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.checkpoint = checkpoint\n this.timestamp = timestamp\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.contractName,\n blockNumber: this.checkpoint,\n transactionIndex: 0,\n transactionHash: '',\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n}\n\nexport class SuiObjectContext extends SuiAddressContext {\n contractName = 'object'\n objectId: string\n objectVersion: bigint\n\n constructor(\n network: SuiNetwork,\n objectId: string,\n objectVersion: bigint,\n checkpoint: bigint,\n timestamp: Date,\n baseLabels: Labels | undefined\n ) {\n super(network, objectId, checkpoint, timestamp, baseLabels)\n this.objectId = objectId\n this.objectVersion = objectVersion\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n SuiTransactionBlockResponse,\n MoveCallSuiTransaction,\n ProgrammableTransaction,\n SuiTransaction\n} from '@mysten/sui/client'\nimport { accountTypeString } from '@typemove/move'\n\nexport function getMoveCalls(txBlock: SuiTransactionBlockResponse) {\n const txKind = txBlock.transaction?.data.transaction\n if (!txKind) {\n return []\n }\n const programmableTx: ProgrammableTransaction | undefined =\n txKind.kind === 'ProgrammableTransaction' ? txKind : undefined\n if (!programmableTx) {\n return []\n }\n\n return programmableTx.transactions.flatMap((tx: SuiTransaction) => {\n if ('MoveCall' in tx) {\n const call = tx.MoveCall as MoveCallSuiTransaction\n call.package = accountTypeString(call.package)\n\n return [call]\n }\n return []\n })\n}\n\n// function isHex(value: string): boolean {\n// return /^(0x|0X)?[a-fA-F0-9]+$/.test(value)\n// }\n//\n// function getHexByteLength(value: string): number {\n// return /^(0x|0X)/.test(value) ? (value.length - 2) / 2 : value.length / 2\n// }\n//\n// export function isValidSuiAddress(value: string): value is SuiAddress {\n// return isHex(value) && getHexByteLength(value) <= SUI_ADDRESS_LENGTH\n// }\n\n// export function validateAndNormalizeAddress(address: string): string {\n// // if (isFrameworkAccount(address)) {\n// // const n = parseInt(address, 16)\n// // return `0x${n.toString(16)}`\n// // }\n// if (!isValidSuiAddress(address)) {\n// throw Error('Not valid Address')\n// }\n// return normalizeSuiAddress(address)\n// }\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n Data_SuiCall,\n Data_SuiObject,\n Data_SuiObjectChange,\n HandleInterval,\n MoveAccountFetchConfig,\n MoveFetchConfig,\n MoveOwnerType,\n ProcessResult\n} from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { SuiAddressContext, SuiContext, SuiObjectChangeContext, SuiObjectContext } from './context.js'\nimport { SuiMoveObject, SuiObjectChange, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { ALL_ADDRESS, PromiseOrVoid } from '../core/index.js'\nimport { configure, DEFAULT_FETCH_CONFIG, IndexConfigure, SuiBindOptions } from './sui-processor.js'\nimport { CallHandler, TransactionFilter, accountTypeString, ObjectChangeHandler } from '../move/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { TypeDescriptor } from '@typemove/move'\nimport { TypedSuiMoveObject } from './models.js'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport interface SuiObjectBindOptions {\n objectId: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\nexport interface SuiObjectTypeBindOptions<T> {\n objectType: TypeDescriptor<T>\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\ninterface ObjectHandler {\n type?: string\n checkPointInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n fetchConfig: MoveAccountFetchConfig\n handler: (resource: Data_SuiObject) => Promise<ProcessResult>\n handlerName: string\n}\n\nexport const DEFAULT_ACCOUNT_FETCH_CONFIG: MoveAccountFetchConfig = {\n owned: false\n}\n\nexport class SuiAccountProcessorState extends ListStateStorage<SuiBaseObjectOrAddressProcessor<any>> {\n static INSTANCE = new SuiAccountProcessorState()\n}\n\nexport interface SuiInternalObjectsBindOptions extends SuiBindOptions {\n ownerType: MoveOwnerType\n}\n\nexport abstract class SuiBaseObjectOrAddressProcessor<HandlerType> {\n config: IndexConfigure\n ownerType: MoveOwnerType\n templateId: number | undefined\n\n objectHandlers: ObjectHandler[] = []\n objectChangeHandlers: ObjectChangeHandler<Data_SuiObjectChange>[] = []\n\n // static bind(options: SuiObjectsBindOptions): SuiBaseObjectsProcessor<any> {\n // return new SuiBaseObjectsProcessor(options)\n // }\n\n protected constructor(options: SuiInternalObjectsBindOptions) {\n if (options.ownerType === MoveOwnerType.TYPE) {\n this.config = {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address === '*' ? '*' : accountTypeString(options.address),\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels\n }\n } else {\n this.config = configure(options)\n }\n this.ownerType = options.ownerType\n SuiAccountProcessorState.INSTANCE.addValue(this)\n\n return proxyProcessor(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n // protected abstract transformObjects(objects: SuiMoveObject[]): SuiMoveObject[]\n\n protected abstract doHandle(handler: HandlerType, data: Data_SuiObject, ctx: SuiObjectContext): Promise<any>\n\n public onInterval(\n handler: HandlerType, //(resources: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n checkpointInterval: HandleInterval | undefined,\n type: string | undefined,\n fetchConfig: Partial<MoveAccountFetchConfig> | undefined,\n handlerName = getHandlerName()\n ): this {\n const processor = this\n this.objectHandlers.push({\n handlerName,\n handler: async function (data) {\n const ctx = new SuiObjectContext(\n processor.config.network,\n data.objectId,\n data.objectVersion,\n data.slot,\n data.timestamp || new Date(0),\n processor.config.baseLabels\n )\n await processor.doHandle(handler, data, ctx)\n return ctx.stopAndGetResult()\n },\n timeIntervalInMinutes: timeInterval,\n checkPointInterval: checkpointInterval,\n type,\n fetchConfig: { ...DEFAULT_ACCOUNT_FETCH_CONFIG, ...fetchConfig }\n })\n return this\n }\n}\n\nabstract class SuiBaseObjectOrAddressProcessorInternal<\n HandlerType\n> extends SuiBaseObjectOrAddressProcessor<HandlerType> {\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n type,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: HandlerType,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n type,\n fetchConfig\n )\n }\n}\n\nexport class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (objects: SuiMoveObject[], ctx: SuiAddressContext) => PromiseOrVoid\n> {\n callHandlers: CallHandler<Data_SuiCall>[] = []\n\n static bind(options: SuiBindOptions): SuiAddressProcessor {\n return new SuiAddressProcessor({ ...options, ownerType: MoveOwnerType.ADDRESS })\n }\n\n protected async doHandle(\n handler: (objects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => PromiseOrVoid,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ) {\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n const _filter: TransactionFilter = {\n fromAndToAddress: {\n from: '',\n to: this.config.address\n },\n ...filter\n }\n\n const processor = this\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n 'object',\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n await handler(tx, ctx)\n }\n return ctx.stopAndGetResult()\n },\n filters: [{ ..._filter, function: '' }],\n fetchConfig: _fetchConfig\n })\n return this\n }\n}\n\nexport class SuiObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiObjectProcessor {\n return new SuiObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.OBJECT,\n baseLabels: options.baseLabels\n })\n }\n\n protected async doHandle(\n handler: (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n if (!data.rawSelf) {\n console.log(`Sui object not existed in ${ctx.checkpoint}, please specific a start time`)\n return\n }\n return handler(\n JSON.parse(data.rawSelf) as SuiMoveObject,\n data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[],\n ctx\n )\n }\n}\n\nexport class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<\n (self: TypedSuiMoveObject<T>, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n objectType: TypeDescriptor<T>\n\n static bind<T>(options: SuiObjectTypeBindOptions<T>): SuiObjectTypeProcessor<T> {\n const processor = new SuiObjectTypeProcessor<T>({\n address: ALL_ADDRESS, // current only support on all address\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.TYPE,\n baseLabels: options.baseLabels\n })\n processor.objectType = options.objectType\n return processor\n }\n\n protected async doHandle(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n if (!data.rawSelf) {\n console.log(`Sui object not existed in ${ctx.checkpoint}, please specific a start time`)\n return\n }\n const object = await ctx.coder.filterAndDecodeObjects(this.objectType, [JSON.parse(data.rawSelf) as SuiMoveObject])\n return handler(object[0], data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n\n public onObjectChange(handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid): this {\n if (this.config.network === SuiNetwork.TEST_NET) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')\n }\n const processor = this\n this.objectChangeHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_SuiObjectChange) {\n const ctx = new SuiObjectChangeContext(\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n data.txDigest,\n processor.config.baseLabels\n )\n await handler(data.rawChanges.map((r) => JSON.parse(r)) as SuiObjectChange[], ctx)\n return ctx.stopAndGetResult()\n },\n type: this.objectType.qname\n })\n\n return this\n }\n\n public onTimeInterval(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n this.objectType.qname,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n this.objectType.qname,\n fetchConfig\n )\n }\n}\n\nexport class SuiWrappedObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {\n return new SuiWrappedObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.WRAPPED_OBJECT,\n baseLabels: options.baseLabels\n })\n }\n\n protected async doHandle(\n handler: (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { HandleInterval, MoveAccountFetchConfig, MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiAddressContext, SuiContext, SuiObjectContext } from './context.js'\nimport { SuiMoveObject, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { PromiseOrVoid } from '../core/index.js'\nimport {\n DEFAULT_ACCOUNT_FETCH_CONFIG,\n SuiAccountProcessorState,\n SuiAddressProcessor,\n SuiBaseObjectOrAddressProcessor,\n SuiObjectBindOptions,\n SuiObjectProcessor,\n SuiWrappedObjectProcessor\n} from './sui-object-processor.js'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { SuiBindOptions } from './sui-processor.js'\nimport { TransactionFilter, accountAddressString } from '../move/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nclass ObjectHandler<HandlerType> {\n type?: string\n checkpointInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handlerName: string\n handler: HandlerType\n fetchConfig: MoveAccountFetchConfig\n}\n\nexport class SuiAccountProcessorTemplateState extends ListStateStorage<\n SuiObjectOrAddressProcessorTemplate<any, any, any>\n> {\n static INSTANCE = new SuiAccountProcessorTemplateState()\n}\n\nexport abstract class SuiObjectOrAddressProcessorTemplate<\n HandlerType,\n OptionType extends SuiObjectBindOptions | SuiBindOptions,\n ProcessorType extends SuiBaseObjectOrAddressProcessor<HandlerType>\n> {\n id: number\n objectHandlers: ObjectHandler<HandlerType>[] = []\n binds = new Set<string>()\n\n constructor() {\n this.id = SuiAccountProcessorTemplateState.INSTANCE.getValues().length\n SuiAccountProcessorTemplateState.INSTANCE.addValue(this)\n return proxyProcessor(this)\n }\n\n protected abstract createProcessor(options: SuiObjectBindOptions | SuiBindOptions): ProcessorType\n\n bind(options: OptionType, ctx: SuiContext): void {\n options.network = options.network || ctx.network\n options.startCheckpoint = options.startCheckpoint || ctx.checkpoint\n let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address\n\n if (id === '*') {\n throw new ServerError(Status.INVALID_ARGUMENT, \"can't bind template instance with *\")\n }\n id = accountAddressString(id)\n\n const sig = [options.network, id].join('_')\n if (this.binds.has(sig)) {\n console.log(`Same object id can be bind to one template only once, ignore duplicate bind: ${sig}`)\n return\n }\n this.binds.add(sig)\n\n const processor = this.createProcessor(options)\n for (const h of this.objectHandlers) {\n processor.onInterval(\n h.handler,\n h.timeIntervalInMinutes,\n h.checkpointInterval,\n h.type,\n h.fetchConfig,\n h.handlerName\n )\n }\n const config = processor.config\n\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n TemplateInstanceState.INSTANCE.addValue({\n templateId: this.id,\n contract: {\n name: '',\n chainId: config.network,\n address: config.address,\n abi: ''\n },\n startBlock: config.startCheckpoint,\n endBlock: 0n,\n baseLabels: config.baseLabels\n })\n console.log(`successfully bind template ${sig}`)\n }\n\n unbind(options: OptionType, ctx: SuiContext): void {\n options.network = options.network || ctx.network\n options.startCheckpoint = options.startCheckpoint || ctx.checkpoint\n let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address\n\n if (id === '*') {\n throw new ServerError(Status.INVALID_ARGUMENT, \"can't delete template instance bind with *\")\n }\n id = accountAddressString(id)\n\n const sig = [options.network, id].join('_')\n if (!this.binds.has(sig)) {\n console.log(`the template instance ${sig} not existed or already unbind`)\n return\n }\n this.binds.delete(sig)\n\n let deleted = 0\n const oldTemplateInstances = TemplateInstanceState.INSTANCE.unregister()\n for (const templateInstance of oldTemplateInstances) {\n if (templateInstance.contract?.chainId === options.network && templateInstance.contract.address == id) {\n deleted++\n continue\n }\n TemplateInstanceState.INSTANCE.addValue(templateInstance)\n }\n\n if (deleted !== 1) {\n throw new ServerError(\n Status.INVALID_ARGUMENT,\n `Failed to delete template instance ${sig}, deleted ${deleted} times`\n )\n }\n\n const oldProcessors = SuiAccountProcessorState.INSTANCE.unregister()\n deleted = 0\n for (const processor of oldProcessors) {\n if (processor.templateId === this.id) {\n if (processor.config.network == options.network && processor.config.address === id) {\n deleted++\n continue\n }\n }\n SuiAccountProcessorState.INSTANCE.addValue(processor)\n }\n\n if (deleted !== 1) {\n throw new ServerError(\n Status.INVALID_ARGUMENT,\n `Failed to delete processor for template ${this.id}, ${sig}. deleted ${deleted} times`\n )\n }\n\n console.log(`successfully unbind template ${sig}`)\n\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n }\n\n protected onInterval(\n handler: HandlerType,\n timeInterval: HandleInterval | undefined,\n checkpointInterval: HandleInterval | undefined,\n type: string | undefined,\n fetchConfig: Partial<MoveAccountFetchConfig> | undefined\n ): this {\n this.objectHandlers.push({\n handlerName: getHandlerName(),\n handler: handler,\n timeIntervalInMinutes: timeInterval,\n checkpointInterval: checkpointInterval,\n type,\n fetchConfig: { ...DEFAULT_ACCOUNT_FETCH_CONFIG, ...fetchConfig }\n })\n return this\n }\n\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n type,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: HandlerType,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n type,\n fetchConfig\n )\n }\n}\n\nclass AddressTransactionHandler {\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void\n filter?: TransactionFilter\n fetchConfig?: Partial<MoveFetchConfig>\n}\n\nexport class SuiAddressProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (objects: SuiMoveObject[], ctx: SuiAddressContext) => PromiseOrVoid,\n SuiBindOptions,\n SuiAddressProcessor\n> {\n private handlers: AddressTransactionHandler[] = []\n\n createProcessor(options: SuiBindOptions): SuiAddressProcessor {\n const p = SuiAddressProcessor.bind(options)\n for (const handler of this.handlers) {\n p.onTransactionBlock(handler.handler, handler.filter, handler.fetchConfig)\n }\n p.templateId = this.id\n return p\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n this.handlers.push({\n handler,\n filter,\n fetchConfig\n })\n return this\n }\n}\n\nexport class SuiObjectProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n SuiObjectBindOptions,\n SuiObjectProcessor\n> {\n createProcessor(options: SuiObjectBindOptions): SuiObjectProcessor {\n const p = SuiObjectProcessor.bind(options)\n p.templateId = this.id\n return p\n }\n}\n\nexport class SuiWrappedObjectProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n SuiObjectBindOptions,\n SuiWrappedObjectProcessor\n> {\n createProcessor(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {\n const p = SuiWrappedObjectProcessor.bind(options)\n p.templateId = this.id\n return p\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject } from '@mysten/sui/client'\nimport { DecodedStruct } from '@typemove/move'\n\nexport type TypedEventInstance<T> = DecodedStruct<SuiEvent, T>\nexport type TypedSuiMoveObject<T> = DecodedStruct<SuiMoveObject, T>\n\nexport type TypedFunctionPayload<T extends Array<any>> = MoveCallSuiTransaction & {\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;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n AccountConfig,\n ContractConfig,\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n Data_SuiObjectChange,\n DataBinding,\n HandlerType,\n MoveCallHandlerConfig,\n MoveEventHandlerConfig,\n MoveResourceChangeConfig,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SuiProcessorState } from './sui-processor.js'\nimport { SuiAccountProcessorState, SuiAddressProcessor } from './sui-object-processor.js'\nimport { initCoinList } from './ext/coin.js'\nimport { SuiChainId } from '@sentio/chain'\nimport {\n SuiAccountProcessorTemplateState,\n SuiObjectOrAddressProcessorTemplate\n} from './sui-object-processor-template.js'\nimport { SuiNetwork } from './network.js'\nimport { SuiContext } from './context.js'\n\ninterface Handlers {\n suiEventHandlers: ((event: Data_SuiEvent) => Promise<ProcessResult>)[]\n suiCallHandlers: ((func: Data_SuiCall) => Promise<ProcessResult>)[]\n suiObjectHandlers: ((object: Data_SuiObject) => Promise<ProcessResult>)[]\n suiObjectChangeHandlers: ((object: Data_SuiObjectChange) => Promise<ProcessResult>)[]\n}\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n suiObjectChangeHandlers: []\n }\n async start(request: StartRequest): Promise<void> {\n await initCoinList()\n\n console.log('total instances:', request.templateInstances.length)\n const allowedChainIds = new Set<string>(Object.values(SuiChainId))\n for (const instance of request.templateInstances) {\n if (!allowedChainIds.has(instance.contract?.chainId || '')) {\n continue\n }\n\n console.log('start template instance', instance.templateId)\n const template: SuiObjectOrAddressProcessorTemplate<any, any, any> =\n SuiAccountProcessorTemplateState.INSTANCE.getValues()[instance.templateId]\n\n template.bind(\n {\n address: instance.contract?.address || '',\n objectId: instance.contract?.address || '',\n network: <SuiNetwork>instance.contract?.chainId || SuiNetwork.MAIN_NET,\n startCheckpoint: instance.startBlock || 0n,\n baseLabels: instance.baseLabels\n },\n NoopContext\n )\n }\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n suiObjectChangeHandlers: []\n }\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: suiProcessor.config.network,\n address: suiProcessor.config.address,\n abi: ''\n },\n startBlock: suiProcessor.config.startCheckpoint\n })\n for (const handler of suiProcessor.eventHandlers) {\n const handlerId = handlers.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 eventAccount: f.eventAccount || ''\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveEventConfigs.push(eventHandlerConfig)\n }\n for (const handler of suiProcessor.callHandlers) {\n const handlerId = handlers.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 publicKeyPrefix: filter.publicKeyPrefix || '',\n fromAndToAddress: filter.fromAndToAddress\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n // deprecated, use objectType processor instead\n for (const handler of suiProcessor.objectChangeHandlers) {\n const handlerId = handlers.suiObjectChangeHandlers.push(handler.handler) - 1\n const objectChangeHandler: MoveResourceChangeConfig = {\n type: handler.type,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveResourceChangeConfigs.push(objectChangeHandler)\n }\n config.contractConfigs.push(contractConfig)\n }\n\n for (const processor of SuiAccountProcessorState.INSTANCE.getValues()) {\n const accountConfig = AccountConfig.fromPartial({\n address: processor.config.address,\n chainId: processor.getChainId(),\n startBlock: processor.config.startCheckpoint // TODO maybe use another field\n })\n\n for (const handler of processor.objectChangeHandlers) {\n const handlerId = handlers.suiObjectChangeHandlers.push(handler.handler) - 1\n const objectChangeHandler: MoveResourceChangeConfig = {\n type: handler.type,\n handlerId,\n handlerName: handler.handlerName\n }\n accountConfig.moveResourceChangeConfigs.push(objectChangeHandler)\n }\n\n for (const handler of processor.objectHandlers) {\n const handlerId = handlers.suiObjectHandlers.push(handler.handler) - 1\n\n accountConfig.moveIntervalConfigs.push({\n intervalConfig: {\n handlerId: handlerId,\n handlerName: handler.handlerName,\n minutes: 0,\n minutesInterval: handler.timeIntervalInMinutes,\n slot: 0,\n slotInterval: handler.checkPointInterval,\n fetchConfig: undefined\n },\n type: handler.type || '',\n ownerType: processor.ownerType,\n resourceFetchConfig: handler.fetchConfig,\n fetchConfig: undefined\n })\n }\n\n if (processor instanceof SuiAddressProcessor) {\n for (const handler of processor.callHandlers) {\n const handlerId = handlers.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 publicKeyPrefix: filter.publicKeyPrefix || '',\n fromAndToAddress: filter.fromAndToAddress\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n accountConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n }\n\n config.accountConfigs.push(accountConfig)\n }\n this.handlers = handlers\n }\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.handlers.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.handlers.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 async processSuiObject(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObject) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object can't be empty\")\n }\n const object = binding.data.suiObject\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectHandlers[handlerId](object).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object: ' + JSON.stringify(object) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiObjectChange(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObjectChange) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object change can't be empty\")\n }\n const objectChange = binding.data.suiObjectChange\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectChangeHandlers[handlerId](objectChange).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object change: ' + JSON.stringify(objectChange) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n supportedHandlers = [\n HandlerType.SUI_EVENT,\n HandlerType.SUI_CALL,\n HandlerType.SUI_OBJECT,\n HandlerType.SUI_OBJECT_CHANGE\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 case HandlerType.SUI_OBJECT:\n return this.processSuiObject(request)\n case HandlerType.SUI_OBJECT_CHANGE:\n return this.processSuiObjectChange(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\nconst NoopContext = new SuiContext('', SuiChainId.SUI_MAINNET, '', new Date(), 0n, {} as any, 0, {})\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","export { SuiBaseProcessor, SuiGlobalProcessor, SuiModulesProcessor, type SuiBindOptions } from './sui-processor.js'\nexport {\n SuiAddressProcessor,\n SuiObjectProcessor,\n SuiObjectTypeProcessor,\n SuiWrappedObjectProcessor,\n type SuiObjectBindOptions,\n type SuiObjectTypeBindOptions\n} from './sui-object-processor.js'\n\nexport {\n SuiAddressProcessorTemplate,\n SuiObjectProcessorTemplate,\n SuiWrappedObjectProcessorTemplate\n} from './sui-object-processor-template.js'\n\nexport * from './network.js'\nexport * from './context.js'\nexport * from './models.js'\n\nexport * from './move-coder.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\n\nexport { BUILTIN_TYPES } from '@typemove/move'\n\nexport { MoveCoder } from '@typemove/sui'\n\n// export { validateAndNormalizeAddress, isValidSuiAddress } from './utils.js'\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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","names":["defaultMoveCoder","defaultMoveCoder","defaultMoveCoder","ListStateStorage","import_nice_grpc","ListStateStorage","ListStateStorage","import_nice_grpc","ListStateStorage","import_nice_grpc"]}
|
@@ -13,10 +13,10 @@ import {
|
|
13
13
|
getProcessor,
|
14
14
|
getProvider,
|
15
15
|
transformEtherError
|
16
|
-
} from "./chunk-
|
16
|
+
} from "./chunk-FLCIAA4G.js";
|
17
17
|
import {
|
18
18
|
Interface
|
19
|
-
} from "./chunk-
|
19
|
+
} from "./chunk-ZAY2PRBU.js";
|
20
20
|
import {
|
21
21
|
__name
|
22
22
|
} from "./chunk-R7PMHHKJ.js";
|
@@ -1330,4 +1330,4 @@ export {
|
|
1330
1330
|
mockOwnershipTransferRequestedLog,
|
1331
1331
|
mockOwnershipTransferredLog
|
1332
1332
|
};
|
1333
|
-
//# sourceMappingURL=chunk-
|
1333
|
+
//# sourceMappingURL=chunk-QSUUYUJL.js.map
|