Skip to content

Commit b958b19

Browse files
authored
sdk: multi-token-ntt protocol support (#674)
* sdk: multi-token-ntt protocol support Adds support for the MultiTokenNtt protocol along with two new routes: MultiTokenNtt{Manual,Executor}Route. * feat: track manages its own timeout * chore: audited contract changes * fix: fix inbound queued check * fix: complete inbound queued xfer fix * chore: run prettier * sdk: added unit tests for axelar utils * sdk: pr review cleanup * chore: remove axelar to definitions package to fix build * feat: axelar gas multiplier
1 parent c680b5c commit b958b19

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+10364
-96
lines changed

cli/src/index.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2843,7 +2843,7 @@ async function upgradeSui<N extends Network, C extends SuiChains>(
28432843
// Helper function to perform complete package upgrade in a single PTB
28442844
async function performPackageUpgradeInPTB<
28452845
N extends Network,
2846-
C extends SuiChains
2846+
C extends SuiChains,
28472847
>(
28482848
ctx: ChainContext<N, C>,
28492849
packagePath: string,
@@ -4230,9 +4230,8 @@ async function missingConfigs(
42304230
missing.standardRelaying.push([toChain, desiredStandardRelaying]);
42314231
}
42324232
} else if (toIsSolana) {
4233-
const specialRelaying = await whTransceiver.isSpecialRelayingEnabled(
4234-
toChain
4235-
);
4233+
const specialRelaying =
4234+
await whTransceiver.isSpecialRelayingEnabled(toChain);
42364235
const desiredSpecialRelaying = !(
42374236
from.config.local?.transceivers.wormhole.executor ?? false
42384237
);

cli/src/signSendWait.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export const signSendWaitEvmSpecialOwner = async <N extends Network>(
6262

6363
export const signSendWaitWithOverride = async <
6464
N extends Network,
65-
C extends Chain
65+
C extends Chain,
6666
>(
6767
chain: ChainContext<N, C>,
6868
xfer: AsyncGenerator<UnsignedTransaction<N, C>>,
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 mockMultiTokenNtt = {
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+
multiTokenNtt: mockMultiTokenNtt,
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)