Skip to content

Commit ff9d9f3

Browse files
committed
sdk: multi-token-ntt protocol support
Adds support for the MultiTokenNtt protocol along with two new routes: MultiTokenNtt{Manual,Executor}Route.
1 parent f50e856 commit ff9d9f3

File tree

31 files changed

+9472
-49
lines changed

31 files changed

+9472
-49
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { MultiTokenNtt } from "@wormhole-foundation/sdk-definitions-ntt";
2+
import { EvmMultiTokenNtt } from "../src/multiTokenNtt.js";
3+
import { toUniversal } from "@wormhole-foundation/sdk-definitions";
4+
5+
describe("calculateLocalTokenAddress", () => {
6+
it("should calculate the correct local token address", async () => {
7+
const tokenImplementation = "0xbd7312fA1d9433ab2616FBE7aC615A58D81D2c8E";
8+
const creationCode =
9+
"0x604060808152610416908138038061001681610218565b93843982019181818403126102135780516001600160a01b038116808203610213576020838101516001600160401b0394919391858211610213570186601f820112156102135780519061007161006c83610253565b610218565b918083528583019886828401011161021357888661008f930161026e565b813b156101b9577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916841790556000927fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28051158015906101b2575b61010b575b855160d190816103458239f35b855194606086019081118682101761019e578697849283926101889952602788527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c87890152660819985a5b195960ca1b8a8901525190845af4913d15610194573d9061017a61006c83610253565b91825281943d92013e610291565b508038808080806100fe565b5060609250610291565b634e487b7160e01b84526041600452602484fd5b50826100f9565b855162461bcd60e51b815260048101859052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761023d57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161023d57601f01601f191660200190565b60005b8381106102815750506000910152565b8181015183820152602001610271565b919290156102f357508151156102a5575090565b3b156102ae5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156103065750805190602001fd5b6044604051809262461bcd60e51b825260206004830152610336815180928160248601526020868601910161026e565b601f01601f19168101030190fdfe608060405236156054577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54600090819081906001600160a01b0316368280378136915af43d82803e156050573d90f35b3d90fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54600090819081906001600160a01b0316368280378136915af43d82803e156050573d90f3fea26469706673582212206554f4df1904914343564cd467a416ab7dfbd4626b3eb40104613d037cd433f264736f6c63430008130033";
10+
const expectedAddress = "0xCaf00B2fB2fa0EAE51ecAfef7e45f13fF1BB448a";
11+
12+
const originalToken: MultiTokenNtt.OriginalTokenId = {
13+
chain: "Sepolia",
14+
// @ts-ignore
15+
address: toUniversal(
16+
"Sepolia",
17+
"0x738141EFf659625F2eAD4feECDfCD94155C67f18"
18+
),
19+
};
20+
21+
const tokenMeta = {
22+
name: "W Token",
23+
symbol: "Ws",
24+
decimals: 18,
25+
};
26+
27+
const mockManager = {
28+
tokenImplementation: jest.fn().mockResolvedValue(tokenImplementation),
29+
tokenProxyCreationCode: jest.fn().mockResolvedValue(creationCode),
30+
};
31+
32+
// Minimal implementation of MultiTokenNtt for testing
33+
const multiTokenNtt = {
34+
manager: mockManager,
35+
managerAddress: "0x600D3C45Cd002E7359D12597Bb8058a0C32A20Df",
36+
chain: "Monad",
37+
calculateLocalTokenAddress:
38+
EvmMultiTokenNtt.prototype.calculateLocalTokenAddress,
39+
};
40+
41+
const result = await multiTokenNtt.calculateLocalTokenAddress(
42+
originalToken,
43+
tokenMeta
44+
);
45+
46+
expect(result.toString()).toBe(expectedAddress);
47+
});
48+
});

0 commit comments

Comments
 (0)