@sentio/sdk-bundle 2.60.2-rc.2 → 2.60.3-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/lib/aptos/builtin/0x1.js +6 -6
  2. package/lib/aptos/builtin/0x3.js +7 -7
  3. package/lib/aptos/builtin/0x4.js +7 -7
  4. package/lib/aptos/builtin/index.js +8 -8
  5. package/lib/aptos/ext/index.js +6 -6
  6. package/lib/aptos/index.js +6 -6
  7. package/lib/btc/index.js +3 -3
  8. package/lib/{chunk-M7LEFJQZ.js → chunk-3LF4N533.js} +24 -12
  9. package/lib/{chunk-M7LEFJQZ.js.map → chunk-3LF4N533.js.map} +1 -1
  10. package/lib/{chunk-IPZEQRZ6.js → chunk-6MDJBTCE.js} +2 -2
  11. package/lib/{chunk-POWT6QIC.js → chunk-6YHEVLW5.js} +4 -4
  12. package/lib/{chunk-BHFMB6PW.js → chunk-AFQHL4T4.js} +2 -2
  13. package/lib/{chunk-VVTT443B.js → chunk-AI2T43SV.js} +4 -4
  14. package/lib/{chunk-UBKMKHZM.js → chunk-B2YL5MTG.js} +7 -7
  15. package/lib/chunk-B2YL5MTG.js.map +1 -0
  16. package/lib/{chunk-A4Q2L4NF.js → chunk-CXMICBMW.js} +4 -4
  17. package/lib/{chunk-TL3Z7QUT.js → chunk-EV5RHIDP.js} +4 -4
  18. package/lib/{chunk-FF767KTS.js → chunk-FR6U3D36.js} +314 -284
  19. package/lib/chunk-FR6U3D36.js.map +1 -0
  20. package/lib/{chunk-NE6YK675.js → chunk-GU5CQSPB.js} +3 -3
  21. package/lib/{chunk-C4FZLXS5.js → chunk-HACMQKRO.js} +5 -5
  22. package/lib/{chunk-CP2KKSFQ.js → chunk-HUNLXNN5.js} +2 -2
  23. package/lib/{chunk-6HITNB5H.js → chunk-J3DQ4HND.js} +11 -5
  24. package/lib/{chunk-6HITNB5H.js.map → chunk-J3DQ4HND.js.map} +1 -1
  25. package/lib/{chunk-PSNLFJXN.js → chunk-LPI3IVPR.js} +2 -2
  26. package/lib/{chunk-XJ2ZOKPA.js → chunk-MF57HYNE.js} +2 -2
  27. package/lib/{chunk-GXXO6VAC.js → chunk-MHV7ZFKX.js} +6 -6
  28. package/lib/{chunk-S6UCTPNF.js → chunk-NYPDOFYK.js} +4 -4
  29. package/lib/{chunk-KPYNYZPJ.js → chunk-R537HPSI.js} +18 -9
  30. package/lib/{chunk-KPYNYZPJ.js.map → chunk-R537HPSI.js.map} +1 -1
  31. package/lib/{chunk-HDUQBGXG.js → chunk-TOJS72GT.js} +3 -3
  32. package/lib/{chunk-BYQSXAU2.js → chunk-UDFNFNJP.js} +2 -2
  33. package/lib/{chunk-MEZWQVVX.js → chunk-UZI7CZEU.js} +3 -3
  34. package/lib/{chunk-3HXXCHPB.js → chunk-VJTPBD46.js} +6 -6
  35. package/lib/{chunk-6IIGWFXQ.js → chunk-XBFSZKZI.js} +15 -6
  36. package/lib/chunk-XBFSZKZI.js.map +1 -0
  37. package/lib/chunk-Z2CE3JTO.js +56 -0
  38. package/lib/chunk-Z2CE3JTO.js.map +1 -0
  39. package/lib/{chunk-WEJYODTI.js → chunk-Z5ZYYEIS.js} +5 -5
  40. package/lib/core/index.js +1 -1
  41. package/lib/eth/builtin/eacaggregatorproxy.js +3 -3
  42. package/lib/eth/builtin/erc1155.js +4 -4
  43. package/lib/eth/builtin/erc20.js +3 -3
  44. package/lib/eth/builtin/erc721.js +3 -3
  45. package/lib/eth/builtin/index.js +5 -5
  46. package/lib/eth/builtin/weth9.js +4 -4
  47. package/lib/eth/index.js +3 -3
  48. package/lib/fuel/index.js +3 -3
  49. package/lib/index.js +1 -1
  50. package/lib/iota/builtin/0x1.js +6 -6
  51. package/lib/iota/builtin/0x2.js +7 -7
  52. package/lib/iota/builtin/0x3.js +8 -8
  53. package/lib/iota/builtin/index.js +8 -8
  54. package/lib/iota/ext/index.js +7 -7
  55. package/lib/iota/index.js +5 -5
  56. package/lib/move/index.js +2 -2
  57. package/lib/solana/builtin/index.js +3 -3
  58. package/lib/solana/index.js +3 -3
  59. package/lib/stark/index.js +6 -3
  60. package/lib/stark/index.js.map +1 -1
  61. package/lib/store/index.js +1 -1
  62. package/lib/sui/builtin/0x1.js +11 -11
  63. package/lib/sui/builtin/0x2.js +12 -12
  64. package/lib/sui/builtin/0x3.js +13 -13
  65. package/lib/sui/builtin/index.js +13 -13
  66. package/lib/sui/ext/index.js +6 -6
  67. package/lib/sui/index.js +10 -10
  68. package/lib/testing/index.js +58 -37
  69. package/lib/testing/index.js.map +1 -1
  70. package/lib/utils/index.js +3 -3
  71. package/package.json +2 -2
  72. package/lib/chunk-6IIGWFXQ.js.map +0 -1
  73. package/lib/chunk-FF767KTS.js.map +0 -1
  74. package/lib/chunk-NX2PDQP7.js +0 -93
  75. package/lib/chunk-NX2PDQP7.js.map +0 -1
  76. package/lib/chunk-UBKMKHZM.js.map +0 -1
  77. /package/lib/{chunk-IPZEQRZ6.js.map → chunk-6MDJBTCE.js.map} +0 -0
  78. /package/lib/{chunk-POWT6QIC.js.map → chunk-6YHEVLW5.js.map} +0 -0
  79. /package/lib/{chunk-BHFMB6PW.js.map → chunk-AFQHL4T4.js.map} +0 -0
  80. /package/lib/{chunk-VVTT443B.js.map → chunk-AI2T43SV.js.map} +0 -0
  81. /package/lib/{chunk-A4Q2L4NF.js.map → chunk-CXMICBMW.js.map} +0 -0
  82. /package/lib/{chunk-TL3Z7QUT.js.map → chunk-EV5RHIDP.js.map} +0 -0
  83. /package/lib/{chunk-NE6YK675.js.map → chunk-GU5CQSPB.js.map} +0 -0
  84. /package/lib/{chunk-C4FZLXS5.js.map → chunk-HACMQKRO.js.map} +0 -0
  85. /package/lib/{chunk-CP2KKSFQ.js.map → chunk-HUNLXNN5.js.map} +0 -0
  86. /package/lib/{chunk-PSNLFJXN.js.map → chunk-LPI3IVPR.js.map} +0 -0
  87. /package/lib/{chunk-XJ2ZOKPA.js.map → chunk-MF57HYNE.js.map} +0 -0
  88. /package/lib/{chunk-GXXO6VAC.js.map → chunk-MHV7ZFKX.js.map} +0 -0
  89. /package/lib/{chunk-S6UCTPNF.js.map → chunk-NYPDOFYK.js.map} +0 -0
  90. /package/lib/{chunk-HDUQBGXG.js.map → chunk-TOJS72GT.js.map} +0 -0
  91. /package/lib/{chunk-BYQSXAU2.js.map → chunk-UDFNFNJP.js.map} +0 -0
  92. /package/lib/{chunk-MEZWQVVX.js.map → chunk-UZI7CZEU.js.map} +0 -0
  93. /package/lib/{chunk-3HXXCHPB.js.map → chunk-VJTPBD46.js.map} +0 -0
  94. /package/lib/{chunk-WEJYODTI.js.map → chunk-Z5ZYYEIS.js.map} +0 -0
@@ -5,10 +5,10 @@ import {
5
5
  defaultMoveCoder,
6
6
  defaultMoveCoderForClient,
7
7
  loadAllTypes
8
- } from "./chunk-KPYNYZPJ.js";
8
+ } from "./chunk-R537HPSI.js";
9
9
  import {
10
10
  TypeDescriptor
11
- } from "./chunk-XJ2ZOKPA.js";
11
+ } from "./chunk-MF57HYNE.js";
12
12
  import {
13
13
  __export,
14
14
  __name
@@ -1326,4 +1326,4 @@ export {
1326
1326
  loadAllTypes2 as loadAllTypes,
1327
1327
  x4_exports
1328
1328
  };
1329
- //# sourceMappingURL=chunk-NE6YK675.js.map
1329
+ //# sourceMappingURL=chunk-GU5CQSPB.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
2
2
  import {
3
3
  loadAllTypes
4
- } from "./chunk-POWT6QIC.js";
4
+ } from "./chunk-6YHEVLW5.js";
5
5
  import {
6
6
  SuiBaseProcessor,
7
7
  ZERO_ADDRESS,
@@ -18,15 +18,15 @@ import {
18
18
  transactionArgumentOrPureU64,
19
19
  transactionArgumentOrPureU8,
20
20
  transactionArgumentOrVec
21
- } from "./chunk-M7LEFJQZ.js";
21
+ } from "./chunk-3LF4N533.js";
22
22
  import {
23
23
  SuiNetwork,
24
24
  Transaction
25
- } from "./chunk-VVTT443B.js";
25
+ } from "./chunk-AI2T43SV.js";
26
26
  import {
27
27
  ANY_TYPE,
28
28
  TypeDescriptor
29
- } from "./chunk-XJ2ZOKPA.js";
29
+ } from "./chunk-MF57HYNE.js";
30
30
  import {
31
31
  __export,
32
32
  __name
@@ -17476,4 +17476,4 @@ export {
17476
17476
  loadAllTypes2 as loadAllTypes,
17477
17477
  x2_exports
17478
17478
  };
17479
- //# sourceMappingURL=chunk-C4FZLXS5.js.map
17479
+ //# sourceMappingURL=chunk-HACMQKRO.js.map
@@ -22,7 +22,7 @@ import {
22
22
  tuple,
23
23
  union,
24
24
  unknown
25
- } from "./chunk-PSNLFJXN.js";
25
+ } from "./chunk-LPI3IVPR.js";
26
26
  import {
27
27
  __name
28
28
  } from "./chunk-R7PMHHKJ.js";
@@ -5126,4 +5126,4 @@ export {
5126
5126
  getClient2 as getClient,
5127
5127
  getRpcEndpoint
5128
5128
  };
5129
- //# sourceMappingURL=chunk-CP2KKSFQ.js.map
5129
+ //# sourceMappingURL=chunk-HUNLXNN5.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
2
2
  import {
3
3
  HandlerRegister
4
- } from "./chunk-NX2PDQP7.js";
4
+ } from "./chunk-Z2CE3JTO.js";
5
5
  import {
6
6
  getHandlerName,
7
7
  proxyProcessor
@@ -19,7 +19,7 @@ import {
19
19
  TemplateInstanceState,
20
20
  normalizeLabels,
21
21
  serializeRichValue
22
- } from "./chunk-FF767KTS.js";
22
+ } from "./chunk-FR6U3D36.js";
23
23
  import {
24
24
  BigDecimal
25
25
  } from "./chunk-J5UEW4B7.js";
@@ -476,7 +476,10 @@ var BTCPlugin = class extends Plugin {
476
476
  const promises = [];
477
477
  const result = binding.data?.btcTransaction;
478
478
  for (const handlerId of binding.handlerIds) {
479
- const promise = this.handlerRegister.getHandlerById(handlerId)(binding.data?.btcTransaction).catch((e) => {
479
+ const promise = this.handlerRegister.getHandlerById(
480
+ binding.chainId,
481
+ handlerId
482
+ )(binding.data?.btcTransaction).catch((e) => {
480
483
  throw new import_nice_grpc2.ServerError(
481
484
  import_nice_grpc2.Status.INTERNAL,
482
485
  "error processing transaction: " + JSON.stringify(result) + "\n" + errorString(e)
@@ -496,7 +499,10 @@ var BTCPlugin = class extends Plugin {
496
499
  const block = request.data.btcBlock;
497
500
  const promises = [];
498
501
  for (const handlerId of request.handlerIds) {
499
- const promise = this.handlerRegister.getHandlerById(handlerId)(block).catch((e) => {
502
+ const promise = this.handlerRegister.getHandlerById(
503
+ request.chainId,
504
+ handlerId
505
+ )(block).catch((e) => {
500
506
  throw new import_nice_grpc2.ServerError(
501
507
  import_nice_grpc2.Status.INTERNAL,
502
508
  "error processing block: " + JSON.stringify(block) + "\n" + errorString(e)
@@ -521,4 +527,4 @@ export {
521
527
  filters2Proto,
522
528
  BTCPlugin
523
529
  };
524
- //# sourceMappingURL=chunk-6HITNB5H.js.map
530
+ //# sourceMappingURL=chunk-J3DQ4HND.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/btc/types.ts","../src/btc/btc-processor.ts","../src/btc/filter.ts","../src/btc/btc-plugin.ts"],"sourcesContent":["import { BaseContext, Labels, normalizeLabels } from '../core/index.js'\nimport { Data_BTCBlock, HandleInterval, ProcessResult, RecordMetaData } from '@sentio/protos'\nimport { ChainId } from '@sentio/chain'\n\nexport type Transaction = {\n txid: string\n hash: string\n txindex: number\n blockhash: string\n blockheight: number\n blocktime: number\n size: number\n vsize: number\n version: number\n locktime: number\n vin: Vin[]\n vout: Vout[]\n}\n\nexport type Vin = {\n vin_index: number\n coinbase?: string\n txid?: string\n vout?: number\n sequence: number\n witness?: string[]\n scriptSig: {\n asm: string\n hex: string\n }\n pre_vout?: Vout\n pre_transaction?: Transaction\n}\n\nexport type Vout = {\n value: number\n n: number\n scriptPubKey: {\n asm: string\n hex: string\n reqSigs: number\n type: string\n address: string\n }\n}\n\nexport type BTCBlock = {\n hash: string\n confirmations: number\n strippedsize: number\n size: number\n weight: number\n height: number\n version: number\n merkleroot: string\n tx?: Transaction[]\n time: number\n nonce: number\n bits: string\n difficulty: number\n previousblockhash: string\n nextblockhash: string\n}\n\nexport class BTCContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly tx: Transaction,\n readonly address: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.name,\n blockNumber: BigInt(this.tx.blockheight ?? 0),\n transactionIndex: 0,\n transactionHash: this.tx.txid,\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n\nexport class BTCBlockContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly block: BTCBlock,\n readonly address?: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address ?? '',\n contractName: this.name,\n blockNumber: BigInt(this.block.height ?? 0),\n transactionIndex: 0,\n transactionHash: '',\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n\nexport type BlockHandler = {\n blockInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handler: (block: Data_BTCBlock) => Promise<ProcessResult>\n handlerName: string\n fetchConfig?: BTCOnIntervalFetchConfig\n partitionHandler?: (block: Data_BTCBlock) => Promise<string | undefined>\n}\n\nexport type BTCOnIntervalFetchConfig = {\n getTransactions?: boolean\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { ListStateStorage } from '@sentio/runtime'\nimport { BlockHandler, BTCBlock, BTCBlockContext, BTCContext, BTCOnIntervalFetchConfig, Transaction } from './types.js'\nimport { Data_BTCBlock, Data_BTCTransaction, HandleInterval, ProcessResult } from '@sentio/protos'\nimport { TransactionFilters } from './filter.js'\nimport { HandlerOptions, PromiseOrVoid } from '../core/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport class BTCProcessorState extends ListStateStorage<BTCProcessor> {\n static INSTANCE = new BTCProcessorState()\n}\n\nexport class BTCProcessor {\n callHandlers: CallHandler<Data_BTCTransaction>[] = []\n blockHandlers: BlockHandler[] = []\n\n constructor(readonly config: BTCProcessorConfig) {\n return proxyProcessor(this)\n }\n\n static bind(config: BTCProcessorConfig): BTCProcessor {\n const processor = new BTCProcessor(config)\n BTCProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n public onTransaction(\n handler: (transaction: Transaction, ctx: BTCContext) => void | Promise<void>,\n filter?: TransactionFilters,\n handlerOptions?: HandlerOptions<object, Transaction>\n ) {\n const callHandler = {\n handlerName: getHandlerName(),\n handler: async (call: Data_BTCTransaction) => {\n const tx = call.transaction as Transaction\n\n const ctx = new BTCContext(\n this.config.chainId,\n this.config.name ?? this.config.address ?? '',\n tx,\n this.config.address ?? tx.vout?.[0]?.scriptPubKey?.address\n )\n await handler(tx, ctx)\n return ctx.stopAndGetResult()\n },\n filter,\n partitionHandler: async (call: Data_BTCTransaction): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const tx = call.transaction as Transaction\n return p(tx)\n }\n return p\n }\n }\n this.callHandlers.push(callHandler)\n return this\n }\n\n public onInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n blockInterval: HandleInterval | undefined,\n handlerOptions?: HandlerOptions<BTCOnIntervalFetchConfig, BTCBlock>\n ): this {\n if (timeInterval) {\n if (timeInterval.backfillInterval < timeInterval.recentInterval) {\n timeInterval.backfillInterval = timeInterval.recentInterval\n }\n }\n\n const processor = this\n\n this.blockHandlers.push({\n blockInterval,\n timeIntervalInMinutes: timeInterval,\n handlerName: getHandlerName(),\n handler: async function (data: Data_BTCBlock) {\n const header = data.block\n if (!header) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const block = {\n ...header\n } as BTCBlock\n if (handlerOptions?.getTransactions) {\n block.tx = header.rawtx?.map((tx: any) => tx as Transaction)\n }\n\n const ctx = new BTCBlockContext(\n processor.config.chainId,\n processor.config.name ?? processor.config.address ?? '',\n block,\n processor.config.address\n )\n await handler(block, ctx)\n return ctx.stopAndGetResult()\n },\n fetchConfig: handlerOptions,\n partitionHandler: async (data: Data_BTCBlock): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const header = data.block\n if (!header) return undefined\n const block = { ...header } as BTCBlock\n if (handlerOptions?.getTransactions) {\n block.tx = header.rawtx?.map((tx: any) => tx as Transaction)\n }\n return p(block)\n }\n return p\n }\n })\n return this\n }\n\n public onBlockInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n blockInterval = 250,\n backfillBlockInterval = 1000,\n handlerOptions?: HandlerOptions<BTCOnIntervalFetchConfig, BTCBlock>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n {\n recentInterval: blockInterval,\n backfillInterval: backfillBlockInterval\n },\n handlerOptions\n )\n }\n\n public onTimeInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n handlerOptions?: HandlerOptions<BTCOnIntervalFetchConfig, BTCBlock>\n ): this {\n return this.onInterval(\n handler,\n { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },\n undefined,\n handlerOptions\n )\n }\n}\n\ninterface BTCProcessorConfig {\n chainId: string\n name?: string\n address?: string\n startBlock?: bigint\n endBlock?: bigint\n}\n\nexport type CallHandler<T> = {\n handlerName: string\n handler: (call: T) => Promise<ProcessResult>\n filter?: TransactionFilters\n partitionHandler?: (call: T) => Promise<string | undefined>\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n BTCTransactionFilter,\n BTCTransactionFilter_Condition,\n BTCTransactionFilter_Filter,\n BTCTransactionFilter_Filters,\n BTCTransactionFilter_VinFilter,\n BTCTransactionFilter_VOutFilter\n} from '@sentio/protos'\nimport { serializeRichValue } from '../store/util.js'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { Transaction, Vin, Vout } from './types.js'\n\nexport type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>\n\nexport type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction' | 'scriptSig'> | 'script_asm' | 'script_hex'\n\nexport type VOutFields =\n | keyof Omit<Vout, 'scriptPubKey'>\n | 'script_asm'\n | 'script_hex'\n | 'script_type'\n | 'script_address'\n\nexport type Filter<F extends string> = {\n [K in F]?: Condition | Comparable\n}\n\nexport type Condition = {\n eq?: Comparable\n gt?: Comparable\n gte?: Comparable\n lt?: Comparable\n lte?: Comparable\n ne?: Comparable\n // string has the prefix\n prefix?: string\n // string contains\n contains?: string\n notContains?: string\n length?: number\n lengthGt?: number\n lengthLt?: number\n // array contains any of the values\n hasAny?: Array<Comparable>\n // array contains all the values\n hasAll?: Array<Comparable>\n in?: Array<Comparable>\n}\n\nexport type Filters<T extends string> = Filter<T> | Filter<T>[]\n\nexport type VinFilter = Filter<VinFields> & {\n preVOut?: Filter<VOutFields>\n preTransaction?: {\n filter?: Array<Filter<TransactionFields>>\n outputFilter?: Filters<VOutFields>\n // can't have inputFilter here, we can only support one level of nesting\n }\n}\n\nexport type VOutFilter = Filter<VOutFields>\n\nexport type TransactionFilter = {\n inputFilter?: VinFilter | VinFilter[]\n outputFilter?: VOutFilter | VOutFilter[]\n filter?: Array<Filter<TransactionFields>>\n}\n\nexport type Comparable = number | BigDecimal | bigint | Date | string | boolean\n\nexport type TransactionFilters = TransactionFilter | TransactionFilter[]\n\nfunction toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {\n if (inputFilter) {\n const ret = BTCTransactionFilter_VinFilter.create()\n const filters = []\n const vouts: Filter<VOutFields>[] = []\n const txs: TransactionFilters = []\n\n for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {\n const { preVOut, preTransaction, ...rest } = f\n filters.push(rest)\n if (preVOut) {\n vouts.push(preVOut)\n }\n if (preTransaction) {\n txs.push(preTransaction)\n }\n }\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n if (vouts.length > 0) {\n const voutFilters = convertFilters(vouts)\n if (voutFilters && voutFilters.length > 0) {\n ret.preVOut = voutFilters[0]\n }\n }\n if (txs.length > 0) {\n ret.preTransaction = filters2Proto(txs)?.[0]\n }\n\n return ret\n }\n\n return undefined\n}\n\nfunction toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]): BTCTransactionFilter_VOutFilter | undefined {\n if (outputFilter) {\n const ret = BTCTransactionFilter_VOutFilter.create()\n const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n return ret\n }\n return undefined\n}\n\nexport function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[] {\n const filters = Array.isArray(filter) ? filter : [filter]\n return filters.map((f) => {\n return {\n filter: convertFilters(f.filter),\n inputFilter: toVinFilter(f.inputFilter),\n outputFilter: toVOutFilter(f.outputFilter)\n } as BTCTransactionFilter\n })\n}\n\nfunction toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {\n const ret: BTCTransactionFilter_Condition = BTCTransactionFilter_Condition.create()\n if (value instanceof Date) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'number') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'string') {\n ret.eq = serializeRichValue(value)\n }\n if (value instanceof BigDecimal) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'bigint') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'boolean') {\n ret.eq = serializeRichValue(value)\n }\n if (Array.isArray(value)) {\n ret.in = { values: value.map((v) => serializeRichValue(v)) }\n }\n\n for (const [k, v] of Object.entries(value)) {\n switch (k) {\n case 'prefix':\n case 'contains':\n case 'notContains':\n ret[k] = v.toString()\n break\n case 'length':\n ret['lengthEq'] = v\n break\n case 'lengthGt':\n case 'lengthLt':\n ret[k] = v\n break\n case 'hasAny':\n case 'hasAll':\n case 'in':\n ret[k] = { values: v.map((v: any) => serializeRichValue(v)) }\n break\n case 'eq':\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n case 'ne':\n ret[k] = serializeRichValue(v)\n break\n default:\n throw new Error('Unknown condition op: ' + k)\n }\n }\n\n return ret\n}\n\nfunction convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransactionFilter_Filter[] | undefined {\n if (filters && filters.length > 0) {\n const ret: BTCTransactionFilter_Filter[] = []\n for (const filter of filters) {\n const f: BTCTransactionFilter_Filter = BTCTransactionFilter_Filter.create()\n for (const [key, value] of Object.entries(filter)) {\n f.conditions[key] = toCondition(value as any)\n }\n ret.push(f)\n }\n return ret\n }\n return []\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n ContractConfig,\n DataBinding,\n HandlerType,\n InitResponse,\n ProcessConfigResponse,\n ProcessResult,\n ProcessStreamResponse_Partitions,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { PartitionHandlerManager } from '../core/index.js'\nimport { HandlerRegister } from '../core/handler-register.js'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { BTCProcessorState } from './btc-processor.js'\nimport { filters2Proto, TransactionFilter } from './filter.js'\n\nexport class BTCPlugin extends Plugin {\n name: string = 'BTCPlugin'\n handlerRegister = new HandlerRegister()\n partitionManager = new PartitionHandlerManager()\n\n async init(config: InitResponse) {\n for (const aptosProcessor of BTCProcessorState.INSTANCE.getValues()) {\n const chainId = aptosProcessor.config.chainId\n config.chainIds.push(chainId)\n }\n }\n\n async configure(config: ProcessConfigResponse, forChainId?: string) {\n this.handlerRegister.clear(forChainId as any)\n\n for (const processor of BTCProcessorState.INSTANCE.getValues()) {\n const chainId = processor.config.chainId\n if (forChainId !== undefined && forChainId !== chainId.toString()) {\n continue\n }\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: processor.config.chainId.toString(),\n address: processor.config.address || '*',\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n for (const callHandler of processor.callHandlers) {\n const handlerId = this.handlerRegister.register(callHandler.handler, chainId)\n this.partitionManager.registerPartitionHandler(\n HandlerType.BTC_TRANSACTION,\n handlerId,\n callHandler.partitionHandler\n )\n const handlerName = callHandler.handlerName\n\n if (callHandler.filter) {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto(callHandler.filter),\n handlerId,\n handlerName\n })\n } else if (contractConfig.contract?.address != '*') {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto({\n outputFilter: {\n script_address: processor.config.address\n }\n } as TransactionFilter),\n handlerId,\n handlerName\n })\n }\n }\n\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = this.handlerRegister.register(blockHandler.handler, chainId)\n this.partitionManager.registerPartitionHandler(HandlerType.BTC_BLOCK, handlerId, blockHandler.partitionHandler)\n contractConfig.intervalConfigs.push({\n slot: 0,\n slotInterval: blockHandler.blockInterval,\n minutes: 0,\n minutesInterval: blockHandler.timeIntervalInMinutes,\n handlerId,\n handlerName: blockHandler.handlerName,\n fetchConfig: {\n transaction: blockHandler.fetchConfig?.getTransactions ?? false,\n trace: false,\n block: true,\n transactionReceipt: false,\n transactionReceiptLogs: false\n }\n })\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = [HandlerType.BTC_TRANSACTION, HandlerType.BTC_BLOCK]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n return this.processTransaction(request)\n case HandlerType.BTC_BLOCK:\n return this.processBlock(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async partition(request: DataBinding): Promise<ProcessStreamResponse_Partitions> {\n let data: any\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n if (!request.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"btcTransaction can't be empty\")\n }\n data = request.data.btcTransaction\n break\n case HandlerType.BTC_BLOCK:\n if (!request.data?.btcBlock) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"btcBlock can't be empty\")\n }\n data = request.data.btcBlock\n break\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n const partitions = await this.partitionManager.processPartitionForHandlerType(\n request.handlerType,\n request.handlerIds,\n data\n )\n return {\n partitions\n }\n }\n\n async start(request: StartRequest) {}\n\n stateDiff(config: ProcessConfigResponse): boolean {\n return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length\n }\n\n async processTransaction(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"BTCEvents can't be null\")\n }\n\n const promises: Promise<ProcessResult>[] = []\n\n const result = binding.data?.btcTransaction\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlerRegister\n .getHandlerById(handlerId)(binding.data?.btcTransaction)\n .catch((e: any) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(result) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n private async processBlock(request: DataBinding) {\n if (!request.data?.btcBlock) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n\n const block = request.data.btcBlock\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of request.handlerIds) {\n const promise = this.handlerRegister\n .getHandlerById(handlerId)(block)\n .catch((e: any) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing block: ' + JSON.stringify(block) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new BTCPlugin())\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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","names":["v","import_nice_grpc"]}
1
+ {"version":3,"sources":["../src/btc/types.ts","../src/btc/btc-processor.ts","../src/btc/filter.ts","../src/btc/btc-plugin.ts"],"sourcesContent":["import { BaseContext, Labels, normalizeLabels } from '../core/index.js'\nimport { Data_BTCBlock, HandleInterval, ProcessResult, RecordMetaData } from '@sentio/protos'\nimport { ChainId } from '@sentio/chain'\n\nexport type Transaction = {\n txid: string\n hash: string\n txindex: number\n blockhash: string\n blockheight: number\n blocktime: number\n size: number\n vsize: number\n version: number\n locktime: number\n vin: Vin[]\n vout: Vout[]\n}\n\nexport type Vin = {\n vin_index: number\n coinbase?: string\n txid?: string\n vout?: number\n sequence: number\n witness?: string[]\n scriptSig: {\n asm: string\n hex: string\n }\n pre_vout?: Vout\n pre_transaction?: Transaction\n}\n\nexport type Vout = {\n value: number\n n: number\n scriptPubKey: {\n asm: string\n hex: string\n reqSigs: number\n type: string\n address: string\n }\n}\n\nexport type BTCBlock = {\n hash: string\n confirmations: number\n strippedsize: number\n size: number\n weight: number\n height: number\n version: number\n merkleroot: string\n tx?: Transaction[]\n time: number\n nonce: number\n bits: string\n difficulty: number\n previousblockhash: string\n nextblockhash: string\n}\n\nexport class BTCContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly tx: Transaction,\n readonly address: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.name,\n blockNumber: BigInt(this.tx.blockheight ?? 0),\n transactionIndex: 0,\n transactionHash: this.tx.txid,\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n\nexport class BTCBlockContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly block: BTCBlock,\n readonly address?: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address ?? '',\n contractName: this.name,\n blockNumber: BigInt(this.block.height ?? 0),\n transactionIndex: 0,\n transactionHash: '',\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n\nexport type BlockHandler = {\n blockInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handler: (block: Data_BTCBlock) => Promise<ProcessResult>\n handlerName: string\n fetchConfig?: BTCOnIntervalFetchConfig\n partitionHandler?: (block: Data_BTCBlock) => Promise<string | undefined>\n}\n\nexport type BTCOnIntervalFetchConfig = {\n getTransactions?: boolean\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { ListStateStorage } from '@sentio/runtime'\nimport { BlockHandler, BTCBlock, BTCBlockContext, BTCContext, BTCOnIntervalFetchConfig, Transaction } from './types.js'\nimport { Data_BTCBlock, Data_BTCTransaction, HandleInterval, ProcessResult } from '@sentio/protos'\nimport { TransactionFilters } from './filter.js'\nimport { HandlerOptions, PromiseOrVoid } from '../core/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport class BTCProcessorState extends ListStateStorage<BTCProcessor> {\n static INSTANCE = new BTCProcessorState()\n}\n\nexport class BTCProcessor {\n callHandlers: CallHandler<Data_BTCTransaction>[] = []\n blockHandlers: BlockHandler[] = []\n\n constructor(readonly config: BTCProcessorConfig) {\n return proxyProcessor(this)\n }\n\n static bind(config: BTCProcessorConfig): BTCProcessor {\n const processor = new BTCProcessor(config)\n BTCProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n public onTransaction(\n handler: (transaction: Transaction, ctx: BTCContext) => void | Promise<void>,\n filter?: TransactionFilters,\n handlerOptions?: HandlerOptions<object, Transaction>\n ) {\n const callHandler = {\n handlerName: getHandlerName(),\n handler: async (call: Data_BTCTransaction) => {\n const tx = call.transaction as Transaction\n\n const ctx = new BTCContext(\n this.config.chainId,\n this.config.name ?? this.config.address ?? '',\n tx,\n this.config.address ?? tx.vout?.[0]?.scriptPubKey?.address\n )\n await handler(tx, ctx)\n return ctx.stopAndGetResult()\n },\n filter,\n partitionHandler: async (call: Data_BTCTransaction): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const tx = call.transaction as Transaction\n return p(tx)\n }\n return p\n }\n }\n this.callHandlers.push(callHandler)\n return this\n }\n\n public onInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n blockInterval: HandleInterval | undefined,\n handlerOptions?: HandlerOptions<BTCOnIntervalFetchConfig, BTCBlock>\n ): this {\n if (timeInterval) {\n if (timeInterval.backfillInterval < timeInterval.recentInterval) {\n timeInterval.backfillInterval = timeInterval.recentInterval\n }\n }\n\n const processor = this\n\n this.blockHandlers.push({\n blockInterval,\n timeIntervalInMinutes: timeInterval,\n handlerName: getHandlerName(),\n handler: async function (data: Data_BTCBlock) {\n const header = data.block\n if (!header) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const block = {\n ...header\n } as BTCBlock\n if (handlerOptions?.getTransactions) {\n block.tx = header.rawtx?.map((tx: any) => tx as Transaction)\n }\n\n const ctx = new BTCBlockContext(\n processor.config.chainId,\n processor.config.name ?? processor.config.address ?? '',\n block,\n processor.config.address\n )\n await handler(block, ctx)\n return ctx.stopAndGetResult()\n },\n fetchConfig: handlerOptions,\n partitionHandler: async (data: Data_BTCBlock): Promise<string | undefined> => {\n const p = handlerOptions?.partitionKey\n if (!p) return undefined\n if (typeof p === 'function') {\n const header = data.block\n if (!header) return undefined\n const block = { ...header } as BTCBlock\n if (handlerOptions?.getTransactions) {\n block.tx = header.rawtx?.map((tx: any) => tx as Transaction)\n }\n return p(block)\n }\n return p\n }\n })\n return this\n }\n\n public onBlockInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n blockInterval = 250,\n backfillBlockInterval = 1000,\n handlerOptions?: HandlerOptions<BTCOnIntervalFetchConfig, BTCBlock>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n {\n recentInterval: blockInterval,\n backfillInterval: backfillBlockInterval\n },\n handlerOptions\n )\n }\n\n public onTimeInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n handlerOptions?: HandlerOptions<BTCOnIntervalFetchConfig, BTCBlock>\n ): this {\n return this.onInterval(\n handler,\n { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },\n undefined,\n handlerOptions\n )\n }\n}\n\ninterface BTCProcessorConfig {\n chainId: string\n name?: string\n address?: string\n startBlock?: bigint\n endBlock?: bigint\n}\n\nexport type CallHandler<T> = {\n handlerName: string\n handler: (call: T) => Promise<ProcessResult>\n filter?: TransactionFilters\n partitionHandler?: (call: T) => Promise<string | undefined>\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n BTCTransactionFilter,\n BTCTransactionFilter_Condition,\n BTCTransactionFilter_Filter,\n BTCTransactionFilter_Filters,\n BTCTransactionFilter_VinFilter,\n BTCTransactionFilter_VOutFilter\n} from '@sentio/protos'\nimport { serializeRichValue } from '../store/util.js'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { Transaction, Vin, Vout } from './types.js'\n\nexport type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>\n\nexport type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction' | 'scriptSig'> | 'script_asm' | 'script_hex'\n\nexport type VOutFields =\n | keyof Omit<Vout, 'scriptPubKey'>\n | 'script_asm'\n | 'script_hex'\n | 'script_type'\n | 'script_address'\n\nexport type Filter<F extends string> = {\n [K in F]?: Condition | Comparable\n}\n\nexport type Condition = {\n eq?: Comparable\n gt?: Comparable\n gte?: Comparable\n lt?: Comparable\n lte?: Comparable\n ne?: Comparable\n // string has the prefix\n prefix?: string\n // string contains\n contains?: string\n notContains?: string\n length?: number\n lengthGt?: number\n lengthLt?: number\n // array contains any of the values\n hasAny?: Array<Comparable>\n // array contains all the values\n hasAll?: Array<Comparable>\n in?: Array<Comparable>\n}\n\nexport type Filters<T extends string> = Filter<T> | Filter<T>[]\n\nexport type VinFilter = Filter<VinFields> & {\n preVOut?: Filter<VOutFields>\n preTransaction?: {\n filter?: Array<Filter<TransactionFields>>\n outputFilter?: Filters<VOutFields>\n // can't have inputFilter here, we can only support one level of nesting\n }\n}\n\nexport type VOutFilter = Filter<VOutFields>\n\nexport type TransactionFilter = {\n inputFilter?: VinFilter | VinFilter[]\n outputFilter?: VOutFilter | VOutFilter[]\n filter?: Array<Filter<TransactionFields>>\n}\n\nexport type Comparable = number | BigDecimal | bigint | Date | string | boolean\n\nexport type TransactionFilters = TransactionFilter | TransactionFilter[]\n\nfunction toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {\n if (inputFilter) {\n const ret = BTCTransactionFilter_VinFilter.create()\n const filters = []\n const vouts: Filter<VOutFields>[] = []\n const txs: TransactionFilters = []\n\n for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {\n const { preVOut, preTransaction, ...rest } = f\n filters.push(rest)\n if (preVOut) {\n vouts.push(preVOut)\n }\n if (preTransaction) {\n txs.push(preTransaction)\n }\n }\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n if (vouts.length > 0) {\n const voutFilters = convertFilters(vouts)\n if (voutFilters && voutFilters.length > 0) {\n ret.preVOut = voutFilters[0]\n }\n }\n if (txs.length > 0) {\n ret.preTransaction = filters2Proto(txs)?.[0]\n }\n\n return ret\n }\n\n return undefined\n}\n\nfunction toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]): BTCTransactionFilter_VOutFilter | undefined {\n if (outputFilter) {\n const ret = BTCTransactionFilter_VOutFilter.create()\n const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n return ret\n }\n return undefined\n}\n\nexport function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[] {\n const filters = Array.isArray(filter) ? filter : [filter]\n return filters.map((f) => {\n return {\n filter: convertFilters(f.filter),\n inputFilter: toVinFilter(f.inputFilter),\n outputFilter: toVOutFilter(f.outputFilter)\n } as BTCTransactionFilter\n })\n}\n\nfunction toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {\n const ret: BTCTransactionFilter_Condition = BTCTransactionFilter_Condition.create()\n if (value instanceof Date) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'number') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'string') {\n ret.eq = serializeRichValue(value)\n }\n if (value instanceof BigDecimal) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'bigint') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'boolean') {\n ret.eq = serializeRichValue(value)\n }\n if (Array.isArray(value)) {\n ret.in = { values: value.map((v) => serializeRichValue(v)) }\n }\n\n for (const [k, v] of Object.entries(value)) {\n switch (k) {\n case 'prefix':\n case 'contains':\n case 'notContains':\n ret[k] = v.toString()\n break\n case 'length':\n ret['lengthEq'] = v\n break\n case 'lengthGt':\n case 'lengthLt':\n ret[k] = v\n break\n case 'hasAny':\n case 'hasAll':\n case 'in':\n ret[k] = { values: v.map((v: any) => serializeRichValue(v)) }\n break\n case 'eq':\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n case 'ne':\n ret[k] = serializeRichValue(v)\n break\n default:\n throw new Error('Unknown condition op: ' + k)\n }\n }\n\n return ret\n}\n\nfunction convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransactionFilter_Filter[] | undefined {\n if (filters && filters.length > 0) {\n const ret: BTCTransactionFilter_Filter[] = []\n for (const filter of filters) {\n const f: BTCTransactionFilter_Filter = BTCTransactionFilter_Filter.create()\n for (const [key, value] of Object.entries(filter)) {\n f.conditions[key] = toCondition(value as any)\n }\n ret.push(f)\n }\n return ret\n }\n return []\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n ContractConfig,\n DataBinding,\n HandlerType,\n InitResponse,\n ProcessConfigResponse,\n ProcessResult,\n ProcessStreamResponse_Partitions,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { PartitionHandlerManager } from '../core/index.js'\nimport { HandlerRegister } from '../core/handler-register.js'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { BTCProcessorState } from './btc-processor.js'\nimport { filters2Proto, TransactionFilter } from './filter.js'\n\nexport class BTCPlugin extends Plugin {\n name: string = 'BTCPlugin'\n handlerRegister = new HandlerRegister()\n partitionManager = new PartitionHandlerManager()\n\n async init(config: InitResponse) {\n for (const aptosProcessor of BTCProcessorState.INSTANCE.getValues()) {\n const chainId = aptosProcessor.config.chainId\n config.chainIds.push(chainId)\n }\n }\n\n async configure(config: ProcessConfigResponse, forChainId?: string) {\n this.handlerRegister.clear(forChainId as any)\n\n for (const processor of BTCProcessorState.INSTANCE.getValues()) {\n const chainId = processor.config.chainId\n if (forChainId !== undefined && forChainId !== chainId.toString()) {\n continue\n }\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: processor.config.chainId.toString(),\n address: processor.config.address || '*',\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n for (const callHandler of processor.callHandlers) {\n const handlerId = this.handlerRegister.register(callHandler.handler, chainId)\n this.partitionManager.registerPartitionHandler(\n HandlerType.BTC_TRANSACTION,\n handlerId,\n callHandler.partitionHandler\n )\n const handlerName = callHandler.handlerName\n\n if (callHandler.filter) {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto(callHandler.filter),\n handlerId,\n handlerName\n })\n } else if (contractConfig.contract?.address != '*') {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto({\n outputFilter: {\n script_address: processor.config.address\n }\n } as TransactionFilter),\n handlerId,\n handlerName\n })\n }\n }\n\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = this.handlerRegister.register(blockHandler.handler, chainId)\n this.partitionManager.registerPartitionHandler(HandlerType.BTC_BLOCK, handlerId, blockHandler.partitionHandler)\n contractConfig.intervalConfigs.push({\n slot: 0,\n slotInterval: blockHandler.blockInterval,\n minutes: 0,\n minutesInterval: blockHandler.timeIntervalInMinutes,\n handlerId,\n handlerName: blockHandler.handlerName,\n fetchConfig: {\n transaction: blockHandler.fetchConfig?.getTransactions ?? false,\n trace: false,\n block: true,\n transactionReceipt: false,\n transactionReceiptLogs: false\n }\n })\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = [HandlerType.BTC_TRANSACTION, HandlerType.BTC_BLOCK]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n return this.processTransaction(request)\n case HandlerType.BTC_BLOCK:\n return this.processBlock(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async partition(request: DataBinding): Promise<ProcessStreamResponse_Partitions> {\n let data: any\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n if (!request.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"btcTransaction can't be empty\")\n }\n data = request.data.btcTransaction\n break\n case HandlerType.BTC_BLOCK:\n if (!request.data?.btcBlock) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"btcBlock can't be empty\")\n }\n data = request.data.btcBlock\n break\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n const partitions = await this.partitionManager.processPartitionForHandlerType(\n request.handlerType,\n request.handlerIds,\n data\n )\n return {\n partitions\n }\n }\n\n async start(request: StartRequest) {}\n\n stateDiff(config: ProcessConfigResponse): boolean {\n return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length\n }\n\n async processTransaction(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"BTCEvents can't be null\")\n }\n\n const promises: Promise<ProcessResult>[] = []\n\n const result = binding.data?.btcTransaction\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlerRegister\n .getHandlerById(\n binding.chainId,\n handlerId\n )(binding.data?.btcTransaction)\n .catch((e: any) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(result) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n private async processBlock(request: DataBinding) {\n if (!request.data?.btcBlock) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n\n const block = request.data.btcBlock\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of request.handlerIds) {\n const promise = this.handlerRegister\n .getHandlerById(\n request.chainId,\n handlerId\n )(block)\n .catch((e: any) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing block: ' + JSON.stringify(block) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new BTCPlugin())\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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","names":["v","import_nice_grpc"]}
@@ -14,7 +14,7 @@ import {
14
14
  u32,
15
15
  u64_default,
16
16
  wrapConstructorWithOpts
17
- } from "./chunk-FF767KTS.js";
17
+ } from "./chunk-FR6U3D36.js";
18
18
  import {
19
19
  __name
20
20
  } from "./chunk-R7PMHHKJ.js";
@@ -1329,4 +1329,4 @@ export {
1329
1329
  pipe,
1330
1330
  blake2b
1331
1331
  };
1332
- //# sourceMappingURL=chunk-PSNLFJXN.js.map
1332
+ //# sourceMappingURL=chunk-LPI3IVPR.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
2
2
  import {
3
3
  BaseContext
4
- } from "./chunk-FF767KTS.js";
4
+ } from "./chunk-FR6U3D36.js";
5
5
  import {
6
6
  __name
7
7
  } from "./chunk-R7PMHHKJ.js";
@@ -900,4 +900,4 @@ export {
900
900
  MoveContext,
901
901
  MoveAccountContext
902
902
  };
903
- //# sourceMappingURL=chunk-XJ2ZOKPA.js.map
903
+ //# sourceMappingURL=chunk-MF57HYNE.js.map
@@ -1,10 +1,10 @@
1
1
  import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
2
2
  import {
3
3
  loadAllTypes as loadAllTypes2
4
- } from "./chunk-C4FZLXS5.js";
4
+ } from "./chunk-HACMQKRO.js";
5
5
  import {
6
6
  loadAllTypes
7
- } from "./chunk-POWT6QIC.js";
7
+ } from "./chunk-6YHEVLW5.js";
8
8
  import {
9
9
  SuiBaseProcessor,
10
10
  ZERO_ADDRESS,
@@ -18,14 +18,14 @@ import {
18
18
  transactionArgumentOrPureU64,
19
19
  transactionArgumentOrPureU8,
20
20
  transactionArgumentOrVec
21
- } from "./chunk-M7LEFJQZ.js";
21
+ } from "./chunk-3LF4N533.js";
22
22
  import {
23
23
  SuiNetwork,
24
24
  Transaction
25
- } from "./chunk-VVTT443B.js";
25
+ } from "./chunk-AI2T43SV.js";
26
26
  import {
27
27
  TypeDescriptor
28
- } from "./chunk-XJ2ZOKPA.js";
28
+ } from "./chunk-MF57HYNE.js";
29
29
  import {
30
30
  __export,
31
31
  __name
@@ -7335,4 +7335,4 @@ export {
7335
7335
  loadAllTypes3 as loadAllTypes,
7336
7336
  x3_exports
7337
7337
  };
7338
- //# sourceMappingURL=chunk-GXXO6VAC.js.map
7338
+ //# sourceMappingURL=chunk-MHV7ZFKX.js.map
@@ -6,7 +6,7 @@ import {
6
6
  iotaBcs,
7
7
  normalizeIotaAddress,
8
8
  normalizeIotaObjectId
9
- } from "./chunk-CP2KKSFQ.js";
9
+ } from "./chunk-HUNLXNN5.js";
10
10
  import {
11
11
  getHandlerName,
12
12
  proxyProcessor
@@ -24,14 +24,14 @@ import {
24
24
  accountTypeString,
25
25
  moduleQname,
26
26
  parseMoveType
27
- } from "./chunk-XJ2ZOKPA.js";
27
+ } from "./chunk-MF57HYNE.js";
28
28
  import {
29
29
  ALL_ADDRESS,
30
30
  MoveFetchConfig,
31
31
  MoveOwnerType,
32
32
  TemplateInstanceState,
33
33
  normalizeLabels
34
- } from "./chunk-FF767KTS.js";
34
+ } from "./chunk-FR6U3D36.js";
35
35
  import {
36
36
  require_lib
37
37
  } from "./chunk-5GXMJVJP.js";
@@ -1466,4 +1466,4 @@ export {
1466
1466
  IotaWrappedObjectProcessorTemplate,
1467
1467
  IotaPlugin
1468
1468
  };
1469
- //# sourceMappingURL=chunk-S6UCTPNF.js.map
1469
+ //# sourceMappingURL=chunk-NYPDOFYK.js.map
@@ -10,7 +10,7 @@ import {
10
10
  init_eventemitter3,
11
11
  init_sha512,
12
12
  sha512
13
- } from "./chunk-BHFMB6PW.js";
13
+ } from "./chunk-AFQHL4T4.js";
14
14
  import {
15
15
  HashMD,
16
16
  bytes,
@@ -36,10 +36,10 @@ import {
36
36
  } from "./chunk-742S42NO.js";
37
37
  import {
38
38
  getPriceByType
39
- } from "./chunk-UBKMKHZM.js";
39
+ } from "./chunk-B2YL5MTG.js";
40
40
  import {
41
41
  HandlerRegister
42
- } from "./chunk-NX2PDQP7.js";
42
+ } from "./chunk-Z2CE3JTO.js";
43
43
  import {
44
44
  getHandlerName,
45
45
  proxyProcessor
@@ -57,7 +57,7 @@ import {
57
57
  matchType,
58
58
  moduleQname,
59
59
  parseMoveType
60
- } from "./chunk-XJ2ZOKPA.js";
60
+ } from "./chunk-MF57HYNE.js";
61
61
  import {
62
62
  ALL_ADDRESS,
63
63
  AccountConfig,
@@ -103,7 +103,7 @@ import {
103
103
  sha3_256,
104
104
  weierstrass,
105
105
  weierstrassPoints
106
- } from "./chunk-FF767KTS.js";
106
+ } from "./chunk-FR6U3D36.js";
107
107
  import {
108
108
  require_lib
109
109
  } from "./chunk-5GXMJVJP.js";
@@ -25477,7 +25477,10 @@ var AptosPlugin = class extends Plugin {
25477
25477
  const promises = [];
25478
25478
  const event2 = new AptEvent(binding.data.aptEvent);
25479
25479
  for (const handlerId of binding.handlerIds) {
25480
- const promise = this.handlerRegister.getHandlerById(handlerId)(event2).catch((e7) => {
25480
+ const promise = this.handlerRegister.getHandlerById(
25481
+ binding.chainId,
25482
+ handlerId
25483
+ )(event2).catch((e7) => {
25481
25484
  throw new import_nice_grpc3.ServerError(
25482
25485
  import_nice_grpc3.Status.INTERNAL,
25483
25486
  "error processing event: " + JSON.stringify(event2) + "\n" + errorString(e7)
@@ -25497,7 +25500,10 @@ var AptosPlugin = class extends Plugin {
25497
25500
  const resource = new AptResource(binding.data.aptResource);
25498
25501
  const promises = [];
25499
25502
  for (const handlerId of binding.handlerIds) {
25500
- const promise = this.handlerRegister.getHandlerById(handlerId)(resource).catch((e7) => {
25503
+ const promise = this.handlerRegister.getHandlerById(
25504
+ binding.chainId,
25505
+ handlerId
25506
+ )(resource).catch((e7) => {
25501
25507
  throw new import_nice_grpc3.ServerError(
25502
25508
  import_nice_grpc3.Status.INTERNAL,
25503
25509
  "error processing resource: " + JSON.stringify(resource) + "\n" + errorString(e7)
@@ -25517,7 +25523,10 @@ var AptosPlugin = class extends Plugin {
25517
25523
  const call = new AptCall(binding.data.aptCall);
25518
25524
  const promises = [];
25519
25525
  for (const handlerId of binding.handlerIds) {
25520
- const promise = this.handlerRegister.getHandlerById(handlerId)(call).catch((e7) => {
25526
+ const promise = this.handlerRegister.getHandlerById(
25527
+ binding.chainId,
25528
+ handlerId
25529
+ )(call).catch((e7) => {
25521
25530
  throw new import_nice_grpc3.ServerError(
25522
25531
  import_nice_grpc3.Status.INTERNAL,
25523
25532
  "error processing call: " + JSON.stringify(call) + "\n" + errorString(e7)
@@ -41424,4 +41433,4 @@ export {
41424
41433
  @noble/curves/esm/bn254.js:
41425
41434
  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
41426
41435
  */
41427
- //# sourceMappingURL=chunk-KPYNYZPJ.js.map
41436
+ //# sourceMappingURL=chunk-R537HPSI.js.map