@sentio/sdk 0.1.14 → 0.2.17

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 (117) hide show
  1. package/dist/base-processor-template.d.ts +19 -0
  2. package/dist/base-processor-template.js +80 -0
  3. package/dist/base-processor-template.js.map +1 -0
  4. package/dist/base-processor.d.ts +7 -18
  5. package/dist/base-processor.js +69 -28
  6. package/dist/base-processor.js.map +1 -1
  7. package/dist/bind-options.d.ts +16 -0
  8. package/dist/bind-options.js +20 -0
  9. package/dist/bind-options.js.map +1 -0
  10. package/dist/cli/build.d.ts +3 -1
  11. package/dist/cli/build.js +100 -17
  12. package/dist/cli/build.js.map +1 -1
  13. package/dist/cli/cli.d.ts +1 -2
  14. package/dist/cli/cli.js +9 -15
  15. package/dist/cli/cli.js.map +1 -1
  16. package/dist/cli/config.d.ts +7 -1
  17. package/dist/cli/config.js +4 -1
  18. package/dist/cli/config.js.map +1 -1
  19. package/dist/{processor_server.d.ts → cli/solana-code-gen.d.ts} +0 -0
  20. package/dist/cli/solana-code-gen.js +19 -0
  21. package/dist/cli/solana-code-gen.js.map +1 -0
  22. package/dist/cli/upload.js +4 -2
  23. package/dist/cli/upload.js.map +1 -1
  24. package/dist/gen/processor/protos/processor.d.ts +35 -10
  25. package/dist/gen/processor/protos/processor.js +238 -53
  26. package/dist/gen/processor/protos/processor.js.map +1 -1
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +5 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/numberish.test.d.ts +1 -0
  31. package/dist/numberish.test.js +9 -0
  32. package/dist/numberish.test.js.map +1 -0
  33. package/dist/provider.d.ts +1 -1
  34. package/dist/provider.js +3 -0
  35. package/dist/provider.js.map +1 -1
  36. package/dist/service.d.ts +4 -2
  37. package/dist/service.js +85 -47
  38. package/dist/service.js.map +1 -1
  39. package/dist/solana-processor.d.ts +6 -6
  40. package/dist/solana-processor.js +5 -20
  41. package/dist/solana-processor.js.map +1 -1
  42. package/dist/target-ethers-sentio/codegen.js +56 -15
  43. package/dist/target-ethers-sentio/codegen.js.map +1 -1
  44. package/dist/test-case/clean-test.d.ts +1 -0
  45. package/dist/test-case/clean-test.js +11 -0
  46. package/dist/test-case/clean-test.js.map +1 -0
  47. package/dist/test-case/erc20-template.d.ts +1 -0
  48. package/dist/test-case/erc20-template.js +23 -0
  49. package/dist/test-case/erc20-template.js.map +1 -0
  50. package/dist/test-case/erc20-template.test.d.ts +1 -0
  51. package/dist/test-case/erc20-template.test.js +69 -0
  52. package/dist/test-case/erc20-template.test.js.map +1 -0
  53. package/dist/test-case/erc20.js +22 -6
  54. package/dist/test-case/erc20.js.map +1 -1
  55. package/dist/test-case/erc20.test.d.ts +1 -0
  56. package/dist/test-case/erc20.test.js +143 -0
  57. package/dist/test-case/erc20.test.js.map +1 -0
  58. package/dist/test-case/mirrorworld.d.ts +1 -4
  59. package/dist/test-case/mirrorworld.js +37 -57
  60. package/dist/test-case/mirrorworld.js.map +1 -1
  61. package/dist/test-case/solana.test.d.ts +1 -0
  62. package/dist/test-case/solana.test.js +56 -0
  63. package/dist/test-case/solana.test.js.map +1 -0
  64. package/dist/test-case/types/{ERC20.d.ts → Erc20.d.ts} +0 -0
  65. package/dist/test-case/types/{ERC20.js → Erc20.js} +0 -0
  66. package/dist/test-case/types/{ERC20.js.map → Erc20.js.map} +0 -0
  67. package/dist/test-case/types/erc20_processor.d.ts +9 -8
  68. package/dist/test-case/types/erc20_processor.js +38 -14
  69. package/dist/test-case/types/erc20_processor.js.map +1 -1
  70. package/dist/test-case/types/factories/{ERC20__factory.d.ts → Erc20__factory.d.ts} +0 -0
  71. package/dist/test-case/types/factories/{ERC20__factory.js → Erc20__factory.js} +0 -0
  72. package/dist/test-case/types/factories/{ERC20__factory.js.map → Erc20__factory.js.map} +0 -0
  73. package/dist/test-case/types/game_wallet_processor.d.ts +107 -0
  74. package/dist/test-case/types/game_wallet_processor.js +102 -0
  75. package/dist/test-case/types/game_wallet_processor.js.map +1 -0
  76. package/dist/test-case/types/wormhole_processor.d.ts +16 -0
  77. package/dist/test-case/types/wormhole_processor.js +192 -0
  78. package/dist/test-case/types/wormhole_processor.js.map +1 -0
  79. package/dist/test-case/wormhole-token-bridge.d.ts +1 -0
  80. package/dist/test-case/wormhole-token-bridge.js +7 -0
  81. package/dist/test-case/wormhole-token-bridge.js.map +1 -0
  82. package/package.json +6 -4
  83. package/dist/baseprocessor.d.ts +0 -34
  84. package/dist/baseprocessor.js +0 -110
  85. package/dist/baseprocessor.js.map +0 -1
  86. package/dist/processor_server.js +0 -67
  87. package/dist/processor_server.js.map +0 -1
  88. package/dist/solana_processor.d.ts +0 -25
  89. package/dist/solana_processor.js +0 -84
  90. package/dist/solana_processor.js.map +0 -1
  91. package/dist/test_case/erc20.d.ts +0 -1
  92. package/dist/test_case/erc20.js +0 -22
  93. package/dist/test_case/erc20.js.map +0 -1
  94. package/dist/test_case/mirrorworld.d.ts +0 -4
  95. package/dist/test_case/mirrorworld.js +0 -62
  96. package/dist/test_case/mirrorworld.js.map +0 -1
  97. package/dist/test_case/types/ERC20.d.ts +0 -150
  98. package/dist/test_case/types/ERC20.js +0 -3
  99. package/dist/test_case/types/ERC20.js.map +0 -1
  100. package/dist/test_case/types/common.d.ts +0 -22
  101. package/dist/test_case/types/common.js +0 -3
  102. package/dist/test_case/types/common.js.map +0 -1
  103. package/dist/test_case/types/erc20_processor.d.ts +0 -28
  104. package/dist/test_case/types/erc20_processor.js +0 -58
  105. package/dist/test_case/types/erc20_processor.js.map +0 -1
  106. package/dist/test_case/types/factories/ERC20__factory.d.ts +0 -35
  107. package/dist/test_case/types/factories/ERC20__factory.js +0 -216
  108. package/dist/test_case/types/factories/ERC20__factory.js.map +0 -1
  109. package/dist/test_case/types/factories/index.d.ts +0 -1
  110. package/dist/test_case/types/factories/index.js +0 -9
  111. package/dist/test_case/types/factories/index.js.map +0 -1
  112. package/dist/test_case/types/game_wallet.d.ts +0 -45
  113. package/dist/test_case/types/game_wallet.js +0 -1396
  114. package/dist/test_case/types/game_wallet.js.map +0 -1
  115. package/dist/test_case/types/index.d.ts +0 -3
  116. package/dist/test_case/types/index.js +0 -30
  117. package/dist/test_case/types/index.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ /// <reference types="bn.js" />
2
+ import { Instruction, BN } from '@project-serum/anchor';
3
+ import { SolanaBaseProcessor, SolanaContext } from "@sentio/sdk";
4
+ export declare class GameWalletProcessor extends SolanaBaseProcessor {
5
+ static bind(address: string, endpoint: string, name?: string): GameWalletProcessor;
6
+ decodeInstruction(ins: string): Instruction | null;
7
+ onInitializeTokenConfig(handler: (args: {
8
+ tokenDecimal: number;
9
+ isPaused: boolean;
10
+ canDeposit: boolean;
11
+ canWithdraw: boolean;
12
+ canSpend: boolean;
13
+ canDistribute: boolean;
14
+ isWithdrawServiceFeeEnable: boolean;
15
+ withdrawServiceFeePercentage: BN;
16
+ isSpendServiceFeeEnable: boolean;
17
+ spendServiceFeePercentage: BN;
18
+ isDistributionServiceFeeEnable: boolean;
19
+ distributionServiceFeePercentage: BN;
20
+ isMinWithdrawEnable: boolean;
21
+ isMaxWithdrawEnable: boolean;
22
+ minWithdraw: BN;
23
+ maxWithdraw: BN;
24
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
25
+ onDeposit(handler: (args: {
26
+ tokenConfigBump: number;
27
+ depositPoolBump: number;
28
+ depositPoolTokenAccountBump: number;
29
+ amount: BN;
30
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
31
+ onWithdraw(handler: (args: {
32
+ tokenConfigBump: number;
33
+ depositPoolBump: number;
34
+ depositPoolTokenAccountBump: number;
35
+ userTokenConfigBump: number;
36
+ amount: BN;
37
+ nonce: BN;
38
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
39
+ onSpend(handler: (args: {
40
+ tokenConfigBump: number;
41
+ depositPoolBump: number;
42
+ depositPoolTokenAccountBump: number;
43
+ userTokenConfigBump: number;
44
+ amount: BN;
45
+ nonce: BN;
46
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
47
+ onSpendWithoutUser(handler: (args: {
48
+ tokenConfigBump: number;
49
+ depositPoolBump: number;
50
+ depositPoolTokenAccountBump: number;
51
+ userTokenConfigBump: number;
52
+ amount: BN;
53
+ nonce: BN;
54
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
55
+ onAddDistributeSupply(handler: (args: {
56
+ tokenConfigBump: number;
57
+ distributionPoolBump: number;
58
+ distributionPoolTokenAccountBump: number;
59
+ amount: BN;
60
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
61
+ onDistribute(handler: (args: {
62
+ tokenConfigBump: number;
63
+ depositPoolBump: number;
64
+ depositPoolTokenAccountBump: number;
65
+ distributionPoolBump: number;
66
+ distributionPoolTokenAccountBump: number;
67
+ amount: BN;
68
+ nonce: BN;
69
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
70
+ onDistributeWithoutUser(handler: (args: {
71
+ tokenConfigBump: number;
72
+ depositPoolBump: number;
73
+ depositPoolTokenAccountBump: number;
74
+ distributionPoolBump: number;
75
+ distributionPoolTokenAccountBump: number;
76
+ amount: BN;
77
+ nonce: BN;
78
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
79
+ onUpdateTokenConfig(handler: (args: {
80
+ tokenConfigBump: number;
81
+ tokenDecimal: number;
82
+ isPaused: boolean;
83
+ canDeposit: boolean;
84
+ canWithdraw: boolean;
85
+ canSpend: boolean;
86
+ canDistribute: boolean;
87
+ isWithdrawServiceFeeEnable: boolean;
88
+ withdrawServiceFeePercentage: BN;
89
+ isSpendServiceFeeEnable: boolean;
90
+ spendServiceFeePercentage: BN;
91
+ isDistributionServiceFeeEnable: boolean;
92
+ distributionServiceFeePercentage: BN;
93
+ isMinWithdrawEnable: boolean;
94
+ isMaxWithdrawEnable: boolean;
95
+ minWithdraw: BN;
96
+ maxWithdraw: BN;
97
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
98
+ onUpdateUserTokenConfig(handler: (args: {
99
+ tokenConfigBump: number;
100
+ userTokenConfigBump: number;
101
+ isActive: boolean;
102
+ canDeposit: boolean;
103
+ canWithdraw: boolean;
104
+ canSpend: boolean;
105
+ canDistribute: boolean;
106
+ }, ctx: SolanaContext) => void): GameWalletProcessor;
107
+ }
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GameWalletProcessor = void 0;
7
+ const anchor_1 = require("@project-serum/anchor");
8
+ const sdk_1 = require("@sentio/sdk");
9
+ const game_wallet_1 = require("./game_wallet");
10
+ const bs58_1 = __importDefault(require("bs58"));
11
+ class GameWalletProcessor extends sdk_1.SolanaBaseProcessor {
12
+ static bind(address, endpoint, name = 'GameWallet') {
13
+ return new GameWalletProcessor(name, address, endpoint);
14
+ }
15
+ decodeInstruction(ins) {
16
+ const instructionCoder = new anchor_1.BorshInstructionCoder(game_wallet_1.game_wallet_idl);
17
+ const decodedIns = instructionCoder.decode(Buffer.from(bs58_1.default.decode(ins)));
18
+ return decodedIns;
19
+ }
20
+ onInitializeTokenConfig(handler) {
21
+ this.onInstruction('initializeTokenConfig', (ins, ctx) => {
22
+ if (ins) {
23
+ handler(ins.data, ctx);
24
+ }
25
+ });
26
+ return this;
27
+ }
28
+ onDeposit(handler) {
29
+ this.onInstruction('deposit', (ins, ctx) => {
30
+ if (ins) {
31
+ handler(ins.data, ctx);
32
+ }
33
+ });
34
+ return this;
35
+ }
36
+ onWithdraw(handler) {
37
+ this.onInstruction('withdraw', (ins, ctx) => {
38
+ if (ins) {
39
+ handler(ins.data, ctx);
40
+ }
41
+ });
42
+ return this;
43
+ }
44
+ onSpend(handler) {
45
+ this.onInstruction('spend', (ins, ctx) => {
46
+ if (ins) {
47
+ handler(ins.data, ctx);
48
+ }
49
+ });
50
+ return this;
51
+ }
52
+ onSpendWithoutUser(handler) {
53
+ this.onInstruction('spendWithoutUser', (ins, ctx) => {
54
+ if (ins) {
55
+ handler(ins.data, ctx);
56
+ }
57
+ });
58
+ return this;
59
+ }
60
+ onAddDistributeSupply(handler) {
61
+ this.onInstruction('addDistributeSupply', (ins, ctx) => {
62
+ if (ins) {
63
+ handler(ins.data, ctx);
64
+ }
65
+ });
66
+ return this;
67
+ }
68
+ onDistribute(handler) {
69
+ this.onInstruction('distribute', (ins, ctx) => {
70
+ if (ins) {
71
+ handler(ins.data, ctx);
72
+ }
73
+ });
74
+ return this;
75
+ }
76
+ onDistributeWithoutUser(handler) {
77
+ this.onInstruction('distributeWithoutUser', (ins, ctx) => {
78
+ if (ins) {
79
+ handler(ins.data, ctx);
80
+ }
81
+ });
82
+ return this;
83
+ }
84
+ onUpdateTokenConfig(handler) {
85
+ this.onInstruction('updateTokenConfig', (ins, ctx) => {
86
+ if (ins) {
87
+ handler(ins.data, ctx);
88
+ }
89
+ });
90
+ return this;
91
+ }
92
+ onUpdateUserTokenConfig(handler) {
93
+ this.onInstruction('updateUserTokenConfig', (ins, ctx) => {
94
+ if (ins) {
95
+ handler(ins.data, ctx);
96
+ }
97
+ });
98
+ return this;
99
+ }
100
+ }
101
+ exports.GameWalletProcessor = GameWalletProcessor;
102
+ //# sourceMappingURL=game_wallet_processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game_wallet_processor.js","sourceRoot":"","sources":["../../../src/test-case/types/game_wallet_processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Instruction } from '@project-serum/anchor';
2
+ import { SolanaBaseProcessor, SolanaContext } from "@sentio/sdk";
3
+ export declare class TokenBridgeProcessor extends SolanaBaseProcessor {
4
+ static bind(address: string, endpoint: string, name?: string): TokenBridgeProcessor;
5
+ private readonly transferDataValues;
6
+ private readonly transferDataWithPayloadValues;
7
+ private readonly attestTokenValues;
8
+ private readonly initializeDataValues;
9
+ decodeInstruction(ins: string): Instruction | null;
10
+ onInitialize(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor;
11
+ onAttestToken(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor;
12
+ onTransferWrapped(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor;
13
+ onTransferNativeWithPayload(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor;
14
+ onTransferWrappedWithPaylod(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor;
15
+ onTransferNative(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor;
16
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.TokenBridgeProcessor = void 0;
30
+ const borsh = __importStar(require("@project-serum/borsh"));
31
+ const sdk_1 = require("@sentio/sdk");
32
+ const bs58_1 = __importDefault(require("bs58"));
33
+ // https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/lib.rs#L100
34
+ var TokenBrigeInstruction;
35
+ (function (TokenBrigeInstruction) {
36
+ TokenBrigeInstruction[TokenBrigeInstruction["Initialize"] = 0] = "Initialize";
37
+ TokenBrigeInstruction[TokenBrigeInstruction["AttestToken"] = 1] = "AttestToken";
38
+ TokenBrigeInstruction[TokenBrigeInstruction["CompleteNative"] = 2] = "CompleteNative";
39
+ TokenBrigeInstruction[TokenBrigeInstruction["CompleteWrapped"] = 3] = "CompleteWrapped";
40
+ TokenBrigeInstruction[TokenBrigeInstruction["TransferWrapped"] = 4] = "TransferWrapped";
41
+ TokenBrigeInstruction[TokenBrigeInstruction["TransferNative"] = 5] = "TransferNative";
42
+ TokenBrigeInstruction[TokenBrigeInstruction["RegisterChain"] = 6] = "RegisterChain";
43
+ TokenBrigeInstruction[TokenBrigeInstruction["CreateWrapped"] = 7] = "CreateWrapped";
44
+ TokenBrigeInstruction[TokenBrigeInstruction["UpgradeContract"] = 8] = "UpgradeContract";
45
+ TokenBrigeInstruction[TokenBrigeInstruction["CompleteNativeWithPayload"] = 9] = "CompleteNativeWithPayload";
46
+ TokenBrigeInstruction[TokenBrigeInstruction["CompleteWrappedWithPayload"] = 10] = "CompleteWrappedWithPayload";
47
+ TokenBrigeInstruction[TokenBrigeInstruction["TransferWrappedWithPayload"] = 11] = "TransferWrappedWithPayload";
48
+ TokenBrigeInstruction[TokenBrigeInstruction["TransferNativeWithPayload"] = 12] = "TransferNativeWithPayload";
49
+ })(TokenBrigeInstruction || (TokenBrigeInstruction = {}));
50
+ class TokenBridgeProcessor extends sdk_1.SolanaBaseProcessor {
51
+ static bind(address, endpoint, name = 'Wormhole') {
52
+ return new TokenBridgeProcessor(name, address, endpoint);
53
+ }
54
+ transferDataValues = [
55
+ borsh.u32('nonce'),
56
+ borsh.u64('amount'),
57
+ borsh.u64('fee'),
58
+ borsh.array(borsh.u8(undefined), 32, 'target_address'),
59
+ borsh.u16('target_chain'),
60
+ ];
61
+ // https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/api/transfer_payload.rs#L170
62
+ transferDataWithPayloadValues = [
63
+ borsh.u32('nonce'),
64
+ borsh.u64('amount'),
65
+ borsh.array(borsh.u8(undefined), 32, 'target_address'),
66
+ borsh.u16('target_chain'),
67
+ borsh.vecU8('payload'),
68
+ borsh.option(borsh.publicKey(undefined), 'cpi_program_id')
69
+ ];
70
+ attestTokenValues = [
71
+ borsh.u32('nonce'),
72
+ ];
73
+ initializeDataValues = [
74
+ borsh.publicKey('bridge'),
75
+ ];
76
+ decodeInstruction(ins) {
77
+ const u8Arr = bs58_1.default.decode(ins);
78
+ if (u8Arr.length === 0) {
79
+ return null;
80
+ }
81
+ let data;
82
+ // wormhole pass intruction's enum value as its first instrcution data
83
+ switch (u8Arr[0]) {
84
+ case TokenBrigeInstruction.Initialize:
85
+ return {
86
+ data: '',
87
+ name: TokenBrigeInstruction[TokenBrigeInstruction.Initialize]
88
+ };
89
+ case TokenBrigeInstruction.TransferNative:
90
+ // struct is defined at: https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/api/transfer.rs#L295
91
+ data = borsh.struct(this.transferDataValues, 'TransferNativeData').decode(Buffer.from(u8Arr.slice(1)));
92
+ return {
93
+ data,
94
+ name: TokenBrigeInstruction[TokenBrigeInstruction.TransferNative]
95
+ };
96
+ case TokenBrigeInstruction.TransferWrapped:
97
+ // stuct is defined at: https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/api/transfer.rs#L295
98
+ data = borsh.struct(this.transferDataValues, 'TransferWrappedData').decode(Buffer.from(u8Arr.slice(1)));
99
+ return {
100
+ data,
101
+ name: TokenBrigeInstruction[TokenBrigeInstruction.TransferWrapped]
102
+ };
103
+ case TokenBrigeInstruction.TransferNativeWithPayload:
104
+ data = borsh.struct(this.transferDataWithPayloadValues, 'TransferNativeWithPayloadData').decode(Buffer.from(u8Arr.slice(1)));
105
+ return {
106
+ data,
107
+ name: TokenBrigeInstruction[TokenBrigeInstruction.TransferNativeWithPayload]
108
+ };
109
+ case TokenBrigeInstruction.TransferWrappedWithPayload:
110
+ data = borsh.struct(this.transferDataWithPayloadValues, 'TransferWrappedWithPayloadData').decode(Buffer.from(u8Arr.slice(1)));
111
+ return {
112
+ data,
113
+ name: TokenBrigeInstruction[TokenBrigeInstruction.TransferWrappedWithPayload]
114
+ };
115
+ case TokenBrigeInstruction.Initialize:
116
+ data = borsh.struct(this.initializeDataValues, 'InitializeData').decode(Buffer.from(u8Arr.slice(1)));
117
+ return {
118
+ data,
119
+ name: TokenBrigeInstruction[TokenBrigeInstruction.Initialize]
120
+ };
121
+ case TokenBrigeInstruction.AttestToken:
122
+ data = borsh.struct(this.attestTokenValues, 'AttestTokenData').decode(Buffer.from(u8Arr.slice(1)));
123
+ return {
124
+ data,
125
+ name: TokenBrigeInstruction[TokenBrigeInstruction.AttestToken]
126
+ };
127
+ case TokenBrigeInstruction.CompleteNative:
128
+ case TokenBrigeInstruction.CompleteNativeWithPayload:
129
+ case TokenBrigeInstruction.CompleteWrapped:
130
+ case TokenBrigeInstruction.CompleteWrappedWithPayload:
131
+ case TokenBrigeInstruction.CreateWrapped:
132
+ case TokenBrigeInstruction.UpgradeContract:
133
+ case TokenBrigeInstruction.RegisterChain:
134
+ return {
135
+ data: '',
136
+ name: TokenBrigeInstruction[u8Arr[0]]
137
+ };
138
+ default:
139
+ return null;
140
+ }
141
+ }
142
+ onInitialize(handler) {
143
+ this.onInstruction('Initialize', (ins, ctx) => {
144
+ if (ins) {
145
+ handler(ins.data, ctx);
146
+ }
147
+ });
148
+ return this;
149
+ }
150
+ onAttestToken(handler) {
151
+ this.onInstruction('AttestToken', (ins, ctx) => {
152
+ if (ins) {
153
+ handler(ins.data, ctx);
154
+ }
155
+ });
156
+ return this;
157
+ }
158
+ onTransferWrapped(handler) {
159
+ this.onInstruction('TransferWrapped', (ins, ctx) => {
160
+ if (ins) {
161
+ handler(ins.data, ctx);
162
+ }
163
+ });
164
+ return this;
165
+ }
166
+ onTransferNativeWithPayload(handler) {
167
+ this.onInstruction('TransferNativeWithPayload', (ins, ctx) => {
168
+ if (ins) {
169
+ handler(ins.data, ctx);
170
+ }
171
+ });
172
+ return this;
173
+ }
174
+ onTransferWrappedWithPaylod(handler) {
175
+ this.onInstruction('TransferWrappedWithPaylod', (ins, ctx) => {
176
+ if (ins) {
177
+ handler(ins.data, ctx);
178
+ }
179
+ });
180
+ return this;
181
+ }
182
+ onTransferNative(handler) {
183
+ this.onInstruction('TransferNative', (ins, ctx) => {
184
+ if (ins) {
185
+ handler(ins.data, ctx);
186
+ }
187
+ });
188
+ return this;
189
+ }
190
+ }
191
+ exports.TokenBridgeProcessor = TokenBridgeProcessor;
192
+ //# sourceMappingURL=wormhole_processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wormhole_processor.js","sourceRoot":"","sources":["../../../src/test-case/types/wormhole_processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4DAA8C;AAC9C,qCAAgE;AAChE,gDAAuB;AAEvB,0IAA0I;AAC1I,IAAK,qBAcJ;AAdD,WAAK,qBAAqB;IACxB,6EAAc,CAAA;IACd,+EAAW,CAAA;IACX,qFAAc,CAAA;IACd,uFAAe,CAAA;IACf,uFAAe,CAAA;IACf,qFAAc,CAAA;IACd,mFAAa,CAAA;IACb,mFAAa,CAAA;IACb,uFAAe,CAAA;IACf,2GAAyB,CAAA;IACzB,8GAA0B,CAAA;IAC1B,8GAA0B,CAAA;IAC1B,4GAAyB,CAAA;AAC3B,CAAC,EAdI,qBAAqB,KAArB,qBAAqB,QAczB;AAED,MAAa,oBAAqB,SAAQ,yBAAmB;IAE3D,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAAgB,EAAE,IAAI,GAAG,UAAU;QAC9D,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC1D,CAAC;IAEgB,kBAAkB,GAAG;QACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QAChB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;KAC1B,CAAA;IAED,2JAA2J;IAC1I,6BAA6B,GAAG;QAC/C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;QACzB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACtB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;KAC3D,CAAA;IAEgB,iBAAiB,GAAG;QACnC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;KACnB,CAAA;IAEgB,oBAAoB,GAAG;QACtC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC1B,CAAA;IAEM,iBAAiB,CAAC,GAAW;QAClC,MAAM,KAAK,GAAG,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,IAAS,CAAA;QACb,sEAAsE;QACtE,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE;YAChB,KAAK,qBAAqB,CAAC,UAAU;gBACnC,OAAO;oBACL,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,UAAU,CAAC;iBAC9D,CAAA;YACH,KAAK,qBAAqB,CAAC,cAAc;gBACvC,yKAAyK;gBACzK,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACtG,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,cAAc,CAAC;iBAClE,CAAA;YACH,KAAK,qBAAqB,CAAC,eAAe;gBACxC,wKAAwK;gBACxK,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACvG,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,eAAe,CAAC;iBACnE,CAAA;YACH,KAAK,qBAAqB,CAAC,yBAAyB;gBAClD,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,+BAA+B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5H,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,yBAAyB,CAAC;iBAC7E,CAAA;YACH,KAAK,qBAAqB,CAAC,0BAA0B;gBACnD,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,gCAAgC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7H,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,0BAA0B,CAAC;iBAC9E,CAAA;YACH,KAAK,qBAAqB,CAAC,UAAU;gBACnC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpG,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,UAAU,CAAC;iBAC9D,CAAA;YACH,KAAK,qBAAqB,CAAC,WAAW;gBACpC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClG,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,WAAW,CAAC;iBAC/D,CAAA;YACH,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,yBAAyB,CAAC;YACrD,KAAK,qBAAqB,CAAC,eAAe,CAAC;YAC3C,KAAK,qBAAqB,CAAC,0BAA0B,CAAC;YACtD,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,eAAe,CAAC;YAC3C,KAAK,qBAAqB,CAAC,aAAa;gBACtC,OAAO;oBACL,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACtC,CAAA;YAEH;gBACE,OAAO,IAAI,CAAA;SACd;IACH,CAAC;IAGD,YAAY,CAAC,OAAgD;QAC3D,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACzD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,OAAgD;QAC5D,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC1D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAGD,iBAAiB,CAAC,OAAgD;QAChE,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC9D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2BAA2B,CAAC,OAAgD;QAC1E,IAAI,CAAC,aAAa,CAAC,2BAA2B,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACxE,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2BAA2B,CAAC,OAAgD;QAC1E,IAAI,CAAC,aAAa,CAAC,2BAA2B,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACxE,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gBAAgB,CAAC,OAAgD;QAC/D,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC7D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA5JD,oDA4JC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wormhole_processor_1 = require("./types/wormhole_processor");
4
+ wormhole_processor_1.TokenBridgeProcessor.bind('wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb', 'https://api.mainnet-beta.solana.com').onTransferNative((args, ctx) => {
5
+ ctx.meter.Counter('total_transfer_amount').add(args.amount);
6
+ });
7
+ //# sourceMappingURL=wormhole-token-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wormhole-token-bridge.js","sourceRoot":"","sources":["../../src/test-case/wormhole-token-bridge.ts"],"names":[],"mappings":";;AAAA,mEAAiE;AAEjE,yCAAoB,CAAC,IAAI,CACvB,6CAA6C,EAC7C,qCAAqC,CACtC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC/B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC7D,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -12,19 +12,22 @@
12
12
  "ts-start": "ts-node --files src/processor.ts src/test-case/erc20.ts",
13
13
  "cli": "yarn build && node dist/cli/cli.js",
14
14
  "test": "ts-mocha --paths src/**/*.test.ts src/*.test.ts",
15
- "gen_test_abi": "typechain --target dist/target-ethers-sentio --out-dir src/test-case/types 'src/test-case/abis/*.json'"
15
+ "gen_test_abi": "yarn gen_evm_abi && yarn gen_solana_abi",
16
+ "gen_evm_abi": "typechain --target dist/target-ethers-sentio --out-dir src/test-case/types 'src/test-case/abis/*.json'",
17
+ "gen_solana_abi": "ts-node src/cli/solana-code-gen.ts src/test-case types"
16
18
  },
17
19
  "bin": {
18
20
  "processor": "./dist/processor.js",
19
21
  "sentio": "./dist/cli/cli.js"
20
22
  },
21
- "version": "0.1.14",
23
+ "version": "0.2.17",
22
24
  "dependencies": {
23
25
  "@ethersproject/providers": "^5.6.7",
24
26
  "@project-serum/anchor": "^0.25.0",
25
27
  "@solana/web3.js": "^1.47.3",
26
28
  "@typechain/ethers-v5": "^10.0.0",
27
29
  "@types/node-fetch": "^2.6.2",
30
+ "@types/bn.js": "^5.1.0",
28
31
  "bn.js": "^5.2.1",
29
32
  "bs58": "^5.0.0",
30
33
  "command-line-args": "^5.2.1",
@@ -35,7 +38,7 @@
35
38
  "google-protobuf": "^3.15.8",
36
39
  "js-yaml": "^4.1.0",
37
40
  "log-timestamp": "^0.3.0",
38
- "nice-grpc": "^1.2.0",
41
+ "nice-grpc": "^2.0.0",
39
42
  "node-fetch": "2",
40
43
  "ts-loader": "^9.3.0",
41
44
  "typechain": "^8.0.0",
@@ -44,7 +47,6 @@
44
47
  },
45
48
  "devDependencies": {
46
49
  "@bazel/typescript": "^5.4.2",
47
- "@types/bn.js": "^5.1.0",
48
50
  "@types/chai": "^4.3.1",
49
51
  "@types/command-line-args": "^5.2.0",
50
52
  "@types/command-line-usage": "^5.0.2",
@@ -1,34 +0,0 @@
1
- import { Context, ContractWrapper } from './context';
2
- import { Block, Log } from '@ethersproject/abstract-provider';
3
- import { BaseContract, EventFilter } from 'ethers';
4
- import { Networkish } from '@ethersproject/networks';
5
- import { Event } from '@ethersproject/contracts';
6
- import { O11yResult } from './gen/processor/protos/processor';
7
- import Long from 'long';
8
- import { Network } from '@ethersproject/providers';
9
- declare type IndexConfigure = {
10
- startBlock: Long;
11
- endBlock?: Long;
12
- chunkSize?: number;
13
- };
14
- declare class EventsHandler {
15
- filters: EventFilter[];
16
- handler: (event: Log) => Promise<O11yResult>;
17
- }
18
- export declare abstract class BaseProcessor<TContract extends BaseContract, TContractWrapper extends ContractWrapper<TContract>> {
19
- blockHandlers: ((block: Block) => Promise<O11yResult>)[];
20
- eventHandlers: EventsHandler[];
21
- contract: TContractWrapper;
22
- network: Network;
23
- name: string;
24
- config: IndexConfigure;
25
- constructor(address: string, name: string, network?: Networkish);
26
- protected abstract bindInternal(address: string, network: Networkish): TContractWrapper;
27
- startBlock(startBlock: Long | number): this;
28
- endBlock(endBlock: Long | number): this;
29
- configure(option: IndexConfigure): void;
30
- isBind(): boolean;
31
- onEvent(handler: (event: Event, ctx: Context<TContract, TContractWrapper>) => void, filter: EventFilter | EventFilter[]): void;
32
- onBlock(handler: (block: Block, ctx: Context<TContract, TContractWrapper>) => void): void;
33
- }
34
- export {};
@@ -1,110 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseProcessor = void 0;
7
- const context_1 = require("./context");
8
- const long_1 = __importDefault(require("long"));
9
- const providers_1 = require("@ethersproject/providers");
10
- const nice_grpc_1 = require("nice-grpc");
11
- class EventsHandler {
12
- filters;
13
- handler;
14
- }
15
- class BaseProcessor {
16
- blockHandlers = [];
17
- eventHandlers = [];
18
- contract;
19
- network;
20
- name;
21
- config = { startBlock: new long_1.default(0) };
22
- constructor(address, name, network = 1) {
23
- this.name = name;
24
- this.network = (0, providers_1.getNetwork)(network);
25
- this.contract = this.bindInternal(address, network);
26
- if (!globalThis.Processors) {
27
- globalThis.Processors = [];
28
- }
29
- globalThis.Processors.push(this);
30
- }
31
- startBlock(startBlock) {
32
- if (typeof startBlock === 'number') {
33
- startBlock = long_1.default.fromNumber(startBlock);
34
- }
35
- this.config.startBlock = startBlock;
36
- return this;
37
- }
38
- endBlock(endBlock) {
39
- if (typeof endBlock === 'number') {
40
- endBlock = long_1.default.fromNumber(endBlock);
41
- }
42
- this.config.endBlock = endBlock;
43
- return this;
44
- }
45
- configure(option) {
46
- this.config = option;
47
- }
48
- isBind() {
49
- return this.contract._underlineContract.address !== '';
50
- }
51
- onEvent(handler, filter) {
52
- if (!this.isBind()) {
53
- throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INTERNAL, 'processor not bind');
54
- }
55
- const contract = this.contract;
56
- const chainId = this.network.chainId;
57
- let _filters = [];
58
- if (Array.isArray(filter)) {
59
- _filters = filter;
60
- }
61
- else {
62
- _filters.push(filter);
63
- }
64
- this.eventHandlers.push({
65
- filters: _filters,
66
- handler: async function (log) {
67
- const ctx = new context_1.Context(contract, chainId, undefined, log);
68
- // let event: Event = <Event>deepCopy(log);
69
- const event = log;
70
- const parsed = contract._underlineContract.interface.parseLog(log);
71
- if (parsed) {
72
- event.args = parsed.args;
73
- event.decode = (data, topics) => {
74
- return contract._underlineContract.interface.decodeEventLog(parsed.eventFragment, data, topics);
75
- };
76
- event.event = parsed.name;
77
- event.eventSignature = parsed.signature;
78
- // TODO fix this bug
79
- await handler(event, ctx);
80
- return {
81
- histograms: ctx.histograms,
82
- counters: ctx.counters,
83
- };
84
- }
85
- return {
86
- histograms: [],
87
- counters: [],
88
- };
89
- },
90
- });
91
- }
92
- onBlock(handler) {
93
- if (!this.isBind()) {
94
- throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INTERNAL, 'Registry not bind');
95
- }
96
- const contract = this.contract;
97
- const chainId = this.network.chainId;
98
- this.blockHandlers.push(async function (block) {
99
- contract.block = block;
100
- const ctx = new context_1.Context(contract, chainId, block, undefined);
101
- await handler(block, ctx);
102
- return {
103
- histograms: ctx.histograms,
104
- counters: ctx.counters,
105
- };
106
- });
107
- }
108
- }
109
- exports.BaseProcessor = BaseProcessor;
110
- //# sourceMappingURL=baseprocessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseprocessor.js","sourceRoot":"","sources":["../src/baseprocessor.ts"],"names":[],"mappings":"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"}