@wormhole-foundation/sdk-evm-core 0.5.0-alpha.0
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/cjs/core.d.ts +24 -0
- package/dist/cjs/core.d.ts.map +1 -0
- package/dist/cjs/core.js +112 -0
- package/dist/cjs/core.js.map +1 -0
- package/dist/cjs/ethers-contracts/Implementation.d.ts +551 -0
- package/dist/cjs/ethers-contracts/Implementation.d.ts.map +1 -0
- package/dist/cjs/ethers-contracts/Implementation.js +3 -0
- package/dist/cjs/ethers-contracts/Implementation.js.map +1 -0
- package/dist/cjs/ethers-contracts/common.d.ts +51 -0
- package/dist/cjs/ethers-contracts/common.d.ts.map +1 -0
- package/dist/cjs/ethers-contracts/common.js +3 -0
- package/dist/cjs/ethers-contracts/common.js.map +1 -0
- package/dist/cjs/ethers-contracts/factories/Implementation__factory.d.ts +820 -0
- package/dist/cjs/ethers-contracts/factories/Implementation__factory.d.ts.map +1 -0
- package/dist/cjs/ethers-contracts/factories/Implementation__factory.js +1078 -0
- package/dist/cjs/ethers-contracts/factories/Implementation__factory.js.map +1 -0
- package/dist/cjs/ethers-contracts/factories/index.d.ts +2 -0
- package/dist/cjs/ethers-contracts/factories/index.d.ts.map +1 -0
- package/dist/cjs/ethers-contracts/factories/index.js +18 -0
- package/dist/cjs/ethers-contracts/factories/index.js.map +1 -0
- package/dist/cjs/ethers-contracts/index.d.ts +3 -0
- package/dist/cjs/ethers-contracts/index.d.ts.map +1 -0
- package/dist/cjs/ethers-contracts/index.js +19 -0
- package/dist/cjs/ethers-contracts/index.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/core.d.ts +24 -0
- package/dist/esm/core.d.ts.map +1 -0
- package/dist/esm/core.js +108 -0
- package/dist/esm/core.js.map +1 -0
- package/dist/esm/ethers-contracts/Implementation.d.ts +551 -0
- package/dist/esm/ethers-contracts/Implementation.d.ts.map +1 -0
- package/dist/esm/ethers-contracts/Implementation.js +2 -0
- package/dist/esm/ethers-contracts/Implementation.js.map +1 -0
- package/dist/esm/ethers-contracts/common.d.ts +51 -0
- package/dist/esm/ethers-contracts/common.d.ts.map +1 -0
- package/dist/esm/ethers-contracts/common.js +2 -0
- package/dist/esm/ethers-contracts/common.js.map +1 -0
- package/dist/esm/ethers-contracts/factories/Implementation__factory.d.ts +820 -0
- package/dist/esm/ethers-contracts/factories/Implementation__factory.d.ts.map +1 -0
- package/dist/esm/ethers-contracts/factories/Implementation__factory.js +1074 -0
- package/dist/esm/ethers-contracts/factories/Implementation__factory.js.map +1 -0
- package/dist/esm/ethers-contracts/factories/index.d.ts +2 -0
- package/dist/esm/ethers-contracts/factories/index.d.ts.map +1 -0
- package/dist/esm/ethers-contracts/factories/index.js +2 -0
- package/dist/esm/ethers-contracts/factories/index.js.map +1 -0
- package/dist/esm/ethers-contracts/index.d.ts +3 -0
- package/dist/esm/ethers-contracts/index.d.ts.map +1 -0
- package/dist/esm/ethers-contracts/index.js +3 -0
- package/dist/esm/ethers-contracts/index.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChainsConfig, Contracts, Network, TxHash, VAA, WormholeCore, WormholeMessageId } from '@wormhole-foundation/sdk-connect';
|
|
2
|
+
import { Provider } from 'ethers';
|
|
3
|
+
import { Implementation, ImplementationInterface } from './ethers-contracts';
|
|
4
|
+
import { AnyEvmAddress, EvmChains, EvmPlatformType, EvmUnsignedTransaction } from '@wormhole-foundation/sdk-evm';
|
|
5
|
+
export declare class EvmWormholeCore<N extends Network, C extends EvmChains> implements WormholeCore<N, C> {
|
|
6
|
+
readonly network: N;
|
|
7
|
+
readonly chain: C;
|
|
8
|
+
readonly provider: Provider;
|
|
9
|
+
readonly contracts: Contracts;
|
|
10
|
+
readonly chainId: bigint;
|
|
11
|
+
readonly coreAddress: string;
|
|
12
|
+
readonly core: Implementation;
|
|
13
|
+
readonly coreIface: ImplementationInterface;
|
|
14
|
+
private constructor();
|
|
15
|
+
getMessageFee(): Promise<bigint>;
|
|
16
|
+
getGuardianSetIndex(): Promise<number>;
|
|
17
|
+
static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmWormholeCore<N, EvmChains>>;
|
|
18
|
+
publishMessage(sender: AnyEvmAddress, message: Uint8Array, nonce: number, consistencyLevel: number): AsyncGenerator<EvmUnsignedTransaction<N, C>, void, unknown>;
|
|
19
|
+
verifyMessage(sender: AnyEvmAddress, vaa: VAA): AsyncGenerator<never, void, unknown>;
|
|
20
|
+
parseTransaction(txid: TxHash): Promise<WormholeMessageId[]>;
|
|
21
|
+
parseMessages(txid: string): Promise<VAA[]>;
|
|
22
|
+
private createUnsignedTx;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,OAAO,EACP,MAAM,EACN,GAAG,EACH,YAAY,EACZ,iBAAiB,EAGlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EACL,aAAa,EAEb,SAAS,EAET,eAAe,EACf,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AAEtC,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAU3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAX/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC;IAE5C,OAAO;IAuBD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;WAI/B,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAelC,cAAc,CACnB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM;IAgBnB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG;IAI9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0B5D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiCjD,OAAO,CAAC,gBAAgB;CAazB"}
|
package/dist/cjs/core.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvmWormholeCore = void 0;
|
|
4
|
+
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
|
|
7
|
+
class EvmWormholeCore {
|
|
8
|
+
network;
|
|
9
|
+
chain;
|
|
10
|
+
provider;
|
|
11
|
+
contracts;
|
|
12
|
+
chainId;
|
|
13
|
+
coreAddress;
|
|
14
|
+
core;
|
|
15
|
+
coreIface;
|
|
16
|
+
constructor(network, chain, provider, contracts) {
|
|
17
|
+
this.network = network;
|
|
18
|
+
this.chain = chain;
|
|
19
|
+
this.provider = provider;
|
|
20
|
+
this.contracts = contracts;
|
|
21
|
+
this.chainId = sdk_connect_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
|
|
22
|
+
this.coreIface = _1.ethers_contracts.Implementation__factory.createInterface();
|
|
23
|
+
const address = this.contracts.coreBridge;
|
|
24
|
+
if (!address)
|
|
25
|
+
throw new Error('Core bridge address not found');
|
|
26
|
+
this.coreAddress = address;
|
|
27
|
+
this.core = _1.ethers_contracts.Implementation__factory.connect(address, provider);
|
|
28
|
+
}
|
|
29
|
+
async getMessageFee() {
|
|
30
|
+
return await this.core.messageFee.staticCall();
|
|
31
|
+
}
|
|
32
|
+
async getGuardianSetIndex() {
|
|
33
|
+
return Number(await this.core.getCurrentGuardianSetIndex.staticCall());
|
|
34
|
+
}
|
|
35
|
+
static async fromRpc(provider, config) {
|
|
36
|
+
const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
|
|
37
|
+
const conf = config[chain];
|
|
38
|
+
if (conf.network !== network)
|
|
39
|
+
throw new Error(`Network mismatch: ${conf.network} != ${network}`);
|
|
40
|
+
return new EvmWormholeCore(network, chain, provider, conf.contracts);
|
|
41
|
+
}
|
|
42
|
+
async *publishMessage(sender, message, nonce, consistencyLevel) {
|
|
43
|
+
const senderAddr = new sdk_evm_1.EvmAddress(sender).toString();
|
|
44
|
+
const txReq = await this.core.publishMessage.populateTransaction(nonce, message, consistencyLevel);
|
|
45
|
+
yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddr), 'WormholeCore.publishMessage');
|
|
46
|
+
}
|
|
47
|
+
async *verifyMessage(sender, vaa) {
|
|
48
|
+
throw new Error('Not implemented.');
|
|
49
|
+
}
|
|
50
|
+
async parseTransaction(txid) {
|
|
51
|
+
const receipt = await this.provider.getTransactionReceipt(txid);
|
|
52
|
+
if (receipt === null)
|
|
53
|
+
return [];
|
|
54
|
+
return receipt.logs
|
|
55
|
+
.filter((l) => {
|
|
56
|
+
return l.address === this.coreAddress;
|
|
57
|
+
})
|
|
58
|
+
.map((log) => {
|
|
59
|
+
const { topics, data } = log;
|
|
60
|
+
const parsed = this.coreIface.parseLog({
|
|
61
|
+
topics: topics.slice(),
|
|
62
|
+
data,
|
|
63
|
+
});
|
|
64
|
+
if (parsed === null)
|
|
65
|
+
return undefined;
|
|
66
|
+
const emitterAddress = new sdk_evm_1.EvmAddress(parsed.args['sender']);
|
|
67
|
+
return {
|
|
68
|
+
chain: this.chain,
|
|
69
|
+
emitter: emitterAddress.toUniversalAddress(),
|
|
70
|
+
sequence: parsed.args['sequence'],
|
|
71
|
+
};
|
|
72
|
+
})
|
|
73
|
+
.filter(sdk_connect_1.isWormholeMessageId);
|
|
74
|
+
}
|
|
75
|
+
async parseMessages(txid) {
|
|
76
|
+
const receipt = await this.provider.getTransactionReceipt(txid);
|
|
77
|
+
if (receipt === null)
|
|
78
|
+
throw new Error('Could not get transaction receipt');
|
|
79
|
+
const gsIdx = await this.getGuardianSetIndex();
|
|
80
|
+
return receipt.logs
|
|
81
|
+
.filter((l) => {
|
|
82
|
+
return l.address === this.coreAddress;
|
|
83
|
+
})
|
|
84
|
+
.map((log) => {
|
|
85
|
+
const { topics, data } = log;
|
|
86
|
+
const parsed = this.coreIface.parseLog({
|
|
87
|
+
topics: topics.slice(),
|
|
88
|
+
data,
|
|
89
|
+
});
|
|
90
|
+
if (parsed === null)
|
|
91
|
+
return undefined;
|
|
92
|
+
const emitterAddress = new sdk_evm_1.EvmAddress(parsed.args['sender']);
|
|
93
|
+
return (0, sdk_connect_1.createVAA)('Uint8Array', {
|
|
94
|
+
guardianSet: gsIdx,
|
|
95
|
+
timestamp: 0,
|
|
96
|
+
emitterChain: this.chain,
|
|
97
|
+
emitterAddress: emitterAddress.toUniversalAddress(),
|
|
98
|
+
consistencyLevel: Number(parsed.args['consistencyLevel']),
|
|
99
|
+
sequence: BigInt(parsed.args['sequence']),
|
|
100
|
+
nonce: Number(parsed.args['nonce']),
|
|
101
|
+
signatures: [],
|
|
102
|
+
payload: parsed.args['payload'],
|
|
103
|
+
});
|
|
104
|
+
})
|
|
105
|
+
.filter((vaa) => !!vaa);
|
|
106
|
+
}
|
|
107
|
+
createUnsignedTx(txReq, description, parallelizable = false) {
|
|
108
|
+
return new sdk_evm_1.EvmUnsignedTransaction((0, sdk_evm_1.addChainId)(txReq, this.chainId), this.network, this.chain, description, parallelizable);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.EvmWormholeCore = EvmWormholeCore;
|
|
112
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
|