@wormhole-foundation/sdk-connect 2.4.0 → 3.0.0-tb-exec.beta.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.
Files changed (73) hide show
  1. package/dist/cjs/config.d.ts +4 -0
  2. package/dist/cjs/config.d.ts.map +1 -1
  3. package/dist/cjs/config.js +3 -0
  4. package/dist/cjs/config.js.map +1 -1
  5. package/dist/cjs/executor-api.d.ts +6 -0
  6. package/dist/cjs/executor-api.d.ts.map +1 -0
  7. package/dist/cjs/executor-api.js +49 -0
  8. package/dist/cjs/executor-api.js.map +1 -0
  9. package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts +43 -18
  10. package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -1
  11. package/dist/cjs/protocols/tokenBridge/tokenTransfer.js +202 -34
  12. package/dist/cjs/protocols/tokenBridge/tokenTransfer.js.map +1 -1
  13. package/dist/cjs/protocols/wormholeTransfer.d.ts +1 -1
  14. package/dist/cjs/protocols/wormholeTransfer.d.ts.map +1 -1
  15. package/dist/cjs/routes/tokenBridge/automatic.d.ts.map +1 -1
  16. package/dist/cjs/routes/tokenBridge/automatic.js +3 -4
  17. package/dist/cjs/routes/tokenBridge/automatic.js.map +1 -1
  18. package/dist/cjs/routes/tokenBridge/executor.d.ts +88 -0
  19. package/dist/cjs/routes/tokenBridge/executor.d.ts.map +1 -0
  20. package/dist/cjs/routes/tokenBridge/executor.js +199 -0
  21. package/dist/cjs/routes/tokenBridge/executor.js.map +1 -0
  22. package/dist/cjs/routes/tokenBridge/index.d.ts +1 -0
  23. package/dist/cjs/routes/tokenBridge/index.d.ts.map +1 -1
  24. package/dist/cjs/routes/tokenBridge/index.js +1 -0
  25. package/dist/cjs/routes/tokenBridge/index.js.map +1 -1
  26. package/dist/cjs/routes/tokenBridge/manual.d.ts.map +1 -1
  27. package/dist/cjs/routes/tokenBridge/manual.js +5 -0
  28. package/dist/cjs/routes/tokenBridge/manual.js.map +1 -1
  29. package/dist/cjs/types.d.ts +6 -1
  30. package/dist/cjs/types.d.ts.map +1 -1
  31. package/dist/cjs/types.js +6 -1
  32. package/dist/cjs/types.js.map +1 -1
  33. package/dist/cjs/wormhole.d.ts +30 -5
  34. package/dist/cjs/wormhole.d.ts.map +1 -1
  35. package/dist/cjs/wormhole.js +66 -22
  36. package/dist/cjs/wormhole.js.map +1 -1
  37. package/dist/esm/config.d.ts +4 -0
  38. package/dist/esm/config.d.ts.map +1 -1
  39. package/dist/esm/config.js +3 -0
  40. package/dist/esm/config.js.map +1 -1
  41. package/dist/esm/executor-api.d.ts +6 -0
  42. package/dist/esm/executor-api.d.ts.map +1 -0
  43. package/dist/esm/executor-api.js +40 -0
  44. package/dist/esm/executor-api.js.map +1 -0
  45. package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts +43 -18
  46. package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -1
  47. package/dist/esm/protocols/tokenBridge/tokenTransfer.js +205 -37
  48. package/dist/esm/protocols/tokenBridge/tokenTransfer.js.map +1 -1
  49. package/dist/esm/protocols/wormholeTransfer.d.ts +1 -1
  50. package/dist/esm/protocols/wormholeTransfer.d.ts.map +1 -1
  51. package/dist/esm/routes/tokenBridge/automatic.d.ts.map +1 -1
  52. package/dist/esm/routes/tokenBridge/automatic.js +3 -4
  53. package/dist/esm/routes/tokenBridge/automatic.js.map +1 -1
  54. package/dist/esm/routes/tokenBridge/executor.d.ts +88 -0
  55. package/dist/esm/routes/tokenBridge/executor.d.ts.map +1 -0
  56. package/dist/esm/routes/tokenBridge/executor.js +194 -0
  57. package/dist/esm/routes/tokenBridge/executor.js.map +1 -0
  58. package/dist/esm/routes/tokenBridge/index.d.ts +1 -0
  59. package/dist/esm/routes/tokenBridge/index.d.ts.map +1 -1
  60. package/dist/esm/routes/tokenBridge/index.js +1 -0
  61. package/dist/esm/routes/tokenBridge/index.js.map +1 -1
  62. package/dist/esm/routes/tokenBridge/manual.d.ts.map +1 -1
  63. package/dist/esm/routes/tokenBridge/manual.js +5 -0
  64. package/dist/esm/routes/tokenBridge/manual.js.map +1 -1
  65. package/dist/esm/types.d.ts +6 -1
  66. package/dist/esm/types.d.ts.map +1 -1
  67. package/dist/esm/types.js +4 -0
  68. package/dist/esm/types.js.map +1 -1
  69. package/dist/esm/wormhole.d.ts +30 -5
  70. package/dist/esm/wormhole.d.ts.map +1 -1
  71. package/dist/esm/wormhole.js +43 -22
  72. package/dist/esm/wormhole.js.map +1 -1
  73. package/package.json +3 -3
@@ -4,22 +4,26 @@ export declare const DEFAULT_TASK_TIMEOUT: number;
4
4
  export type WormholeConfig<N extends Network = Network, P extends Platform = Platform> = {
5
5
  api: string;
6
6
  circleAPI: string;
7
+ executorAPI: string;
7
8
  chains: ChainsConfig<N, P>;
8
9
  };
9
10
  export declare const CONFIG: {
10
11
  readonly Mainnet: {
11
12
  readonly api: "https://api.wormholescan.io";
12
13
  readonly circleAPI: "https://iris-api.circle.com/v1/attestations";
14
+ readonly executorAPI: "https://executor.labsapis.com/v0";
13
15
  readonly chains: ChainsConfig<"Mainnet", "Evm" | "Solana" | "Cosmwasm" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near">;
14
16
  };
15
17
  readonly Testnet: {
16
18
  readonly api: "https://api.testnet.wormholescan.io";
17
19
  readonly circleAPI: "https://iris-api-sandbox.circle.com/v1/attestations";
20
+ readonly executorAPI: "https://executor-testnet.labsapis.com/v0";
18
21
  readonly chains: ChainsConfig<"Testnet", "Evm" | "Solana" | "Cosmwasm" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near">;
19
22
  };
20
23
  readonly Devnet: {
21
24
  readonly api: "http://guardian:7071";
22
25
  readonly circleAPI: "";
26
+ readonly executorAPI: "";
23
27
  readonly chains: ChainsConfig<"Devnet", "Evm" | "Solana" | "Cosmwasm" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near">;
24
28
  };
25
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGtF,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAE9C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACvF,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAgBiC,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,QAAQ,EAC1E,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,GACV,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAMpB;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACrC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACrB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAC/B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,OAAO,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,QAAQ,IAAI,gBAAgB,CACzF,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CACnB,CAAC;AACF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,KAAK,IAAI,gBAAgB,CACrF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAClB,CAAC;AAGF,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,OAAO,EAC5D,OAAO,EAAE,CAAC,EACV,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACrC,cAAc,CAIhB;AAGD,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,QAAQ,EACpF,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,EACX,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAIpB;AAgBD,eAAO,MAAM,eAAe,EAAE,OACgC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGtF,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAE9C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACvF,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAmBiC,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,QAAQ,EAC1E,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,GACV,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAMpB;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACrC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACrB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAC/B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,OAAO,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,QAAQ,IAAI,gBAAgB,CACzF,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CACnB,CAAC;AACF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,KAAK,IAAI,gBAAgB,CACrF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAClB,CAAC;AAGF,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,OAAO,EAC5D,OAAO,EAAE,CAAC,EACV,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACrC,cAAc,CAIhB;AAGD,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,QAAQ,EACpF,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,EACX,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAIpB;AAgBD,eAAO,MAAM,eAAe,EAAE,OACgC,CAAC"}
@@ -8,16 +8,19 @@ exports.CONFIG = {
8
8
  Mainnet: {
9
9
  api: "https://api.wormholescan.io",
10
10
  circleAPI: sdk_base_1.circle.circleAPI("Mainnet"),
11
+ executorAPI: "https://executor.labsapis.com/v0",
11
12
  chains: (0, sdk_definitions_1.buildConfig)("Mainnet"),
12
13
  },
13
14
  Testnet: {
14
15
  api: "https://api.testnet.wormholescan.io",
15
16
  circleAPI: sdk_base_1.circle.circleAPI("Testnet"),
17
+ executorAPI: "https://executor-testnet.labsapis.com/v0",
16
18
  chains: (0, sdk_definitions_1.buildConfig)("Testnet"),
17
19
  },
18
20
  Devnet: {
19
21
  api: "http://guardian:7071", // Tilt Guardian REST api
20
22
  circleAPI: "",
23
+ executorAPI: "",
21
24
  chains: (0, sdk_definitions_1.buildConfig)("Devnet"),
22
25
  },
23
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;AACA,4DAAuD;AAEvD,0EAAmE;AAEtD,QAAA,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,2BAA2B;AAQ7D,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE;QACP,GAAG,EAAE,6BAA6B;QAClC,SAAS,EAAE,iBAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACtC,MAAM,EAAE,IAAA,6BAAW,EAAC,SAAS,CAAC;KAC/B;IACD,OAAO,EAAE;QACP,GAAG,EAAE,qCAAqC;QAC1C,SAAS,EAAE,iBAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACtC,MAAM,EAAE,IAAA,6BAAW,EAAC,SAAS,CAAC;KAC/B;IACD,MAAM,EAAE;QACN,GAAG,EAAE,sBAAsB,EAAE,yBAAyB;QACtD,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,IAAA,6BAAW,EAAC,QAAQ,CAAC;KAC9B;CACiD,CAAC;AAErD,SAAgB,sBAAsB,CACpC,OAAU,EACV,QAAW;IAEX,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,cAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACvD,OAAO,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAChC,CAAC,CAAC,CACmB,CAAC;AAC1B,CAAC;AATD,wDASC;AAiBD,yCAAyC;AACzC,SAAgB,4BAA4B,CAC1C,OAAU,EACV,SAAsC;IAEtC,IAAI,IAAI,GAAG,cAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAPD,oEAOC;AAED,yCAAyC;AACzC,SAAgB,gCAAgC,CAC9C,OAAU,EACV,QAAW,EACX,SAAuC;IAEvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AARD,4EAQC;AAED,kEAAkE;AAClE,SAAS,QAAQ,CAAC,IAAS,EAAE,SAAc;IACzC,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC;AACjC,QAAA,eAAe,GAC1B,CAAC,MAAM,IAAK,OAAO,CAAC,GAAG,CAAC,SAAS,CAAa,CAAC,IAAI,SAAS,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;AACA,4DAAuD;AAEvD,0EAAmE;AAEtD,QAAA,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,2BAA2B;AAS7D,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE;QACP,GAAG,EAAE,6BAA6B;QAClC,SAAS,EAAE,iBAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACtC,WAAW,EAAE,kCAAkC;QAC/C,MAAM,EAAE,IAAA,6BAAW,EAAC,SAAS,CAAC;KAC/B;IACD,OAAO,EAAE;QACP,GAAG,EAAE,qCAAqC;QAC1C,SAAS,EAAE,iBAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACtC,WAAW,EAAE,0CAA0C;QACvD,MAAM,EAAE,IAAA,6BAAW,EAAC,SAAS,CAAC;KAC/B;IACD,MAAM,EAAE;QACN,GAAG,EAAE,sBAAsB,EAAE,yBAAyB;QACtD,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,IAAA,6BAAW,EAAC,QAAQ,CAAC;KAC9B;CACiD,CAAC;AAErD,SAAgB,sBAAsB,CACpC,OAAU,EACV,QAAW;IAEX,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,cAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACvD,OAAO,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAChC,CAAC,CAAC,CACmB,CAAC;AAC1B,CAAC;AATD,wDASC;AAiBD,yCAAyC;AACzC,SAAgB,4BAA4B,CAC1C,OAAU,EACV,SAAsC;IAEtC,IAAI,IAAI,GAAG,cAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAPD,oEAOC;AAED,yCAAyC;AACzC,SAAgB,gCAAgC,CAC9C,OAAU,EACV,QAAW,EACX,SAAuC;IAEvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AARD,4EAQC;AAED,kEAAkE;AAClE,SAAS,QAAQ,CAAC,IAAS,EAAE,SAAc;IACzC,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC;AACjC,QAAA,eAAe,GAC1B,CAAC,MAAM,IAAK,OAAO,CAAC,GAAG,CAAC,SAAS,CAAa,CAAC,IAAI,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type Chain } from "@wormhole-foundation/sdk-base";
2
+ import type { CapabilitiesResponse, QuoteResponse, StatusResponse, TxHash } from "@wormhole-foundation/sdk-definitions";
3
+ export declare function fetchCapabilities(apiBaseUrl: string): Promise<CapabilitiesResponse>;
4
+ export declare function fetchQuote(apiBaseUrl: string, srcChain: Chain, dstChain: Chain, relayInstructions: string): Promise<QuoteResponse>;
5
+ export declare function fetchStatus(apiBaseUrl: string, txHash: TxHash, chain: Chain): Promise<StatusResponse[]>;
6
+ //# sourceMappingURL=executor-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor-api.d.ts","sourceRoot":"","sources":["../../src/executor-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,MAAM,EACP,MAAM,sCAAsC,CAAC;AAI9C,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAQzF;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,CAAC,CAYxB;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,EAAE,CAAC,CAW3B"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchStatus = exports.fetchQuote = exports.fetchCapabilities = void 0;
7
+ const sdk_base_1 = require("@wormhole-foundation/sdk-base");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ async function fetchCapabilities(apiBaseUrl) {
10
+ const url = `${apiBaseUrl}/capabilities`;
11
+ try {
12
+ const response = await axios_1.default.get(url);
13
+ return response.data;
14
+ }
15
+ catch (error) {
16
+ throw new Error("Failed to fetch capabilities.");
17
+ }
18
+ }
19
+ exports.fetchCapabilities = fetchCapabilities;
20
+ async function fetchQuote(apiBaseUrl, srcChain, dstChain, relayInstructions) {
21
+ const url = `${apiBaseUrl}/quote`;
22
+ try {
23
+ const response = await axios_1.default.post(url, {
24
+ srcChain: (0, sdk_base_1.toChainId)(srcChain),
25
+ dstChain: (0, sdk_base_1.toChainId)(dstChain),
26
+ relayInstructions,
27
+ });
28
+ return response.data;
29
+ }
30
+ catch (error) {
31
+ throw new Error(`Failed to fetch signed quote.`);
32
+ }
33
+ }
34
+ exports.fetchQuote = fetchQuote;
35
+ async function fetchStatus(apiBaseUrl, txHash, chain) {
36
+ const url = `${apiBaseUrl}/status/tx`;
37
+ try {
38
+ const response = await axios_1.default.post(url, {
39
+ txHash,
40
+ chainId: (0, sdk_base_1.toChainId)(chain),
41
+ });
42
+ return response.data;
43
+ }
44
+ catch (error) {
45
+ throw new Error(`Failed to fetch status for txHash: ${txHash}.`);
46
+ }
47
+ }
48
+ exports.fetchStatus = fetchStatus;
49
+ //# sourceMappingURL=executor-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor-api.js","sourceRoot":"","sources":["../../src/executor-api.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAsE;AAOtE,kDAA0B;AAGnB,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,GAAG,GAAG,GAAG,UAAU,eAAe,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAuB,GAAG,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AARD,8CAQC;AAEM,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,QAAe,EACf,QAAe,EACf,iBAAyB;IAEzB,MAAM,GAAG,GAAG,GAAG,UAAU,QAAQ,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAgB,GAAG,EAAE;YACpD,QAAQ,EAAE,IAAA,oBAAS,EAAC,QAAQ,CAAC;YAC7B,QAAQ,EAAE,IAAA,oBAAS,EAAC,QAAQ,CAAC;YAC7B,iBAAiB;SAClB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAjBD,gCAiBC;AAEM,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,MAAc,EACd,KAAY;IAEZ,MAAM,GAAG,GAAG,GAAG,UAAU,YAAY,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAmB,GAAG,EAAE;YACvD,MAAM;YACN,OAAO,EAAE,IAAA,oBAAS,EAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,GAAG,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAfD,kCAeC"}
@@ -1,5 +1,6 @@
1
1
  import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2
- import type { AttestationId, AutomaticTokenBridge, ChainContext, Signer, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
2
+ import { amount } from "@wormhole-foundation/sdk-base";
3
+ import type { AttestationId, AutomaticTokenBridge, ChainContext, Signer, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId, ExecutorTokenBridge, ChainAddress } from "@wormhole-foundation/sdk-definitions";
3
4
  import { TokenBridge } from "@wormhole-foundation/sdk-definitions";
4
5
  import type { AttestationReceipt as _AttestationReceipt, TransferQuote, TransferReceipt as _TransferReceipt } from "../../types.js";
5
6
  import { TransferState } from "../../types.js";
@@ -26,22 +27,46 @@ export declare class TokenTransfer<N extends Network = Network> implements Wormh
26
27
  }
27
28
  export declare namespace TokenTransfer {
28
29
  /** 8 is maximum precision supported by the token bridge VAA */
29
- const MAX_DECIMALS = 8;
30
- type Protocol = "TokenBridge" | "AutomaticTokenBridge";
31
- type VAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA;
32
- type AttestationReceipt = _AttestationReceipt<TokenTransfer.Protocol>;
33
- type TransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = _TransferReceipt<TokenTransfer.AttestationReceipt, SC, DC>;
34
- function transfer<N extends Network>(fromChain: ChainContext<N, Chain>, transfer: TokenTransferDetails, signer: Signer<N, Chain>): Promise<TransactionId[]>;
35
- function redeem<N extends Network>(toChain: ChainContext<N, Chain>, vaa: TokenTransfer.VAA, signer: Signer<N, Chain>): Promise<TransactionId[]>;
36
- function track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransfer.TransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, SC>, toChain?: ChainContext<N, DC>): AsyncGenerator<TokenTransfer.TransferReceipt<SC, DC>>;
37
- function getReceipt<N extends Network>(xfer: TokenTransfer<N>): TransferReceipt;
38
- function lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
39
- function isTransferComplete<N extends Network, C extends Chain>(toChain: ChainContext<N, C>, vaa: TokenTransfer.VAA): Promise<boolean>;
40
- function getTransferMessage<N extends Network, C extends Chain>(chain: ChainContext<N, C>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
41
- function getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransfer.VAA | null>;
42
- function isTransferEnqueued<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId): Promise<boolean>;
43
- function validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): void;
44
- function quoteTransfer<N extends Network>(wh: Wormhole<N>, srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: Omit<TokenTransferDetails, "from" | "to">): Promise<TransferQuote>;
45
- function destinationOverrides<N extends Network>(srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
30
+ export const MAX_DECIMALS = 8;
31
+ export type Protocol = "TokenBridge" | "AutomaticTokenBridge" | "ExecutorTokenBridge";
32
+ export type VAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA | ExecutorTokenBridge.VAA;
33
+ export type AttestationReceipt = _AttestationReceipt<TokenTransfer.Protocol>;
34
+ export type TransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = _TransferReceipt<TokenTransfer.AttestationReceipt, SC, DC>;
35
+ export function transfer<N extends Network>(fromChain: ChainContext<N, Chain>, transfer: TokenTransferDetails, signer: Signer<N, Chain>): Promise<TransactionId[]>;
36
+ export function redeem<N extends Network>(toChain: ChainContext<N, Chain>, vaa: TokenTransfer.VAA, signer: Signer<N, Chain>): Promise<TransactionId[]>;
37
+ export function track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransfer.TransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, SC>, toChain?: ChainContext<N, DC>): AsyncGenerator<TokenTransfer.TransferReceipt<SC, DC>>;
38
+ export function getReceipt<N extends Network>(xfer: TokenTransfer<N>): TransferReceipt;
39
+ export function lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
40
+ export function isTransferComplete<N extends Network, C extends Chain>(toChain: ChainContext<N, C>, vaa: TokenTransfer.VAA): Promise<boolean>;
41
+ export function getTransferMessage<N extends Network, C extends Chain>(chain: ChainContext<N, C>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
42
+ export function getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransfer.VAA | null>;
43
+ export function isTransferEnqueued<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId): Promise<boolean>;
44
+ export function validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): void;
45
+ type BaseQuoteDetails = Omit<TokenTransferDetails, "from" | "to">;
46
+ export type QuoteTransferDetails = (BaseQuoteDetails & {
47
+ protocol: TokenBridge.ProtocolName;
48
+ payload?: Uint8Array;
49
+ }) | (BaseQuoteDetails & {
50
+ protocol: AutomaticTokenBridge.ProtocolName;
51
+ nativeGas?: bigint;
52
+ }) | (BaseQuoteDetails & {
53
+ protocol: ExecutorTokenBridge.ProtocolName;
54
+ msgValue: bigint;
55
+ gasLimit: bigint;
56
+ nativeGas?: bigint;
57
+ referrerFee?: {
58
+ feeDbps: bigint;
59
+ referrer: ChainAddress;
60
+ };
61
+ });
62
+ export function quoteTransfer<N extends Network>(wh: Wormhole<N>, srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: QuoteTransferDetails): Promise<TransferQuote>;
63
+ export function getExecutorGasDropOffLimit<N extends Network>(wh: Wormhole<N>, dstChain: ChainContext<N, Chain>): Promise<bigint>;
64
+ export function getExecutorQuote<N extends Network>(wh: Wormhole<N>, srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, gasLimit: bigint, msgValue: bigint, nativeGas?: bigint): Promise<ExecutorTokenBridge.ExecutorQuote>;
65
+ export function destinationOverrides<N extends Network>(srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
66
+ export function calculateReferrerFee(amt: amount.Amount, dBps: bigint): {
67
+ feeAmount: bigint;
68
+ remainingAmount: bigint;
69
+ };
70
+ export {};
46
71
  }
47
72
  //# sourceMappingURL=tokenTransfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenTransfer.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/tokenTransfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenTransfer.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/tokenTransfer.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ const sdk_base_2 = require("@wormhole-foundation/sdk-base");
9
9
  const types_js_1 = require("../../types.js");
10
10
  const whscan_api_js_1 = require("../../whscan-api.js");
11
11
  const wormhole_js_1 = require("../../wormhole.js");
12
+ const sdk_definitions_2 = require("@wormhole-foundation/sdk-definitions");
13
+ const index_js_1 = require("../../index.js");
12
14
  class TokenTransfer {
13
15
  wh;
14
16
  fromChain;
@@ -39,10 +41,7 @@ class TokenTransfer {
39
41
  // throws if invalid
40
42
  TokenTransfer.validateTransferDetails(wh, from, fromChain, toChain);
41
43
  // Apply hackery
42
- from = {
43
- ...from,
44
- ...(await TokenTransfer.destinationOverrides(fromChain, toChain, from)),
45
- };
44
+ from = await TokenTransfer.destinationOverrides(fromChain, toChain, from);
46
45
  return new TokenTransfer(wh, from, fromChain, toChain);
47
46
  }
48
47
  let tt;
@@ -65,7 +64,7 @@ class TokenTransfer {
65
64
  const vaa = await TokenTransfer.getTransferVaa(wh, id, timeout);
66
65
  if (!vaa)
67
66
  throw new Error("VAA not found");
68
- const automatic = vaa.protocolName === "AutomaticTokenBridge";
67
+ const protocol = vaa.protocolName;
69
68
  // TODO: the `from.address` here is a lie, but we don't
70
69
  // immediately have enough info to get the _correct_ one
71
70
  let from = { chain: vaa.emitterChain, address: vaa.emitterAddress };
@@ -82,9 +81,7 @@ class TokenTransfer {
82
81
  }
83
82
  const decimals = await wh.getDecimals(from.chain, nativeAddress);
84
83
  const scaledAmount = sdk_base_1.amount.scale(sdk_base_1.amount.fromBaseUnits(token.amount, Math.min(decimals, TokenTransfer.MAX_DECIMALS)), decimals);
85
- let nativeGasAmount = 0n;
86
- if (automatic) {
87
- nativeGasAmount = vaa.payload.payload.toNativeTokenAmount;
84
+ if (protocol === "AutomaticTokenBridge" || protocol === "ExecutorTokenBridge") {
88
85
  from = { chain: vaa.emitterChain, address: vaa.payload.from };
89
86
  to = { chain: vaa.payload.to.chain, address: vaa.payload.payload.targetRecipient };
90
87
  }
@@ -93,8 +90,8 @@ class TokenTransfer {
93
90
  amount: sdk_base_1.amount.units(scaledAmount),
94
91
  from,
95
92
  to,
96
- automatic,
97
- nativeGas: nativeGasAmount,
93
+ protocol,
94
+ nativeGas: protocol === "AutomaticTokenBridge" ? vaa.payload.payload.toNativeTokenAmount : 0n, // ExecutorTokenBridge: VAA doesn't contain original nativeGas amount from quote
98
95
  };
99
96
  // TODO: grab at least the init tx from the api
100
97
  const tt = new TokenTransfer(wh, details);
@@ -176,14 +173,31 @@ exports.TokenTransfer = TokenTransfer;
176
173
  const senderAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
177
174
  const token = (0, sdk_definitions_1.isTokenId)(transfer.token) ? transfer.token.address : transfer.token;
178
175
  let xfer;
179
- if (transfer.automatic) {
176
+ if (transfer.protocol === "AutomaticTokenBridge") {
180
177
  const tb = await fromChain.getAutomaticTokenBridge();
181
178
  xfer = tb.transfer(senderAddress, transfer.to, token, transfer.amount, transfer.nativeGas);
182
179
  }
183
- else {
180
+ else if (transfer.protocol === "TokenBridge") {
184
181
  const tb = await fromChain.getTokenBridge();
185
182
  xfer = tb.transfer(senderAddress, transfer.to, token, transfer.amount, transfer.payload);
186
183
  }
184
+ else if (transfer.protocol === "ExecutorTokenBridge") {
185
+ if (!transfer.executorQuote) {
186
+ throw new Error("ExecutorTokenBridge transfer requires an executorQuote");
187
+ }
188
+ const gasDropOffInstruction = transfer.executorQuote.relayInstructions.requests.find((r) => r.request.type === "GasDropOffInstruction");
189
+ if (gasDropOffInstruction &&
190
+ gasDropOffInstruction.request.type === "GasDropOffInstruction" &&
191
+ gasDropOffInstruction.request.recipient.equals(sdk_definitions_1.UniversalAddress.ZERO)) {
192
+ // @ts-ignore
193
+ gasDropOffInstruction.request.recipient = transfer.to.address.toUniversalAddress();
194
+ }
195
+ const tb = await fromChain.getExecutorTokenBridge();
196
+ xfer = tb.transfer(senderAddress, transfer.to, token, transfer.amount, transfer.executorQuote, transfer.referrerFee);
197
+ }
198
+ else {
199
+ throw new Error("Unknown token transfer protocol");
200
+ }
187
201
  return (0, common_js_1.signSendWait)(fromChain, xfer, signer);
188
202
  }
189
203
  TokenTransfer.transfer = transfer;
@@ -192,7 +206,9 @@ exports.TokenTransfer = TokenTransfer;
192
206
  const signerAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
193
207
  const xfer = vaa.protocolName === "AutomaticTokenBridge"
194
208
  ? (await toChain.getAutomaticTokenBridge()).redeem(signerAddress, vaa)
195
- : (await toChain.getTokenBridge()).redeem(signerAddress, vaa);
209
+ : vaa.protocolName === "ExecutorTokenBridge"
210
+ ? (await toChain.getExecutorTokenBridge()).redeem(signerAddress, vaa)
211
+ : (await toChain.getTokenBridge()).redeem(signerAddress, vaa);
196
212
  return (0, common_js_1.signSendWait)(toChain, xfer, signer);
197
213
  }
198
214
  TokenTransfer.redeem = redeem;
@@ -250,8 +266,11 @@ exports.TokenTransfer = TokenTransfer;
250
266
  // First try to grab the tx status from the API
251
267
  // Note: this requires a subsequent async step on the backend
252
268
  // to have the dest txid populated, so it may be delayed by some time
253
- if ((0, types_js_1.isAttested)(receipt) || (0, types_js_1.isSourceFinalized)(receipt) || (0, types_js_1.isInReview)(receipt)) {
254
- if (!receipt.attestation.id)
269
+ if ((0, types_js_1.isAttested)(receipt) ||
270
+ (0, types_js_1.isSourceFinalized)(receipt) ||
271
+ (0, types_js_1.isInReview)(receipt) ||
272
+ (0, types_js_1.isRelayFailed)(receipt)) {
273
+ if (!receipt.attestation?.id)
255
274
  throw "Attestation id required to fetch redeem tx";
256
275
  const { id } = receipt.attestation;
257
276
  const txStatus = await wh.getTransactionStatus(id, leftover(start, timeout));
@@ -261,14 +280,15 @@ exports.TokenTransfer = TokenTransfer;
261
280
  ...receipt,
262
281
  destinationTxs: [{ chain: (0, sdk_base_1.toChain)(chainId), txid: txHash }],
263
282
  state: types_js_1.TransferState.DestinationInitiated,
283
+ attestation: receipt.attestation,
264
284
  };
265
285
  }
266
286
  yield receipt;
267
287
  }
268
288
  // Fall back to asking the destination chain if this VAA has been redeemed
269
289
  // Note: We do not get any destinationTxs with this method
270
- if ((0, types_js_1.isAttested)(receipt) || (0, types_js_1.isRedeemed)(receipt)) {
271
- if (!receipt.attestation.attestation)
290
+ if ((0, types_js_1.isAttested)(receipt) || (0, types_js_1.isRedeemed)(receipt) || (0, types_js_1.isRelayFailed)(receipt)) {
291
+ if (!receipt.attestation?.attestation)
272
292
  throw "Signed Attestation required to check for redeem";
273
293
  if (receipt.attestation.attestation.payloadName === "AttestMeta") {
274
294
  throw new Error("Unable to track an AttestMeta receipt");
@@ -278,10 +298,31 @@ exports.TokenTransfer = TokenTransfer;
278
298
  receipt = {
279
299
  ...receipt,
280
300
  state: types_js_1.TransferState.DestinationFinalized,
301
+ attestation: receipt.attestation,
281
302
  };
282
303
  }
283
304
  yield receipt;
284
305
  }
306
+ // If this is a ExecutorTokenBridge transfer, check if the relay failed
307
+ // If the relay succeeded, then the token bridge will return the transfer as completed
308
+ if ((0, types_js_1.isAttested)(receipt) &&
309
+ receipt.attestation.attestation.protocolName === "ExecutorTokenBridge") {
310
+ const [txStatus] = await wh.getExecutorTxStatus(receipt.originTxs.at(-1).txid, receipt.from);
311
+ if (!txStatus)
312
+ throw new Error("No transaction status found");
313
+ const relayStatus = txStatus.status;
314
+ if (relayStatus === sdk_definitions_2.RelayStatus.Failed ||
315
+ relayStatus === sdk_definitions_2.RelayStatus.Underpaid ||
316
+ relayStatus === sdk_definitions_2.RelayStatus.Unsupported ||
317
+ relayStatus === sdk_definitions_2.RelayStatus.Aborted) {
318
+ receipt = {
319
+ ...receipt,
320
+ state: types_js_1.TransferState.Failed,
321
+ error: new index_js_1.routes.RelayFailedError(`Relay failed with status: ${relayStatus}`),
322
+ };
323
+ yield receipt;
324
+ }
325
+ }
285
326
  yield receipt;
286
327
  }
287
328
  TokenTransfer.track = track;
@@ -387,8 +428,9 @@ exports.TokenTransfer = TokenTransfer;
387
428
  }
388
429
  TokenTransfer.lookupDestinationToken = lookupDestinationToken;
389
430
  async function isTransferComplete(toChain, vaa) {
390
- if (vaa.protocolName === "AutomaticTokenBridge")
431
+ if (vaa.protocolName === "AutomaticTokenBridge" || vaa.protocolName === "ExecutorTokenBridge") {
391
432
  vaa = (0, sdk_definitions_1.deserialize)("TokenBridge:TransferWithPayload", (0, sdk_definitions_1.serialize)(vaa));
433
+ }
392
434
  const tb = await toChain.getTokenBridge();
393
435
  return tb.isTransferCompleted(vaa);
394
436
  }
@@ -414,6 +456,11 @@ exports.TokenTransfer = TokenTransfer;
414
456
  if (!!relayerAddress && address.equals(relayerAddress)) {
415
457
  return (0, sdk_definitions_1.deserialize)("AutomaticTokenBridge:TransferWithRelay", (0, sdk_definitions_1.serialize)(vaa));
416
458
  }
459
+ // We aren't checking the to address here since it could be different than what's hard-coded in the sdk
460
+ try {
461
+ return (0, sdk_definitions_1.deserialize)("ExecutorTokenBridge:TransferWithExecutorRelay", (0, sdk_definitions_1.serialize)(vaa));
462
+ }
463
+ catch { }
417
464
  }
418
465
  return vaa;
419
466
  }
@@ -429,9 +476,7 @@ exports.TokenTransfer = TokenTransfer;
429
476
  throw new Error("Cannot transfer to the same chain");
430
477
  fromChain = fromChain ?? wh.getChain(transfer.from.chain);
431
478
  toChain = toChain ?? wh.getChain(transfer.to.chain);
432
- if (transfer.automatic) {
433
- if (transfer.payload)
434
- throw new Error("Payload with automatic delivery is not supported");
479
+ if (transfer.protocol === "AutomaticTokenBridge") {
435
480
  if (!fromChain.supportsAutomaticTokenBridge())
436
481
  throw new Error(`Automatic Token Bridge not supported on ${transfer.from.chain}`);
437
482
  if (!toChain.supportsAutomaticTokenBridge())
@@ -440,14 +485,21 @@ exports.TokenTransfer = TokenTransfer;
440
485
  if (nativeGas > transfer.amount)
441
486
  throw new Error(`Native gas amount > amount (${nativeGas} > ${transfer.amount})`);
442
487
  }
443
- else {
444
- if (transfer.nativeGas)
445
- throw new Error("Gas Dropoff is only supported for automatic transfers");
488
+ else if (transfer.protocol === "TokenBridge") {
446
489
  if (!fromChain.supportsTokenBridge())
447
490
  throw new Error(`Token Bridge not supported on ${transfer.from.chain}`);
448
491
  if (!toChain.supportsTokenBridge())
449
492
  throw new Error(`Token Bridge not supported on ${transfer.to.chain}`);
450
493
  }
494
+ else if (transfer.protocol === "ExecutorTokenBridge") {
495
+ if (!fromChain.supportsExecutorTokenBridge())
496
+ throw new Error(`Token Bridge Executor not supported on ${transfer.from.chain}`);
497
+ if (!toChain.supportsExecutorTokenBridge())
498
+ throw new Error(`Token Bridge Executor not supported on ${transfer.to.chain}`);
499
+ }
500
+ else {
501
+ throw new Error("Unknown token transfer protocol");
502
+ }
451
503
  }
452
504
  TokenTransfer.validateTransferDetails = validateTransferDetails;
453
505
  async function quoteTransfer(wh, srcChain, dstChain, transfer) {
@@ -523,19 +575,61 @@ exports.TokenTransfer = TokenTransfer;
523
575
  const dstDecimals = await dstChain.getDecimals(dstToken.address);
524
576
  const dstAmountReceivable = sdk_base_1.amount.scale(srcAmountTruncated, dstDecimals);
525
577
  const eta = sdk_base_1.finality.estimateFinalityTime(srcChain.chain) + sdk_base_1.guardians.guardianAttestationEta;
526
- if (!transfer.automatic) {
578
+ const baseQuote = {
579
+ sourceToken: {
580
+ token: transfer.token,
581
+ amount: sdk_base_1.amount.units(srcAmountTruncated),
582
+ },
583
+ destinationToken: { token: dstToken, amount: sdk_base_1.amount.units(dstAmountReceivable) },
584
+ warnings: warnings.length > 0 ? warnings : undefined,
585
+ eta,
586
+ };
587
+ if (transfer.protocol === "TokenBridge") {
527
588
  return {
528
- sourceToken: {
529
- token: transfer.token,
530
- amount: sdk_base_1.amount.units(srcAmountTruncated),
531
- },
532
- destinationToken: { token: dstToken, amount: sdk_base_1.amount.units(dstAmountReceivable) },
533
- warnings: warnings.length > 0 ? warnings : undefined,
534
- eta,
589
+ ...baseQuote,
535
590
  expires: sdk_base_1.time.expiration(24, 0, 0), // manual transfer quote is good for 24 hours
536
591
  };
537
592
  }
593
+ if (transfer.protocol === "ExecutorTokenBridge") {
594
+ const executorQuote = await getExecutorQuote(wh, srcChain, dstChain, transfer.gasLimit, transfer.msgValue, transfer.nativeGas);
595
+ const gasDropOffInstruction = executorQuote.relayInstructions.requests.find((r) => r.request.type === "GasDropOffInstruction");
596
+ const destinationNativeGas = gasDropOffInstruction?.request.type === "GasDropOffInstruction"
597
+ ? gasDropOffInstruction.request.dropOff
598
+ : undefined;
599
+ let referrerFee;
600
+ if (transfer.referrerFee && transfer.referrerFee.feeDbps > 0n) {
601
+ const { feeDbps, referrer } = transfer.referrerFee;
602
+ const { feeAmount, remainingAmount } = TokenTransfer.calculateReferrerFee(srcAmountTruncated, feeDbps);
603
+ if (remainingAmount === 0n) {
604
+ throw new Error("Remaining amount after referrer fee is 0");
605
+ }
606
+ referrerFee = {
607
+ feeDbps,
608
+ feeAmount,
609
+ remainingAmount,
610
+ referrer,
611
+ };
612
+ }
613
+ return {
614
+ ...baseQuote,
615
+ destinationToken: {
616
+ token: dstToken,
617
+ amount: referrerFee?.remainingAmount
618
+ ? sdk_base_1.amount.units(sdk_base_1.amount.scale(sdk_base_1.amount.fromBaseUnits(referrerFee.remainingAmount, srcDecimals), dstDecimals))
619
+ : sdk_base_1.amount.units(dstAmountReceivable),
620
+ },
621
+ expires: executorQuote.signedQuote.quote.expiryTime,
622
+ relayFee: { token: (0, sdk_definitions_1.nativeTokenId)(srcChain.chain), amount: executorQuote.estimatedCost },
623
+ destinationNativeGas,
624
+ details: {
625
+ executorQuote,
626
+ referrerFee,
627
+ },
628
+ };
629
+ }
538
630
  // Otherwise automatic
631
+ if (transfer.protocol !== "AutomaticTokenBridge")
632
+ throw new Error("Unknown token transfer protocol");
539
633
  // The fee is removed from the amount transferred
540
634
  // quoted on the source chain
541
635
  const stb = await srcChain.getAutomaticTokenBridge();
@@ -591,13 +685,72 @@ exports.TokenTransfer = TokenTransfer;
591
685
  };
592
686
  }
593
687
  TokenTransfer.quoteTransfer = quoteTransfer;
688
+ async function getExecutorGasDropOffLimit(wh, dstChain) {
689
+ const capabilities = await wh.getExecutorCapabilities();
690
+ const dstCapabilities = capabilities[(0, sdk_base_1.toChainId)(dstChain.chain)];
691
+ if (!dstCapabilities) {
692
+ throw new Error(`No executor capabilities found for destination chain ${dstChain.chain}`);
693
+ }
694
+ return BigInt(dstCapabilities.gasDropOffLimit);
695
+ }
696
+ TokenTransfer.getExecutorGasDropOffLimit = getExecutorGasDropOffLimit;
697
+ async function getExecutorQuote(wh, srcChain, dstChain, gasLimit, msgValue, nativeGas) {
698
+ const capabilities = await wh.getExecutorCapabilities();
699
+ const srcCapabilities = capabilities[(0, sdk_base_1.toChainId)(srcChain.chain)];
700
+ if (!srcCapabilities) {
701
+ throw new Error(`No executor capabilities found for source chain ${srcChain.chain}`);
702
+ }
703
+ const dstCapabilities = capabilities[(0, sdk_base_1.toChainId)(dstChain.chain)];
704
+ if (!dstCapabilities || !dstCapabilities.requestPrefixes.includes("ERV1")) {
705
+ throw new Error(`No executor capabilities found for destination chain ${dstChain.chain}`);
706
+ }
707
+ // Validate nativeGas doesn't exceed limit
708
+ const dropOff = nativeGas ?? 0n;
709
+ if (dropOff > BigInt(dstCapabilities.gasDropOffLimit)) {
710
+ throw new Error(`Native gas amount ${dropOff} exceeds limit ${BigInt(dstCapabilities.gasDropOffLimit)} for destination chain ${dstChain.chain}`);
711
+ }
712
+ const instructions = [];
713
+ instructions.push({
714
+ request: {
715
+ type: "GasInstruction",
716
+ gasLimit,
717
+ msgValue,
718
+ },
719
+ });
720
+ if (dropOff > 0n) {
721
+ instructions.push({
722
+ request: {
723
+ type: "GasDropOffInstruction",
724
+ dropOff,
725
+ // Placeholder recipient for gas drop-off. This will be set at transfer time.
726
+ recipient: sdk_definitions_1.UniversalAddress.ZERO,
727
+ },
728
+ });
729
+ }
730
+ const relayInstructions = {
731
+ requests: instructions,
732
+ };
733
+ const relayInstructionsBytes = (0, sdk_base_1.serializeLayout)(sdk_definitions_1.relayInstructionsLayout, relayInstructions);
734
+ const executorQuote = await wh.getExecutorQuote(srcChain.chain, dstChain.chain, sdk_base_1.encoding.hex.encode(relayInstructionsBytes, true));
735
+ if (!executorQuote.estimatedCost) {
736
+ throw new Error("No estimated cost");
737
+ }
738
+ const estimatedCost = BigInt(executorQuote.estimatedCost);
739
+ const signedQuote = (0, sdk_base_1.deserializeLayout)(sdk_definitions_1.signedQuoteLayout, sdk_base_1.encoding.hex.decode(executorQuote.signedQuote));
740
+ return {
741
+ signedQuote,
742
+ estimatedCost,
743
+ relayInstructions,
744
+ };
745
+ }
746
+ TokenTransfer.getExecutorQuote = getExecutorQuote;
594
747
  async function destinationOverrides(srcChain, dstChain, transfer) {
595
748
  const _transfer = { ...transfer };
596
749
  // Bit of (temporary) hackery until solana contracts support being
597
750
  // sent a VAA with the primary address
598
751
  // Note: Do _not_ override if automatic or if the destination token is native
599
752
  // gas token
600
- if ((0, sdk_base_2.chainToPlatform)(transfer.to.chain) === "Solana" && !_transfer.automatic) {
753
+ if ((0, sdk_base_2.chainToPlatform)(transfer.to.chain) === "Solana" && _transfer.protocol === "TokenBridge") {
601
754
  const destinationToken = await TokenTransfer.lookupDestinationToken(srcChain, dstChain, _transfer.token);
602
755
  if ((0, sdk_definitions_1.isNative)(destinationToken.address)) {
603
756
  const nativeWrappedTokenId = await dstChain.getNativeWrappedTokenId();
@@ -607,7 +760,7 @@ exports.TokenTransfer = TokenTransfer;
607
760
  _transfer.to = await dstChain.getTokenAccount(_transfer.to.address, destinationToken.address);
608
761
  }
609
762
  }
610
- if (_transfer.to.chain === "Sei") {
763
+ if (_transfer.to.chain === "Sei" && _transfer.protocol === "TokenBridge") {
611
764
  if (_transfer.to.chain === "Sei" && _transfer.payload)
612
765
  throw new Error("Arbitrary payloads unsupported for Sei");
613
766
  // For sei, we reserve the payload for a token transfer through the sei bridge.
@@ -624,5 +777,20 @@ exports.TokenTransfer = TokenTransfer;
624
777
  return _transfer;
625
778
  }
626
779
  TokenTransfer.destinationOverrides = destinationOverrides;
780
+ function calculateReferrerFee(amt, dBps) {
781
+ const MAX_U16 = 65535n;
782
+ if (dBps > MAX_U16) {
783
+ throw new Error("dBps exceeds max u16");
784
+ }
785
+ const amtUnits = sdk_base_1.amount.units(amt);
786
+ let remainingAmount = amtUnits;
787
+ let feeAmount = 0n;
788
+ if (dBps > 0) {
789
+ feeAmount = (amtUnits * dBps) / 100000n;
790
+ remainingAmount = amtUnits - feeAmount;
791
+ }
792
+ return { feeAmount, remainingAmount };
793
+ }
794
+ TokenTransfer.calculateReferrerFee = calculateReferrerFee;
627
795
  })(TokenTransfer || (exports.TokenTransfer = TokenTransfer = {}));
628
796
  //# sourceMappingURL=tokenTransfer.js.map