@allbridge/bridge-core-sdk 3.30.0 → 3.31.0-alpha.2
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/browser/index.js +2 -2
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +4 -4
- package/dist/src/client/core-api/api-client.js +40 -3
- package/dist/src/client/core-api/api-client.js.map +1 -1
- package/dist/src/client/core-api/core-client-base.d.ts +1 -0
- package/dist/src/client/core-api/core-client-base.js.map +1 -1
- package/dist/src/configs/mainnet.js +2 -0
- package/dist/src/configs/mainnet.js.map +1 -1
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/bridge/sol/bridge-tx-service.d.ts +10 -4
- package/dist/src/services/bridge/sol/bridge-tx-service.js +99 -2
- package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
- package/dist/src/services/bridge/sol/index.d.ts +2 -0
- package/dist/src/services/bridge/sol/index.js.map +1 -1
- package/dist/src/services/bridge/sol/payer-with-token-service.d.ts +1 -0
- package/dist/src/services/bridge/sol/payer-with-token-service.js +76 -18
- package/dist/src/services/bridge/sol/payer-with-token-service.js.map +1 -1
- package/dist/src/services/models/sol/types/cctp_v2_bridge.d.ts +1453 -0
- package/dist/src/services/models/sol/types/cctp_v2_bridge.js +3 -0
- package/dist/src/services/models/sol/types/cctp_v2_bridge.js.map +1 -0
- package/dist/src/services/models/sol/types/cctp_v2_bridge.json +1447 -0
- package/dist/src/services/models/sol/types/payer_with_token.d.ts +1343 -597
- package/dist/src/services/models/sol/types/payer_with_token.js.map +1 -1
- package/dist/src/services/models/sol/types/payer_with_token.json +378 -0
- package/dist/src/services/utils/sol/accounts.d.ts +1 -0
- package/dist/src/services/utils/sol/accounts.js +5 -0
- package/dist/src/services/utils/sol/accounts.js.map +1 -1
- package/dist/src/tokens-info/tokens-info.model.d.ts +8 -8
- package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payer-with-token-service.js","sourceRoot":"","sources":["../../../../../src/services/bridge/sol/payer-with-token-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAgE;AAChE,6CAAkH;AAClH,6DAAwD;AACxD,4EAAoE;AAEpE,oDAK6B;AAC7B,gDAAmD;AAEnD,8EAAgE;AAEhE,uFAAyE;AAEzE,gGAAkF;AAClF,yCAA4D;AAC5D,uDAekC;AAClC,qEAAsE;AAEtE,oCAAoC;AAEpC,mCAAyE;AAiFzE,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAErC,MAAa,qBAAqB;IAIvB;IACA;IACA;IALT,SAAS,GAAqB,uBAAS,CAAC,MAAM,CAAC;IAE/C,YACS,YAAoB,EACpB,MAA0B,EAC1B,GAAwB;QAFxB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,WAAM,GAAN,MAAM,CAAoB;QAC1B,QAAG,GAAH,GAAG,CAAqB;IAC9B,CAAC;IAEJ,KAAK,CAAC,uBAAuB,CAC3B,MAAkB,EAClB,eAAgC;QAEhC,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;YACzB,KAAK,0BAAS,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAChG,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,CAAC;YAChB,CAAC;YACD,KAAK,0BAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC/F,OAAO,MAAM,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;YACpE,CAAC;YACD,KAAK,0BAAS,CAAC,IAAI,CAAC;YACpB,KAAK,0BAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBACjF,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAChD,CAAC;YACD,KAAK,0BAAS,CAAC,SAAS;gBACtB,MAAM,IAAI,qBAAQ,CAAC,0CAA0C,CAAC,CAAC;YACjE,KAAK,0BAAS,CAAC,GAAG;gBAChB,MAAM,IAAI,qCAAwB,CAAC,qCAAqC,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO,IAAA,mBAAW,EAAC,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,4BAA4B,CACxC,MAAkB,EAClB,eAAgC;QAEhC,MAAM,EACJ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,GAAG,EACH,QAAQ,GAAG,GAAG,GACf,GAAG,eAAe,CAAC;QAEpB,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,WAAE,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,wBAAwB,GAAG,IAAI,WAAE,CAAC,QAAQ,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,gBAAO,CAC/B,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,EAC3D,QAAQ,CACT,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,CAAC;QAE/C,MAAM,mBAAmB,GAAG,MAAM,IAAA,2BAAgB,EAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEvF,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,mBAAmB,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,MAAM,gBAAgB,GAAG,IAAA,+BAAoB,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxE,MAAM,mBAAmB,GAAG,IAAA,+BAAoB,EAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAEnF,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAe,EAAC,SAAS,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAC9F,MAAM,mBAAmB,GAAG,MAAM,IAAA,0BAAe,EAAC,WAAW,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAEpG,OAAO;YACL,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,WAAW;YAEX,SAAS;YACT,cAAc;YACd,cAAc,EAAE,SAAS;YACzB,YAAY;YACZ,wBAAwB;YAExB,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,mBAAmB;YACnB,eAAe;YACf,mBAAmB;YAEnB,WAAW;YACX,mBAAmB;YACnB,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAEO,8BAA8B;QACpC,OAAO,aAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACtF,CAAC;IAEO,eAAe,CAAC,MAAkB,EAAE,QAAkB;QAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,4CAA+B,CAAC,mDAAmD,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,IAAI,gBAAO,CAAqB,EAAE,GAAG,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IACpG,CAAC;IAEO,yBAAyB,CAAC,MAAkB;QAClD,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC;QAC3E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,4CAA+B,CAAC,mDAAmD,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,QAA+B,EAC/B,eAAgC;QAEhC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC;QAC9D,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;QAE7D,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAa,EAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAA,gBAAQ,GAAE,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,IAAA,yBAAc,EAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC;QAChD,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAqB,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,sBAAsB,GAAG,MAAM,IAAA,8BAAmB,EAAC,eAAe,CAAC,CAAC;QAC1E,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAqB,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,uBAAuB,GAAG,MAAM,IAAA,oCAAyB,EAC7D,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAC3B,eAAe,CAChB,CAAC;QAEF,OAAO;YACL,GAAG,QAAQ;YACX,UAAU,EAAE,IAAI,WAAE,CAAC,UAAU,CAAC;YAC9B,KAAK;YACL,WAAW;YACX,kBAAkB;YAClB,eAAe;YACf,sBAAsB;YACtB,kBAAkB;YAClB,uBAAuB;SACxB,CAAC;IACJ,CAAC;IAEO,2BAA2B,CACjC,iBAAyB,EACzB,sBAAiC;QAMjC,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,CAAC,qBAAqB,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrG,MAAM,CAAC,uBAAuB,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAChE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC,QAAQ,EAAE,CAAC,EAC5D,SAAS,CACV,CAAC;QACF,MAAM,CAAC,2BAA2B,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAElH,OAAO;YACL,qBAAqB;YACrB,uBAAuB;YACvB,2BAA2B;SAC5B,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,QAAkB,EAClB,qBAAgC,EAChC,WAAsB,EACtB,2BAAsC;QAEtC,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC1F,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,qBAAQ,CAAC,2CAA2C,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,WAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClF,OAAO,uBAAa,CAAC,QAAQ,CAAC;YAC5B,UAAU,EAAE,WAAW;YACvB,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,CAAC,WAAW;SACvB,CAAC,CAAC;IACL,CAAC;IACO,KAAK,CAAC,iCAAiC,CAC7C,MAAkB,EAClB,eAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAExF,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;QACjF,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE,GAAG,UAAU,CAAC;QACjE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAEnD,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAC;YACzB,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE;YAC7B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YACzC,kBAAkB,EAAE,cAAc;YAClC,aAAa,EAAE,WAAW;YAC1B,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;SAC/C,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,2BAA2B,CAAC;QACxE,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAqB,EAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACpF,MAAM,sBAAsB,GAAG,MAAM,IAAA,2BAAgB,EAAC,kBAAkB,CAAC,CAAC;QAC1E,MAAM,wBAAwB,GAAG,MAAM,IAAA,6BAAkB,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEzF,OAAO;YACL,GAAG,UAAU;YACb,kBAAkB;YAClB,kBAAkB;YAClB,sBAAsB;YACtB,wBAAwB;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,gCAAgC,CAC5C,MAAkB,EAClB,eAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAExF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;QAC7D,MAAM,EAAE,sBAAsB,EAAE,GAAG,UAAU,CAAC;QAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAEtC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC;QAC7E,MAAM,8BAA8B,GAAG,MAAM,IAAA,2BAAgB,EAAC,wBAAwB,CAAC,CAAC;QACxF,MAAM,wBAAwB,GAAG,MAAM,IAAA,6BAAkB,EAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAE/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;QACjE,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,GACnF,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;QAE9E,MAAM,cAAc,GAAG,iBAAO,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,yBAAyB,CACzD,QAAQ,EACR,qBAAqB,EACrB,WAAW,EACX,2BAA2B,CAC5B,CAAC;QAEF,OAAO;YACL,GAAG,UAAU;YACb,wBAAwB;YACxB,8BAA8B;YAC9B,iBAAiB;YACjB,eAAe,EAAE,uBAAuB;YACxC,mBAAmB,EAAE,2BAA2B;YAChD,wBAAwB;YACxB,cAAc;YACd,qBAAqB;YACrB,cAAc;SACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,MAAkB,EAAE,eAAgC;QACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAElF,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAE9C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,sCAAyB,CAAC,2CAA2C,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,UAAU,GAA4B,IAAI,gBAAO,CACrD,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,EAC1C,QAAQ,CACT,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAqB,EAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QACxF,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAAC;QACjD,MAAM,uBAAuB,GAAG,MAAM,IAAA,+BAAoB,EAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAE9F,MAAM,0BAA0B,GAAG,MAAM,IAAA,kCAAuB,EAAC,uBAAuB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAChH,MAAM,sBAAsB,GAAG,MAAM,IAAA,gCAAqB,EAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAE9F,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;QAC1E,MAAM,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACxF,MAAM,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACxF,IAAI,MAAM,IAAI,SAAS,IAAI,CAAC,+BAA+B,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAChG,MAAM,IAAI,qBAAQ,CAAC,wBAAwB,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,wBAAwB,GAAG,IAAI,mBAAS,CAAC,+BAA+B,CAAC,CAAC;QAChF,MAAM,wBAAwB,GAAG,IAAI,mBAAS,CAAC,+BAA+B,CAAC,CAAC;QAChF,MAAM,EACJ,yBAAyB,EACzB,cAAc,EACd,4BAA4B,EAC5B,WAAW,EACX,UAAU,EACV,uBAAuB,EACvB,YAAY,GACb,GAAG,IAAA,0BAAe,EAAC,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;QAE7F,MAAM,2BAA2B,GAAG,iBAAO,CAAC,QAAQ,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,IAAA,6BAAkB,EAAC,UAAU,CAAC,SAAS,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;QAEpG,OAAO;YACL,GAAG,QAAQ;YACX,WAAW;YACX,2BAA2B;YAE3B,MAAM,EAAE,IAAI,WAAE,CAAC,MAAM,CAAC;YACtB,kBAAkB;YAClB,mBAAmB;YACnB,0BAA0B;YAC1B,uBAAuB;YACvB,sBAAsB;YACtB,wBAAwB;YACxB,wBAAwB;YACxB,yBAAyB;YACzB,cAAc;YACd,4BAA4B;YAC5B,WAAW;YACX,UAAU;YACV,uBAAuB;YACvB,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,0BAAsD;QAEtD,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,KAAK,EAEL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EAEnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,GACZ,GAAG,0BAA0B,CAAC;QAE/B,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO;aAC3C,aAAa,CAAC;YACb,UAAU;YACV,SAAS;YACT,cAAc;YACd,YAAY;YACZ,wBAAwB;YACxB,KAAK;YACL,kBAAkB,EAAE,cAAc;SACnC,CAAC;aACD,eAAe,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,kBAAkB;YAC/B,MAAM,EAAE,eAAe;YACvB,eAAe,EAAE,sBAAsB;YACvC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,mBAAmB;YACjC,gBAAgB;YAChB,mBAAmB;YACnB,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,mBAAmB;YACjC,kBAAkB;YAClB,SAAS,EAAE,kBAAkB;YAC7B,eAAe,EAAE,sBAAsB;YACvC,iBAAiB,EAAE,wBAAwB;YAC3C,YAAY,EAAE,mBAAmB;YACjC,gBAAgB,EAAE,uBAAuB;YACzC,IAAI,EAAE,WAAW;SAClB,CAAC;aACD,eAAe,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC;aACxD,WAAW,EAAE,CAAC;QAEjB,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,4BAA4B,CACxC,yBAAoD;QAEpD,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,KAAK,EAEL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EAEnB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EAEX,wBAAwB,EACxB,8BAA8B,EAC9B,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EAErB,cAAc,GACf,GAAG,yBAAyB,CAAC;QAE9B,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO;aAC3C,qBAAqB,CAAC;YACrB,UAAU;YACV,SAAS;YACT,cAAc;YACd,YAAY;YACZ,wBAAwB;YACxB,KAAK;YACL,kBAAkB,EAAE,cAAc;SACnC,CAAC;aACD,QAAQ,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,kBAAkB;YAC/B,MAAM,EAAE,eAAe;YACvB,eAAe,EAAE,sBAAsB;YACvC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,mBAAmB;YACjC,gBAAgB;YAChB,mBAAmB;YACnB,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,mBAAmB;YACjC,iBAAiB,EAAE,wBAAwB;YAC3C,YAAY,EAAE,mBAAmB;YACjC,gBAAgB,EAAE,uBAAuB;YACzC,IAAI,EAAE,WAAW;YACjB,iBAAiB,EAAE,wBAAwB;YAC3C,uBAAuB,EAAE,8BAA8B;YACvD,eAAe,EAAE,iBAAiB;YAClC,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,mBAAmB;YACjC,OAAO,EAAE,cAAc,CAAC,SAAS;YACjC,cAAc,EAAE,qBAAqB;YACrC,wBAAwB;SACzB,CAAC;aACD,eAAe,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,cAAc,CAAC,CAAC;aACxE,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC;aACzB,WAAW,EAAE,CAAC;QAEjB,OAAO;YACL,EAAE,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC;YACtE,qBAAqB,EAAE,cAAc;SACtC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,cAA8B;QAE9B,MAAM,EACJ,QAAQ,EACR,YAAY,EAEZ,MAAM,EACN,SAAS,EACT,cAAc,EAEd,WAAW,EACX,cAAc,EACd,YAAY,EACZ,wBAAwB,EAExB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EAEnB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,4BAA4B,EAC5B,WAAW,EACX,UAAU,EACV,uBAAuB,EACvB,YAAY,EAEZ,2BAA2B,GAC5B,GAAG,cAAc,CAAC;QAEnB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO;aAC3C,UAAU,CAAC;YACV,MAAM;YACN,SAAS;YACT,YAAY,EAAE,cAAc;YAC5B,kBAAkB,EAAE,cAAc;YAClC,YAAY;YACZ,wBAAwB;SACzB,CAAC;aACD,QAAQ,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,oBAAoB,EAAE,2BAA2B,CAAC,SAAS;YAC3D,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,mBAAmB;YACjC,mBAAmB;YACnB,WAAW,EAAE,sBAAsB;YACnC,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE,uBAAuB;YACzC,aAAa,EAAE,wBAAwB;YACvC,yBAAyB,EAAE,wBAAwB;YACnD,yBAAyB,EAAE,yBAAyB;YACpD,cAAc;YACd,WAAW;YACX,UAAU;YACV,uBAAuB;YACvB,YAAY;YACZ,cAAc,EAAE,4BAA4B;YAC5C,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,kBAAkB;YAC/B,eAAe,EAAE,0BAA0B;YAC3C,gBAAgB;SACjB,CAAC;aACD,eAAe,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC;aACxD,WAAW,EAAE,CAAC;QAEjB,OAAO;YACL,EAAE,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC;YACtE,qBAAqB,EAAE,2BAA2B;SACnD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,WAA6B,EAC7B,QAAkB,EAClB,WAAsB;QAEtB,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,WAAW,CAAC,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC;QAChF,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC;QACnC,OAAO,MAAM,IAAA,qCAA6B,EAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrG,CAAC;CACF;AAplBD,sDAolBC","sourcesContent":["import { BN, Program, Provider, web3 } from \"@coral-xyz/anchor\";\nimport { Keypair, PublicKey, SystemProgram, TransactionInstruction, VersionedTransaction } from \"@solana/web3.js\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { Messenger } from \"../../../client/core-api/core-api.model\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport {\n CCTPDoesNotSupportedError,\n InvalidGasFeePaymentOptionError,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../../../exceptions\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { Bridge as BridgeType } from \"../../models/sol/types/bridge\";\nimport * as bridgeIdl from \"../../models/sol/types/bridge.json\";\nimport { CctpBridge as CctpBridgeType } from \"../../models/sol/types/cctp_bridge\";\nimport * as cctpBridgeIdl from \"../../models/sol/types/cctp_bridge.json\";\nimport { PayerWithToken as PayerWithTokenType } from \"../../models/sol/types/payer_with_token\";\nimport * as payerWithTokenIdl from \"../../models/sol/types/payer_with_token.json\";\nimport { getMessage, getVUsdAmount } from \"../../utils/sol\";\nimport {\n getAssociatedAccount,\n getAuthorityAccount,\n getBridgeTokenAccount,\n getCctpAccounts,\n getCctpAuthorityAccount,\n getCctpBridgeAccount,\n getCctpLockAccount,\n getChainBridgeAccount,\n getConfigAccount,\n getGasUsageAccount,\n getLockAccount,\n getOtherChainTokenAccount,\n getPriceAccount,\n getSendMessageAccount,\n} from \"../../utils/sol/accounts\";\nimport { buildAnchorProvider } from \"../../utils/sol/anchor-provider\";\nimport { SendParams } from \"../models\";\nimport { getNonce } from \"../utils\";\nimport { SolanaBridgeParams } from \"./bridge-tx-service\";\nimport { convertToVersionedTransaction, SolTxSendParams } from \"./utils\";\n\ntype BridgeConfigInfo = Awaited<ReturnType<Program<BridgeType>[\"account\"][\"config\"][\"fetch\"]>>;\n\ninterface SwapAndBridgeBaseData {\n provider: Provider;\n payerProgram: Program<PayerWithTokenType>;\n bridgeProgram: Program<BridgeType>;\n userAccount: PublicKey;\n\n recipient: number[];\n recipientChain: number;\n recipientToken: number[];\n maxFeeAmount: BN;\n extraGasAmountInFeeToken: BN;\n\n mintAccount: PublicKey;\n feeTokenMintAccount: PublicKey;\n userTokenAccount: PublicKey;\n userFeeTokenAccount: PublicKey;\n gasPriceAccount: PublicKey;\n thisGasPriceAccount: PublicKey;\n\n poolAccount: PublicKey;\n bridgeConfigAccount: PublicKey;\n bridgeConfigInfo: BridgeConfigInfo;\n}\n\ninterface SwapAndBridgeCommonData extends SwapAndBridgeBaseData {\n vusdAmount: BN;\n nonce: number[];\n lockAccount: PublicKey;\n chainBridgeAccount: PublicKey;\n bridgeProgramId: PublicKey;\n bridgeAuthorityAccount: PublicKey;\n bridgeTokenAccount: PublicKey;\n otherBridgeTokenAccount: PublicKey;\n}\n\ninterface SwapAndBridgeAllbridgeData extends SwapAndBridgeCommonData {\n sentMessageAccount: PublicKey;\n messengerProgramId: PublicKey;\n messengerConfigAccount: PublicKey;\n messengerGasUsageAccount: PublicKey;\n}\n\ninterface SwapAndBridgeWormholeData extends SwapAndBridgeCommonData {\n wormholeMessengerAccount: PublicKey;\n wormholeMessengerConfigAccount: PublicKey;\n wormholeProgramId: string;\n sequenceAccount: PublicKey;\n feeCollectorAccount: PublicKey;\n messengerGasUsageAccount: PublicKey;\n wormholeBridgeAccount: PublicKey;\n\n messageAccount: Keypair;\n feeInstruction: TransactionInstruction;\n}\n\ninterface BridgeCctpData extends SwapAndBridgeBaseData {\n amount: BN;\n lockAccount: PublicKey;\n\n chainBridgeAccount: PublicKey;\n cctpBridgeProgramId: PublicKey;\n cctpBridgeAuthorityAccount: PublicKey;\n cctpBridgeTokenAccount: PublicKey;\n cctpBridgeConfigAccount: PublicKey;\n cctpTokenMessengerMinter: PublicKey;\n cctpTransmitterProgramId: PublicKey;\n messageTransmitterAccount: PublicKey;\n tokenMessenger: PublicKey;\n tokenMessengerEventAuthority: PublicKey;\n tokenMinter: PublicKey;\n localToken: PublicKey;\n remoteTokenMessengerKey: PublicKey;\n authorityPda: PublicKey;\n\n messageSentEventDataKeypair: Keypair;\n}\n\nconst COMPUTE_UNIT_LIMIT = 1_000_000;\n\nexport class PayerWithTokenService {\n chainType: ChainType.SOLANA = ChainType.SOLANA;\n\n constructor(\n public solanaRpcUrl: string,\n public params: SolanaBridgeParams,\n public api: AllbridgeCoreClient\n ) {}\n\n async buildRawTransactionSend(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner?: Keypair }> {\n switch (params.messenger) {\n case Messenger.ALLBRIDGE: {\n const swapAndBridgeData = await this.prepareSwapAndBridgeAllbridgeData(params, solTxSendParams);\n const tx = await this.buildSwapAndBridgeTx(swapAndBridgeData);\n return { tx };\n }\n case Messenger.WORMHOLE: {\n const swapAndBridgeData = await this.prepareSwapAndBridgeWormholeData(params, solTxSendParams);\n return await this.buildSwapAndBridgeWormholeTx(swapAndBridgeData);\n }\n case Messenger.CCTP:\n case Messenger.CCTP_V2: {\n const bridgeCctpData = await this.prepareBridgeCctpData(params, solTxSendParams);\n return this.buildBridgeCctpTx(bridgeCctpData);\n }\n case Messenger.X_RESERVE:\n throw new SdkError(\"Messenger xReserve is not supported yet.\");\n case Messenger.OFT:\n throw new OFTDoesNotSupportedError(\"Messenger OFT is not supported yet.\");\n default: {\n return assertNever(params.messenger, \"Unhandled Messenger type\");\n }\n }\n }\n\n private async prepareSwapAndBridgeBaseData(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeBaseData> {\n const {\n fromChainId,\n fromAccountAddress,\n fromTokenAddress,\n poolAddress,\n toAccountAddress,\n toTokenAddress,\n toChainId,\n fee,\n extraGas = \"0\",\n } = solTxSendParams;\n\n const userAccount = new PublicKey(fromAccountAddress);\n const recipient = Array.from(toAccountAddress);\n const recipientToken = Array.from(toTokenAddress);\n const maxFeeAmount = new BN(fee);\n const extraGasAmountInFeeToken = new BN(extraGas);\n\n const provider = buildAnchorProvider(this.solanaRpcUrl, fromAccountAddress);\n const payerProgram = this.getPayerProgram(params, provider);\n const bridgeProgram = new Program<BridgeType>(\n { ...bridgeIdl, address: params.sourceToken.bridgeAddress },\n provider\n );\n const poolAccount = new PublicKey(poolAddress);\n\n const bridgeConfigAccount = await getConfigAccount(bridgeProgram.programId);\n const bridgeConfigInfo = await bridgeProgram.account.config.fetch(bridgeConfigAccount);\n\n const mintAccount = new PublicKey(fromTokenAddress);\n const feeTokenMintAccount = new PublicKey(this.getAbrFeeTokenMintAddress(params));\n const userTokenAccount = getAssociatedAccount(userAccount, mintAccount);\n const userFeeTokenAccount = getAssociatedAccount(userAccount, feeTokenMintAccount);\n\n const gasPriceAccount = await getPriceAccount(toChainId, bridgeConfigInfo.gasOracleProgramId);\n const thisGasPriceAccount = await getPriceAccount(fromChainId, bridgeConfigInfo.gasOracleProgramId);\n\n return {\n provider,\n payerProgram,\n bridgeProgram,\n userAccount,\n\n recipient,\n recipientToken,\n recipientChain: toChainId,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n poolAccount,\n bridgeConfigAccount,\n bridgeConfigInfo,\n };\n }\n\n private getComputeUnitLimitInstruction(): TransactionInstruction {\n return web3.ComputeBudgetProgram.setComputeUnitLimit({ units: COMPUTE_UNIT_LIMIT });\n }\n\n private getPayerProgram(params: SendParams, provider: Provider): Program<PayerWithTokenType> {\n const payerAddress = params.sourceToken.abrPayer?.payerAddress;\n if (!payerAddress) {\n throw new InvalidGasFeePaymentOptionError(\"Payer with token not supported yet for ABR tokens\");\n }\n return new Program<PayerWithTokenType>({ ...payerWithTokenIdl, address: payerAddress }, provider);\n }\n\n private getAbrFeeTokenMintAddress(params: SendParams): string {\n const abrTokenAddress = params.sourceToken.abrPayer?.abrToken.tokenAddress;\n if (!abrTokenAddress) {\n throw new InvalidGasFeePaymentOptionError(\"Payer with token not supported yet for ABR tokens\");\n }\n return abrTokenAddress;\n }\n\n private async prepareSwapAndBridgeCommonData(\n baseData: SwapAndBridgeBaseData,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeCommonData> {\n const { amount, toChainId, toTokenAddress } = solTxSendParams;\n const { bridgeProgram, poolAccount, mintAccount } = baseData;\n\n const vUsdAmount = await getVUsdAmount(amount, bridgeProgram, poolAccount);\n\n const nonce = Array.from(getNonce());\n const lockAccount = await getLockAccount(nonce, bridgeProgram.programId);\n const bridgeProgramId = bridgeProgram.programId;\n const chainBridgeAccount = await getChainBridgeAccount(toChainId, bridgeProgramId);\n const bridgeAuthorityAccount = await getAuthorityAccount(bridgeProgramId);\n const bridgeTokenAccount = await getBridgeTokenAccount(mintAccount, bridgeProgramId);\n const otherBridgeTokenAccount = await getOtherChainTokenAccount(\n toChainId,\n Buffer.from(toTokenAddress),\n bridgeProgramId\n );\n\n return {\n ...baseData,\n vusdAmount: new BN(vUsdAmount),\n nonce,\n lockAccount,\n chainBridgeAccount,\n bridgeProgramId,\n bridgeAuthorityAccount,\n bridgeTokenAccount,\n otherBridgeTokenAccount,\n };\n }\n\n private getWormholeProgramAddresses(\n wormholeProgramId: string,\n bridgeAuthorityAccount: PublicKey\n ): {\n wormholeBridgeAccount: PublicKey;\n wormholeSequenceAccount: PublicKey;\n wormholeFeeCollectorAccount: PublicKey;\n } {\n const programId = new PublicKey(wormholeProgramId);\n const [wormholeBridgeAccount] = PublicKey.findProgramAddressSync([Buffer.from(\"Bridge\")], programId);\n const [wormholeSequenceAccount] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"Sequence\"), bridgeAuthorityAccount.toBuffer()],\n programId\n );\n const [wormholeFeeCollectorAccount] = PublicKey.findProgramAddressSync([Buffer.from(\"fee_collector\")], programId);\n\n return {\n wormholeBridgeAccount,\n wormholeSequenceAccount,\n wormholeFeeCollectorAccount,\n };\n }\n\n private async getWormholeFeeInstruction(\n provider: Provider,\n wormholeBridgeAccount: PublicKey,\n userAccount: PublicKey,\n wormholeFeeCollectorAccount: PublicKey\n ): Promise<TransactionInstruction> {\n const bridgeAccountInfo = await provider.connection.getAccountInfo(wormholeBridgeAccount);\n if (bridgeAccountInfo == null) {\n throw new SdkError(\"Cannot fetch wormhole bridge account info\");\n }\n\n const feeLamports = new BN(bridgeAccountInfo.data.slice(16, 24), \"le\").toString();\n return SystemProgram.transfer({\n fromPubkey: userAccount,\n toPubkey: wormholeFeeCollectorAccount,\n lamports: +feeLamports,\n });\n }\n private async prepareSwapAndBridgeAllbridgeData(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeAllbridgeData> {\n const baseData = await this.prepareSwapAndBridgeBaseData(params, solTxSendParams);\n const commonData = await this.prepareSwapAndBridgeCommonData(baseData, solTxSendParams);\n\n const { recipient, recipientToken, recipientChain, bridgeConfigInfo } = baseData;\n const { vusdAmount, nonce, bridgeAuthorityAccount } = commonData;\n const { fromChainId, toChainId } = solTxSendParams;\n\n const message = getMessage({\n amount: vusdAmount.toString(),\n recipient: Buffer.from(recipient),\n nonce: Buffer.from(nonce),\n receiveToken: Buffer.from(recipientToken),\n destinationChainId: recipientChain,\n sourceChainId: fromChainId,\n chainBridge: bridgeAuthorityAccount.toBuffer(),\n });\n\n const messengerProgramId = bridgeConfigInfo.allbridgeMessengerProgramId;\n const sentMessageAccount = await getSendMessageAccount(message, messengerProgramId);\n const messengerConfigAccount = await getConfigAccount(messengerProgramId);\n const messengerGasUsageAccount = await getGasUsageAccount(toChainId, messengerProgramId);\n\n return {\n ...commonData,\n sentMessageAccount,\n messengerProgramId,\n messengerConfigAccount,\n messengerGasUsageAccount,\n };\n }\n\n private async prepareSwapAndBridgeWormholeData(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeWormholeData> {\n const baseData = await this.prepareSwapAndBridgeBaseData(params, solTxSendParams);\n const commonData = await this.prepareSwapAndBridgeCommonData(baseData, solTxSendParams);\n\n const { provider, userAccount, bridgeConfigInfo } = baseData;\n const { bridgeAuthorityAccount } = commonData;\n const { toChainId } = solTxSendParams;\n\n const wormholeMessengerAccount = bridgeConfigInfo.wormholeMessengerProgramId;\n const wormholeMessengerConfigAccount = await getConfigAccount(wormholeMessengerAccount);\n const messengerGasUsageAccount = await getGasUsageAccount(toChainId, wormholeMessengerAccount);\n\n const wormholeProgramId = this.params.wormholeMessengerProgramId;\n const { wormholeBridgeAccount, wormholeSequenceAccount, wormholeFeeCollectorAccount } =\n this.getWormholeProgramAddresses(wormholeProgramId, bridgeAuthorityAccount);\n\n const messageAccount = Keypair.generate();\n const feeInstruction = await this.getWormholeFeeInstruction(\n provider,\n wormholeBridgeAccount,\n userAccount,\n wormholeFeeCollectorAccount\n );\n\n return {\n ...commonData,\n wormholeMessengerAccount,\n wormholeMessengerConfigAccount,\n wormholeProgramId,\n sequenceAccount: wormholeSequenceAccount,\n feeCollectorAccount: wormholeFeeCollectorAccount,\n messengerGasUsageAccount,\n messageAccount,\n wormholeBridgeAccount,\n feeInstruction,\n };\n }\n\n private async prepareBridgeCctpData(params: SendParams, solTxSendParams: SolTxSendParams): Promise<BridgeCctpData> {\n const baseData = await this.prepareSwapAndBridgeBaseData(params, solTxSendParams);\n\n const { mintAccount, provider } = baseData;\n const { amount, toChainId } = solTxSendParams;\n\n const cctpAddress = params.sourceToken.cctpAddress;\n if (!cctpAddress) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n\n const cctpBridge: Program<CctpBridgeType> = new Program<CctpBridgeType>(\n { ...cctpBridgeIdl, address: cctpAddress },\n provider\n );\n const chainBridgeAccount = await getChainBridgeAccount(toChainId, cctpBridge.programId);\n const cctpBridgeProgramId = cctpBridge.programId;\n const cctpBridgeConfigAccount = await getCctpBridgeAccount(mintAccount, cctpBridge.programId);\n\n const cctpBridgeAuthorityAccount = await getCctpAuthorityAccount(cctpBridgeConfigAccount, cctpBridge.programId);\n const cctpBridgeTokenAccount = await getBridgeTokenAccount(mintAccount, cctpBridge.programId);\n\n const destinationChainSymbol = params.destinationToken.chainSymbol;\n const domain = this.params.cctpParams.cctpDomains[destinationChainSymbol];\n const cctpTransmitterProgramIdAddress = this.params.cctpParams.cctpTransmitterProgramId;\n const cctpTokenMessengerMinterAddress = this.params.cctpParams.cctpTokenMessengerMinter;\n if (domain == undefined || !cctpTransmitterProgramIdAddress || !cctpTokenMessengerMinterAddress) {\n throw new SdkError(\"CCTP is not configured\");\n }\n const cctpTransmitterProgramId = new PublicKey(cctpTransmitterProgramIdAddress);\n const cctpTokenMessengerMinter = new PublicKey(cctpTokenMessengerMinterAddress);\n const {\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n } = getCctpAccounts(domain, mintAccount, cctpTransmitterProgramId, cctpTokenMessengerMinter);\n\n const messageSentEventDataKeypair = Keypair.generate();\n const lockAccount = getCctpLockAccount(cctpBridge.programId, messageSentEventDataKeypair.publicKey);\n\n return {\n ...baseData,\n lockAccount,\n messageSentEventDataKeypair,\n\n amount: new BN(amount),\n chainBridgeAccount,\n cctpBridgeProgramId,\n cctpBridgeAuthorityAccount,\n cctpBridgeConfigAccount,\n cctpBridgeTokenAccount,\n cctpTokenMessengerMinter,\n cctpTransmitterProgramId,\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n };\n }\n\n private async buildSwapAndBridgeTx(\n swapAndBridgeAllbridgeData: SwapAndBridgeAllbridgeData\n ): Promise<VersionedTransaction> {\n const {\n provider,\n payerProgram,\n userAccount,\n vusdAmount,\n recipient,\n recipientChain,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n\n lockAccount,\n chainBridgeAccount,\n bridgeProgramId,\n bridgeAuthorityAccount,\n bridgeTokenAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n sentMessageAccount,\n messengerProgramId,\n messengerConfigAccount,\n messengerGasUsageAccount,\n bridgeConfigAccount,\n otherBridgeTokenAccount,\n poolAccount,\n } = swapAndBridgeAllbridgeData;\n\n const transaction = await payerProgram.methods\n .swapAndBridge({\n vusdAmount,\n recipient,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n destinationChainId: recipientChain,\n })\n .accountsPartial({\n lock: lockAccount,\n chainBridge: chainBridgeAccount,\n bridge: bridgeProgramId,\n bridgeAuthority: bridgeAuthorityAccount,\n bridgeToken: bridgeTokenAccount,\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n sentMessageAccount,\n messenger: messengerProgramId,\n messengerConfig: messengerConfigAccount,\n messengerGasUsage: messengerGasUsageAccount,\n bridgeConfig: bridgeConfigAccount,\n otherBridgeToken: otherBridgeTokenAccount,\n pool: poolAccount,\n })\n .preInstructions([this.getComputeUnitLimitInstruction()])\n .transaction();\n\n return await this.finalizeTransaction(transaction, provider, userAccount);\n }\n\n private async buildSwapAndBridgeWormholeTx(\n swapAndBridgeWormholeData: SwapAndBridgeWormholeData\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner: Keypair }> {\n const {\n provider,\n payerProgram,\n userAccount,\n vusdAmount,\n recipient,\n recipientChain,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n\n lockAccount,\n chainBridgeAccount,\n bridgeProgramId,\n bridgeAuthorityAccount,\n bridgeTokenAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n messengerGasUsageAccount,\n bridgeConfigAccount,\n otherBridgeTokenAccount,\n poolAccount,\n\n wormholeMessengerAccount,\n wormholeMessengerConfigAccount,\n wormholeProgramId,\n sequenceAccount,\n feeCollectorAccount,\n messageAccount,\n wormholeBridgeAccount,\n\n feeInstruction,\n } = swapAndBridgeWormholeData;\n\n const transaction = await payerProgram.methods\n .swapAndBridgeWormhole({\n vusdAmount,\n recipient,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n destinationChainId: recipientChain,\n })\n .accounts({\n lock: lockAccount,\n chainBridge: chainBridgeAccount,\n bridge: bridgeProgramId,\n bridgeAuthority: bridgeAuthorityAccount,\n bridgeToken: bridgeTokenAccount,\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n messengerGasUsage: messengerGasUsageAccount,\n bridgeConfig: bridgeConfigAccount,\n otherBridgeToken: otherBridgeTokenAccount,\n pool: poolAccount,\n wormholeMessenger: wormholeMessengerAccount,\n wormholeMessengerConfig: wormholeMessengerConfigAccount,\n wormholeProgram: wormholeProgramId,\n sequence: sequenceAccount,\n feeCollector: feeCollectorAccount,\n message: messageAccount.publicKey,\n wormholeBridge: wormholeBridgeAccount,\n // user: user.publicKey,\n })\n .preInstructions([this.getComputeUnitLimitInstruction(), feeInstruction])\n .signers([messageAccount])\n .transaction();\n\n return {\n tx: await this.finalizeTransaction(transaction, provider, userAccount),\n requiredMessageSigner: messageAccount,\n };\n }\n\n private async buildBridgeCctpTx(\n bridgeCctpData: BridgeCctpData\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner: Keypair }> {\n const {\n provider,\n payerProgram,\n\n amount,\n recipient,\n recipientToken,\n\n userAccount,\n recipientChain,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n\n lockAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n chainBridgeAccount,\n cctpBridgeProgramId,\n cctpBridgeAuthorityAccount,\n cctpBridgeConfigAccount,\n cctpBridgeTokenAccount,\n cctpTokenMessengerMinter,\n cctpTransmitterProgramId,\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n\n messageSentEventDataKeypair,\n } = bridgeCctpData;\n\n const transaction = await payerProgram.methods\n .bridgeCctp({\n amount,\n recipient,\n receiveToken: recipientToken,\n destinationChainId: recipientChain,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n })\n .accounts({\n lock: lockAccount,\n messageSentEventData: messageSentEventDataKeypair.publicKey,\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userFeeTokenAccount,\n bridgeToken: cctpBridgeTokenAccount,\n cctpBridge: cctpBridgeProgramId,\n cctpBridgeConfig: cctpBridgeConfigAccount,\n cctpMessenger: cctpTokenMessengerMinter,\n messageTransmitterProgram: cctpTransmitterProgramId,\n messageTransmitterAccount: messageTransmitterAccount,\n tokenMessenger,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n eventAuthority: tokenMessengerEventAuthority,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n chainBridge: chainBridgeAccount,\n bridgeAuthority: cctpBridgeAuthorityAccount,\n userTokenAccount,\n })\n .preInstructions([this.getComputeUnitLimitInstruction()])\n .transaction();\n\n return {\n tx: await this.finalizeTransaction(transaction, provider, userAccount),\n requiredMessageSigner: messageSentEventDataKeypair,\n };\n }\n\n private async finalizeTransaction(\n transaction: web3.Transaction,\n provider: Provider,\n userAccount: PublicKey\n ): Promise<VersionedTransaction> {\n const connection = provider.connection;\n transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;\n transaction.feePayer = userAccount;\n return await convertToVersionedTransaction(transaction, connection, this.params.solanaLookUpTable);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"payer-with-token-service.js","sourceRoot":"","sources":["../../../../../src/services/bridge/sol/payer-with-token-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { BN, Program, Provider, web3 } from \"@coral-xyz/anchor\";\nimport { Keypair, PublicKey, SystemProgram, TransactionInstruction, VersionedTransaction } from \"@solana/web3.js\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { Messenger } from \"../../../client/core-api/core-api.model\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport {\n CCTPDoesNotSupportedError,\n InvalidGasFeePaymentOptionError,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../../../exceptions\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { Bridge as BridgeType } from \"../../models/sol/types/bridge\";\nimport * as bridgeIdl from \"../../models/sol/types/bridge.json\";\nimport { PayerWithToken as PayerWithTokenType } from \"../../models/sol/types/payer_with_token\";\nimport * as payerWithTokenIdl from \"../../models/sol/types/payer_with_token.json\";\nimport { getMessage, getVUsdAmount } from \"../../utils/sol\";\nimport {\n getAssociatedAccount,\n getAuthorityAccount,\n getBridgeTokenAccount,\n getCctpAccounts,\n getCctpAuthorityAccount,\n getCctpBridgeAccount,\n getCctpLockAccount,\n getCctpV2BridgeConfigAccount,\n getChainBridgeAccount,\n getConfigAccount,\n getGasUsageAccount,\n getLockAccount,\n getOtherChainTokenAccount,\n getPriceAccount,\n getSendMessageAccount,\n} from \"../../utils/sol/accounts\";\nimport { buildAnchorProvider } from \"../../utils/sol/anchor-provider\";\nimport { SendParams } from \"../models\";\nimport { getNonce } from \"../utils\";\nimport { SolanaBridgeParams } from \"./bridge-tx-service\";\nimport { convertToVersionedTransaction, SolTxSendParams } from \"./utils\";\n\ntype BridgeConfigInfo = Awaited<ReturnType<Program<BridgeType>[\"account\"][\"config\"][\"fetch\"]>>;\n\ninterface SwapAndBridgeBaseData {\n provider: Provider;\n payerProgram: Program<PayerWithTokenType>;\n bridgeProgram: Program<BridgeType>;\n userAccount: PublicKey;\n\n recipient: number[];\n recipientChain: number;\n recipientToken: number[];\n maxFeeAmount: BN;\n extraGasAmountInFeeToken: BN;\n\n mintAccount: PublicKey;\n feeTokenMintAccount: PublicKey;\n userTokenAccount: PublicKey;\n userFeeTokenAccount: PublicKey;\n gasPriceAccount: PublicKey;\n thisGasPriceAccount: PublicKey;\n\n poolAccount: PublicKey;\n bridgeConfigAccount: PublicKey;\n bridgeConfigInfo: BridgeConfigInfo;\n}\n\ninterface SwapAndBridgeCommonData extends SwapAndBridgeBaseData {\n vusdAmount: BN;\n nonce: number[];\n lockAccount: PublicKey;\n chainBridgeAccount: PublicKey;\n bridgeProgramId: PublicKey;\n bridgeAuthorityAccount: PublicKey;\n bridgeTokenAccount: PublicKey;\n otherBridgeTokenAccount: PublicKey;\n}\n\ninterface SwapAndBridgeAllbridgeData extends SwapAndBridgeCommonData {\n sentMessageAccount: PublicKey;\n messengerProgramId: PublicKey;\n messengerConfigAccount: PublicKey;\n messengerGasUsageAccount: PublicKey;\n}\n\ninterface SwapAndBridgeWormholeData extends SwapAndBridgeCommonData {\n wormholeMessengerAccount: PublicKey;\n wormholeMessengerConfigAccount: PublicKey;\n wormholeProgramId: string;\n sequenceAccount: PublicKey;\n feeCollectorAccount: PublicKey;\n messengerGasUsageAccount: PublicKey;\n wormholeBridgeAccount: PublicKey;\n\n messageAccount: Keypair;\n feeInstruction: TransactionInstruction;\n}\n\ninterface BridgeCctpData extends SwapAndBridgeBaseData {\n amount: BN;\n lockAccount: PublicKey;\n\n chainBridgeAccount: PublicKey;\n cctpBridgeProgramId: PublicKey;\n cctpBridgeAuthorityAccount: PublicKey;\n cctpBridgeTokenAccount: PublicKey;\n cctpBridgeConfigAccount: PublicKey;\n cctpTokenMessengerMinter: PublicKey;\n cctpTransmitterProgramId: PublicKey;\n messageTransmitterAccount: PublicKey;\n tokenMessenger: PublicKey;\n tokenMessengerEventAuthority: PublicKey;\n tokenMinter: PublicKey;\n localToken: PublicKey;\n remoteTokenMessengerKey: PublicKey;\n authorityPda: PublicKey;\n\n messageSentEventDataKeypair: Keypair;\n}\n\nconst COMPUTE_UNIT_LIMIT = 1_000_000;\n\nexport class PayerWithTokenService {\n chainType: ChainType.SOLANA = ChainType.SOLANA;\n\n constructor(\n public solanaRpcUrl: string,\n public params: SolanaBridgeParams,\n public api: AllbridgeCoreClient\n ) {}\n\n async buildRawTransactionSend(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner?: Keypair }> {\n switch (params.messenger) {\n case Messenger.ALLBRIDGE: {\n const swapAndBridgeData = await this.prepareSwapAndBridgeAllbridgeData(params, solTxSendParams);\n const tx = await this.buildSwapAndBridgeTx(swapAndBridgeData);\n return { tx };\n }\n case Messenger.WORMHOLE: {\n const swapAndBridgeData = await this.prepareSwapAndBridgeWormholeData(params, solTxSendParams);\n return await this.buildSwapAndBridgeWormholeTx(swapAndBridgeData);\n }\n case Messenger.CCTP: {\n const bridgeCctpData = await this.prepareBridgeCctpData(params, solTxSendParams);\n return this.buildBridgeCctpTx(bridgeCctpData);\n }\n case Messenger.CCTP_V2: {\n const bridgeCctpData = await this.prepareBridgeCctpData(params, solTxSendParams);\n return this.buildBridgeCctpV2Tx(bridgeCctpData);\n }\n case Messenger.X_RESERVE:\n throw new SdkError(\"Messenger xReserve is not supported yet.\");\n case Messenger.OFT:\n throw new OFTDoesNotSupportedError(\"Messenger OFT is not supported yet.\");\n default: {\n return assertNever(params.messenger, \"Unhandled Messenger type\");\n }\n }\n }\n\n private async prepareSwapAndBridgeBaseData(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeBaseData> {\n const {\n fromChainId,\n fromAccountAddress,\n fromTokenAddress,\n poolAddress,\n toAccountAddress,\n toTokenAddress,\n toChainId,\n fee,\n extraGas = \"0\",\n } = solTxSendParams;\n\n const userAccount = new PublicKey(fromAccountAddress);\n const recipient = Array.from(toAccountAddress);\n const recipientToken = Array.from(toTokenAddress);\n const maxFeeAmount = new BN(fee);\n const extraGasAmountInFeeToken = new BN(extraGas);\n\n const provider = buildAnchorProvider(this.solanaRpcUrl, fromAccountAddress);\n const payerProgram = this.getPayerProgram(params, provider);\n const bridgeProgram = new Program<BridgeType>(\n { ...bridgeIdl, address: params.sourceToken.bridgeAddress },\n provider\n );\n const poolAccount = new PublicKey(poolAddress);\n\n const bridgeConfigAccount = await getConfigAccount(bridgeProgram.programId);\n const bridgeConfigInfo = await bridgeProgram.account.config.fetch(bridgeConfigAccount);\n\n const mintAccount = new PublicKey(fromTokenAddress);\n const feeTokenMintAccount = new PublicKey(this.getAbrFeeTokenMintAddress(params));\n const userTokenAccount = getAssociatedAccount(userAccount, mintAccount);\n const userFeeTokenAccount = getAssociatedAccount(userAccount, feeTokenMintAccount);\n\n const gasPriceAccount = await getPriceAccount(toChainId, bridgeConfigInfo.gasOracleProgramId);\n const thisGasPriceAccount = await getPriceAccount(fromChainId, bridgeConfigInfo.gasOracleProgramId);\n\n return {\n provider,\n payerProgram,\n bridgeProgram,\n userAccount,\n\n recipient,\n recipientToken,\n recipientChain: toChainId,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n poolAccount,\n bridgeConfigAccount,\n bridgeConfigInfo,\n };\n }\n\n private getComputeUnitLimitInstruction(): TransactionInstruction {\n return web3.ComputeBudgetProgram.setComputeUnitLimit({ units: COMPUTE_UNIT_LIMIT });\n }\n\n private getPayerProgram(params: SendParams, provider: Provider): Program<PayerWithTokenType> {\n const payerAddress = params.sourceToken.abrPayer?.payerAddress;\n if (!payerAddress) {\n throw new InvalidGasFeePaymentOptionError(\"Payer with token not supported yet for ABR tokens\");\n }\n return new Program<PayerWithTokenType>({ ...payerWithTokenIdl, address: payerAddress }, provider);\n }\n\n private getAbrFeeTokenMintAddress(params: SendParams): string {\n const abrTokenAddress = params.sourceToken.abrPayer?.abrToken.tokenAddress;\n if (!abrTokenAddress) {\n throw new InvalidGasFeePaymentOptionError(\"Payer with token not supported yet for ABR tokens\");\n }\n return abrTokenAddress;\n }\n\n private async prepareSwapAndBridgeCommonData(\n baseData: SwapAndBridgeBaseData,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeCommonData> {\n const { amount, toChainId, toTokenAddress } = solTxSendParams;\n const { bridgeProgram, poolAccount, mintAccount } = baseData;\n\n const vUsdAmount = await getVUsdAmount(amount, bridgeProgram, poolAccount);\n\n const nonce = Array.from(getNonce());\n const lockAccount = await getLockAccount(nonce, bridgeProgram.programId);\n const bridgeProgramId = bridgeProgram.programId;\n const chainBridgeAccount = await getChainBridgeAccount(toChainId, bridgeProgramId);\n const bridgeAuthorityAccount = await getAuthorityAccount(bridgeProgramId);\n const bridgeTokenAccount = await getBridgeTokenAccount(mintAccount, bridgeProgramId);\n const otherBridgeTokenAccount = await getOtherChainTokenAccount(\n toChainId,\n Buffer.from(toTokenAddress),\n bridgeProgramId\n );\n\n return {\n ...baseData,\n vusdAmount: new BN(vUsdAmount),\n nonce,\n lockAccount,\n chainBridgeAccount,\n bridgeProgramId,\n bridgeAuthorityAccount,\n bridgeTokenAccount,\n otherBridgeTokenAccount,\n };\n }\n\n private getWormholeProgramAddresses(\n wormholeProgramId: string,\n bridgeAuthorityAccount: PublicKey\n ): {\n wormholeBridgeAccount: PublicKey;\n wormholeSequenceAccount: PublicKey;\n wormholeFeeCollectorAccount: PublicKey;\n } {\n const programId = new PublicKey(wormholeProgramId);\n const [wormholeBridgeAccount] = PublicKey.findProgramAddressSync([Buffer.from(\"Bridge\")], programId);\n const [wormholeSequenceAccount] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"Sequence\"), bridgeAuthorityAccount.toBuffer()],\n programId\n );\n const [wormholeFeeCollectorAccount] = PublicKey.findProgramAddressSync([Buffer.from(\"fee_collector\")], programId);\n\n return {\n wormholeBridgeAccount,\n wormholeSequenceAccount,\n wormholeFeeCollectorAccount,\n };\n }\n\n private async getWormholeFeeInstruction(\n provider: Provider,\n wormholeBridgeAccount: PublicKey,\n userAccount: PublicKey,\n wormholeFeeCollectorAccount: PublicKey\n ): Promise<TransactionInstruction> {\n const bridgeAccountInfo = await provider.connection.getAccountInfo(wormholeBridgeAccount);\n if (bridgeAccountInfo == null) {\n throw new SdkError(\"Cannot fetch wormhole bridge account info\");\n }\n\n const feeLamports = new BN(bridgeAccountInfo.data.slice(16, 24), \"le\").toString();\n return SystemProgram.transfer({\n fromPubkey: userAccount,\n toPubkey: wormholeFeeCollectorAccount,\n lamports: +feeLamports,\n });\n }\n private async prepareSwapAndBridgeAllbridgeData(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeAllbridgeData> {\n const baseData = await this.prepareSwapAndBridgeBaseData(params, solTxSendParams);\n const commonData = await this.prepareSwapAndBridgeCommonData(baseData, solTxSendParams);\n\n const { recipient, recipientToken, recipientChain, bridgeConfigInfo } = baseData;\n const { vusdAmount, nonce, bridgeAuthorityAccount } = commonData;\n const { fromChainId, toChainId } = solTxSendParams;\n\n const message = getMessage({\n amount: vusdAmount.toString(),\n recipient: Buffer.from(recipient),\n nonce: Buffer.from(nonce),\n receiveToken: Buffer.from(recipientToken),\n destinationChainId: recipientChain,\n sourceChainId: fromChainId,\n chainBridge: bridgeAuthorityAccount.toBuffer(),\n });\n\n const messengerProgramId = bridgeConfigInfo.allbridgeMessengerProgramId;\n const sentMessageAccount = await getSendMessageAccount(message, messengerProgramId);\n const messengerConfigAccount = await getConfigAccount(messengerProgramId);\n const messengerGasUsageAccount = await getGasUsageAccount(toChainId, messengerProgramId);\n\n return {\n ...commonData,\n sentMessageAccount,\n messengerProgramId,\n messengerConfigAccount,\n messengerGasUsageAccount,\n };\n }\n\n private async prepareSwapAndBridgeWormholeData(\n params: SendParams,\n solTxSendParams: SolTxSendParams\n ): Promise<SwapAndBridgeWormholeData> {\n const baseData = await this.prepareSwapAndBridgeBaseData(params, solTxSendParams);\n const commonData = await this.prepareSwapAndBridgeCommonData(baseData, solTxSendParams);\n\n const { provider, userAccount, bridgeConfigInfo } = baseData;\n const { bridgeAuthorityAccount } = commonData;\n const { toChainId } = solTxSendParams;\n\n const wormholeMessengerAccount = bridgeConfigInfo.wormholeMessengerProgramId;\n const wormholeMessengerConfigAccount = await getConfigAccount(wormholeMessengerAccount);\n const messengerGasUsageAccount = await getGasUsageAccount(toChainId, wormholeMessengerAccount);\n\n const wormholeProgramId = this.params.wormholeMessengerProgramId;\n const { wormholeBridgeAccount, wormholeSequenceAccount, wormholeFeeCollectorAccount } =\n this.getWormholeProgramAddresses(wormholeProgramId, bridgeAuthorityAccount);\n\n const messageAccount = Keypair.generate();\n const feeInstruction = await this.getWormholeFeeInstruction(\n provider,\n wormholeBridgeAccount,\n userAccount,\n wormholeFeeCollectorAccount\n );\n\n return {\n ...commonData,\n wormholeMessengerAccount,\n wormholeMessengerConfigAccount,\n wormholeProgramId,\n sequenceAccount: wormholeSequenceAccount,\n feeCollectorAccount: wormholeFeeCollectorAccount,\n messengerGasUsageAccount,\n messageAccount,\n wormholeBridgeAccount,\n feeInstruction,\n };\n }\n\n private async prepareBridgeCctpData(params: SendParams, solTxSendParams: SolTxSendParams): Promise<BridgeCctpData> {\n const baseData = await this.prepareSwapAndBridgeBaseData(params, solTxSendParams);\n\n const { mintAccount } = baseData;\n const { amount, toChainId } = solTxSendParams;\n\n const destinationChainSymbol = params.destinationToken.chainSymbol;\n const domain = this.params.cctpParams.cctpDomains[destinationChainSymbol];\n\n let cctpVersion: number | undefined;\n let cctpAddress: string | undefined;\n let cctpTransmitterProgramIdAddress: string | undefined;\n let cctpTokenMessengerMinterAddress: string | undefined;\n if (params.messenger === Messenger.CCTP) {\n cctpVersion = 1;\n cctpAddress = params.sourceToken.cctpAddress;\n cctpTransmitterProgramIdAddress = this.params.cctpParams.cctpTransmitterProgramId;\n cctpTokenMessengerMinterAddress = this.params.cctpParams.cctpTokenMessengerMinter;\n } else if (params.messenger === Messenger.CCTP_V2) {\n cctpVersion = 2;\n cctpAddress = params.sourceToken.cctpV2Address;\n cctpTransmitterProgramIdAddress = this.params.cctpParams.cctpV2TransmitterProgramId;\n cctpTokenMessengerMinterAddress = this.params.cctpParams.cctpV2TokenMessengerMinter;\n }\n if (domain == undefined || !cctpTransmitterProgramIdAddress || !cctpTokenMessengerMinterAddress) {\n throw new SdkError(`CCTP ${cctpVersion} is not configured`);\n }\n if (!cctpAddress) {\n throw new CCTPDoesNotSupportedError(`Such route does not support CCTP ${cctpVersion} protocol`);\n }\n\n const cctpBridgeProgramId = new PublicKey(cctpAddress);\n const cctpBridgeConfigAccount =\n cctpVersion === 1\n ? await getCctpBridgeAccount(mintAccount, cctpBridgeProgramId)\n : getCctpV2BridgeConfigAccount(mintAccount, cctpBridgeProgramId);\n const chainBridgeAccount = await getChainBridgeAccount(toChainId, cctpBridgeProgramId);\n const cctpBridgeAuthorityAccount = await getCctpAuthorityAccount(cctpBridgeConfigAccount, cctpBridgeProgramId);\n const cctpBridgeTokenAccount = await getBridgeTokenAccount(mintAccount, cctpBridgeProgramId);\n\n const cctpTransmitterProgramId = new PublicKey(cctpTransmitterProgramIdAddress);\n const cctpTokenMessengerMinter = new PublicKey(cctpTokenMessengerMinterAddress);\n const {\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n } = getCctpAccounts(domain, mintAccount, cctpTransmitterProgramId, cctpTokenMessengerMinter);\n\n const messageSentEventDataKeypair = Keypair.generate();\n const lockAccount = getCctpLockAccount(cctpBridgeProgramId, messageSentEventDataKeypair.publicKey);\n\n return {\n ...baseData,\n lockAccount,\n messageSentEventDataKeypair,\n\n amount: new BN(amount),\n chainBridgeAccount,\n cctpBridgeProgramId,\n cctpBridgeAuthorityAccount,\n cctpBridgeConfigAccount,\n cctpBridgeTokenAccount,\n cctpTokenMessengerMinter,\n cctpTransmitterProgramId,\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n };\n }\n\n private async buildSwapAndBridgeTx(\n swapAndBridgeAllbridgeData: SwapAndBridgeAllbridgeData\n ): Promise<VersionedTransaction> {\n const {\n provider,\n payerProgram,\n userAccount,\n vusdAmount,\n recipient,\n recipientChain,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n\n lockAccount,\n chainBridgeAccount,\n bridgeProgramId,\n bridgeAuthorityAccount,\n bridgeTokenAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n sentMessageAccount,\n messengerProgramId,\n messengerConfigAccount,\n messengerGasUsageAccount,\n bridgeConfigAccount,\n otherBridgeTokenAccount,\n poolAccount,\n } = swapAndBridgeAllbridgeData;\n\n const transaction = await payerProgram.methods\n .swapAndBridge({\n vusdAmount,\n recipient,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n destinationChainId: recipientChain,\n })\n .accountsPartial({\n lock: lockAccount,\n chainBridge: chainBridgeAccount,\n bridge: bridgeProgramId,\n bridgeAuthority: bridgeAuthorityAccount,\n bridgeToken: bridgeTokenAccount,\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n sentMessageAccount,\n messenger: messengerProgramId,\n messengerConfig: messengerConfigAccount,\n messengerGasUsage: messengerGasUsageAccount,\n bridgeConfig: bridgeConfigAccount,\n otherBridgeToken: otherBridgeTokenAccount,\n pool: poolAccount,\n })\n .preInstructions([this.getComputeUnitLimitInstruction()])\n .transaction();\n\n return await this.finalizeTransaction(transaction, provider, userAccount);\n }\n\n private async buildSwapAndBridgeWormholeTx(\n swapAndBridgeWormholeData: SwapAndBridgeWormholeData\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner: Keypair }> {\n const {\n provider,\n payerProgram,\n userAccount,\n vusdAmount,\n recipient,\n recipientChain,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n\n lockAccount,\n chainBridgeAccount,\n bridgeProgramId,\n bridgeAuthorityAccount,\n bridgeTokenAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n messengerGasUsageAccount,\n bridgeConfigAccount,\n otherBridgeTokenAccount,\n poolAccount,\n\n wormholeMessengerAccount,\n wormholeMessengerConfigAccount,\n wormholeProgramId,\n sequenceAccount,\n feeCollectorAccount,\n messageAccount,\n wormholeBridgeAccount,\n\n feeInstruction,\n } = swapAndBridgeWormholeData;\n\n const transaction = await payerProgram.methods\n .swapAndBridgeWormhole({\n vusdAmount,\n recipient,\n recipientToken,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n nonce,\n destinationChainId: recipientChain,\n })\n .accounts({\n lock: lockAccount,\n chainBridge: chainBridgeAccount,\n bridge: bridgeProgramId,\n bridgeAuthority: bridgeAuthorityAccount,\n bridgeToken: bridgeTokenAccount,\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n messengerGasUsage: messengerGasUsageAccount,\n bridgeConfig: bridgeConfigAccount,\n otherBridgeToken: otherBridgeTokenAccount,\n pool: poolAccount,\n wormholeMessenger: wormholeMessengerAccount,\n wormholeMessengerConfig: wormholeMessengerConfigAccount,\n wormholeProgram: wormholeProgramId,\n sequence: sequenceAccount,\n feeCollector: feeCollectorAccount,\n message: messageAccount.publicKey,\n wormholeBridge: wormholeBridgeAccount,\n // user: user.publicKey,\n })\n .preInstructions([this.getComputeUnitLimitInstruction(), feeInstruction])\n .signers([messageAccount])\n .transaction();\n\n return {\n tx: await this.finalizeTransaction(transaction, provider, userAccount),\n requiredMessageSigner: messageAccount,\n };\n }\n\n private async buildBridgeCctpTx(\n bridgeCctpData: BridgeCctpData\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner: Keypair }> {\n const {\n provider,\n payerProgram,\n\n amount,\n recipient,\n recipientToken,\n\n userAccount,\n recipientChain,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n\n lockAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n chainBridgeAccount,\n cctpBridgeProgramId,\n cctpBridgeAuthorityAccount,\n cctpBridgeConfigAccount,\n cctpBridgeTokenAccount,\n cctpTokenMessengerMinter,\n cctpTransmitterProgramId,\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n\n messageSentEventDataKeypair,\n } = bridgeCctpData;\n\n const transaction = await payerProgram.methods\n .bridgeCctp({\n amount,\n recipient,\n receiveToken: recipientToken,\n destinationChainId: recipientChain,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n })\n .accounts({\n lock: lockAccount,\n messageSentEventData: messageSentEventDataKeypair.publicKey,\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userFeeTokenAccount,\n bridgeToken: cctpBridgeTokenAccount,\n cctpBridge: cctpBridgeProgramId,\n cctpBridgeConfig: cctpBridgeConfigAccount,\n cctpMessenger: cctpTokenMessengerMinter,\n messageTransmitterProgram: cctpTransmitterProgramId,\n messageTransmitterAccount: messageTransmitterAccount,\n tokenMessenger,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n eventAuthority: tokenMessengerEventAuthority,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n chainBridge: chainBridgeAccount,\n bridgeAuthority: cctpBridgeAuthorityAccount,\n userTokenAccount,\n })\n .preInstructions([this.getComputeUnitLimitInstruction()])\n .transaction();\n\n return {\n tx: await this.finalizeTransaction(transaction, provider, userAccount),\n requiredMessageSigner: messageSentEventDataKeypair,\n };\n }\n\n private async buildBridgeCctpV2Tx(\n bridgeCctpData: BridgeCctpData\n ): Promise<{ tx: VersionedTransaction; requiredMessageSigner: Keypair }> {\n const {\n provider,\n payerProgram,\n\n amount,\n recipient,\n recipientToken,\n\n userAccount,\n recipientChain,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n\n lockAccount,\n mintAccount,\n feeTokenMintAccount,\n userTokenAccount,\n userFeeTokenAccount,\n gasPriceAccount,\n thisGasPriceAccount,\n\n chainBridgeAccount,\n cctpBridgeProgramId,\n cctpBridgeAuthorityAccount,\n cctpBridgeConfigAccount,\n cctpBridgeTokenAccount,\n cctpTokenMessengerMinter,\n cctpTransmitterProgramId,\n messageTransmitterAccount,\n tokenMessenger,\n tokenMessengerEventAuthority,\n tokenMinter,\n localToken,\n remoteTokenMessengerKey,\n authorityPda,\n\n messageSentEventDataKeypair,\n } = bridgeCctpData;\n\n const transaction = await payerProgram.methods\n .bridgeCctpV2({\n amount,\n recipient,\n receiveToken: recipientToken,\n destinationChainId: recipientChain,\n maxFeeAmount,\n extraGasAmountInFeeToken,\n })\n .accounts({\n mint: mintAccount,\n feeTokenMint: feeTokenMintAccount,\n userFeeTokenAccount,\n bridgeToken: cctpBridgeTokenAccount,\n cctpBridge: cctpBridgeProgramId,\n tokenMessengerMinterProgram: cctpTokenMessengerMinter,\n messageTransmitterProgram: cctpTransmitterProgramId,\n messageTransmitterAccount: messageTransmitterAccount,\n tokenMessenger,\n tokenMinter,\n localToken,\n remoteTokenMessenger: remoteTokenMessengerKey,\n authorityPda,\n eventAuthority: tokenMessengerEventAuthority,\n messageSentEventData: messageSentEventDataKeypair.publicKey,\n lock: lockAccount,\n cctpBridgeConfig: cctpBridgeConfigAccount,\n gasPrice: gasPriceAccount,\n thisGasPrice: thisGasPriceAccount,\n chainBridge: chainBridgeAccount,\n bridgeAuthority: cctpBridgeAuthorityAccount,\n userTokenAccount,\n })\n .preInstructions([this.getComputeUnitLimitInstruction()])\n .transaction();\n\n return {\n tx: await this.finalizeTransaction(transaction, provider, userAccount),\n requiredMessageSigner: messageSentEventDataKeypair,\n };\n }\n\n private async finalizeTransaction(\n transaction: web3.Transaction,\n provider: Provider,\n userAccount: PublicKey\n ): Promise<VersionedTransaction> {\n const connection = provider.connection;\n transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;\n transaction.feePayer = userAccount;\n return await convertToVersionedTransaction(transaction, connection, this.params.solanaLookUpTable);\n }\n}\n"]}
|