@wormhole-foundation/sdk-connect 0.5.0-beta.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/circle-api.d.ts +16 -0
- package/dist/cjs/circle-api.d.ts.map +1 -0
- package/dist/cjs/circle-api.js +47 -0
- package/dist/cjs/circle-api.js.map +1 -0
- package/dist/cjs/common.d.ts +4 -0
- package/dist/cjs/common.d.ts.map +1 -0
- package/dist/cjs/common.js +40 -0
- package/dist/cjs/common.js.map +1 -0
- package/dist/cjs/config.d.ts +34 -0
- package/dist/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +52 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/index.d.ts +15 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/protocols/cctp/cctpTransfer.d.ts +41 -0
- package/dist/cjs/protocols/cctp/cctpTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/cctp/cctpTransfer.js +459 -0
- package/dist/cjs/protocols/cctp/cctpTransfer.js.map +1 -0
- package/dist/cjs/protocols/cctp/index.d.ts +2 -0
- package/dist/cjs/protocols/cctp/index.d.ts.map +1 -0
- package/dist/cjs/protocols/cctp/index.js +18 -0
- package/dist/cjs/protocols/cctp/index.js.map +1 -0
- package/dist/cjs/protocols/cctpTransfer.d.ts +41 -0
- package/dist/cjs/protocols/cctpTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/cctpTransfer.js +459 -0
- package/dist/cjs/protocols/cctpTransfer.js.map +1 -0
- package/dist/cjs/protocols/gateway/gatewayTransfer.d.ts +38 -0
- package/dist/cjs/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/gateway/gatewayTransfer.js +360 -0
- package/dist/cjs/protocols/gateway/gatewayTransfer.js.map +1 -0
- package/dist/cjs/protocols/gateway/index.d.ts +2 -0
- package/dist/cjs/protocols/gateway/index.d.ts.map +1 -0
- package/dist/cjs/protocols/gateway/index.js +18 -0
- package/dist/cjs/protocols/gateway/index.js.map +1 -0
- package/dist/cjs/protocols/gatewayTransfer.d.ts +40 -0
- package/dist/cjs/protocols/gatewayTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/gatewayTransfer.js +406 -0
- package/dist/cjs/protocols/gatewayTransfer.js.map +1 -0
- package/dist/cjs/protocols/index.d.ts +5 -0
- package/dist/cjs/protocols/index.d.ts.map +1 -0
- package/dist/cjs/protocols/index.js +21 -0
- package/dist/cjs/protocols/index.js.map +1 -0
- package/dist/cjs/protocols/tokenBridge/automatic.d.ts +16 -0
- package/dist/cjs/protocols/tokenBridge/automatic.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenBridge/automatic.js +77 -0
- package/dist/cjs/protocols/tokenBridge/automatic.js.map +1 -0
- package/dist/cjs/protocols/tokenBridge/index.d.ts +5 -0
- package/dist/cjs/protocols/tokenBridge/index.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenBridge/index.js +21 -0
- package/dist/cjs/protocols/tokenBridge/index.js.map +1 -0
- package/dist/cjs/protocols/tokenBridge/manual.d.ts +16 -0
- package/dist/cjs/protocols/tokenBridge/manual.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenBridge/manual.js +77 -0
- package/dist/cjs/protocols/tokenBridge/manual.js.map +1 -0
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts +20 -0
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.js +24 -0
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.js.map +1 -0
- package/dist/cjs/protocols/tokenBridge/utils.d.ts +25 -0
- package/dist/cjs/protocols/tokenBridge/utils.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenBridge/utils.js +331 -0
- package/dist/cjs/protocols/tokenBridge/utils.js.map +1 -0
- package/dist/cjs/protocols/tokenTransfer.d.ts +40 -0
- package/dist/cjs/protocols/tokenTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenTransfer.js +472 -0
- package/dist/cjs/protocols/tokenTransfer.js.map +1 -0
- package/dist/cjs/protocols/tokenbridge/automatic.d.ts +16 -0
- package/dist/cjs/protocols/tokenbridge/automatic.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenbridge/automatic.js +76 -0
- package/dist/cjs/protocols/tokenbridge/automatic.js.map +1 -0
- package/dist/cjs/protocols/tokenbridge/index.d.ts +2 -0
- package/dist/cjs/protocols/tokenbridge/index.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenbridge/index.js +18 -0
- package/dist/cjs/protocols/tokenbridge/index.js.map +1 -0
- package/dist/cjs/protocols/tokenbridge/manual.d.ts +16 -0
- package/dist/cjs/protocols/tokenbridge/manual.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenbridge/manual.js +76 -0
- package/dist/cjs/protocols/tokenbridge/manual.js.map +1 -0
- package/dist/cjs/protocols/tokenbridge/tokenTransfer.d.ts +37 -0
- package/dist/cjs/protocols/tokenbridge/tokenTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/tokenbridge/tokenTransfer.js +345 -0
- package/dist/cjs/protocols/tokenbridge/tokenTransfer.js.map +1 -0
- package/dist/cjs/protocols/wormholeTransfer.d.ts +20 -0
- package/dist/cjs/protocols/wormholeTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/wormholeTransfer.js +3 -0
- package/dist/cjs/protocols/wormholeTransfer.js.map +1 -0
- package/dist/cjs/quote.d.ts +17 -0
- package/dist/cjs/quote.d.ts.map +1 -0
- package/dist/cjs/quote.js +3 -0
- package/dist/cjs/quote.js.map +1 -0
- package/dist/cjs/receipt.d.ts +51 -0
- package/dist/cjs/receipt.d.ts.map +1 -0
- package/dist/cjs/receipt.js +31 -0
- package/dist/cjs/receipt.js.map +1 -0
- package/dist/cjs/routes/automaticTokenBridgeRoute.d.ts +28 -0
- package/dist/cjs/routes/automaticTokenBridgeRoute.d.ts.map +1 -0
- package/dist/cjs/routes/automaticTokenBridgeRoute.js +82 -0
- package/dist/cjs/routes/automaticTokenBridgeRoute.js.map +1 -0
- package/dist/cjs/routes/cctp/automatic.d.ts +46 -0
- package/dist/cjs/routes/cctp/automatic.d.ts.map +1 -0
- package/dist/cjs/routes/cctp/automatic.js +135 -0
- package/dist/cjs/routes/cctp/automatic.js.map +1 -0
- package/dist/cjs/routes/cctp/index.d.ts +3 -0
- package/dist/cjs/routes/cctp/index.d.ts.map +1 -0
- package/dist/cjs/routes/cctp/index.js +19 -0
- package/dist/cjs/routes/cctp/index.js.map +1 -0
- package/dist/cjs/routes/cctp/manual.d.ts +43 -0
- package/dist/cjs/routes/cctp/manual.d.ts.map +1 -0
- package/dist/cjs/routes/cctp/manual.js +113 -0
- package/dist/cjs/routes/cctp/manual.js.map +1 -0
- package/dist/cjs/routes/common.d.ts +13 -0
- package/dist/cjs/routes/common.d.ts.map +1 -0
- package/dist/cjs/routes/common.js +45 -0
- package/dist/cjs/routes/common.js.map +1 -0
- package/dist/cjs/routes/index.d.ts +9 -0
- package/dist/cjs/routes/index.d.ts.map +1 -0
- package/dist/cjs/routes/index.js +25 -0
- package/dist/cjs/routes/index.js.map +1 -0
- package/dist/cjs/routes/mock/automatic.d.ts +25 -0
- package/dist/cjs/routes/mock/automatic.d.ts.map +1 -0
- package/dist/cjs/routes/mock/automatic.js +88 -0
- package/dist/cjs/routes/mock/automatic.js.map +1 -0
- package/dist/cjs/routes/mock/index.d.ts +3 -0
- package/dist/cjs/routes/mock/index.d.ts.map +1 -0
- package/dist/cjs/routes/mock/index.js +19 -0
- package/dist/cjs/routes/mock/index.js.map +1 -0
- package/dist/cjs/routes/mock/manual.d.ts +24 -0
- package/dist/cjs/routes/mock/manual.d.ts.map +1 -0
- package/dist/cjs/routes/mock/manual.js +87 -0
- package/dist/cjs/routes/mock/manual.js.map +1 -0
- package/dist/cjs/routes/portico/automatic.d.ts +68 -0
- package/dist/cjs/routes/portico/automatic.d.ts.map +1 -0
- package/dist/cjs/routes/portico/automatic.js +208 -0
- package/dist/cjs/routes/portico/automatic.js.map +1 -0
- package/dist/cjs/routes/portico/index.d.ts +2 -0
- package/dist/cjs/routes/portico/index.d.ts.map +1 -0
- package/dist/cjs/routes/portico/index.js +18 -0
- package/dist/cjs/routes/portico/index.js.map +1 -0
- package/dist/cjs/routes/portico/manual.d.ts +61 -0
- package/dist/cjs/routes/portico/manual.d.ts.map +1 -0
- package/dist/cjs/routes/portico/manual.js +141 -0
- package/dist/cjs/routes/portico/manual.js.map +1 -0
- package/dist/cjs/routes/portico/porticoRoute.d.ts +56 -0
- package/dist/cjs/routes/portico/porticoRoute.d.ts.map +1 -0
- package/dist/cjs/routes/portico/porticoRoute.js +160 -0
- package/dist/cjs/routes/portico/porticoRoute.js.map +1 -0
- package/dist/cjs/routes/portico/protocol/abis.d.ts +4 -0
- package/dist/cjs/routes/portico/protocol/abis.d.ts.map +1 -0
- package/dist/cjs/routes/portico/protocol/abis.js +12 -0
- package/dist/cjs/routes/portico/protocol/abis.js.map +1 -0
- package/dist/cjs/routes/portico/protocol/consts.d.ts +18 -0
- package/dist/cjs/routes/portico/protocol/consts.d.ts.map +1 -0
- package/dist/cjs/routes/portico/protocol/consts.js +48 -0
- package/dist/cjs/routes/portico/protocol/consts.js.map +1 -0
- package/dist/cjs/routes/portico/protocol/porticoBridge.d.ts +17 -0
- package/dist/cjs/routes/portico/protocol/porticoBridge.d.ts.map +1 -0
- package/dist/cjs/routes/portico/protocol/porticoBridge.js +119 -0
- package/dist/cjs/routes/portico/protocol/porticoBridge.js.map +1 -0
- package/dist/cjs/routes/portico/protocol/types.d.ts +88 -0
- package/dist/cjs/routes/portico/protocol/types.d.ts.map +1 -0
- package/dist/cjs/routes/portico/protocol/types.js +3 -0
- package/dist/cjs/routes/portico/protocol/types.js.map +1 -0
- package/dist/cjs/routes/portico/protocol/utils.d.ts +18 -0
- package/dist/cjs/routes/portico/protocol/utils.d.ts.map +1 -0
- package/dist/cjs/routes/portico/protocol/utils.js +167 -0
- package/dist/cjs/routes/portico/protocol/utils.js.map +1 -0
- package/dist/cjs/routes/portico/utils.d.ts +1 -0
- package/dist/cjs/routes/portico/utils.d.ts.map +1 -0
- package/dist/cjs/routes/portico/utils.js +2 -0
- package/dist/cjs/routes/portico/utils.js.map +1 -0
- package/dist/cjs/routes/request.d.ts +25 -0
- package/dist/cjs/routes/request.d.ts.map +1 -0
- package/dist/cjs/routes/request.js +65 -0
- package/dist/cjs/routes/request.js.map +1 -0
- package/dist/cjs/routes/resolver.d.ts +15 -0
- package/dist/cjs/routes/resolver.d.ts.map +1 -0
- package/dist/cjs/routes/resolver.js +87 -0
- package/dist/cjs/routes/resolver.js.map +1 -0
- package/dist/cjs/routes/route.d.ts +46 -0
- package/dist/cjs/routes/route.d.ts.map +1 -0
- package/dist/cjs/routes/route.js +34 -0
- package/dist/cjs/routes/route.js.map +1 -0
- package/dist/cjs/routes/token.d.ts +12 -0
- package/dist/cjs/routes/token.d.ts.map +1 -0
- package/dist/cjs/routes/token.js +37 -0
- package/dist/cjs/routes/token.js.map +1 -0
- package/dist/cjs/routes/tokenBridge/automatic.d.ts +46 -0
- package/dist/cjs/routes/tokenBridge/automatic.d.ts.map +1 -0
- package/dist/cjs/routes/tokenBridge/automatic.js +145 -0
- package/dist/cjs/routes/tokenBridge/automatic.js.map +1 -0
- package/dist/cjs/routes/tokenBridge/index.d.ts +3 -0
- package/dist/cjs/routes/tokenBridge/index.d.ts.map +1 -0
- package/dist/cjs/routes/tokenBridge/index.js +19 -0
- package/dist/cjs/routes/tokenBridge/index.js.map +1 -0
- package/dist/cjs/routes/tokenBridge/manual.d.ts +42 -0
- package/dist/cjs/routes/tokenBridge/manual.d.ts.map +1 -0
- package/dist/cjs/routes/tokenBridge/manual.js +87 -0
- package/dist/cjs/routes/tokenBridge/manual.js.map +1 -0
- package/dist/cjs/routes/tokenBridgeRoute.d.ts +25 -0
- package/dist/cjs/routes/tokenBridgeRoute.d.ts.map +1 -0
- package/dist/cjs/routes/tokenBridgeRoute.js +78 -0
- package/dist/cjs/routes/tokenBridgeRoute.js.map +1 -0
- package/dist/cjs/routes/types.d.ts +44 -0
- package/dist/cjs/routes/types.d.ts.map +1 -0
- package/dist/cjs/routes/types.js +3 -0
- package/dist/cjs/routes/types.js.map +1 -0
- package/dist/cjs/tasks.d.ts +7 -0
- package/dist/cjs/tasks.d.ts.map +1 -0
- package/dist/cjs/tasks.js +65 -0
- package/dist/cjs/tasks.js.map +1 -0
- package/dist/cjs/types.d.ts +73 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +35 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/whscan-api.d.ts +172 -0
- package/dist/cjs/whscan-api.d.ts.map +1 -0
- package/dist/cjs/whscan-api.js +243 -0
- package/dist/cjs/whscan-api.js.map +1 -0
- package/dist/cjs/wormhole.d.ts +198 -0
- package/dist/cjs/wormhole.d.ts.map +1 -0
- package/dist/cjs/wormhole.js +324 -0
- package/dist/cjs/wormhole.js.map +1 -0
- package/dist/cjs/wormholeTransfer.d.ts +78 -0
- package/dist/cjs/wormholeTransfer.d.ts.map +1 -0
- package/dist/cjs/wormholeTransfer.js +27 -0
- package/dist/cjs/wormholeTransfer.js.map +1 -0
- package/dist/esm/circle-api.d.ts +16 -0
- package/dist/esm/circle-api.d.ts.map +1 -0
- package/dist/esm/circle-api.js +39 -0
- package/dist/esm/circle-api.js.map +1 -0
- package/dist/esm/common.d.ts +4 -0
- package/dist/esm/common.d.ts.map +1 -0
- package/dist/esm/common.js +36 -0
- package/dist/esm/common.js.map +1 -0
- package/dist/esm/config.d.ts +34 -0
- package/dist/esm/config.d.ts.map +1 -0
- package/dist/esm/config.js +47 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/protocols/cctp/cctpTransfer.d.ts +41 -0
- package/dist/esm/protocols/cctp/cctpTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/cctp/cctpTransfer.js +455 -0
- package/dist/esm/protocols/cctp/cctpTransfer.js.map +1 -0
- package/dist/esm/protocols/cctp/index.d.ts +2 -0
- package/dist/esm/protocols/cctp/index.d.ts.map +1 -0
- package/dist/esm/protocols/cctp/index.js +2 -0
- package/dist/esm/protocols/cctp/index.js.map +1 -0
- package/dist/esm/protocols/cctpTransfer.d.ts +41 -0
- package/dist/esm/protocols/cctpTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/cctpTransfer.js +455 -0
- package/dist/esm/protocols/cctpTransfer.js.map +1 -0
- package/dist/esm/protocols/gateway/gatewayTransfer.d.ts +38 -0
- package/dist/esm/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/gateway/gatewayTransfer.js +356 -0
- package/dist/esm/protocols/gateway/gatewayTransfer.js.map +1 -0
- package/dist/esm/protocols/gateway/index.d.ts +2 -0
- package/dist/esm/protocols/gateway/index.d.ts.map +1 -0
- package/dist/esm/protocols/gateway/index.js +2 -0
- package/dist/esm/protocols/gateway/index.js.map +1 -0
- package/dist/esm/protocols/gatewayTransfer.d.ts +40 -0
- package/dist/esm/protocols/gatewayTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/gatewayTransfer.js +402 -0
- package/dist/esm/protocols/gatewayTransfer.js.map +1 -0
- package/dist/esm/protocols/index.d.ts +5 -0
- package/dist/esm/protocols/index.d.ts.map +1 -0
- package/dist/esm/protocols/index.js +5 -0
- package/dist/esm/protocols/index.js.map +1 -0
- package/dist/esm/protocols/tokenBridge/automatic.d.ts +16 -0
- package/dist/esm/protocols/tokenBridge/automatic.d.ts.map +1 -0
- package/dist/esm/protocols/tokenBridge/automatic.js +73 -0
- package/dist/esm/protocols/tokenBridge/automatic.js.map +1 -0
- package/dist/esm/protocols/tokenBridge/index.d.ts +5 -0
- package/dist/esm/protocols/tokenBridge/index.d.ts.map +1 -0
- package/dist/esm/protocols/tokenBridge/index.js +5 -0
- package/dist/esm/protocols/tokenBridge/index.js.map +1 -0
- package/dist/esm/protocols/tokenBridge/manual.d.ts +16 -0
- package/dist/esm/protocols/tokenBridge/manual.d.ts.map +1 -0
- package/dist/esm/protocols/tokenBridge/manual.js +73 -0
- package/dist/esm/protocols/tokenBridge/manual.js.map +1 -0
- package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts +20 -0
- package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/tokenBridge/tokenTransfer.js +20 -0
- package/dist/esm/protocols/tokenBridge/tokenTransfer.js.map +1 -0
- package/dist/esm/protocols/tokenBridge/utils.d.ts +25 -0
- package/dist/esm/protocols/tokenBridge/utils.d.ts.map +1 -0
- package/dist/esm/protocols/tokenBridge/utils.js +323 -0
- package/dist/esm/protocols/tokenBridge/utils.js.map +1 -0
- package/dist/esm/protocols/tokenTransfer.d.ts +40 -0
- package/dist/esm/protocols/tokenTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/tokenTransfer.js +468 -0
- package/dist/esm/protocols/tokenTransfer.js.map +1 -0
- package/dist/esm/protocols/tokenbridge/automatic.d.ts +16 -0
- package/dist/esm/protocols/tokenbridge/automatic.d.ts.map +1 -0
- package/dist/esm/protocols/tokenbridge/automatic.js +72 -0
- package/dist/esm/protocols/tokenbridge/automatic.js.map +1 -0
- package/dist/esm/protocols/tokenbridge/index.d.ts +2 -0
- package/dist/esm/protocols/tokenbridge/index.d.ts.map +1 -0
- package/dist/esm/protocols/tokenbridge/index.js +2 -0
- package/dist/esm/protocols/tokenbridge/index.js.map +1 -0
- package/dist/esm/protocols/tokenbridge/manual.d.ts +16 -0
- package/dist/esm/protocols/tokenbridge/manual.d.ts.map +1 -0
- package/dist/esm/protocols/tokenbridge/manual.js +72 -0
- package/dist/esm/protocols/tokenbridge/manual.js.map +1 -0
- package/dist/esm/protocols/tokenbridge/tokenTransfer.d.ts +37 -0
- package/dist/esm/protocols/tokenbridge/tokenTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/tokenbridge/tokenTransfer.js +337 -0
- package/dist/esm/protocols/tokenbridge/tokenTransfer.js.map +1 -0
- package/dist/esm/protocols/wormholeTransfer.d.ts +20 -0
- package/dist/esm/protocols/wormholeTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/wormholeTransfer.js +2 -0
- package/dist/esm/protocols/wormholeTransfer.js.map +1 -0
- package/dist/esm/routes/automaticTokenBridgeRoute.d.ts +28 -0
- package/dist/esm/routes/automaticTokenBridgeRoute.d.ts.map +1 -0
- package/dist/esm/routes/automaticTokenBridgeRoute.js +78 -0
- package/dist/esm/routes/automaticTokenBridgeRoute.js.map +1 -0
- package/dist/esm/routes/cctp/automatic.d.ts +46 -0
- package/dist/esm/routes/cctp/automatic.d.ts.map +1 -0
- package/dist/esm/routes/cctp/automatic.js +131 -0
- package/dist/esm/routes/cctp/automatic.js.map +1 -0
- package/dist/esm/routes/cctp/index.d.ts +3 -0
- package/dist/esm/routes/cctp/index.d.ts.map +1 -0
- package/dist/esm/routes/cctp/index.js +3 -0
- package/dist/esm/routes/cctp/index.js.map +1 -0
- package/dist/esm/routes/cctp/manual.d.ts +43 -0
- package/dist/esm/routes/cctp/manual.d.ts.map +1 -0
- package/dist/esm/routes/cctp/manual.js +109 -0
- package/dist/esm/routes/cctp/manual.js.map +1 -0
- package/dist/esm/routes/common.d.ts +13 -0
- package/dist/esm/routes/common.d.ts.map +1 -0
- package/dist/esm/routes/common.js +41 -0
- package/dist/esm/routes/common.js.map +1 -0
- package/dist/esm/routes/index.d.ts +9 -0
- package/dist/esm/routes/index.d.ts.map +1 -0
- package/dist/esm/routes/index.js +9 -0
- package/dist/esm/routes/index.js.map +1 -0
- package/dist/esm/routes/mock/automatic.d.ts +25 -0
- package/dist/esm/routes/mock/automatic.d.ts.map +1 -0
- package/dist/esm/routes/mock/automatic.js +84 -0
- package/dist/esm/routes/mock/automatic.js.map +1 -0
- package/dist/esm/routes/mock/index.d.ts +3 -0
- package/dist/esm/routes/mock/index.d.ts.map +1 -0
- package/dist/esm/routes/mock/index.js +3 -0
- package/dist/esm/routes/mock/index.js.map +1 -0
- package/dist/esm/routes/mock/manual.d.ts +24 -0
- package/dist/esm/routes/mock/manual.d.ts.map +1 -0
- package/dist/esm/routes/mock/manual.js +83 -0
- package/dist/esm/routes/mock/manual.js.map +1 -0
- package/dist/esm/routes/portico/automatic.d.ts +68 -0
- package/dist/esm/routes/portico/automatic.d.ts.map +1 -0
- package/dist/esm/routes/portico/automatic.js +204 -0
- package/dist/esm/routes/portico/automatic.js.map +1 -0
- package/dist/esm/routes/portico/index.d.ts +2 -0
- package/dist/esm/routes/portico/index.d.ts.map +1 -0
- package/dist/esm/routes/portico/index.js +2 -0
- package/dist/esm/routes/portico/index.js.map +1 -0
- package/dist/esm/routes/portico/manual.d.ts +61 -0
- package/dist/esm/routes/portico/manual.d.ts.map +1 -0
- package/dist/esm/routes/portico/manual.js +137 -0
- package/dist/esm/routes/portico/manual.js.map +1 -0
- package/dist/esm/routes/portico/utils.d.ts +1 -0
- package/dist/esm/routes/portico/utils.d.ts.map +1 -0
- package/dist/esm/routes/portico/utils.js +2 -0
- package/dist/esm/routes/portico/utils.js.map +1 -0
- package/dist/esm/routes/request.d.ts +25 -0
- package/dist/esm/routes/request.d.ts.map +1 -0
- package/dist/esm/routes/request.js +61 -0
- package/dist/esm/routes/request.js.map +1 -0
- package/dist/esm/routes/resolver.d.ts +15 -0
- package/dist/esm/routes/resolver.d.ts.map +1 -0
- package/dist/esm/routes/resolver.js +83 -0
- package/dist/esm/routes/resolver.js.map +1 -0
- package/dist/esm/routes/route.d.ts +46 -0
- package/dist/esm/routes/route.d.ts.map +1 -0
- package/dist/esm/routes/route.js +26 -0
- package/dist/esm/routes/route.js.map +1 -0
- package/dist/esm/routes/token.d.ts +12 -0
- package/dist/esm/routes/token.d.ts.map +1 -0
- package/dist/esm/routes/token.js +31 -0
- package/dist/esm/routes/token.js.map +1 -0
- package/dist/esm/routes/tokenBridge/automatic.d.ts +46 -0
- package/dist/esm/routes/tokenBridge/automatic.d.ts.map +1 -0
- package/dist/esm/routes/tokenBridge/automatic.js +141 -0
- package/dist/esm/routes/tokenBridge/automatic.js.map +1 -0
- package/dist/esm/routes/tokenBridge/index.d.ts +3 -0
- package/dist/esm/routes/tokenBridge/index.d.ts.map +1 -0
- package/dist/esm/routes/tokenBridge/index.js +3 -0
- package/dist/esm/routes/tokenBridge/index.js.map +1 -0
- package/dist/esm/routes/tokenBridge/manual.d.ts +42 -0
- package/dist/esm/routes/tokenBridge/manual.d.ts.map +1 -0
- package/dist/esm/routes/tokenBridge/manual.js +83 -0
- package/dist/esm/routes/tokenBridge/manual.js.map +1 -0
- package/dist/esm/routes/tokenBridgeRoute.d.ts +25 -0
- package/dist/esm/routes/tokenBridgeRoute.d.ts.map +1 -0
- package/dist/esm/routes/tokenBridgeRoute.js +74 -0
- package/dist/esm/routes/tokenBridgeRoute.js.map +1 -0
- package/dist/esm/routes/types.d.ts +44 -0
- package/dist/esm/routes/types.d.ts.map +1 -0
- package/dist/esm/routes/types.js +2 -0
- package/dist/esm/routes/types.js.map +1 -0
- package/dist/esm/tasks.d.ts +7 -0
- package/dist/esm/tasks.d.ts.map +1 -0
- package/dist/esm/tasks.js +59 -0
- package/dist/esm/tasks.js.map +1 -0
- package/dist/esm/types.d.ts +73 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +27 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/whscan-api.d.ts +172 -0
- package/dist/esm/whscan-api.d.ts.map +1 -0
- package/dist/esm/whscan-api.js +222 -0
- package/dist/esm/whscan-api.js.map +1 -0
- package/dist/esm/wormhole.d.ts +198 -0
- package/dist/esm/wormhole.d.ts.map +1 -0
- package/dist/esm/wormhole.js +320 -0
- package/dist/esm/wormhole.js.map +1 -0
- package/dist/esm/wormholeTransfer.d.ts +78 -0
- package/dist/esm/wormholeTransfer.d.ts.map +1 -0
- package/dist/esm/wormholeTransfer.js +21 -0
- package/dist/esm/wormholeTransfer.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { toNative, } from "@wormhole-foundation/sdk-definitions";
|
|
2
|
+
import { signSendWait } from "../../common";
|
|
3
|
+
import { ErrInvalidStateTransition, TransferState, hasAttested, hasSourceFinalized, hasSourceInitiated, isAttested, isCreated, } from "../../types";
|
|
4
|
+
import { TokenTransfer } from "./tokenTransfer";
|
|
5
|
+
import { TokenTransferUtils } from "./utils";
|
|
6
|
+
export class ManualTokenTransfer extends TokenTransfer {
|
|
7
|
+
getTransferState() {
|
|
8
|
+
return this.receipt.state;
|
|
9
|
+
}
|
|
10
|
+
async initiateTransfer(signer) {
|
|
11
|
+
if (!isCreated(this.receipt))
|
|
12
|
+
throw ErrInvalidStateTransition("Expected transfer details to be created");
|
|
13
|
+
const originTxs = await ManualTokenTransfer.transfer(this.fromChain, this.transfer, signer);
|
|
14
|
+
const state = TransferState.SourceInitiated;
|
|
15
|
+
this.receipt = { ...this.receipt, state, originTxs };
|
|
16
|
+
return originTxs.map(({ txid }) => txid);
|
|
17
|
+
}
|
|
18
|
+
async fetchAttestation(timeout) {
|
|
19
|
+
if (!hasSourceInitiated(this.receipt))
|
|
20
|
+
throw ErrInvalidStateTransition("Expected source to be initiated");
|
|
21
|
+
// We already have it, just return it
|
|
22
|
+
if (hasAttested(this.receipt))
|
|
23
|
+
return [this.receipt.attestation.id];
|
|
24
|
+
// We dont have the message id yet, grab it
|
|
25
|
+
if (!hasSourceFinalized(this.receipt)) {
|
|
26
|
+
const { originTxs } = this.receipt;
|
|
27
|
+
const txid = originTxs[originTxs.length - 1];
|
|
28
|
+
const msgId = await TokenTransferUtils.getTransferMessage(this.fromChain, txid.txid, timeout);
|
|
29
|
+
this.receipt = {
|
|
30
|
+
...this.receipt,
|
|
31
|
+
state: TransferState.SourceFinalized,
|
|
32
|
+
attestation: { id: msgId },
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// No signed attestation yet, try to grab it
|
|
36
|
+
if (!hasAttested(this.receipt)) {
|
|
37
|
+
const vaa = await TokenTransferUtils.getTransferVaa(this.wh, this.receipt.attestation.id, timeout);
|
|
38
|
+
this.receipt = {
|
|
39
|
+
...this.receipt,
|
|
40
|
+
state: TransferState.Attested,
|
|
41
|
+
attestation: { id: this.receipt.attestation.id, attestation: vaa },
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return [this.receipt.attestation.id];
|
|
45
|
+
}
|
|
46
|
+
// finish the WormholeTransfer by submitting transactions to the destination chain
|
|
47
|
+
// returns a transaction hash
|
|
48
|
+
async completeTransfer(signer) {
|
|
49
|
+
if (!isAttested(this.receipt))
|
|
50
|
+
throw ErrInvalidStateTransition("Expected transfer to be attested");
|
|
51
|
+
const { attestation: { attestation: vaa }, } = this.receipt;
|
|
52
|
+
const destinationTxs = await ManualTokenTransfer.redeem(this.toChain, vaa, signer);
|
|
53
|
+
this.receipt = {
|
|
54
|
+
...this.receipt,
|
|
55
|
+
state: TransferState.DestinationInitiated,
|
|
56
|
+
destinationTxs,
|
|
57
|
+
};
|
|
58
|
+
return this.receipt.destinationTxs.map(({ txid }) => txid);
|
|
59
|
+
}
|
|
60
|
+
static async transfer(chainCtx, transfer, signer) {
|
|
61
|
+
const senderAddress = toNative(signer.chain(), signer.address());
|
|
62
|
+
const tb = await chainCtx.getTokenBridge();
|
|
63
|
+
const xfer = tb.transfer(senderAddress, transfer.to, transfer.token.address, transfer.amount, transfer.payload);
|
|
64
|
+
return signSendWait(chainCtx, xfer, signer);
|
|
65
|
+
}
|
|
66
|
+
static async redeem(toChain, vaa, signer) {
|
|
67
|
+
const signerAddress = toNative(signer.chain(), signer.address());
|
|
68
|
+
const tb = await toChain.getTokenBridge();
|
|
69
|
+
const xfer = tb.redeem(signerAddress, vaa);
|
|
70
|
+
return signSendWait(toChain, xfer, signer);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=manual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/manual.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Chain, Network, Platform } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import { AttestationId, AutomaticTokenBridge, ChainContext, ProtocolName, Signer, TokenBridge, TokenTransferDetails, TxHash } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
+
import { AttestationReceipt, TransferReceipt } from "../../types";
|
|
4
|
+
import { Wormhole } from "../../wormhole";
|
|
5
|
+
export type TokenTransferProtocol = "TokenBridge" | "AutomaticTokenBridge";
|
|
6
|
+
export type TokenTransferVAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA;
|
|
7
|
+
export type TokenTransferAttestationReceipt = AttestationReceipt<TokenTransferProtocol>;
|
|
8
|
+
export type TokenTransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = TransferReceipt<TokenTransferAttestationReceipt, SC, DC>;
|
|
9
|
+
export declare abstract class TokenTransfer<N extends Network = Network, PN extends ProtocolName = ProtocolName> {
|
|
10
|
+
wh: Wormhole<N>;
|
|
11
|
+
fromChain: ChainContext<N, Platform, Chain>;
|
|
12
|
+
toChain: ChainContext<N, Platform, Chain>;
|
|
13
|
+
transfer: TokenTransferDetails;
|
|
14
|
+
receipt: TransferReceipt<AttestationReceipt<PN>>;
|
|
15
|
+
constructor(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>);
|
|
16
|
+
abstract initiateTransfer(signer: Signer): Promise<TxHash[]>;
|
|
17
|
+
abstract fetchAttestation(timeout?: number): Promise<AttestationId[]>;
|
|
18
|
+
abstract completeTransfer(signer: Signer): Promise<TxHash[]>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=tokenTransfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransfer.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/tokenTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,EACP,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,sBAAsB,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC;AAElF,MAAM,MAAM,+BAA+B,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AACxF,MAAM,MAAM,oBAAoB,CAC9B,EAAE,SAAS,KAAK,GAAG,KAAK,EACxB,EAAE,SAAS,KAAK,GAAG,KAAK,IACtB,eAAe,CAAC,+BAA+B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAE7D,8BAAsB,aAAa,CACjC,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,EAAE,SAAS,YAAY,GAAG,YAAY;IAEtC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE1C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAG/C,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC5C,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC;IAe5C,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IACrE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAC7D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TransferState } from "../../types";
|
|
2
|
+
export class TokenTransfer {
|
|
3
|
+
wh;
|
|
4
|
+
fromChain;
|
|
5
|
+
toChain;
|
|
6
|
+
transfer;
|
|
7
|
+
receipt;
|
|
8
|
+
constructor(wh, transfer, fromChain, toChain) {
|
|
9
|
+
this.wh = wh;
|
|
10
|
+
this.transfer = transfer;
|
|
11
|
+
this.fromChain = fromChain ?? wh.getChain(transfer.from.chain);
|
|
12
|
+
this.toChain = toChain ?? wh.getChain(transfer.to.chain);
|
|
13
|
+
this.receipt = {
|
|
14
|
+
from: transfer.from.chain,
|
|
15
|
+
to: transfer.to.chain,
|
|
16
|
+
state: TransferState.Created,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=tokenTransfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransfer.js","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/tokenTransfer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAuC,aAAa,EAAE,MAAM,aAAa,CAAC;AAYjF,MAAM,OAAgB,aAAa;IAIjC,EAAE,CAAc;IAChB,SAAS,CAAmC;IAC5C,OAAO,CAAmC;IAE1C,QAAQ,CAAuB;IAC/B,OAAO,CAA0C;IAEjD,YACE,EAAe,EACf,QAA8B,EAC9B,SAA4C,EAC5C,OAA0C;QAE1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YACzB,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK;YACrB,KAAK,EAAE,aAAa,CAAC,OAAO;SAC7B,CAAC;IACJ,CAAC;CAKF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Chain, ChainToPlatform, Network, Platform } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import { ChainContext, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
+
import { AttestationReceipt, TransferQuote, TransferReceipt } from "../../types";
|
|
4
|
+
import { Wormhole } from "../../wormhole";
|
|
5
|
+
import { TokenTransfer, TokenTransferProtocol, TokenTransferReceipt, TokenTransferVAA } from "./tokenTransfer";
|
|
6
|
+
export declare const truncate: (amt: bigint, decimals: bigint) => bigint;
|
|
7
|
+
export declare const scale: (amt: bigint, decimals: bigint) => bigint;
|
|
8
|
+
export declare const _dedust: (decimals: bigint) => (amt: bigint) => bigint;
|
|
9
|
+
export declare const _mintable: (srcDecimals: bigint, dstDecimals: bigint) => (amt: bigint) => bigint;
|
|
10
|
+
export declare class TokenTransferUtils {
|
|
11
|
+
static from<N extends Network>(wh: Wormhole<N>, from: TokenTransferDetails, timeout?: number, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): Promise<TokenTransfer<N>>;
|
|
12
|
+
static from<N extends Network>(wh: Wormhole<N>, from: WormholeMessageId, timeout?: number, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): Promise<TokenTransfer<N>>;
|
|
13
|
+
static from<N extends Network>(wh: Wormhole<N>, from: TransactionId, timeout?: number, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): Promise<TokenTransfer<N>>;
|
|
14
|
+
private static fromIdentifier;
|
|
15
|
+
private static fromTransaction;
|
|
16
|
+
static getTransferMessage<N extends Network>(chain: ChainContext<N, Platform, Chain>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
|
|
17
|
+
static getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransferVAA>;
|
|
18
|
+
static lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, ChainToPlatform<SC>, SC>, dstChain: ChainContext<N, ChainToPlatform<DC>, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
|
|
19
|
+
static validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): void;
|
|
20
|
+
static quoteTransfer<N extends Network>(srcChain: ChainContext<N, Platform, Chain>, dstChain: ChainContext<N, Platform, Chain>, transfer: TokenTransferDetails): Promise<TransferQuote>;
|
|
21
|
+
static isTransferComplete<N extends Network>(toChain: ChainContext<N, Platform, Chain>, receipt: TransferReceipt<AttestationReceipt<TokenTransferProtocol>>): Promise<boolean>;
|
|
22
|
+
static track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, ChainToPlatform<SC>, SC>, toChain?: ChainContext<N, ChainToPlatform<DC>, DC>): AsyncGenerator<TokenTransferReceipt<SC, DC>>;
|
|
23
|
+
static destinationOverrides<N extends Network>(srcChain: ChainContext<N, Platform, Chain>, dstChain: ChainContext<N, Platform, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { encoding, toChain as toChainName, } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import { TokenBridge, deserialize, isNative, isTokenTransferDetails, isTransactionIdentifier, isWormholeMessageId, serialize, toUniversal, } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
+
import { DEFAULT_TASK_TIMEOUT } from "../../config";
|
|
4
|
+
import { ErrInvalidStateTransition, TransferState, isAttested, isSourceFinalized, isSourceInitiated, } from "../../types";
|
|
5
|
+
import { Wormhole } from "../../wormhole";
|
|
6
|
+
import { AutomaticTokenTransfer } from "./automatic";
|
|
7
|
+
import { ManualTokenTransfer } from "./manual";
|
|
8
|
+
// truncate the amount for over-the-wire max representation
|
|
9
|
+
export const truncate = (amt, decimals) => decimals > 8 ? amt / 10n ** (decimals - 8n) : amt;
|
|
10
|
+
// scale by number of decimals, pair with truncate
|
|
11
|
+
export const scale = (amt, decimals) => decimals > 8 ? amt * 10n ** (decimals - 8n) : amt;
|
|
12
|
+
// dedust for source using the number of decimals on the source chain
|
|
13
|
+
// but scale back to original decimals
|
|
14
|
+
export const _dedust = (decimals) => (amt) => scale(truncate(amt, decimals), decimals);
|
|
15
|
+
// truncate and rescale to fit destination token
|
|
16
|
+
export const _mintable = (srcDecimals, dstDecimals) => (amt) => scale(truncate(amt, srcDecimals), dstDecimals);
|
|
17
|
+
export class TokenTransferUtils {
|
|
18
|
+
static async from(wh, from, timeout = 6000, fromChain, toChain) {
|
|
19
|
+
if (isTokenTransferDetails(from)) {
|
|
20
|
+
fromChain = fromChain ?? wh.getChain(from.from.chain);
|
|
21
|
+
toChain = toChain ?? wh.getChain(from.to.chain);
|
|
22
|
+
// throws if invalid
|
|
23
|
+
this.validateTransferDetails(wh, from, fromChain, toChain);
|
|
24
|
+
// Apply hackery
|
|
25
|
+
from = {
|
|
26
|
+
...from,
|
|
27
|
+
...(await this.destinationOverrides(fromChain, toChain, from)),
|
|
28
|
+
};
|
|
29
|
+
if (from.automatic) {
|
|
30
|
+
return new AutomaticTokenTransfer(wh, from, fromChain, toChain);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return new ManualTokenTransfer(wh, from, fromChain, toChain);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
let tt;
|
|
37
|
+
if (isWormholeMessageId(from)) {
|
|
38
|
+
tt = await this.fromIdentifier(wh, from, timeout);
|
|
39
|
+
}
|
|
40
|
+
else if (isTransactionIdentifier(from)) {
|
|
41
|
+
tt = await this.fromTransaction(wh, from, timeout, fromChain);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
throw new Error("Invalid `from` parameter for TokenTransfer");
|
|
45
|
+
}
|
|
46
|
+
tt.fromChain = fromChain ?? wh.getChain(tt.transfer.from.chain);
|
|
47
|
+
tt.toChain = toChain ?? wh.getChain(tt.transfer.to.chain);
|
|
48
|
+
await tt.fetchAttestation(timeout);
|
|
49
|
+
return tt;
|
|
50
|
+
}
|
|
51
|
+
// init from the seq id
|
|
52
|
+
static async fromIdentifier(wh, id, timeout) {
|
|
53
|
+
const vaa = await this.getTransferVaa(wh, id, timeout);
|
|
54
|
+
const automatic = vaa.protocolName === "AutomaticTokenBridge";
|
|
55
|
+
// TODO: the `from.address` here is a lie, but we don't
|
|
56
|
+
// immediately have enough info to get the _correct_ one
|
|
57
|
+
let from = { chain: vaa.emitterChain, address: vaa.emitterAddress };
|
|
58
|
+
let { token, to } = vaa.payload;
|
|
59
|
+
const rescale = (amt, decimals) => decimals > 8 ? amt * 10n ** (decimals - 8n) : amt;
|
|
60
|
+
const amount = rescale(token.amount, await wh.getDecimals(token.chain, token.address));
|
|
61
|
+
let nativeGasAmount = 0n;
|
|
62
|
+
if (automatic) {
|
|
63
|
+
nativeGasAmount = vaa.payload.payload.toNativeTokenAmount;
|
|
64
|
+
from = { chain: vaa.emitterChain, address: vaa.payload.from };
|
|
65
|
+
to = { chain: vaa.payload.to.chain, address: vaa.payload.payload.targetRecipient };
|
|
66
|
+
}
|
|
67
|
+
const details = {
|
|
68
|
+
token,
|
|
69
|
+
amount,
|
|
70
|
+
from,
|
|
71
|
+
to,
|
|
72
|
+
automatic,
|
|
73
|
+
nativeGas: nativeGasAmount,
|
|
74
|
+
};
|
|
75
|
+
let tt;
|
|
76
|
+
if (automatic) {
|
|
77
|
+
tt = new AutomaticTokenTransfer(wh, details);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
tt = new ManualTokenTransfer(wh, details);
|
|
81
|
+
}
|
|
82
|
+
tt.receipt = {
|
|
83
|
+
...tt.receipt,
|
|
84
|
+
state: TransferState.Attested,
|
|
85
|
+
attestation: { id: id, attestation: vaa },
|
|
86
|
+
};
|
|
87
|
+
return tt;
|
|
88
|
+
}
|
|
89
|
+
static async fromTransaction(wh, from, timeout, fromChain) {
|
|
90
|
+
fromChain = fromChain ?? wh.getChain(from.chain);
|
|
91
|
+
const msg = await this.getTransferMessage(fromChain, from.txid, timeout);
|
|
92
|
+
return await this.fromIdentifier(wh, msg, timeout);
|
|
93
|
+
}
|
|
94
|
+
static async getTransferMessage(chain, txid, timeout) {
|
|
95
|
+
const whm = await Wormhole.parseMessageFromTx(chain, txid, timeout);
|
|
96
|
+
if (whm.length !== 1)
|
|
97
|
+
throw new Error("Expected a single Wormhole Message, got: " + whm.length);
|
|
98
|
+
return whm[0];
|
|
99
|
+
}
|
|
100
|
+
static async getTransferVaa(wh, key, timeout) {
|
|
101
|
+
const vaa = typeof key === "string"
|
|
102
|
+
? await wh.getVaaByTxHash(key, TokenBridge.getTransferDiscriminator(), timeout)
|
|
103
|
+
: await wh.getVaa(key, TokenBridge.getTransferDiscriminator(), timeout);
|
|
104
|
+
if (!vaa)
|
|
105
|
+
throw new Error(`No VAA available after retries exhausted`);
|
|
106
|
+
// Check if its automatic and re-de-serialize
|
|
107
|
+
if (vaa.payloadName === "TransferWithPayload") {
|
|
108
|
+
const { chain, address } = vaa.payload.to;
|
|
109
|
+
const { tokenBridgeRelayer } = wh.config.chains[chain].contracts;
|
|
110
|
+
const relayerAddress = tokenBridgeRelayer ? toUniversal(chain, tokenBridgeRelayer) : null;
|
|
111
|
+
// If the target address is the relayer address, expect its an automatic token bridge vaa
|
|
112
|
+
if (!!relayerAddress && address.equals(relayerAddress)) {
|
|
113
|
+
return deserialize("AutomaticTokenBridge:TransferWithRelay", serialize(vaa));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return vaa;
|
|
117
|
+
}
|
|
118
|
+
// Lookup the token id for the destination chain given the source chain
|
|
119
|
+
// and token id
|
|
120
|
+
static async lookupDestinationToken(srcChain, dstChain, token) {
|
|
121
|
+
// that will be minted when the transfer is redeemed
|
|
122
|
+
let lookup;
|
|
123
|
+
if (isNative(token.address)) {
|
|
124
|
+
// if native, get the wrapped asset id
|
|
125
|
+
lookup = await srcChain.getNativeWrappedTokenId();
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
try {
|
|
129
|
+
const tb = await srcChain.getTokenBridge();
|
|
130
|
+
// otherwise, check to see if it is a wrapped token locally
|
|
131
|
+
lookup = await tb.getOriginalAsset(token.address);
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
// not a from-chain native wormhole-wrapped one
|
|
135
|
+
lookup = token;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// if the token id is actually native to the destination, return it
|
|
139
|
+
if (lookup.chain === dstChain.chain) {
|
|
140
|
+
return lookup;
|
|
141
|
+
}
|
|
142
|
+
// otherwise, figure out what the token address representing the wormhole-wrapped token we're transferring
|
|
143
|
+
const dstTb = await dstChain.getTokenBridge();
|
|
144
|
+
const dstAddress = await dstTb.getWrappedAsset(lookup);
|
|
145
|
+
return { chain: dstChain.chain, address: dstAddress };
|
|
146
|
+
}
|
|
147
|
+
static validateTransferDetails(wh, transfer, fromChain, toChain) {
|
|
148
|
+
if (transfer.amount === 0n)
|
|
149
|
+
throw new Error("Amount cannot be 0");
|
|
150
|
+
if (transfer.from.chain === transfer.to.chain)
|
|
151
|
+
throw new Error("Cannot transfer to the same chain");
|
|
152
|
+
fromChain = fromChain ?? wh.getChain(transfer.from.chain);
|
|
153
|
+
toChain = toChain ?? wh.getChain(transfer.to.chain);
|
|
154
|
+
if (transfer.automatic) {
|
|
155
|
+
if (transfer.payload)
|
|
156
|
+
throw new Error("Payload with automatic delivery is not supported");
|
|
157
|
+
if (!fromChain.supportsAutomaticTokenBridge())
|
|
158
|
+
throw new Error(`Automatic Token Bridge not supported on ${transfer.from.chain}`);
|
|
159
|
+
if (!toChain.supportsAutomaticTokenBridge())
|
|
160
|
+
throw new Error(`Automatic Token Bridge not supported on ${transfer.to.chain}`);
|
|
161
|
+
const nativeGas = transfer.nativeGas ?? 0n;
|
|
162
|
+
if (nativeGas > transfer.amount)
|
|
163
|
+
throw new Error(`Native gas amount > amount (${nativeGas} > ${transfer.amount})`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
if (transfer.nativeGas)
|
|
167
|
+
throw new Error("Gas Dropoff is only supported for automatic transfers");
|
|
168
|
+
if (!fromChain.supportsTokenBridge())
|
|
169
|
+
throw new Error(`Token Bridge not supported on ${transfer.from.chain}`);
|
|
170
|
+
if (!toChain.supportsTokenBridge())
|
|
171
|
+
throw new Error(`Token Bridge not supported on ${transfer.to.chain}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
static async quoteTransfer(srcChain, dstChain, transfer) {
|
|
175
|
+
const dstToken = await this.lookupDestinationToken(srcChain, dstChain, transfer.token);
|
|
176
|
+
const srcToken = isNative(transfer.token.address)
|
|
177
|
+
? await srcChain.getNativeWrappedTokenId()
|
|
178
|
+
: transfer.token;
|
|
179
|
+
const dstDecimals = await dstChain.getDecimals(dstToken.address);
|
|
180
|
+
const srcDecimals = await srcChain.getDecimals(srcToken.address);
|
|
181
|
+
const dedust = _dedust(srcDecimals);
|
|
182
|
+
const mintable = _mintable(srcDecimals, dstDecimals);
|
|
183
|
+
// dedust for transfer over the bridge which truncates to 8 decimals
|
|
184
|
+
let srcAmount = dedust(transfer.amount);
|
|
185
|
+
let dstAmount = mintable(transfer.amount);
|
|
186
|
+
if (!transfer.automatic) {
|
|
187
|
+
return {
|
|
188
|
+
sourceToken: { token: srcToken, amount: srcAmount },
|
|
189
|
+
destinationToken: { token: dstToken, amount: dstAmount },
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Otherwise automatic
|
|
193
|
+
// If a native gas dropoff is requested, remove that from the amount they'll get
|
|
194
|
+
const _nativeGas = transfer.nativeGas ? mintable(transfer.nativeGas) : 0n;
|
|
195
|
+
dstAmount -= _nativeGas;
|
|
196
|
+
// The fee is also removed from the amount transferred
|
|
197
|
+
// quoted on the source chain
|
|
198
|
+
const stb = await srcChain.getAutomaticTokenBridge();
|
|
199
|
+
const fee = await stb.getRelayerFee(transfer.from.address, transfer.to, srcToken.address);
|
|
200
|
+
dstAmount -= mintable(fee);
|
|
201
|
+
// The expected destination gas can be pulled from the destination token bridge
|
|
202
|
+
let destinationNativeGas = 0n;
|
|
203
|
+
if (transfer.nativeGas) {
|
|
204
|
+
const dtb = await dstChain.getAutomaticTokenBridge();
|
|
205
|
+
destinationNativeGas = await dtb.nativeTokenAmount(dstToken.address, _nativeGas);
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
sourceToken: {
|
|
209
|
+
token: srcToken,
|
|
210
|
+
amount: srcAmount,
|
|
211
|
+
},
|
|
212
|
+
destinationToken: { token: dstToken, amount: dstAmount },
|
|
213
|
+
relayFee: { token: srcToken, amount: fee },
|
|
214
|
+
destinationNativeGas,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
static async isTransferComplete(toChain, receipt) {
|
|
218
|
+
if (!isAttested(receipt))
|
|
219
|
+
return false;
|
|
220
|
+
const vaa = deserialize("TokenBridge:TransferWithPayload", serialize(receipt.attestation.attestation));
|
|
221
|
+
const tb = await toChain.getTokenBridge();
|
|
222
|
+
return tb.isTransferCompleted(vaa);
|
|
223
|
+
}
|
|
224
|
+
// AsyncGenerator fn that produces status updates through an async generator
|
|
225
|
+
// eventually producing a receipt
|
|
226
|
+
// can be called repeatedly so the receipt is updated as it moves through the
|
|
227
|
+
// steps of the transfer
|
|
228
|
+
static async *track(wh, receipt, timeout = DEFAULT_TASK_TIMEOUT, fromChain, toChain) {
|
|
229
|
+
const start = Date.now();
|
|
230
|
+
const leftover = (start, max) => Math.max(max - (Date.now() - start), 0);
|
|
231
|
+
fromChain = fromChain ?? wh.getChain(receipt.from);
|
|
232
|
+
toChain = toChain ?? wh.getChain(receipt.to);
|
|
233
|
+
// Check the source chain for initiation transaction
|
|
234
|
+
// and capture the message id
|
|
235
|
+
if (isSourceInitiated(receipt)) {
|
|
236
|
+
if (receipt.originTxs.length === 0)
|
|
237
|
+
throw "Origin transactions required to fetch message id";
|
|
238
|
+
const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
|
|
239
|
+
const msg = await this.getTransferMessage(fromChain, txid, leftover(start, timeout));
|
|
240
|
+
receipt = {
|
|
241
|
+
...receipt,
|
|
242
|
+
state: TransferState.SourceFinalized,
|
|
243
|
+
attestation: { id: msg },
|
|
244
|
+
};
|
|
245
|
+
yield receipt;
|
|
246
|
+
}
|
|
247
|
+
// If the source is finalized, we need to fetch the signed attestation
|
|
248
|
+
// so that we may deliver it to the destination chain
|
|
249
|
+
// or at least track the transfer through its progress
|
|
250
|
+
if (isSourceFinalized(receipt)) {
|
|
251
|
+
if (!receipt.attestation.id)
|
|
252
|
+
throw "Attestation id required to fetch attestation";
|
|
253
|
+
const { id } = receipt.attestation;
|
|
254
|
+
const attestation = await this.getTransferVaa(wh, id, leftover(start, timeout));
|
|
255
|
+
receipt = {
|
|
256
|
+
...receipt,
|
|
257
|
+
attestation: { id, attestation },
|
|
258
|
+
state: TransferState.Attested,
|
|
259
|
+
};
|
|
260
|
+
yield receipt;
|
|
261
|
+
}
|
|
262
|
+
// First try to grab the tx status from the API
|
|
263
|
+
// Note: this requires a subsequent async step on the backend
|
|
264
|
+
// to have the dest txid populated, so it may be delayed by some time
|
|
265
|
+
if (isAttested(receipt) || isSourceFinalized(receipt)) {
|
|
266
|
+
if (!receipt.attestation.id)
|
|
267
|
+
throw "Attestation id required to fetch redeem tx";
|
|
268
|
+
const { id } = receipt.attestation;
|
|
269
|
+
const txStatus = await wh.getTransactionStatus(id, leftover(start, timeout));
|
|
270
|
+
if (txStatus && txStatus.globalTx?.destinationTx?.txHash) {
|
|
271
|
+
const { chainId, txHash } = txStatus.globalTx.destinationTx;
|
|
272
|
+
receipt = {
|
|
273
|
+
...receipt,
|
|
274
|
+
destinationTxs: [{ chain: toChainName(chainId), txid: txHash }],
|
|
275
|
+
state: TransferState.DestinationFinalized,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
yield receipt;
|
|
279
|
+
}
|
|
280
|
+
// Fall back to asking the destination chain if this VAA has been redeemed
|
|
281
|
+
// Note: We do not get any destinationTxs with this method
|
|
282
|
+
if (isAttested(receipt)) {
|
|
283
|
+
if (!receipt.attestation.attestation)
|
|
284
|
+
throw ErrInvalidStateTransition("Signed Attestation required to check for redeem");
|
|
285
|
+
let isComplete = await this.isTransferComplete(toChain, receipt);
|
|
286
|
+
if (isComplete) {
|
|
287
|
+
receipt = {
|
|
288
|
+
...receipt,
|
|
289
|
+
state: TransferState.DestinationFinalized,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
yield receipt;
|
|
293
|
+
}
|
|
294
|
+
yield receipt;
|
|
295
|
+
}
|
|
296
|
+
static async destinationOverrides(srcChain, dstChain, transfer) {
|
|
297
|
+
const _transfer = { ...transfer };
|
|
298
|
+
// Bit of (temporary) hackery until solana contracts support being
|
|
299
|
+
// sent a VAA with the primary address
|
|
300
|
+
// Note: Do _not_ override if automatic or if the destination token is native
|
|
301
|
+
// gas token
|
|
302
|
+
if (transfer.to.chain === "Solana" && !_transfer.automatic) {
|
|
303
|
+
const destinationToken = await this.lookupDestinationToken(srcChain, dstChain, _transfer.token);
|
|
304
|
+
// TODO: If the token is native, no need to overwrite the destination address check for native
|
|
305
|
+
//if (!destinationToken.address.equals((await dstChain.getNativeWrappedTokenId()).address))
|
|
306
|
+
_transfer.to = await dstChain.getTokenAccount(_transfer.to.address, destinationToken.address);
|
|
307
|
+
}
|
|
308
|
+
if (_transfer.to.chain === "Sei") {
|
|
309
|
+
if (_transfer.to.chain === "Sei" && _transfer.payload)
|
|
310
|
+
throw new Error("Arbitrary payloads unsupported for Sei");
|
|
311
|
+
// For sei, we reserve the payload for a token transfer through the sei bridge.
|
|
312
|
+
_transfer.payload = encoding.bytes.encode(JSON.stringify({
|
|
313
|
+
basic_recipient: {
|
|
314
|
+
recipient: encoding.b64.encode(_transfer.to.address.toString()),
|
|
315
|
+
},
|
|
316
|
+
}));
|
|
317
|
+
_transfer.to = Wormhole.chainAddress(_transfer.to.chain, dstChain.config.contracts.translator);
|
|
318
|
+
}
|
|
319
|
+
return _transfer;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
TokenTransferUtils;
|
|
323
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Chain, Network } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import { AttestationId, AutomaticTokenBridge, ChainContext, Signer, TokenBridge, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
+
import { AttestationReceipt, TransferQuote, TransferReceipt, TransferState } from "../types";
|
|
4
|
+
import { Wormhole } from "../wormhole";
|
|
5
|
+
import { WormholeTransfer } from "./wormholeTransfer";
|
|
6
|
+
export type TokenTransferProtocol = "TokenBridge" | "AutomaticTokenBridge";
|
|
7
|
+
export type TokenTransferVAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA;
|
|
8
|
+
export type TokenTransferAttestationReceipt = AttestationReceipt<TokenTransferProtocol>;
|
|
9
|
+
export type TokenTransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = TransferReceipt<TokenTransferAttestationReceipt, SC, DC>;
|
|
10
|
+
export declare class TokenTransfer<N extends Network = Network> implements WormholeTransfer<TokenTransferProtocol> {
|
|
11
|
+
private readonly wh;
|
|
12
|
+
fromChain: ChainContext<N, Chain>;
|
|
13
|
+
toChain: ChainContext<N, Chain>;
|
|
14
|
+
private _state;
|
|
15
|
+
transfer: TokenTransferDetails;
|
|
16
|
+
txids: TransactionId[];
|
|
17
|
+
attestations?: AttestationReceipt<TokenTransferProtocol>[];
|
|
18
|
+
private constructor();
|
|
19
|
+
getTransferState(): TransferState;
|
|
20
|
+
static from<N extends Network>(wh: Wormhole<N>, from: TokenTransferDetails, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
|
|
21
|
+
static from<N extends Network>(wh: Wormhole<N>, from: WormholeMessageId, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
|
|
22
|
+
static from<N extends Network>(wh: Wormhole<N>, from: TransactionId, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
|
|
23
|
+
private static fromIdentifier;
|
|
24
|
+
private static fromTransaction;
|
|
25
|
+
initiateTransfer(signer: Signer): Promise<TxHash[]>;
|
|
26
|
+
fetchAttestation(timeout?: number): Promise<AttestationId[]>;
|
|
27
|
+
completeTransfer(signer: Signer): Promise<TxHash[]>;
|
|
28
|
+
static transfer<N extends Network>(fromChain: ChainContext<N, Chain>, transfer: TokenTransferDetails, signer: Signer<N, Chain>): Promise<TransactionId[]>;
|
|
29
|
+
static redeem<N extends Network>(toChain: ChainContext<N, Chain>, vaa: TokenTransferVAA, signer: Signer<N, Chain>): Promise<TransactionId[]>;
|
|
30
|
+
static isTransferComplete<N extends Network, C extends Chain>(toChain: ChainContext<N, C>, vaa: TokenTransferVAA): Promise<boolean>;
|
|
31
|
+
static getTransferMessage<N extends Network, C extends Chain>(chain: ChainContext<N, C>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
|
|
32
|
+
static getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransferVAA>;
|
|
33
|
+
static lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
|
|
34
|
+
static validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): void;
|
|
35
|
+
static quoteTransfer<N extends Network>(wh: Wormhole<N>, srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TransferQuote>;
|
|
36
|
+
static destinationOverrides<N extends Network>(srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
|
|
37
|
+
static getReceipt<N extends Network>(xfer: TokenTransfer<N>): TokenTransferReceipt;
|
|
38
|
+
static track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, SC>, toChain?: ChainContext<N, DC>): AsyncGenerator<TokenTransferReceipt<SC, DC>>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=tokenTransfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransfer.d.ts","sourceRoot":"","sources":["../../../src/protocols/tokenTransfer.ts"],"names":[],"mappings":"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"}
|