@anywalletkit/protocol-swap2-omniston 0.3.0 → 0.3.1

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/README.md CHANGED
@@ -34,12 +34,14 @@ Every route is fail-closed until its allowlists and validators are configured:
34
34
  wallets, pTON wallet ownership and DeDust pool pairs on chain.
35
35
  `tonSwapPayloadCheck: "report"` traces `ton-swap-payload <reason>` instead
36
36
  of refusing (default `"enforce"`).
37
- Behind `remoteProvider`, the app checks the built swap itself:
38
- `remoteProvider({name: "omniston", baseUrl, verifyBuild: omnistonVerifyBuild({validateTonSwapTarget,
39
- validateTonSwapLeg})})` opens the body with `checkTonSwapPayload` against the app's own request
40
- (receiver, refund, on-chain minimum, input; the quote carries `routeSteps`) and asks the app's
41
- validators about the DEX it pays. Without `verifyBuild` the engine refuses remote cell bodies; a
42
- TON → EVM escrow body cannot be checked on the client and is refused by this helper.
37
+ Behind `remoteProvider`, the app checks the built body itself:
38
+ `remoteProvider({name: "omniston", baseUrl, verifyBuild: omnistonVerifyBuild({...createOmnistonTonValidators()})})`.
39
+ A TON → TON swap body is opened with `checkTonSwapPayload` against the app's own request (receiver,
40
+ refund, on-chain minimum, input; the quote carries `routeSteps`) and the DEX it pays is confirmed with
41
+ the app's validators. A TON → EVM escrow body goes to `verifyTonEscrowBuild`: the jetton amount, the
42
+ trader as owner, the destination chain, address and token and the quote's minimum delivery come from
43
+ the app, the protocol contract from `trustedProtocolAddresses`, and the escrow code, authority key and
44
+ timelocks are the audited ones. Without `verifyBuild` the engine refuses remote cell bodies.
43
45
  - **TON → EVM** (HTLC order, the wallet pays a jetton escrow): factory
44
46
  allowlisted on both chains, `validateTonJettonWallet`,
45
47
  `validateTonEscrowPayload`, `validateEvmOutputPosition`.
@@ -1112,7 +1112,27 @@ function omnistonVerifyBuild(hooks) {
1112
1112
  return async (quote, tx, params) => {
1113
1113
  if (tx.bodyBoc === void 0) return null;
1114
1114
  if (!params) return "the request this quote answered is unknown";
1115
- if (quote.providerData?.settlement !== "swap") return "only TON swap bodies can be checked on the client";
1115
+ if (quote.providerData?.settlement !== "swap") {
1116
+ if (params.sourceChain.startsWith("ton:") && params.destChain.startsWith("eip155:")) {
1117
+ if (!hooks.verifyTonEscrowBuild) return "a TON \u2192 EVM escrow body needs verifyTonEscrowBuild (createOmnistonTonValidators)";
1118
+ if (!params.refundAddress) return "the trader's TON address (refundAddress) is unknown";
1119
+ const floor = [quote.minDestAmount, params.minAmountOut ?? "0"].filter((v) => /^\d{1,80}$/.test(v)).map((v) => BigInt(v)).reduce((a, b) => a > b ? a : b, 0n);
1120
+ try {
1121
+ return await hooks.verifyTonEscrowBuild({
1122
+ payloadBocHex: Buffer2.from(tx.bodyBoc, "base64").toString("hex"),
1123
+ ownerAddress: params.refundAddress,
1124
+ inputUnits: quote.sourceAmount,
1125
+ destinationChain: params.destChain,
1126
+ destinationAddress: params.destAddress,
1127
+ outputTokenAddress: params.destToken,
1128
+ minResolverSendsUnits: floor.toString()
1129
+ });
1130
+ } catch {
1131
+ return "the escrow body could not be checked";
1132
+ }
1133
+ }
1134
+ return "only TON swap and TON \u2192 EVM escrow bodies can be checked on the client";
1135
+ }
1116
1136
  let steps;
1117
1137
  try {
1118
1138
  steps = JSON.parse(quote.providerData.routeSteps ?? "");
@@ -2253,4 +2273,4 @@ export {
2253
2273
  omnistonVerifyBuild,
2254
2274
  omnistonProvider
2255
2275
  };
2256
- //# sourceMappingURL=chunk-JVFDD7PV.js.map
2276
+ //# sourceMappingURL=chunk-HOTFZYSW.js.map