@sentio/sdk 0.1.12 → 0.2.14
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/chainmap.d.ts +4 -0
- package/dist/chainmap.js +95 -0
- package/dist/chainmap.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/cli/solana-code-gen.d.ts +2 -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 +50 -3
- package/dist/gen/processor/protos/processor.js +244 -52
- package/dist/gen/processor/protos/processor.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -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 -1
- package/dist/service.js +90 -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 +46 -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.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 +173 -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_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/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
|
@@ -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,18 +12,21 @@
|
|
|
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.14",
|
|
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",
|
|
29
|
+
"@types/node-fetch": "^2.6.2",
|
|
27
30
|
"bn.js": "^5.2.1",
|
|
28
31
|
"bs58": "^5.0.0",
|
|
29
32
|
"command-line-args": "^5.2.1",
|
|
@@ -34,7 +37,7 @@
|
|
|
34
37
|
"google-protobuf": "^3.15.8",
|
|
35
38
|
"js-yaml": "^4.1.0",
|
|
36
39
|
"log-timestamp": "^0.3.0",
|
|
37
|
-
"nice-grpc": "^
|
|
40
|
+
"nice-grpc": "^2.0.0",
|
|
38
41
|
"node-fetch": "2",
|
|
39
42
|
"ts-loader": "^9.3.0",
|
|
40
43
|
"typechain": "^8.0.0",
|
|
@@ -54,7 +57,6 @@
|
|
|
54
57
|
"@types/mkdirp": "^1.0.2",
|
|
55
58
|
"@types/mocha": "^9.1.1",
|
|
56
59
|
"@types/node": "^18.0.4",
|
|
57
|
-
"@types/node-fetch": "^2.6.2",
|
|
58
60
|
"chai": "^4.3.6",
|
|
59
61
|
"mocha": "^10.0.0",
|
|
60
62
|
"ts-mocha": "^10.0.0",
|