Skip to content

Commit f1466f0

Browse files
committed
added getOriginalToken method
1 parent d9300ab commit f1466f0

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

sdk/route/src/executor/multiToken.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,43 @@ export class MultiTokenNttExecutorRoute<N extends Network>
165165
};
166166
}
167167

168+
// TODO: these two methods are identical to the ManualRoute version
169+
async isWrappedToken(token: TokenId): Promise<boolean> {
170+
const contracts = MultiTokenNttRoute.resolveContracts(
171+
this.staticConfig.contracts,
172+
token.chain
173+
);
174+
175+
const chain = this.wh.getChain(token.chain);
176+
const ntt = await chain.getProtocol("MultiTokenNtt", {
177+
multiTokenNtt: contracts,
178+
});
179+
180+
return await ntt.isWrappedToken(token);
181+
}
182+
183+
async getOriginalToken(token: TokenId): Promise<TokenId> {
184+
const contracts = MultiTokenNttRoute.resolveContracts(
185+
this.staticConfig.contracts,
186+
token.chain
187+
);
188+
189+
const chain = this.wh.getChain(token.chain);
190+
const ntt = await chain.getProtocol("MultiTokenNtt", {
191+
multiTokenNtt: contracts,
192+
});
193+
194+
const originalToken = await ntt.getOriginalToken(token);
195+
if (originalToken === null) {
196+
throw new Error("Original token not found");
197+
}
198+
199+
return {
200+
chain: originalToken.chain,
201+
address: originalToken.address.toNative(originalToken.chain),
202+
};
203+
}
204+
168205
async validate(
169206
request: routes.RouteTransferRequest<N>,
170207
params: Tp
@@ -861,6 +898,9 @@ export class MultiTokenNttExecutorRoute<N extends Network>
861898
);
862899
}
863900
yield receipt;
901+
// We are breaking here so we only track one transceiver at a time
902+
// until all transceivers have attested. Otherwise the receipt state
903+
// may jump around too much resulting in a glitchy UI.
864904
break;
865905
}
866906
}

sdk/route/src/multiTokenManual.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,28 @@ export class MultiTokenNttManualRoute<N extends Network>
116116
return await ntt.isWrappedToken(token);
117117
}
118118

119+
async getOriginalToken(token: TokenId): Promise<TokenId> {
120+
const contracts = MultiTokenNttRoute.resolveContracts(
121+
this.staticConfig.contracts,
122+
token.chain
123+
);
124+
125+
const chain = this.wh.getChain(token.chain);
126+
const ntt = await chain.getProtocol("MultiTokenNtt", {
127+
multiTokenNtt: contracts,
128+
});
129+
130+
const originalToken = await ntt.getOriginalToken(token);
131+
if (originalToken === null) {
132+
throw new Error("Original token not found");
133+
}
134+
135+
return {
136+
chain: originalToken.chain,
137+
address: originalToken.address.toNative(originalToken.chain),
138+
};
139+
}
140+
119141
async validate(
120142
request: routes.RouteTransferRequest<N>,
121143
params: Tp

0 commit comments

Comments
 (0)