@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.
- package/dist/base-processor-template.d.ts +19 -0
- package/dist/base-processor-template.js +80 -0
- package/dist/base-processor-template.js.map +1 -0
- package/dist/base-processor.d.ts +7 -18
- package/dist/base-processor.js +69 -28
- package/dist/base-processor.js.map +1 -1
- package/dist/bind-options.d.ts +16 -0
- package/dist/bind-options.js +20 -0
- package/dist/bind-options.js.map +1 -0
- package/dist/cli/build.d.ts +3 -1
- package/dist/cli/build.js +100 -17
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/cli.d.ts +1 -2
- package/dist/cli/cli.js +9 -15
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/config.d.ts +7 -1
- package/dist/cli/config.js +4 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/{processor_server.d.ts → cli/solana-code-gen.d.ts} +0 -0
- package/dist/cli/solana-code-gen.js +19 -0
- package/dist/cli/solana-code-gen.js.map +1 -0
- package/dist/cli/upload.js +4 -2
- package/dist/cli/upload.js.map +1 -1
- package/dist/gen/processor/protos/processor.d.ts +35 -10
- package/dist/gen/processor/protos/processor.js +238 -53
- package/dist/gen/processor/protos/processor.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/numberish.test.d.ts +1 -0
- package/dist/numberish.test.js +9 -0
- package/dist/numberish.test.js.map +1 -0
- package/dist/provider.d.ts +1 -1
- package/dist/provider.js +3 -0
- package/dist/provider.js.map +1 -1
- package/dist/service.d.ts +4 -2
- package/dist/service.js +85 -47
- package/dist/service.js.map +1 -1
- package/dist/solana-processor.d.ts +6 -6
- package/dist/solana-processor.js +5 -20
- package/dist/solana-processor.js.map +1 -1
- package/dist/target-ethers-sentio/codegen.js +56 -15
- package/dist/target-ethers-sentio/codegen.js.map +1 -1
- package/dist/test-case/clean-test.d.ts +1 -0
- package/dist/test-case/clean-test.js +11 -0
- package/dist/test-case/clean-test.js.map +1 -0
- package/dist/test-case/erc20-template.d.ts +1 -0
- package/dist/test-case/erc20-template.js +23 -0
- package/dist/test-case/erc20-template.js.map +1 -0
- package/dist/test-case/erc20-template.test.d.ts +1 -0
- package/dist/test-case/erc20-template.test.js +69 -0
- package/dist/test-case/erc20-template.test.js.map +1 -0
- package/dist/test-case/erc20.js +22 -6
- package/dist/test-case/erc20.js.map +1 -1
- package/dist/test-case/erc20.test.d.ts +1 -0
- package/dist/test-case/erc20.test.js +143 -0
- package/dist/test-case/erc20.test.js.map +1 -0
- package/dist/test-case/mirrorworld.d.ts +1 -4
- package/dist/test-case/mirrorworld.js +37 -57
- package/dist/test-case/mirrorworld.js.map +1 -1
- package/dist/test-case/solana.test.d.ts +1 -0
- package/dist/test-case/solana.test.js +56 -0
- package/dist/test-case/solana.test.js.map +1 -0
- package/dist/test-case/types/{ERC20.d.ts → Erc20.d.ts} +0 -0
- package/dist/test-case/types/{ERC20.js → Erc20.js} +0 -0
- package/dist/test-case/types/{ERC20.js.map → Erc20.js.map} +0 -0
- package/dist/test-case/types/erc20_processor.d.ts +9 -8
- package/dist/test-case/types/erc20_processor.js +38 -14
- package/dist/test-case/types/erc20_processor.js.map +1 -1
- package/dist/test-case/types/factories/{ERC20__factory.d.ts → Erc20__factory.d.ts} +0 -0
- package/dist/test-case/types/factories/{ERC20__factory.js → Erc20__factory.js} +0 -0
- package/dist/test-case/types/factories/{ERC20__factory.js.map → Erc20__factory.js.map} +0 -0
- package/dist/test-case/types/game_wallet_processor.d.ts +107 -0
- package/dist/test-case/types/game_wallet_processor.js +102 -0
- package/dist/test-case/types/game_wallet_processor.js.map +1 -0
- package/dist/test-case/types/wormhole_processor.d.ts +16 -0
- package/dist/test-case/types/wormhole_processor.js +192 -0
- package/dist/test-case/types/wormhole_processor.js.map +1 -0
- package/dist/test-case/wormhole-token-bridge.d.ts +1 -0
- package/dist/test-case/wormhole-token-bridge.js +7 -0
- package/dist/test-case/wormhole-token-bridge.js.map +1 -0
- package/package.json +6 -4
- package/dist/baseprocessor.d.ts +0 -34
- package/dist/baseprocessor.js +0 -110
- package/dist/baseprocessor.js.map +0 -1
- package/dist/processor_server.js +0 -67
- package/dist/processor_server.js.map +0 -1
- package/dist/solana_processor.d.ts +0 -25
- package/dist/solana_processor.js +0 -84
- package/dist/solana_processor.js.map +0 -1
- package/dist/test_case/erc20.d.ts +0 -1
- package/dist/test_case/erc20.js +0 -22
- package/dist/test_case/erc20.js.map +0 -1
- package/dist/test_case/mirrorworld.d.ts +0 -4
- package/dist/test_case/mirrorworld.js +0 -62
- package/dist/test_case/mirrorworld.js.map +0 -1
- package/dist/test_case/types/ERC20.d.ts +0 -150
- package/dist/test_case/types/ERC20.js +0 -3
- package/dist/test_case/types/ERC20.js.map +0 -1
- package/dist/test_case/types/common.d.ts +0 -22
- package/dist/test_case/types/common.js +0 -3
- package/dist/test_case/types/common.js.map +0 -1
- package/dist/test_case/types/erc20_processor.d.ts +0 -28
- package/dist/test_case/types/erc20_processor.js +0 -58
- package/dist/test_case/types/erc20_processor.js.map +0 -1
- package/dist/test_case/types/factories/ERC20__factory.d.ts +0 -35
- package/dist/test_case/types/factories/ERC20__factory.js +0 -216
- package/dist/test_case/types/factories/ERC20__factory.js.map +0 -1
- package/dist/test_case/types/factories/index.d.ts +0 -1
- package/dist/test_case/types/factories/index.js +0 -9
- package/dist/test_case/types/factories/index.js.map +0 -1
- package/dist/test_case/types/game_wallet.d.ts +0 -45
- package/dist/test_case/types/game_wallet.js +0 -1396
- package/dist/test_case/types/game_wallet.js.map +0 -1
- package/dist/test_case/types/index.d.ts +0 -3
- package/dist/test_case/types/index.js +0 -30
- 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":"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"}
|
|
@@ -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": "
|
|
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.
|
|
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": "^
|
|
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",
|
package/dist/baseprocessor.d.ts
DELETED
|
@@ -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 {};
|
package/dist/baseprocessor.js
DELETED
|
@@ -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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"}
|