@wormhole-foundation/wormhole-connect 2.5.0-beta.11-development → 2.5.0-beta.13-development

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 (126) hide show
  1. package/dist/assets/{aptos-r6k7eJCM.js → aptos-Cutllx5i.js} +2 -2
  2. package/dist/assets/{ccip-DoYNnipC.js → ccip-C6cz5NqJ.js} +1 -1
  3. package/dist/assets/events-MYC_Tkdh.js +1 -0
  4. package/dist/assets/{evm-C5Ivowrf.js → evm-DzwJdvcV.js} +2 -2
  5. package/dist/assets/{evm-DSNDNefN.js → evm-LJDXipdh.js} +3 -3
  6. package/dist/assets/{index-DQWOpudg.js → index-BECoIARf.js} +1 -1
  7. package/dist/assets/{index-TjYk9nid.js → index-BO5vFz_J.js} +1 -1
  8. package/dist/assets/{index-BtCNeMnf.js → index-BVJL1orJ.js} +1 -1
  9. package/dist/assets/{index-CuW_tQti.js → index-BwNyYZxM.js} +1 -1
  10. package/dist/assets/{index-CLAfmegc.js → index-C6UKJUdm.js} +1 -1
  11. package/dist/assets/{index-CKNeANkQ.js → index-CJZzjIow.js} +1 -1
  12. package/dist/assets/{index-CItGJ_dO.js → index-CSiH4dly.js} +1 -1
  13. package/dist/assets/{index-CrZXNnmG.js → index-CqEHg303.js} +1 -1
  14. package/dist/assets/{index-BQQC6_X5.js → index-D3R8fZfr.js} +1 -1
  15. package/dist/assets/{index-DPi-hS0A.js → index-Ds_BlDdN.js} +2 -2
  16. package/dist/assets/{index-7lgoK4KP.js → index-DwJjUFus.js} +1 -1
  17. package/dist/assets/{index-mE5izIg0.js → index-Dxpp9NXJ.js} +1 -1
  18. package/dist/assets/{index-XgkrTsoW.js → index-EvC_Tjca.js} +1 -1
  19. package/dist/assets/{index-BiBNC4RU.js → index-RZp63Yuv.js} +1 -1
  20. package/dist/assets/{index-CD-O7bSQ.js → index-iiAA6CTH.js} +1 -1
  21. package/dist/assets/{index-Cts3aOUg.js → index-m7pOREIu.js} +1 -1
  22. package/dist/assets/{index-Cefdj6j_.js → index-wwvQRwKh.js} +1 -1
  23. package/dist/assets/{index.es-e2znZrg8.js → index.es-C9O0OD76.js} +6 -6
  24. package/dist/assets/solana-B0Eox3vZ.js +2 -0
  25. package/dist/assets/{solana-DCCw_nmt.js → solana-BGWrrBcM.js} +2 -2
  26. package/dist/assets/solanaEmbed.esm-C9Mwa0DJ.js +37 -0
  27. package/dist/assets/{sui-CqkItMnZ.js → sui-COEHPNCD.js} +2 -2
  28. package/dist/assets/{tokens-BSV7gluG.js → tokens-CzZADlQh.js} +1 -1
  29. package/dist/main.js +53 -53
  30. package/dist/src/config/tokens.d.ts +1 -0
  31. package/dist/src/config/tokens.d.ts.map +1 -1
  32. package/dist/src/routes/operator.d.ts.map +1 -1
  33. package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts +2 -0
  34. package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  35. package/dist/src/views/v2/Bridge/index.d.ts.map +1 -1
  36. package/lib/{aptos-C9OAMi1H.js → aptos-BVPA8gYF.js} +2 -2
  37. package/lib/{aptos-CAsIqnQI.mjs → aptos-CIiuTO2J.mjs} +5 -5
  38. package/lib/{aptos-DpfWcNke.mjs → aptos-Yk9QyTBh.mjs} +2 -2
  39. package/lib/{aptos-BpsPKjcQ.js → aptos-c2KbBxBV.js} +1 -1
  40. package/lib/{base64-eTS447XS.mjs → base64-BPqtma3e.mjs} +1 -1
  41. package/lib/{base64-BQceyv3G.js → base64-qNM1fRyt.js} +1 -1
  42. package/lib/{ccip-5L_RFFlZ.mjs → ccip-BpeVK7Rl.mjs} +1 -1
  43. package/lib/{ccip-CKtGr3of.js → ccip-CPVLRLJJ.js} +1 -1
  44. package/lib/{chunk-IMTC3J2M-AVjGjGaL.js → chunk-IMTC3J2M-0BfyFPJr.js} +1 -1
  45. package/lib/{chunk-IMTC3J2M-DjVKHG3P.mjs → chunk-IMTC3J2M-DvhfvP9K.mjs} +3 -3
  46. package/lib/{evm-FbYGZtKy.js → evm-Ch6FuPzQ.js} +3 -3
  47. package/lib/{evm-CG2TBh1z.js → evm-CpQDS8wo.js} +2 -2
  48. package/lib/{evm-DG0A3moT.mjs → evm-CsZx_4af.mjs} +6 -6
  49. package/lib/{evm-BwmnRfuS.mjs → evm-CySh4z_X.mjs} +5 -5
  50. package/lib/{index-BVMKrS5B.mjs → index-1-1sQdBk.mjs} +3 -3
  51. package/lib/{index-K0ykFPsk.js → index-B2M8k2mN.js} +1 -1
  52. package/lib/{index-z4_Bi5CU.mjs → index-B30laWIo.mjs} +3 -3
  53. package/lib/{index-yYTjfZw4.mjs → index-BP4yso2j.mjs} +2 -2
  54. package/lib/{index--iONH6l-.js → index-BWZuYfMC.js} +1 -1
  55. package/lib/{index-C0x_7ZRd.mjs → index-BbFiSzuk.mjs} +1 -1
  56. package/lib/{index-BGg0bm_Y.js → index-Bedqoe9t.js} +1 -1
  57. package/lib/{index-Dt7R2B1L.js → index-BjGepByq.js} +1 -1
  58. package/lib/{index-vFJLz73J.js → index-BkLX6PzJ.js} +1 -1
  59. package/lib/{index-B4S8UpLP.js → index-Bmist010.js} +1 -1
  60. package/lib/{index-C1hu08N2.mjs → index-BnKTj6SV.mjs} +1 -1
  61. package/lib/{index-BRppAJN9.js → index-BqNdjBH5.js} +1 -1
  62. package/lib/{index-xcjZAZR7.mjs → index-Buu5BXLA.mjs} +1 -1
  63. package/lib/{index-BP3SfZED.mjs → index-C07HWBow.mjs} +1 -1
  64. package/lib/{index-BXrG9Ruo.mjs → index-C3HS7tO4.mjs} +1 -1
  65. package/lib/{index-Cpia7rKx.mjs → index-CBYLO1Hi.mjs} +2 -2
  66. package/lib/{index-Ez-hP7LB.js → index-CJ19MHxd.js} +1 -1
  67. package/lib/{index-dP2tXCr7.js → index-CRY69UXK.js} +1 -1
  68. package/lib/{index-BDLAOszA.mjs → index-CTShjNeL.mjs} +1 -1
  69. package/lib/{index-BYiKTz3j.mjs → index-CZWtHdVf.mjs} +2 -2
  70. package/lib/{index-Bdtm97Ye.js → index-ChB0PxtF.js} +1 -1
  71. package/lib/{index-7hiHGhgF.mjs → index-CjxniqZI.mjs} +2 -2
  72. package/lib/{index-CUJC8NnX.js → index-ClASHgjc.js} +1 -1
  73. package/lib/{index-CiC2dYXh.mjs → index-CqmLptlA.mjs} +2 -2
  74. package/lib/{index-KLfmz3u4.mjs → index-CrthlBzj.mjs} +1 -1
  75. package/lib/{index-BliPHypb.mjs → index-D4pCpPV2.mjs} +2 -2
  76. package/lib/{index-YpF0O7qT.mjs → index-D5VvgHZZ.mjs} +4 -4
  77. package/lib/{index-hMJhZX_v.js → index-D7FFeuCp.js} +59 -59
  78. package/lib/{index-DrJnMylH.js → index-D9cOG77k.js} +1 -1
  79. package/lib/{index-CnlVWsC5.mjs → index-DGkJ3qwd.mjs} +2574 -2558
  80. package/lib/{index-DJ4euJfc.mjs → index-DHmbSwZ3.mjs} +2 -2
  81. package/lib/{index-CQOnd1fW.js → index-DQ6o865z.js} +1 -1
  82. package/lib/{index-BWT-3y0x.js → index-DQ8AFS8n.js} +1 -1
  83. package/lib/{index-BeZvLGtO.js → index-DXupFi-y.js} +1 -1
  84. package/lib/{index-CYH95WQo.mjs → index-DaWhsQ7Y.mjs} +1 -1
  85. package/lib/{index-DOZYXvpZ.js → index-DmC8NhAc.js} +1 -1
  86. package/lib/{index-BaYsbubE.js → index-Dq2CQibu.js} +1 -1
  87. package/lib/{index-Cf0JVvpJ.js → index-DxDcsE8H.js} +1 -1
  88. package/lib/{index-CFMVEraO.js → index-DyChKZrY.js} +1 -1
  89. package/lib/{index-DhB7HPtK.mjs → index-Ed6QnBz-.mjs} +1 -1
  90. package/lib/{index-eZTLr3IN.mjs → index-IrWII0fq.mjs} +1 -1
  91. package/lib/{index-BqGVgat2.js → index-RsyQYt06.js} +1 -1
  92. package/lib/{index-rJpFCyjW.mjs → index-Y3i2299b.mjs} +1 -1
  93. package/lib/{index-DmKiUzoE.js → index-kZzOULzm.js} +1 -1
  94. package/lib/{index-CDbQKj3P.mjs → index-o1TnI99x.mjs} +2 -2
  95. package/lib/{index-Dc5v58eP.mjs → index-tmft32Jl.mjs} +2 -2
  96. package/lib/{index-BFEPW9P6.js → index-uIOnTFy9.js} +1 -1
  97. package/lib/{index-BI3Eabrd.js → index-vp64iOpv.js} +1 -1
  98. package/lib/{index.es-CDR1O8K5.mjs → index.es-BDUZQPx-.mjs} +5 -5
  99. package/lib/{index.es-Cv8NRKde.js → index.es-ComZGqCi.js} +2 -2
  100. package/lib/index.js +1 -1
  101. package/lib/index.mjs +1 -1
  102. package/lib/{signer-DiyaTmYo.js → signer-B39OryLd.js} +1 -1
  103. package/lib/{signer-B_YGwqIn.mjs → signer-DDNkLWHh.mjs} +1 -1
  104. package/lib/{solana-CHdhVYd1.mjs → solana-B-7bMXQC.mjs} +4 -4
  105. package/lib/{solana-BiyzYApu.js → solana-CTMFD8wN.js} +1 -1
  106. package/lib/solana-D2DaJnor.mjs +17 -0
  107. package/lib/solana-D4aC7zHK.js +1 -0
  108. package/lib/{solanaEmbed.esm-BTq-nqfN.mjs → solanaEmbed.esm-CRy-qWYD.mjs} +2 -2
  109. package/lib/{solanaEmbed.esm-CIX_88Iq.js → solanaEmbed.esm-OJaX_G6S.js} +1 -1
  110. package/lib/src/config/tokens.d.ts +1 -0
  111. package/lib/src/config/tokens.d.ts.map +1 -1
  112. package/lib/src/routes/operator.d.ts.map +1 -1
  113. package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts +2 -0
  114. package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  115. package/lib/src/views/v2/Bridge/index.d.ts.map +1 -1
  116. package/lib/{sui-Cw3wpZcz.js → sui-COgXxdtI.js} +1 -1
  117. package/lib/{sui-BiOV3lyW.js → sui-DuISROp3.js} +1 -1
  118. package/lib/{sui-FGJLzGeg.mjs → sui-rVS-XQDK.mjs} +1 -1
  119. package/lib/{sui-CdKUlN0y.mjs → sui-xD9tYMxq.mjs} +5 -5
  120. package/lib/{tokens-DUULMB0q.mjs → tokens-BP3fRZDM.mjs} +2 -2
  121. package/lib/{tokens-DfAG-rZ1.js → tokens-CZV3Ccde.js} +1 -1
  122. package/package.json +1 -1
  123. package/dist/assets/solana-BNhbIgt5.js +0 -2
  124. package/dist/assets/solanaEmbed.esm-D6aTKNPa.js +0 -37
  125. package/lib/solana-5s84934k.mjs +0 -17
  126. package/lib/solana-pqzacfRJ.js +0 -1
@@ -1 +1 @@
1
- "use strict";var $=Object.defineProperty;var U=(k,r,t)=>r in k?$(k,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):k[r]=t;var w=(k,r,t)=>U(k,typeof r!="symbol"?r+"":r,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-hMJhZX_v.js");require("./index-BqGVgat2.js");const B=async(k,r,t)=>{var l,n,o;if(!e.isValidSuiType(t))throw new Error(`Invalid Sui type: ${t}`);const c=await e.getObjectFields(k,r);if(!c)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${r}`);const i=(n=(l=c.token_registry.fields)==null?void 0:l.id)==null?void 0:n.id;if(!i)throw new Error("Unable to fetch token registry object ID");const a=e.getPackageIdFromType((o=c.token_registry)==null?void 0:o.type);if(!a)throw new Error("Unable to fetch token registry package ID");return k.getDynamicFieldObject({parentId:i,name:{type:`${a}::token_registry::Key<${t}>`,value:{dummy_field:!1}}})},_=async(k,r,t,c)=>{var s,f,p,y;const i=await e.getObjectFields(k,r);if(!i)throw new Error("Unable to fetch object fields from token bridge state");const a=(f=(s=i.token_registry)==null?void 0:s.fields)==null?void 0:f.coin_types,l=(y=(p=a==null?void 0:a.fields)==null?void 0:p.id)==null?void 0:y.id;if(!l)throw new Error("Unable to fetch coin types");const n=e.getTableKeyType(a==null?void 0:a.type);if(!n)throw new Error("Unable to get key type");const o=await k.getDynamicFieldObject({parentId:l,name:{type:n,value:{addr:[...t],chain:c}}});if(o.error){if(o.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${o.error}`)}const g=e.getFieldsFromObjectResponse(o);if(!g)return null;if(!e.isMoveStructObject(g))throw new Error("What?");return"value"in g?e.trimSuiType(g.value):null};class S{constructor(r,t,c,i){w(this,"network");w(this,"chain");w(this,"provider");w(this,"contracts");w(this,"coreBridgeObjectId");w(this,"tokenBridgeObjectId");w(this,"chainId");this.network=r,this.chain=t,this.provider=c,this.contracts=i,this.chainId=e.networkChainToNativeChainId.get(r,t);const a=this.contracts.tokenBridge;if(!a)throw new Error(`Wormhole Token Bridge contract for domain ${t} not found`);const l=this.contracts.coreBridge;if(!l)throw new Error(`Wormhole Token Bridge contract for domain ${t} not found`);this.tokenBridgeObjectId=a,this.coreBridgeObjectId=l}static async fromRpc(r,t){const[c,i]=await e.SuiPlatform.chainFromRpc(r),a=t[i];if(a.network!==c)throw new Error(`Network mismatch: ${a.network} != ${c}`);return new S(c,i,r,a.contracts)}async isWrappedAsset(r){try{return await this.getOriginalAsset(r),!0}catch{return!1}}async getOriginalAsset(r){let t=r.getCoinType();if(!e.isValidSuiType(t))throw new Error(`Invalid Sui type: ${t}`);const c=await B(this.provider,this.tokenBridgeObjectId,t),i=e.getFieldsFromObjectResponse(c);if(!i)throw e.ErrNotWrapped(t);if(!e.isMoveStructObject(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const a=i.value;if(!e.isMoveStructStruct(a))throw new Error("Expected fields to be a MoveStruct");const l=e.trimSuiType(a.type);if(t=e.trimSuiType(t),l.includes(`wrapped_asset::WrappedAsset<${t}>`)){const n=a.fields.info;if(!e.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");const o=n.fields.token_address;if(!e.isMoveStructStruct(o))throw new Error("Expected fields to be a MoveStruct");if(!e.isMoveStructObject(o.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in o.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const g=o.fields.value;if(!e.isMoveStructStruct(g))throw new Error("Expected fields to be a MoveStruct");const s=new Uint8Array(g.fields.data);return{chain:e.toChain(Number(n.fields.token_chain)),address:new e.UniversalAddress(s)}}throw e.ErrNotWrapped(t)}async getTokenUniversalAddress(r){let t=r.getCoinType();if(!e.isValidSuiType(t))throw new Error(`Invalid Sui type: ${t}`);const c=await B(this.provider,this.tokenBridgeObjectId,t),i=e.getFieldsFromObjectResponse(c);if(!i)throw new Error(`Token of type ${t} has not been registered with the token bridge. Has it been attested?`);if(!e.isMoveStructObject(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const a=i.value;if(!e.isMoveStructStruct(a))throw new Error("Expected fields to be a MoveStruct");const l=e.trimSuiType(a.type);if(t=e.trimSuiType(t),l.includes(`native_asset::NativeAsset<${t}>`)){const n=a.fields.token_address;if(!e.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");if(!("value"in n.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const o=n.fields.value;if(!e.isMoveStructStruct(o))throw new Error("Expected fields to be a MoveStruct");const g=new Uint8Array(o.fields.data);return new e.UniversalAddress(g)}throw new Error(`Token of type ${t} is not a native asset`)}async getTokenNativeAddress(r,t){const c=await _(this.provider,this.tokenBridgeObjectId,t.toUint8Array(),e.toChainId(r));if(!c)throw new Error(`Token ${t.toString()} not found in token registry`);return new e.SuiAddress(c)}async hasWrappedAsset(r){try{return await this.getWrappedAsset(r),!0}catch{}return!1}async getWrappedAsset(r){if(e.isNative(r.address))throw new Error("Token Address required, 'native' literal not supported");const t=await _(this.provider,this.tokenBridgeObjectId,r.address.toUniversalAddress().toUint8Array(),e.toChainId(r.chain));if(!t)throw e.ErrNotWrapped(e.canonicalAddress(r));return e.toNative(this.chain,t)}async isTransferCompleted(r){var n,o,g,s,f,p,y,m;const t=await e.getObjectFields(this.provider,this.tokenBridgeObjectId);if(!t)throw new Error("Unable to fetch object fields from token bridge state");const c=(o=(n=t.consumed_vaas)==null?void 0:n.fields)==null?void 0:o.hashes,i=e.getTableKeyType((s=(g=c==null?void 0:c.fields)==null?void 0:g.items)==null?void 0:s.type);if(!i)throw new Error("Unable to get key type");const a=(m=(y=(p=(f=c==null?void 0:c.fields)==null?void 0:f.items)==null?void 0:p.fields)==null?void 0:y.id)==null?void 0:m.id;if(!a)throw new Error("Unable to fetch consumed VAAs table");const l=await this.provider.getDynamicFieldObject({parentId:a,name:{type:i,value:{data:[...e.keccak_256(r.hash)]}}});if(!l.error)return!0;if(l.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${l.error}`)}async*createAttestation(r){const t=0n,i=r.toString(),a=await this.provider.getCoinMetadata({coinType:i});if(a===null||a.id===null)throw new Error(`Coin metadata ID for type ${i} not found`);const[l,n]=await this.getPackageIds(),o=new e.Transaction$2,[g]=o.splitCoins(o.gas,[o.pure.u64(t)]),[s]=o.moveCall({target:`${n}::attest_token::attest_token`,arguments:[o.object(this.tokenBridgeObjectId),o.object(a.id),o.pure.u32(0)],typeArguments:[i]});o.moveCall({target:`${l}::publish_message::publish_message`,arguments:[o.object(this.coreBridgeObjectId),g,s,o.object(e.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(o,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(r,t){const[c,i]=await this.getPackageIds(),a=t.toString(),l=Math.min(r.payload.decimals,8),n=await this.getCoinBuildOutput(c,i,l),o=await e.publishPackage(n,a);yield this.createUnsignedTx(o,"Sui.TokenBridge.PrepareCreateWrapped");let g="",s="",f="",p="",y="",m=!1;for(;!m;){await new Promise(h=>setTimeout(h,500));const I=await this.provider.queryTransactionBlocks({filter:{FromAddress:a},options:{showObjectChanges:!0},limit:3});for(const h of I.data)if("objectChanges"in h){for(const u of h.objectChanges)e.isSuiPublishEvent(u)&&u.packageId!==void 0?g=u.packageId:e.isSuiCreateEvent(u)&&u.objectType.includes("WrappedAssetSetup")?(s=u.objectId,y=u.objectType.split(", ")[1].replace(">","")):e.isSuiCreateEvent(u)&&u.objectType.includes("UpgradeCap")?f=u.objectId:e.isSuiCreateEvent(u)&&u.objectType.includes("CoinMetadata")&&(p=u.objectId);if(g!==""&&s!==""&&f!==""&&p!==""){m=!0;break}else g="",s="",f="",p=""}}const b=e.getCoinTypeFromPackageId(g),d=new e.Transaction$2,[j]=d.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[d.object(this.coreBridgeObjectId),d.pure.vector("u8",e.serialize(r)),d.object(e.SUI_CLOCK_OBJECT_ID)]}),[T]=d.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[d.object(this.tokenBridgeObjectId),j]});d.moveCall({target:`${i}::create_wrapped::complete_registration`,arguments:[d.object(this.tokenBridgeObjectId),d.object(p),d.object(s),d.object(f),T],typeArguments:[b,y]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.SubmitAttestation")}async*transfer(r,t,c,i,a){const l=0n,n=0n,g=r.toString(),s=(e.isNative(c)?e.SUI_TYPE_ARG:c).toString(),f=await e.SuiPlatform.getCoins(this.provider,r,s),[p,...y]=f.filter(h=>e.isSameType(h.coinType,s));if(p===void 0)throw new Error(`Coins array doesn't contain any coins of type ${s}`);const[m,b]=await this.getPackageIds(),d=new e.Transaction$2,[j]=(()=>{if(s===e.SUI_TYPE_ARG)return d.splitCoins(d.gas,[d.pure.u64(i)]);{const h=d.object(p.coinObjectId);return y.length&&d.mergeCoins(h,y.map(u=>d.object(u.coinObjectId))),d.splitCoins(h,[d.pure.u64(i)])}})(),[T]=d.splitCoins(d.gas,[d.pure.u64(l)]),[I]=d.moveCall({target:`${b}::state::verified_asset`,arguments:[d.object(this.tokenBridgeObjectId)],typeArguments:[s]});if(a){if(!g)throw new Error("senderAddress is required for transfer with payload");let h=!1;const u=await(async()=>{const O=await e.getOldestEmitterCapObjectId(this.provider,m,g);if(O!==null)return d.object(O);{const[P]=d.moveCall({target:`${m}::emitter::new`,arguments:[d.object(this.coreBridgeObjectId)]});return h=!0,P}})(),[v,A]=d.moveCall({target:`${b}::transfer_tokens_with_payload::prepare_transfer`,arguments:[u,I,j,d.pure.u16(e.toChainId(t.chain)),d.pure.vector("u8",t.address.toUint8Array()),d.pure.vector("u8",a),d.pure.u32(0)],typeArguments:[s]});d.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[A],typeArguments:[s]});const[E]=d.moveCall({target:`${b}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[d.object(this.tokenBridgeObjectId),v],typeArguments:[s]});d.moveCall({target:`${m}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),T,E,d.object(e.SUI_CLOCK_OBJECT_ID)]}),h&&d.transferObjects([u],d.pure.address(g)),yield this.createUnsignedTx(d,"Sui.TokenBridge.TransferWithPayload")}else{const[h,u]=d.moveCall({target:`${b}::transfer_tokens::prepare_transfer`,arguments:[I,j,d.pure.u16(e.toChainId(t.chain)),d.pure.vector("u8",t.address.toUint8Array()),d.pure.u64(n),d.pure.u32(0)],typeArguments:[s]});d.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[u],typeArguments:[s]});const[v]=d.moveCall({target:`${b}::transfer_tokens::transfer_tokens`,arguments:[d.object(this.tokenBridgeObjectId),h],typeArguments:[s]});d.moveCall({target:`${m}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),T,v,d.object(e.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.Transfer")}}async*redeem(r,t,c=!0){const i=await _(this.provider,this.tokenBridgeObjectId,t.payload.token.address.toUint8Array(),e.toChainId(t.payload.token.chain));if(!i)throw new Error("Unable to fetch token coinType");const[a,l]=await this.getPackageIds(),n=new e.Transaction$2,[o]=n.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[n.object(this.coreBridgeObjectId),n.pure.vector("u8",e.serialize(t)),n.object(e.SUI_CLOCK_OBJECT_ID)]}),[g]=n.moveCall({target:`${l}::vaa::verify_only_once`,arguments:[n.object(this.tokenBridgeObjectId),o]}),[s]=n.moveCall({target:`${l}::complete_transfer::authorize_transfer`,arguments:[n.object(this.tokenBridgeObjectId),g],typeArguments:[i]}),[f]=n.moveCall({target:`${l}::complete_transfer::redeem_relayer_payout`,arguments:[s],typeArguments:[i]});n.moveCall({target:`${l}::coin_utils::return_nonzero`,arguments:[f],typeArguments:[i]}),yield this.createUnsignedTx(n,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return e.toNative(this.chain,e.SUI_TYPE_ARG)}async getPackageIds(){return Promise.all([e.getPackageId(this.provider,this.coreBridgeObjectId),e.getPackageId(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(r,t,c){var n;if(c>8)throw new Error("Decimals is capped at 8");const i=(n=await e.getOriginalPackageId(this.provider,this.tokenBridgeObjectId))==null?void 0:n.replace("0x","");if(!i)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const a="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+i+"00020106010000000001090b0031"+c.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[e.b64.encode(e.hex.decode(a))],dependencies:["0x1","0x2",t,r].map(o=>e.normalizeSuiObjectId(o))}}createUnsignedTx(r,t,c=!1){return new e.SuiUnsignedTransaction(r,this.network,this.chain,t,c)}}class C{constructor(r,t,c,i){w(this,"network");w(this,"chain");w(this,"connection");w(this,"contracts");w(this,"tokenBridgeRelayerObjectId");w(this,"coreBridgeObjectId");w(this,"tokenBridgeObjectId");w(this,"fields");this.network=r,this.chain=t,this.connection=c,this.contracts=i;const{tokenBridge:a,tokenBridgeRelayer:l,coreBridge:n}=i;if(!a||!l||!n)throw new Error(`Some object IDs for ${t} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=l,this.tokenBridgeObjectId=a,this.coreBridgeObjectId=n}static async fromRpc(r,t){const[c,i]=await e.SuiPlatform.chainFromRpc(r),a=t[i];if(a.network!==c)throw new Error(`Network mismatch for chain ${i}: ${a.network} != ${c}`);return new C(c,i,r,a.contracts)}async*transfer(r,t,c,i,a){const n=new e.SuiAddress(e.isNative(c)?e.SuiPlatform.nativeTokenId(this.network,this.chain).address:c).getCoinType(),{coreBridge:o,tokenBridge:g}=await this.getPackageIds(),s=new e.Transaction$2,f=BigInt(0),[p]=s.splitCoins(s.gas,[s.pure.u64(f)]),[y]=await(async()=>{if(e.isNative(c))return s.splitCoins(s.gas,[s.pure.u64(i)]);{const T=await e.SuiPlatform.getCoins(this.connection,r,n),[I,...h]=T.filter(v=>v.coinType===n);if(I===void 0)throw new Error(`Coins array doesn't contain any coins of type ${n}`);const u=s.object(I.coinObjectId);return h.length&&s.mergeCoins(u,h.map(v=>s.object(v.coinObjectId))),s.splitCoins(u,[s.pure.u64(i)])}})(),[m]=s.moveCall({target:`${g}::state::verified_asset`,arguments:[s.object(this.tokenBridgeObjectId)],typeArguments:[n]}),b=await this.getPackageId(),[d]=s.moveCall({target:`${b}::transfer::transfer_tokens_with_relay`,arguments:[s.object(this.tokenBridgeRelayerObjectId),y,m,s.pure.u64(a??0n),s.pure.u16(e.toChainId(t.chain)),s.pure.address(e.hex.encode(t.address.toUint8Array(),!0)),s.pure.u32(123)],typeArguments:[n]}),[j]=s.moveCall({target:`${g}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[s.object(this.tokenBridgeObjectId),d],typeArguments:[n]});s.moveCall({target:`${o}::publish_message::publish_message`,arguments:[s.object(this.coreBridgeObjectId),p,j,s.object(e.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(s,"AutomaticTokenBridge.transfer")}async*redeem(r,t){const{coreBridge:c,tokenBridge:i}=await this.getPackageIds(),{address:a,chain:l}=t.payload.token,n=await _(this.connection,this.tokenBridgeObjectId,a.toUniversalAddress().toUint8Array(),e.toChainId(l));if(!n)throw new Error("Unable to fetch token coinType");const o=new e.Transaction$2,[g]=o.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[o.object(this.coreBridgeObjectId),o.pure.vector("u8",e.serialize(t)),o.object(e.SUI_CLOCK_OBJECT_ID)]}),[s]=o.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[o.object(this.tokenBridgeObjectId),g]}),[f]=o.moveCall({target:`${i}::complete_transfer_with_payload::authorize_transfer`,arguments:[o.object(this.tokenBridgeObjectId),s],typeArguments:[n]}),p=await this.getPackageId();o.moveCall({target:`${p}::redeem::complete_transfer`,arguments:[o.object(this.tokenBridgeRelayerObjectId),f],typeArguments:[n]}),yield this.createUnsignedTx(o,"AutomaticTokenBridge.redeem")}async getRelayerFee(r,t){const c=e.isNative(t)?e.SuiPlatform.nativeTokenId(this.network,this.chain):t,i=await this.getTokenInfo(c.toString());if(i===null)throw new Error("Unsupported token for relay");const a=await this.getFields(),l=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(e.bytes.encode("relayer_fees"))}});if(!l.data||!l.data.content)throw l.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:n}=l.data;if(!e.isMoveStructStruct(n)||!e.isMoveStructId(n.fields.id))throw new Error("Unable to compute relayer fee");const o=await this.connection.getDynamicFieldObject({parentId:n.fields.id.id,name:{type:"u16",value:e.toChainId(r)}});if(!o.data||!o.data.content)throw o.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:g}=o.data;if(!e.isMoveStructStruct(g))throw new Error("Unable to compute relayer fee");const s=await e.SuiPlatform.getDecimals(this.chain,this.connection,t.toString()),f=i.swap_rate,p=a.relayer_fee_precision,y=a.swap_rate_precision,m=g.fields.value;return 10n**BigInt(s)*BigInt(m)*BigInt(y)/(BigInt(f)*BigInt(p))}async maxSwapAmount(r){var o,g;const c=(e.isNative(r)?e.SuiPlatform.nativeTokenId(this.network,this.chain):r).toString(),i=await this.connection.getCoinMetadata({coinType:c});if(!i)throw new Error("metadata is null");const a=await this.getPackageId(),l=new e.Transaction$2;l.moveCall({target:`${a}::redeem::calculate_max_swap_amount_in`,arguments:[l.object(this.tokenBridgeRelayerObjectId),l.pure.u8(i.decimals)],typeArguments:[c]});const n=await this.connection.devInspectTransactionBlock({transactionBlock:l,sender:e.hex.encode(new Uint8Array(32))});if(!n.results||n.results.length==0||!((o=n.results[0])!=null&&o.returnValues)||((g=n.results[0])==null?void 0:g.returnValues.length)!==1)throw Error("swap rate not set");return e.bignum.decode(new Uint8Array(n.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(r,t){var g,s;const i=(e.isNative(r)?e.SuiPlatform.nativeTokenId(this.network,this.chain):r).toString(),a=await this.connection.getCoinMetadata({coinType:i});if(!a)throw new Error("metadata is null");const l=await this.getPackageId(),n=new e.Transaction$2;n.moveCall({target:`${l}::redeem::calculate_native_swap_amount_out`,arguments:[n.object(this.tokenBridgeRelayerObjectId),n.pure.u64(t),n.pure.u8(a.decimals)],typeArguments:[i]});const o=await this.connection.devInspectTransactionBlock({transactionBlock:n,sender:e.hex.encode(new Uint8Array(32))});if(!o.results||o.results.length==0||!((g=o.results[0])!=null&&g.returnValues)||((s=o.results[0])==null?void 0:s.returnValues.length)!==1)throw Error("swap rate not set");return e.bignum.decode(new Uint8Array(o.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const t=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:t})).data.map(a=>{const{address:l,module:n,name:o}=e.parseStructTag(a.objectType);return new e.SuiAddress([l,n,o].join(e.SUI_SEPARATOR))})}async isRegisteredToken(r){const t=new e.SuiAddress(e.isNative(r)?e.SuiPlatform.nativeTokenId(this.network,this.chain).address:r).unwrap();try{return await this.getTokenInfo(t)!==null}catch(c){console.error(c)}return!1}async getTokenInfo(r){var o;const t=await this.getFields(),i=new e.SuiAddress(t.registered_tokens.type).getPackageId(),a=t.registered_tokens.fields.id.id,l=new e.SuiAddress(r),n=e.isSameType(e.SUI_COIN,l.unwrap())?e.SUI_COIN:l.getCoinType();try{const g=await this.connection.getDynamicFieldObject({parentId:a,name:{type:`${i}::registered_tokens::Key<${n}>`,value:{dummy_field:!1}}});if(g.error)throw new Error("Failed to get token info: "+JSON.stringify(g.error));if(!g.data||!g.data.content)throw new Error("Failed to get token info: "+JSON.stringify(g));const{content:s}=g.data;return e.isMoveStructStruct(s)&&e.isMoveStructStruct(s.fields.value)?s.fields.value.fields:null}catch(g){if((g==null?void 0:g.code)===-32e3&&((o=g.message)!=null&&o.includes("RPC Error")))return console.error(g),null;throw g}}async getFields(){if(!this.fields){const r=await e.getObjectFields(this.connection,this.tokenBridgeRelayerObjectId);if(r===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=r}return this.fields}async getPackageId(){const r=await this.getFields();return new e.SuiAddress(r.registered_tokens.type).getPackageId()}async getPackageIds(){const[r,t]=await Promise.all([e.getPackageId(this.connection,this.coreBridgeObjectId),e.getPackageId(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:r,tokenBridge:t}}createUnsignedTx(r,t,c=!1){return new e.SuiUnsignedTransaction(r,this.network,this.chain,t,c)}}e.registerProtocol("Sui","TokenBridge",S);e.registerProtocol("Sui","AutomaticTokenBridge",C);exports.SuiAutomaticTokenBridge=C;exports.SuiTokenBridge=S;exports.getTokenCoinType=_;exports.getTokenFromTokenRegistry=B;
1
+ "use strict";var $=Object.defineProperty;var U=(k,r,t)=>r in k?$(k,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):k[r]=t;var w=(k,r,t)=>U(k,typeof r!="symbol"?r+"":r,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-D7FFeuCp.js");require("./index-RsyQYt06.js");const B=async(k,r,t)=>{var l,n,o;if(!e.isValidSuiType(t))throw new Error(`Invalid Sui type: ${t}`);const c=await e.getObjectFields(k,r);if(!c)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${r}`);const i=(n=(l=c.token_registry.fields)==null?void 0:l.id)==null?void 0:n.id;if(!i)throw new Error("Unable to fetch token registry object ID");const a=e.getPackageIdFromType((o=c.token_registry)==null?void 0:o.type);if(!a)throw new Error("Unable to fetch token registry package ID");return k.getDynamicFieldObject({parentId:i,name:{type:`${a}::token_registry::Key<${t}>`,value:{dummy_field:!1}}})},_=async(k,r,t,c)=>{var s,f,p,y;const i=await e.getObjectFields(k,r);if(!i)throw new Error("Unable to fetch object fields from token bridge state");const a=(f=(s=i.token_registry)==null?void 0:s.fields)==null?void 0:f.coin_types,l=(y=(p=a==null?void 0:a.fields)==null?void 0:p.id)==null?void 0:y.id;if(!l)throw new Error("Unable to fetch coin types");const n=e.getTableKeyType(a==null?void 0:a.type);if(!n)throw new Error("Unable to get key type");const o=await k.getDynamicFieldObject({parentId:l,name:{type:n,value:{addr:[...t],chain:c}}});if(o.error){if(o.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${o.error}`)}const g=e.getFieldsFromObjectResponse(o);if(!g)return null;if(!e.isMoveStructObject(g))throw new Error("What?");return"value"in g?e.trimSuiType(g.value):null};class S{constructor(r,t,c,i){w(this,"network");w(this,"chain");w(this,"provider");w(this,"contracts");w(this,"coreBridgeObjectId");w(this,"tokenBridgeObjectId");w(this,"chainId");this.network=r,this.chain=t,this.provider=c,this.contracts=i,this.chainId=e.networkChainToNativeChainId.get(r,t);const a=this.contracts.tokenBridge;if(!a)throw new Error(`Wormhole Token Bridge contract for domain ${t} not found`);const l=this.contracts.coreBridge;if(!l)throw new Error(`Wormhole Token Bridge contract for domain ${t} not found`);this.tokenBridgeObjectId=a,this.coreBridgeObjectId=l}static async fromRpc(r,t){const[c,i]=await e.SuiPlatform.chainFromRpc(r),a=t[i];if(a.network!==c)throw new Error(`Network mismatch: ${a.network} != ${c}`);return new S(c,i,r,a.contracts)}async isWrappedAsset(r){try{return await this.getOriginalAsset(r),!0}catch{return!1}}async getOriginalAsset(r){let t=r.getCoinType();if(!e.isValidSuiType(t))throw new Error(`Invalid Sui type: ${t}`);const c=await B(this.provider,this.tokenBridgeObjectId,t),i=e.getFieldsFromObjectResponse(c);if(!i)throw e.ErrNotWrapped(t);if(!e.isMoveStructObject(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const a=i.value;if(!e.isMoveStructStruct(a))throw new Error("Expected fields to be a MoveStruct");const l=e.trimSuiType(a.type);if(t=e.trimSuiType(t),l.includes(`wrapped_asset::WrappedAsset<${t}>`)){const n=a.fields.info;if(!e.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");const o=n.fields.token_address;if(!e.isMoveStructStruct(o))throw new Error("Expected fields to be a MoveStruct");if(!e.isMoveStructObject(o.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in o.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const g=o.fields.value;if(!e.isMoveStructStruct(g))throw new Error("Expected fields to be a MoveStruct");const s=new Uint8Array(g.fields.data);return{chain:e.toChain(Number(n.fields.token_chain)),address:new e.UniversalAddress(s)}}throw e.ErrNotWrapped(t)}async getTokenUniversalAddress(r){let t=r.getCoinType();if(!e.isValidSuiType(t))throw new Error(`Invalid Sui type: ${t}`);const c=await B(this.provider,this.tokenBridgeObjectId,t),i=e.getFieldsFromObjectResponse(c);if(!i)throw new Error(`Token of type ${t} has not been registered with the token bridge. Has it been attested?`);if(!e.isMoveStructObject(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const a=i.value;if(!e.isMoveStructStruct(a))throw new Error("Expected fields to be a MoveStruct");const l=e.trimSuiType(a.type);if(t=e.trimSuiType(t),l.includes(`native_asset::NativeAsset<${t}>`)){const n=a.fields.token_address;if(!e.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");if(!("value"in n.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const o=n.fields.value;if(!e.isMoveStructStruct(o))throw new Error("Expected fields to be a MoveStruct");const g=new Uint8Array(o.fields.data);return new e.UniversalAddress(g)}throw new Error(`Token of type ${t} is not a native asset`)}async getTokenNativeAddress(r,t){const c=await _(this.provider,this.tokenBridgeObjectId,t.toUint8Array(),e.toChainId(r));if(!c)throw new Error(`Token ${t.toString()} not found in token registry`);return new e.SuiAddress(c)}async hasWrappedAsset(r){try{return await this.getWrappedAsset(r),!0}catch{}return!1}async getWrappedAsset(r){if(e.isNative(r.address))throw new Error("Token Address required, 'native' literal not supported");const t=await _(this.provider,this.tokenBridgeObjectId,r.address.toUniversalAddress().toUint8Array(),e.toChainId(r.chain));if(!t)throw e.ErrNotWrapped(e.canonicalAddress(r));return e.toNative(this.chain,t)}async isTransferCompleted(r){var n,o,g,s,f,p,y,m;const t=await e.getObjectFields(this.provider,this.tokenBridgeObjectId);if(!t)throw new Error("Unable to fetch object fields from token bridge state");const c=(o=(n=t.consumed_vaas)==null?void 0:n.fields)==null?void 0:o.hashes,i=e.getTableKeyType((s=(g=c==null?void 0:c.fields)==null?void 0:g.items)==null?void 0:s.type);if(!i)throw new Error("Unable to get key type");const a=(m=(y=(p=(f=c==null?void 0:c.fields)==null?void 0:f.items)==null?void 0:p.fields)==null?void 0:y.id)==null?void 0:m.id;if(!a)throw new Error("Unable to fetch consumed VAAs table");const l=await this.provider.getDynamicFieldObject({parentId:a,name:{type:i,value:{data:[...e.keccak_256(r.hash)]}}});if(!l.error)return!0;if(l.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${l.error}`)}async*createAttestation(r){const t=0n,i=r.toString(),a=await this.provider.getCoinMetadata({coinType:i});if(a===null||a.id===null)throw new Error(`Coin metadata ID for type ${i} not found`);const[l,n]=await this.getPackageIds(),o=new e.Transaction$2,[g]=o.splitCoins(o.gas,[o.pure.u64(t)]),[s]=o.moveCall({target:`${n}::attest_token::attest_token`,arguments:[o.object(this.tokenBridgeObjectId),o.object(a.id),o.pure.u32(0)],typeArguments:[i]});o.moveCall({target:`${l}::publish_message::publish_message`,arguments:[o.object(this.coreBridgeObjectId),g,s,o.object(e.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(o,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(r,t){const[c,i]=await this.getPackageIds(),a=t.toString(),l=Math.min(r.payload.decimals,8),n=await this.getCoinBuildOutput(c,i,l),o=await e.publishPackage(n,a);yield this.createUnsignedTx(o,"Sui.TokenBridge.PrepareCreateWrapped");let g="",s="",f="",p="",y="",m=!1;for(;!m;){await new Promise(h=>setTimeout(h,500));const I=await this.provider.queryTransactionBlocks({filter:{FromAddress:a},options:{showObjectChanges:!0},limit:3});for(const h of I.data)if("objectChanges"in h){for(const u of h.objectChanges)e.isSuiPublishEvent(u)&&u.packageId!==void 0?g=u.packageId:e.isSuiCreateEvent(u)&&u.objectType.includes("WrappedAssetSetup")?(s=u.objectId,y=u.objectType.split(", ")[1].replace(">","")):e.isSuiCreateEvent(u)&&u.objectType.includes("UpgradeCap")?f=u.objectId:e.isSuiCreateEvent(u)&&u.objectType.includes("CoinMetadata")&&(p=u.objectId);if(g!==""&&s!==""&&f!==""&&p!==""){m=!0;break}else g="",s="",f="",p=""}}const b=e.getCoinTypeFromPackageId(g),d=new e.Transaction$2,[j]=d.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[d.object(this.coreBridgeObjectId),d.pure.vector("u8",e.serialize(r)),d.object(e.SUI_CLOCK_OBJECT_ID)]}),[T]=d.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[d.object(this.tokenBridgeObjectId),j]});d.moveCall({target:`${i}::create_wrapped::complete_registration`,arguments:[d.object(this.tokenBridgeObjectId),d.object(p),d.object(s),d.object(f),T],typeArguments:[b,y]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.SubmitAttestation")}async*transfer(r,t,c,i,a){const l=0n,n=0n,g=r.toString(),s=(e.isNative(c)?e.SUI_TYPE_ARG:c).toString(),f=await e.SuiPlatform.getCoins(this.provider,r,s),[p,...y]=f.filter(h=>e.isSameType(h.coinType,s));if(p===void 0)throw new Error(`Coins array doesn't contain any coins of type ${s}`);const[m,b]=await this.getPackageIds(),d=new e.Transaction$2,[j]=(()=>{if(s===e.SUI_TYPE_ARG)return d.splitCoins(d.gas,[d.pure.u64(i)]);{const h=d.object(p.coinObjectId);return y.length&&d.mergeCoins(h,y.map(u=>d.object(u.coinObjectId))),d.splitCoins(h,[d.pure.u64(i)])}})(),[T]=d.splitCoins(d.gas,[d.pure.u64(l)]),[I]=d.moveCall({target:`${b}::state::verified_asset`,arguments:[d.object(this.tokenBridgeObjectId)],typeArguments:[s]});if(a){if(!g)throw new Error("senderAddress is required for transfer with payload");let h=!1;const u=await(async()=>{const O=await e.getOldestEmitterCapObjectId(this.provider,m,g);if(O!==null)return d.object(O);{const[P]=d.moveCall({target:`${m}::emitter::new`,arguments:[d.object(this.coreBridgeObjectId)]});return h=!0,P}})(),[v,A]=d.moveCall({target:`${b}::transfer_tokens_with_payload::prepare_transfer`,arguments:[u,I,j,d.pure.u16(e.toChainId(t.chain)),d.pure.vector("u8",t.address.toUint8Array()),d.pure.vector("u8",a),d.pure.u32(0)],typeArguments:[s]});d.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[A],typeArguments:[s]});const[E]=d.moveCall({target:`${b}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[d.object(this.tokenBridgeObjectId),v],typeArguments:[s]});d.moveCall({target:`${m}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),T,E,d.object(e.SUI_CLOCK_OBJECT_ID)]}),h&&d.transferObjects([u],d.pure.address(g)),yield this.createUnsignedTx(d,"Sui.TokenBridge.TransferWithPayload")}else{const[h,u]=d.moveCall({target:`${b}::transfer_tokens::prepare_transfer`,arguments:[I,j,d.pure.u16(e.toChainId(t.chain)),d.pure.vector("u8",t.address.toUint8Array()),d.pure.u64(n),d.pure.u32(0)],typeArguments:[s]});d.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[u],typeArguments:[s]});const[v]=d.moveCall({target:`${b}::transfer_tokens::transfer_tokens`,arguments:[d.object(this.tokenBridgeObjectId),h],typeArguments:[s]});d.moveCall({target:`${m}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),T,v,d.object(e.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.Transfer")}}async*redeem(r,t,c=!0){const i=await _(this.provider,this.tokenBridgeObjectId,t.payload.token.address.toUint8Array(),e.toChainId(t.payload.token.chain));if(!i)throw new Error("Unable to fetch token coinType");const[a,l]=await this.getPackageIds(),n=new e.Transaction$2,[o]=n.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[n.object(this.coreBridgeObjectId),n.pure.vector("u8",e.serialize(t)),n.object(e.SUI_CLOCK_OBJECT_ID)]}),[g]=n.moveCall({target:`${l}::vaa::verify_only_once`,arguments:[n.object(this.tokenBridgeObjectId),o]}),[s]=n.moveCall({target:`${l}::complete_transfer::authorize_transfer`,arguments:[n.object(this.tokenBridgeObjectId),g],typeArguments:[i]}),[f]=n.moveCall({target:`${l}::complete_transfer::redeem_relayer_payout`,arguments:[s],typeArguments:[i]});n.moveCall({target:`${l}::coin_utils::return_nonzero`,arguments:[f],typeArguments:[i]}),yield this.createUnsignedTx(n,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return e.toNative(this.chain,e.SUI_TYPE_ARG)}async getPackageIds(){return Promise.all([e.getPackageId(this.provider,this.coreBridgeObjectId),e.getPackageId(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(r,t,c){var n;if(c>8)throw new Error("Decimals is capped at 8");const i=(n=await e.getOriginalPackageId(this.provider,this.tokenBridgeObjectId))==null?void 0:n.replace("0x","");if(!i)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const a="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+i+"00020106010000000001090b0031"+c.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[e.b64.encode(e.hex.decode(a))],dependencies:["0x1","0x2",t,r].map(o=>e.normalizeSuiObjectId(o))}}createUnsignedTx(r,t,c=!1){return new e.SuiUnsignedTransaction(r,this.network,this.chain,t,c)}}class C{constructor(r,t,c,i){w(this,"network");w(this,"chain");w(this,"connection");w(this,"contracts");w(this,"tokenBridgeRelayerObjectId");w(this,"coreBridgeObjectId");w(this,"tokenBridgeObjectId");w(this,"fields");this.network=r,this.chain=t,this.connection=c,this.contracts=i;const{tokenBridge:a,tokenBridgeRelayer:l,coreBridge:n}=i;if(!a||!l||!n)throw new Error(`Some object IDs for ${t} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=l,this.tokenBridgeObjectId=a,this.coreBridgeObjectId=n}static async fromRpc(r,t){const[c,i]=await e.SuiPlatform.chainFromRpc(r),a=t[i];if(a.network!==c)throw new Error(`Network mismatch for chain ${i}: ${a.network} != ${c}`);return new C(c,i,r,a.contracts)}async*transfer(r,t,c,i,a){const n=new e.SuiAddress(e.isNative(c)?e.SuiPlatform.nativeTokenId(this.network,this.chain).address:c).getCoinType(),{coreBridge:o,tokenBridge:g}=await this.getPackageIds(),s=new e.Transaction$2,f=BigInt(0),[p]=s.splitCoins(s.gas,[s.pure.u64(f)]),[y]=await(async()=>{if(e.isNative(c))return s.splitCoins(s.gas,[s.pure.u64(i)]);{const T=await e.SuiPlatform.getCoins(this.connection,r,n),[I,...h]=T.filter(v=>v.coinType===n);if(I===void 0)throw new Error(`Coins array doesn't contain any coins of type ${n}`);const u=s.object(I.coinObjectId);return h.length&&s.mergeCoins(u,h.map(v=>s.object(v.coinObjectId))),s.splitCoins(u,[s.pure.u64(i)])}})(),[m]=s.moveCall({target:`${g}::state::verified_asset`,arguments:[s.object(this.tokenBridgeObjectId)],typeArguments:[n]}),b=await this.getPackageId(),[d]=s.moveCall({target:`${b}::transfer::transfer_tokens_with_relay`,arguments:[s.object(this.tokenBridgeRelayerObjectId),y,m,s.pure.u64(a??0n),s.pure.u16(e.toChainId(t.chain)),s.pure.address(e.hex.encode(t.address.toUint8Array(),!0)),s.pure.u32(123)],typeArguments:[n]}),[j]=s.moveCall({target:`${g}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[s.object(this.tokenBridgeObjectId),d],typeArguments:[n]});s.moveCall({target:`${o}::publish_message::publish_message`,arguments:[s.object(this.coreBridgeObjectId),p,j,s.object(e.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(s,"AutomaticTokenBridge.transfer")}async*redeem(r,t){const{coreBridge:c,tokenBridge:i}=await this.getPackageIds(),{address:a,chain:l}=t.payload.token,n=await _(this.connection,this.tokenBridgeObjectId,a.toUniversalAddress().toUint8Array(),e.toChainId(l));if(!n)throw new Error("Unable to fetch token coinType");const o=new e.Transaction$2,[g]=o.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[o.object(this.coreBridgeObjectId),o.pure.vector("u8",e.serialize(t)),o.object(e.SUI_CLOCK_OBJECT_ID)]}),[s]=o.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[o.object(this.tokenBridgeObjectId),g]}),[f]=o.moveCall({target:`${i}::complete_transfer_with_payload::authorize_transfer`,arguments:[o.object(this.tokenBridgeObjectId),s],typeArguments:[n]}),p=await this.getPackageId();o.moveCall({target:`${p}::redeem::complete_transfer`,arguments:[o.object(this.tokenBridgeRelayerObjectId),f],typeArguments:[n]}),yield this.createUnsignedTx(o,"AutomaticTokenBridge.redeem")}async getRelayerFee(r,t){const c=e.isNative(t)?e.SuiPlatform.nativeTokenId(this.network,this.chain):t,i=await this.getTokenInfo(c.toString());if(i===null)throw new Error("Unsupported token for relay");const a=await this.getFields(),l=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(e.bytes.encode("relayer_fees"))}});if(!l.data||!l.data.content)throw l.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:n}=l.data;if(!e.isMoveStructStruct(n)||!e.isMoveStructId(n.fields.id))throw new Error("Unable to compute relayer fee");const o=await this.connection.getDynamicFieldObject({parentId:n.fields.id.id,name:{type:"u16",value:e.toChainId(r)}});if(!o.data||!o.data.content)throw o.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:g}=o.data;if(!e.isMoveStructStruct(g))throw new Error("Unable to compute relayer fee");const s=await e.SuiPlatform.getDecimals(this.chain,this.connection,t.toString()),f=i.swap_rate,p=a.relayer_fee_precision,y=a.swap_rate_precision,m=g.fields.value;return 10n**BigInt(s)*BigInt(m)*BigInt(y)/(BigInt(f)*BigInt(p))}async maxSwapAmount(r){var o,g;const c=(e.isNative(r)?e.SuiPlatform.nativeTokenId(this.network,this.chain):r).toString(),i=await this.connection.getCoinMetadata({coinType:c});if(!i)throw new Error("metadata is null");const a=await this.getPackageId(),l=new e.Transaction$2;l.moveCall({target:`${a}::redeem::calculate_max_swap_amount_in`,arguments:[l.object(this.tokenBridgeRelayerObjectId),l.pure.u8(i.decimals)],typeArguments:[c]});const n=await this.connection.devInspectTransactionBlock({transactionBlock:l,sender:e.hex.encode(new Uint8Array(32))});if(!n.results||n.results.length==0||!((o=n.results[0])!=null&&o.returnValues)||((g=n.results[0])==null?void 0:g.returnValues.length)!==1)throw Error("swap rate not set");return e.bignum.decode(new Uint8Array(n.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(r,t){var g,s;const i=(e.isNative(r)?e.SuiPlatform.nativeTokenId(this.network,this.chain):r).toString(),a=await this.connection.getCoinMetadata({coinType:i});if(!a)throw new Error("metadata is null");const l=await this.getPackageId(),n=new e.Transaction$2;n.moveCall({target:`${l}::redeem::calculate_native_swap_amount_out`,arguments:[n.object(this.tokenBridgeRelayerObjectId),n.pure.u64(t),n.pure.u8(a.decimals)],typeArguments:[i]});const o=await this.connection.devInspectTransactionBlock({transactionBlock:n,sender:e.hex.encode(new Uint8Array(32))});if(!o.results||o.results.length==0||!((g=o.results[0])!=null&&g.returnValues)||((s=o.results[0])==null?void 0:s.returnValues.length)!==1)throw Error("swap rate not set");return e.bignum.decode(new Uint8Array(o.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const t=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:t})).data.map(a=>{const{address:l,module:n,name:o}=e.parseStructTag(a.objectType);return new e.SuiAddress([l,n,o].join(e.SUI_SEPARATOR))})}async isRegisteredToken(r){const t=new e.SuiAddress(e.isNative(r)?e.SuiPlatform.nativeTokenId(this.network,this.chain).address:r).unwrap();try{return await this.getTokenInfo(t)!==null}catch(c){console.error(c)}return!1}async getTokenInfo(r){var o;const t=await this.getFields(),i=new e.SuiAddress(t.registered_tokens.type).getPackageId(),a=t.registered_tokens.fields.id.id,l=new e.SuiAddress(r),n=e.isSameType(e.SUI_COIN,l.unwrap())?e.SUI_COIN:l.getCoinType();try{const g=await this.connection.getDynamicFieldObject({parentId:a,name:{type:`${i}::registered_tokens::Key<${n}>`,value:{dummy_field:!1}}});if(g.error)throw new Error("Failed to get token info: "+JSON.stringify(g.error));if(!g.data||!g.data.content)throw new Error("Failed to get token info: "+JSON.stringify(g));const{content:s}=g.data;return e.isMoveStructStruct(s)&&e.isMoveStructStruct(s.fields.value)?s.fields.value.fields:null}catch(g){if((g==null?void 0:g.code)===-32e3&&((o=g.message)!=null&&o.includes("RPC Error")))return console.error(g),null;throw g}}async getFields(){if(!this.fields){const r=await e.getObjectFields(this.connection,this.tokenBridgeRelayerObjectId);if(r===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=r}return this.fields}async getPackageId(){const r=await this.getFields();return new e.SuiAddress(r.registered_tokens.type).getPackageId()}async getPackageIds(){const[r,t]=await Promise.all([e.getPackageId(this.connection,this.coreBridgeObjectId),e.getPackageId(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:r,tokenBridge:t}}createUnsignedTx(r,t,c=!1){return new e.SuiUnsignedTransaction(r,this.network,this.chain,t,c)}}e.registerProtocol("Sui","TokenBridge",S);e.registerProtocol("Sui","AutomaticTokenBridge",C);exports.SuiAutomaticTokenBridge=C;exports.SuiTokenBridge=S;exports.getTokenCoinType=_;exports.getTokenFromTokenRegistry=B;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-hMJhZX_v.js");class o extends Error{constructor(r){super(r)}}class s extends o{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const n=e.struct([e.u32$1("mintAuthorityOption"),e.publicKey("mintAuthority"),e.u64("supply"),e.u8("decimals"),e.bool("isInitialized"),e.u32$1("freezeAuthorityOption"),e.publicKey("freezeAuthority")]);n.span;async function c(t,r,u=!1,i=e.TOKEN_PROGRAM_ID,O=e.ASSOCIATED_TOKEN_PROGRAM_ID){if(!u&&!e.PublicKey.isOnCurve(r.toBuffer()))throw new s;const[A]=await e.PublicKey.findProgramAddress([r.toBuffer(),i.toBuffer(),t.toBuffer()],O);return A}exports.ASSOCIATED_TOKEN_PROGRAM_ID=e.ASSOCIATED_TOKEN_PROGRAM_ID;exports.TOKEN_2022_PROGRAM_ID=e.TOKEN_2022_PROGRAM_ID;exports.TOKEN_PROGRAM_ID=e.TOKEN_PROGRAM_ID;exports.MintLayout=n;exports.TokenError=o;exports.TokenOwnerOffCurveError=s;exports.getAssociatedTokenAddress=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-D7FFeuCp.js");class o extends Error{constructor(r){super(r)}}class s extends o{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const n=e.struct([e.u32$1("mintAuthorityOption"),e.publicKey("mintAuthority"),e.u64("supply"),e.u8("decimals"),e.bool("isInitialized"),e.u32$1("freezeAuthorityOption"),e.publicKey("freezeAuthority")]);n.span;async function c(t,r,u=!1,i=e.TOKEN_PROGRAM_ID,O=e.ASSOCIATED_TOKEN_PROGRAM_ID){if(!u&&!e.PublicKey.isOnCurve(r.toBuffer()))throw new s;const[A]=await e.PublicKey.findProgramAddress([r.toBuffer(),i.toBuffer(),t.toBuffer()],O);return A}exports.ASSOCIATED_TOKEN_PROGRAM_ID=e.ASSOCIATED_TOKEN_PROGRAM_ID;exports.TOKEN_2022_PROGRAM_ID=e.TOKEN_2022_PROGRAM_ID;exports.TOKEN_PROGRAM_ID=e.TOKEN_PROGRAM_ID;exports.MintLayout=n;exports.TokenError=o;exports.TokenOwnerOffCurveError=s;exports.getAssociatedTokenAddress=c;
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var y=(i,e,t)=>e in i?l(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var o=(i,e,t)=>y(i,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./index-hMJhZX_v.js"),g=require("./unsignedTransaction-C1YeEl4G.js"),f=require("./aptos-C9OAMi1H.js"),w=[{name:"tokenBridgeAddress",...s.universalAddressItem},{name:"chain",...s.chainItem()},{name:"domainSeparator",binary:"bytes",custom:s.bytes.encode(s.APTOS_SEPARATOR),omit:!0},{name:"tokenId",...s.universalAddressItem},{name:"domainSeparator",binary:"bytes",custom:new Uint8Array([255]),omit:!0}],T=i=>s.serialize$1(w,i);class d{constructor(e,t,n,r){o(this,"network");o(this,"chain");o(this,"connection");o(this,"contracts");o(this,"chainId");o(this,"tokenBridgeAddress");this.network=e,this.chain=t,this.connection=n,this.contracts=r,this.chainId=s.toChainId(t);const a=r.tokenBridge;if(!a)throw new Error(`TokenBridge contract Address for chain ${t} not found`);this.tokenBridgeAddress=a}static async fromRpc(e,t){const[n,r]=await f.AptosPlatform.chainFromRpc(e),a=t[r];if(a.network!==n)throw new Error("Network mismatch "+a.network+" !== "+n);return new d(n,r,e,a.contracts)}async isWrappedAsset(e){try{return await this.getOriginalAsset(e),!0}catch{return!1}}async getOriginalAsset(e){const t=e.toString().split(s.APTOS_SEPARATOR),n=await this.connection.getAccountResource({accountAddress:t[0],resourceType:`${this.tokenBridgeAddress}::state::OriginInfo`});if(!n)throw s.ErrNotWrapped(e.toString());const r=s.toChain(parseInt(n.token_chain.number)),a=new s.UniversalAddress(n.token_address.external_address);return{chain:r,address:a}}async getTokenUniversalAddress(e){return new s.UniversalAddress(s.hex.encode(s.sha3_256(e.toString()),!0))}async getTokenNativeAddress(e,t){const n=e===this.chain?await this.getTypeFromExternalAddress(t.toString()):await this.getAssetFullyQualifiedType({chain:e,address:t});if(!n)throw new Error("Invalid asset address.");return new s.AptosAddress(n)}async hasWrappedAsset(e){try{return await this.getWrappedAsset(e),!0}catch{}return!1}async getWrappedAsset(e){if(s.isNative(e.address))throw new Error("native asset cannot be a wrapped asset");const t=await this.getAssetFullyQualifiedType(e);if(!t)throw new Error("Invalid asset address.");return await this.connection.getAccountResource({accountAddress:s.coalesceModuleAddress(t),resourceType:`${this.tokenBridgeAddress}::state::OriginInfo`}),s.toNative(this.chain,t)}async isTransferCompleted(e){const n=(await this.connection.getAccountResource({accountAddress:this.tokenBridgeAddress,resourceType:`${this.tokenBridgeAddress}::state::State`})).consumed_vaas.elems.handle;try{return await this.connection.getTableItem({handle:n,data:{key_type:"vector<u8>",value_type:"u8",key:`0x${s.dist.Buffer.from(s.keccak_256(e.hash)).toString("hex")}`}}),!0}catch{return!1}}async getWrappedNative(){return s.toNative(this.chain,s.APTOS_COIN)}async*createAttestation(e,t){const n={chain:this.chain,address:new s.AptosAddress(e)},r=await this.getAssetFullyQualifiedType(n);if(!r)throw new Error("Invalid asset address.");yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::attest_token::attest_token_entry`,typeArguments:[r],functionArguments:[]},"Aptos.AttestToken")}async*submitAttestation(e,t){yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::wrapped::create_wrapped_coin_type`,typeArguments:[],functionArguments:[s.serialize(e)]},"Aptos.CreateWrappedCoinType");const n=await this.getAssetFullyQualifiedType(e.payload.token);if(!n)throw new Error("Invalid asset address.");yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::wrapped::create_wrapped_coin`,typeArguments:[n],functionArguments:[s.serialize(e)]},"Aptos.CreateWrappedCoin")}async*transfer(e,t,n,r,a){const p=0n,c=0n,h=s.isNative(n)?s.APTOS_COIN:n.toString(),u=t.address.toUniversalAddress().toUint8Array(),A=s.toChainId(t.chain);a?yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::transfer_tokens::transfer_tokens_with_payload_entry`,typeArguments:[h],functionArguments:[r,A,u,c,a]},"Aptos.TransferTokensWithPayload"):yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::transfer_tokens::transfer_tokens_entry`,typeArguments:[h],functionArguments:[r,A,u,p,c]},"Aptos.TransferTokens")}async*redeem(e,t,n=!0){const r=t.payload.token.chain===this.chain?await this.getTypeFromExternalAddress(t.payload.token.address.toString()):await this.getAssetFullyQualifiedType(t.payload.token);if(!r)throw new Error("Invalid asset address.");yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::complete_transfer::submit_vaa_and_register_entry`,typeArguments:[r],functionArguments:[s.serialize(t)]},"Aptos.CompleteTransfer")}async getAssetFullyQualifiedType(e){return e.chain===this.chain?s.isValidAptosType(e.address.toString())?e.address.toString():null:`${d.getForeignAssetAddress(this.chain,this.tokenBridgeAddress,e)}::coin::T`}async getTypeFromExternalAddress(e){try{const t=await this.connection.getAccountResource({accountAddress:this.tokenBridgeAddress,resourceType:`${this.tokenBridgeAddress}::state::State`}),{handle:n}=t.native_infos,r=await this.connection.getTableItem({handle:n,data:{key_type:`${this.tokenBridgeAddress}::token_hash::TokenHash`,value_type:"0x1::type_info::TypeInfo",key:{hash:e}}});return r?[r.account_address,String.fromCharCode(...s.hex.decode(r.module_name)),String.fromCharCode(...s.hex.decode(r.struct_name))].join(s.APTOS_SEPARATOR):null}catch{return null}}static getForeignAssetAddress(e,t,n){if(s.isNative(n.address))throw new Error("Invalid token address");const r=T({chain:n.chain,tokenBridgeAddress:new s.AptosAddress(t).toUniversalAddress(),tokenId:n.address.toUniversalAddress()});return s.hex.encode(s.sha3_256(r),!0)}createUnsignedTx(e,t,n=!1){return new g.AptosUnsignedTransaction(e,this.network,this.chain,t,n)}}s.registerProtocol("Aptos","TokenBridge",d);exports.AptosTokenBridge=d;
1
+ "use strict";var l=Object.defineProperty;var y=(i,e,t)=>e in i?l(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var o=(i,e,t)=>y(i,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./index-D7FFeuCp.js"),g=require("./unsignedTransaction-C1YeEl4G.js"),f=require("./aptos-BVPA8gYF.js"),w=[{name:"tokenBridgeAddress",...s.universalAddressItem},{name:"chain",...s.chainItem()},{name:"domainSeparator",binary:"bytes",custom:s.bytes.encode(s.APTOS_SEPARATOR),omit:!0},{name:"tokenId",...s.universalAddressItem},{name:"domainSeparator",binary:"bytes",custom:new Uint8Array([255]),omit:!0}],T=i=>s.serialize$1(w,i);class d{constructor(e,t,n,r){o(this,"network");o(this,"chain");o(this,"connection");o(this,"contracts");o(this,"chainId");o(this,"tokenBridgeAddress");this.network=e,this.chain=t,this.connection=n,this.contracts=r,this.chainId=s.toChainId(t);const a=r.tokenBridge;if(!a)throw new Error(`TokenBridge contract Address for chain ${t} not found`);this.tokenBridgeAddress=a}static async fromRpc(e,t){const[n,r]=await f.AptosPlatform.chainFromRpc(e),a=t[r];if(a.network!==n)throw new Error("Network mismatch "+a.network+" !== "+n);return new d(n,r,e,a.contracts)}async isWrappedAsset(e){try{return await this.getOriginalAsset(e),!0}catch{return!1}}async getOriginalAsset(e){const t=e.toString().split(s.APTOS_SEPARATOR),n=await this.connection.getAccountResource({accountAddress:t[0],resourceType:`${this.tokenBridgeAddress}::state::OriginInfo`});if(!n)throw s.ErrNotWrapped(e.toString());const r=s.toChain(parseInt(n.token_chain.number)),a=new s.UniversalAddress(n.token_address.external_address);return{chain:r,address:a}}async getTokenUniversalAddress(e){return new s.UniversalAddress(s.hex.encode(s.sha3_256(e.toString()),!0))}async getTokenNativeAddress(e,t){const n=e===this.chain?await this.getTypeFromExternalAddress(t.toString()):await this.getAssetFullyQualifiedType({chain:e,address:t});if(!n)throw new Error("Invalid asset address.");return new s.AptosAddress(n)}async hasWrappedAsset(e){try{return await this.getWrappedAsset(e),!0}catch{}return!1}async getWrappedAsset(e){if(s.isNative(e.address))throw new Error("native asset cannot be a wrapped asset");const t=await this.getAssetFullyQualifiedType(e);if(!t)throw new Error("Invalid asset address.");return await this.connection.getAccountResource({accountAddress:s.coalesceModuleAddress(t),resourceType:`${this.tokenBridgeAddress}::state::OriginInfo`}),s.toNative(this.chain,t)}async isTransferCompleted(e){const n=(await this.connection.getAccountResource({accountAddress:this.tokenBridgeAddress,resourceType:`${this.tokenBridgeAddress}::state::State`})).consumed_vaas.elems.handle;try{return await this.connection.getTableItem({handle:n,data:{key_type:"vector<u8>",value_type:"u8",key:`0x${s.dist.Buffer.from(s.keccak_256(e.hash)).toString("hex")}`}}),!0}catch{return!1}}async getWrappedNative(){return s.toNative(this.chain,s.APTOS_COIN)}async*createAttestation(e,t){const n={chain:this.chain,address:new s.AptosAddress(e)},r=await this.getAssetFullyQualifiedType(n);if(!r)throw new Error("Invalid asset address.");yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::attest_token::attest_token_entry`,typeArguments:[r],functionArguments:[]},"Aptos.AttestToken")}async*submitAttestation(e,t){yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::wrapped::create_wrapped_coin_type`,typeArguments:[],functionArguments:[s.serialize(e)]},"Aptos.CreateWrappedCoinType");const n=await this.getAssetFullyQualifiedType(e.payload.token);if(!n)throw new Error("Invalid asset address.");yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::wrapped::create_wrapped_coin`,typeArguments:[n],functionArguments:[s.serialize(e)]},"Aptos.CreateWrappedCoin")}async*transfer(e,t,n,r,a){const p=0n,c=0n,h=s.isNative(n)?s.APTOS_COIN:n.toString(),u=t.address.toUniversalAddress().toUint8Array(),A=s.toChainId(t.chain);a?yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::transfer_tokens::transfer_tokens_with_payload_entry`,typeArguments:[h],functionArguments:[r,A,u,c,a]},"Aptos.TransferTokensWithPayload"):yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::transfer_tokens::transfer_tokens_entry`,typeArguments:[h],functionArguments:[r,A,u,p,c]},"Aptos.TransferTokens")}async*redeem(e,t,n=!0){const r=t.payload.token.chain===this.chain?await this.getTypeFromExternalAddress(t.payload.token.address.toString()):await this.getAssetFullyQualifiedType(t.payload.token);if(!r)throw new Error("Invalid asset address.");yield this.createUnsignedTx({function:`${this.tokenBridgeAddress}::complete_transfer::submit_vaa_and_register_entry`,typeArguments:[r],functionArguments:[s.serialize(t)]},"Aptos.CompleteTransfer")}async getAssetFullyQualifiedType(e){return e.chain===this.chain?s.isValidAptosType(e.address.toString())?e.address.toString():null:`${d.getForeignAssetAddress(this.chain,this.tokenBridgeAddress,e)}::coin::T`}async getTypeFromExternalAddress(e){try{const t=await this.connection.getAccountResource({accountAddress:this.tokenBridgeAddress,resourceType:`${this.tokenBridgeAddress}::state::State`}),{handle:n}=t.native_infos,r=await this.connection.getTableItem({handle:n,data:{key_type:`${this.tokenBridgeAddress}::token_hash::TokenHash`,value_type:"0x1::type_info::TypeInfo",key:{hash:e}}});return r?[r.account_address,String.fromCharCode(...s.hex.decode(r.module_name)),String.fromCharCode(...s.hex.decode(r.struct_name))].join(s.APTOS_SEPARATOR):null}catch{return null}}static getForeignAssetAddress(e,t,n){if(s.isNative(n.address))throw new Error("Invalid token address");const r=T({chain:n.chain,tokenBridgeAddress:new s.AptosAddress(t).toUniversalAddress(),tokenId:n.address.toUniversalAddress()});return s.hex.encode(s.sha3_256(r),!0)}createUnsignedTx(e,t,n=!1){return new g.AptosUnsignedTransaction(e,this.network,this.chain,t,n)}}s.registerProtocol("Aptos","TokenBridge",d);exports.AptosTokenBridge=d;
@@ -1,7 +1,7 @@
1
1
  var d = Object.defineProperty;
2
2
  var h = (i, e, r) => e in i ? d(i, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : i[e] = r;
3
3
  var o = (i, e, r) => h(i, typeof e != "symbol" ? e + "" : e, r);
4
- import { bK as m, aD as w, cQ as g, aF as p, bW as u } from "./index-CnlVWsC5.mjs";
4
+ import { bK as m, aD as w, cQ as g, aF as p, bW as u } from "./index-DGkJ3qwd.mjs";
5
5
  class c {
6
6
  constructor(e, r, t, n) {
7
7
  o(this, "network");
@@ -1 +1 @@
1
- "use strict";var F=Object.defineProperty;var $=(i,e,a)=>e in i?F(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var y=(i,e,a)=>$(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-hMJhZX_v.js"),k=new n.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new n.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const T=new n.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new n.PublicKey("So11111111111111111111111111111111111111112");new n.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class V extends Error{constructor(e){super(e)}}class H extends V{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const G=n.struct([n.u32$1("mintAuthorityOption"),n.publicKey("mintAuthority"),n.u64("supply"),n.u8("decimals"),n.bool("isInitialized"),n.u32$1("freezeAuthorityOption"),n.publicKey("freezeAuthority")]);G.span;function X(i,e,a=!1,t=k,r=T){if(!a&&!n.PublicKey.isOnCurve(e.toBuffer()))throw new H;const[s]=n.PublicKey.findProgramAddressSync([e.toBuffer(),t.toBuffer(),i.toBuffer()],r);return s}function q(i,e,a,t,r=k,s=T){return J(i,e,a,t,n.dist.Buffer.alloc(0),r,s)}function J(i,e,a,t,r,s=k,o=T){const u=[{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new n.TransactionInstruction({keys:u,programId:o,data:r})}function v(i,e){return new n.Program(I.TokenMessengerIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function D(i,e){return v(i,n.createReadOnlyProvider(e))}function A(i,e){return new n.Program(I.MessageTransmitterIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function C(i,e){return A(i,n.createReadOnlyProvider(e))}const m=(i,e,a)=>{const t=[n.dist.Buffer.from(n.index.bytes.utf8.encode(i))];if(a)for(const s of a)typeof s=="string"?t.push(n.dist.Buffer.from(n.index.bytes.utf8.encode(s))):Array.isArray(s)?t.push(n.dist.Buffer.from(s)):n.dist.Buffer.isBuffer(s)?t.push(s):t.push(s.toBuffer());const r=n.PublicKey.findProgramAddressSync(t,e);return{publicKey:r[0],bump:r[1]}};function R(i,e,a,t,r,s,o,u,l){const c=m("message_transmitter",i),d=m("token_messenger",e),f=m("token_minter",e),p=m("local_token",e,[a]),M=m("remote_token_messenger",e,[t.toString()]),S=m("sender_authority",e),h=v(e),P=m("__event_authority",e);return h.methods.depositForBurn({amount:new n.BN(u.toString()),destinationDomain:t,mintRecipient:new n.PublicKey(o.toUint8Array())}).accounts({owner:r,senderAuthorityPda:S.publicKey,burnTokenAccount:s,messageTransmitter:c.publicKey,tokenMessenger:d.publicKey,remoteTokenMessenger:M.publicKey,tokenMinter:f.publicKey,localToken:p.publicKey,burnTokenMint:a,messageTransmitterProgram:i,tokenMessengerMinterProgram:e,tokenProgram:k,eventAuthority:P.publicKey,eventRentPayer:r,messageSentEventData:l}).instruction()}const B=6400n;function w(i){return(i-BigInt(1))/B*B+BigInt(1)}function K(i,e,a){const t=e.toString();return m("used_nonces",a,[t,w(i).toString()]).publicKey}async function O(i,e,a,t,r,s){const o=n.dist.Buffer.from(n.CircleBridge.serialize(t)),u=n.dist.Buffer.from(n.hex.decode(r)),l=new n.PublicKey(a),c=new n.PublicKey(t.payload.burnToken.toUint8Array()),d=new n.SolanaAddress(t.payload.mintRecipient).unwrap(),f=s?new n.PublicKey(s):d,p=t.sourceDomain.toString(),M=m("message_transmitter",i),S=m("token_messenger",e),h=m("token_minter",e),P=m("local_token",e,[l]),N=m("remote_token_messenger",e,[p]),E=m("token_pair",e,[p,c]),_=m("custody",e,[l]),U=m("message_transmitter_authority",i,[e]).publicKey,L=K(t.nonce,t.sourceDomain,i),W=m("__event_authority",i),z=m("__event_authority",e),g=[];g.push({isSigner:!1,isWritable:!1,pubkey:S.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:N.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:h.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:P.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:E.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:d}),g.push({isSigner:!1,isWritable:!0,pubkey:_.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:k}),g.push({isSigner:!1,isWritable:!1,pubkey:z.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const x=A(i);return x.methods.receiveMessage({message:o,attestation:u}).accounts({payer:f,caller:f,authorityPda:U,messageTransmitter:M.publicKey,usedNonces:L,receiver:e,systemProgram:n.SystemProgram.programId,eventAuthority:W.publicKey,program:x.programId}).remainingAccounts(g).transaction()}class b{constructor(e,a,t,r){y(this,"network");y(this,"chain");y(this,"connection");y(this,"contracts");y(this,"tokenMessenger");y(this,"messageTransmitter");var u,l;if(this.network=e,this.chain=a,this.connection=t,this.contracts=r,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=(u=r.cctp)==null?void 0:u.messageTransmitter;if(!s)throw new Error(`Circle Messenge Transmitter contract for domain ${a} not found`);this.messageTransmitter=C(new n.PublicKey(s),this.connection);const o=(l=r.cctp)==null?void 0:l.tokenMessenger;if(!o)throw new Error(`Circle Token Messenger contract for domain ${a} not found`);this.tokenMessenger=D(new n.PublicKey(o),this.connection)}static async fromRpc(e,a){const[t,r]=await n.SolanaPlatform.chainFromRpc(e),s=a[r];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} != ${t}`);return new b(t,r,e,s.contracts)}async*redeem(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),o=new n.SolanaAddress(a.payload.mintRecipient).unwrap();if(!await this.connection.getAccountInfo(o)){const d=new n.Transaction$1().add(q(s,o,s,r));d.feePayer=s,yield this.createUnsignedTx({transaction:d},"CircleBridge.CreateATA")}const l=await O(this.messageTransmitter.programId,this.tokenMessenger.programId,r,a,t,s),c=new n.Transaction$1;c.feePayer=s,c.add(l),yield this.createUnsignedTx({transaction:c},"CircleBridge.Redeem")}async*transfer(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),o=X(r,s),u=n.circleChainId.get(this.network,a.chain),l=a.address.toUniversalAddress(),c=n.Keypair.generate(),d=await R(this.messageTransmitter.programId,this.tokenMessenger.programId,r,u,s,o,l,t,c.publicKey),f=new n.Transaction$1;f.feePayer=s,f.add(d),yield this.createUnsignedTx({transaction:f,signers:[c]},"CircleBridge.Transfer")}async isTransferCompleted(e){const a=K(e.nonce,e.sourceDomain,this.messageTransmitter.programId),t=w(e.nonce),{usedNonces:r}=await this.messageTransmitter.account.usedNonces.fetch(a),s=Number(e.nonce-t),o=r[Math.floor(s/64)];if(!o)throw new Error("Invalid nonce byte index");const u=s%64,l=new n.BN((BigInt(1)<<BigInt(u)).toString());return!o.and(l).isZero()}async parseTransactionDetails(e){const a=await this.connection.getTransaction(e);if(!a||!a.meta)throw new Error("Transaction not found");const t=a.transaction.message.getAccountKeys();if(t.length<2)throw new Error("No message account found");const r=t.get(1),s=await this.connection.getAccountInfo(r);if(!s)throw new Error("No account data found");const o=new Uint8Array(s.data).slice(44),[u,l]=n.CircleBridge.deserialize(o),{payload:c}=u,d=c.messageSender,f=c.mintRecipient,p=n.toCircleChain(this.network,u.sourceDomain),M=n.toCircleChain(this.network,u.destinationDomain),S={chain:p,address:c.burnToken};return{from:{chain:p,address:d},to:{chain:M,address:f},token:S,amount:c.amount,message:u,id:{hash:l}}}createUnsignedTx(e,a,t=!1){return new n.SolanaUnsignedTransaction(e,this.network,this.chain,a,t)}}const Q={version:"0.1.0",name:"token_messenger_minter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"tokenMessengerMinterProgramData",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"addRemoteTokenMessenger",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddRemoteTokenMessengerParams"}}]},{name:"removeRemoteTokenMessenger",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveRemoteTokenMessengerParams"}}]},{name:"depositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnParams"}}],returns:"u64"},{name:"depositForBurnWithCaller",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnWithCallerParams"}}],returns:"u64"},{name:"replaceDepositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceDepositForBurnParams"}}],returns:"u64"},{name:"handleReceiveMessage",accounts:[{name:"authorityPda",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"tokenPair",isMut:!1,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"HandleReceiveMessageParams"}}]},{name:"setTokenController",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetTokenControllerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"setMaxBurnAmountPerMessage",accounts:[{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxBurnAmountPerMessageParams"}}]},{name:"addLocalToken",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"localTokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddLocalTokenParams"}}]},{name:"removeLocalToken",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveLocalTokenParams"}}]},{name:"linkTokenPair",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"LinkTokenPairParams"}}]},{name:"unlinkTokenPair",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UninkTokenPairParams"}}]},{name:"burnTokenCustody",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!1,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenMint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"BurnTokenCustodyParams"}}]}],accounts:[{name:"tokenMessenger",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"},{name:"authorityBump",type:"u8"}]}},{name:"remoteTokenMessenger",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"tokenMinter",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"bump",type:"u8"}]}},{name:"tokenPair",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"},{name:"localToken",type:"publicKey"},{name:"bump",type:"u8"}]}},{name:"localToken",type:{kind:"struct",fields:[{name:"custody",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"burnLimitPerMessage",type:"u64"},{name:"messagesSent",type:"u64"},{name:"messagesReceived",type:"u64"},{name:"amountSent",type:"u128"},{name:"amountReceived",type:"u128"},{name:"bump",type:"u8"},{name:"custodyBump",type:"u8"}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"AddRemoteTokenMessengerParams",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"DepositForBurnWithCallerParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"}]}},{name:"DepositForBurnParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"}]}},{name:"RemoveRemoteTokenMessengerParams",type:{kind:"struct",fields:[]}},{name:"ReplaceDepositForBurnParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"},{name:"newMintRecipient",type:"publicKey"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"AddLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"BurnTokenCustodyParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"}]}},{name:"LinkTokenPairParams",type:{kind:"struct",fields:[{name:"localToken",type:"publicKey"},{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"RemoveLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"SetMaxBurnAmountPerMessageParams",type:{kind:"struct",fields:[{name:"burnLimitPerMessage",type:"u64"}]}},{name:"SetTokenControllerParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"}]}},{name:"UninkTokenPairParams",type:{kind:"struct",fields:[]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"TokenMinterError",type:{kind:"enum",variants:[{name:"InvalidAuthority"},{name:"InvalidTokenMinterState"},{name:"ProgramPaused"},{name:"InvalidTokenPairState"},{name:"InvalidLocalTokenState"},{name:"InvalidPauser"},{name:"InvalidTokenController"},{name:"BurnAmountExceeded"},{name:"InvalidAmount"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"DepositForBurn",fields:[{name:"nonce",type:"u64",index:!1},{name:"burnToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"depositor",type:"publicKey",index:!1},{name:"mintRecipient",type:"publicKey",index:!1},{name:"destinationDomain",type:"u32",index:!1},{name:"destinationTokenMessenger",type:"publicKey",index:!1},{name:"destinationCaller",type:"publicKey",index:!1}]},{name:"MintAndWithdraw",fields:[{name:"mintRecipient",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"mintToken",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerAdded",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerRemoved",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"SetTokenController",fields:[{name:"tokenController",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"SetBurnLimitPerMessage",fields:[{name:"token",type:"publicKey",index:!1},{name:"burnLimitPerMessage",type:"u64",index:!1}]},{name:"LocalTokenAdded",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"LocalTokenRemoved",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"TokenPairLinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"TokenPairUnlinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]},{name:"TokenCustodyBurned",fields:[{name:"custodyTokenAccount",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"InvalidTokenMessengerState",msg:"Invalid token messenger state"},{code:6002,name:"InvalidTokenMessenger",msg:"Invalid token messenger"},{code:6003,name:"InvalidOwner",msg:"Invalid owner"},{code:6004,name:"MalformedMessage",msg:"Malformed message"},{code:6005,name:"InvalidMessageBodyVersion",msg:"Invalid message body version"},{code:6006,name:"InvalidAmount",msg:"Invalid amount"},{code:6007,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6008,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6009,name:"InvalidMintRecipient",msg:"Invalid mint recipient"},{code:6010,name:"InvalidSender",msg:"Invalid sender"},{code:6011,name:"InvalidTokenPair",msg:"Invalid token pair"},{code:6012,name:"InvalidTokenMint",msg:"Invalid token mint"}]},Z={version:"0.1.0",name:"message_transmitter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageTransmitterProgramData",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"updateAttesterManager",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdateAttesterManagerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"setMaxMessageBodySize",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxMessageBodySizeParams"}}]},{name:"enableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"EnableAttesterParams"}}]},{name:"disableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DisableAttesterParams"}}]},{name:"setSignatureThreshold",accounts:[{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetSignatureThresholdParams"}}]},{name:"sendMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageParams"}}],returns:"u64"},{name:"sendMessageWithCaller",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageWithCallerParams"}}],returns:"u64"},{name:"replaceMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceMessageParams"}}],returns:"u64"},{name:"receiveMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"caller",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"usedNonces",isMut:!0,isSigner:!1},{name:"receiver",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReceiveMessageParams"}}]},{name:"reclaimEventAccount",accounts:[{name:"payee",isMut:!0,isSigner:!0,docs:["rent SOL receiver, should match original rent payer"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!1}],args:[{name:"params",type:{defined:"ReclaimEventAccountParams"}}]},{name:"getNoncePda",accounts:[{name:"messageTransmitter",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"GetNoncePDAParams"}}],returns:"publicKey"},{name:"isNonceUsed",accounts:[{name:"usedNonces",isMut:!1,isSigner:!1,docs:["Account will be explicitly loaded to avoid error when it's not initialized"]}],args:[{name:"params",type:{defined:"IsNonceUsedParams"}}],returns:"bool"}],accounts:[{name:"messageSent",type:{kind:"struct",fields:[{name:"rentPayer",type:"publicKey"},{name:"message",type:"bytes"}]}},{name:"messageTransmitter",docs:["Main state of the MessageTransmitter program"],type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"},{name:"nextAvailableNonce",type:"u64"}]}},{name:"usedNonces",docs:["UsedNonces account holds an array of bits that indicate which nonces were already used","so they can't be resused to receive new messages. Array starts with the first_nonce and","holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain."],type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"firstNonce",type:"u64"},{name:"usedNonces",type:{array:["u64",100]}}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"DisableAttesterParams",type:{kind:"struct",fields:[{name:"attester",type:"publicKey"}]}},{name:"EnableAttesterParams",type:{kind:"struct",fields:[{name:"newAttester",type:"publicKey"}]}},{name:"GetNoncePDAParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"sourceDomain",type:"u32"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"localDomain",type:"u32"},{name:"attester",type:"publicKey"},{name:"maxMessageBodySize",type:"u64"},{name:"version",type:"u32"}]}},{name:"IsNonceUsedParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"ReceiveMessageParams",type:{kind:"struct",fields:[{name:"message",type:"bytes"},{name:"attestation",type:"bytes"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"ReclaimEventAccountParams",type:{kind:"struct",fields:[{name:"attestation",type:"bytes"}]}},{name:"ReplaceMessageParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newMessageBody",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"}]}},{name:"SendMessageWithCallerParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"destinationCaller",type:"publicKey"}]}},{name:"SendMessageParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"}]}},{name:"SetMaxMessageBodySizeParams",type:{kind:"struct",fields:[{name:"newMaxMessageBodySize",type:"u64"}]}},{name:"SetSignatureThresholdParams",type:{kind:"struct",fields:[{name:"newSignatureThreshold",type:"u32"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateAttesterManagerParams",type:{kind:"struct",fields:[{name:"newAttesterManager",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"MathError",type:{kind:"enum",variants:[{name:"MathOverflow"},{name:"MathUnderflow"},{name:"ErrorInDivision"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"AttesterManagerUpdated",fields:[{name:"previousAttesterManager",type:"publicKey",index:!1},{name:"newAttesterManager",type:"publicKey",index:!1}]},{name:"MessageReceived",fields:[{name:"caller",type:"publicKey",index:!1},{name:"sourceDomain",type:"u32",index:!1},{name:"nonce",type:"u64",index:!1},{name:"sender",type:"publicKey",index:!1},{name:"messageBody",type:"bytes",index:!1}]},{name:"SignatureThresholdUpdated",fields:[{name:"oldSignatureThreshold",type:"u32",index:!1},{name:"newSignatureThreshold",type:"u32",index:!1}]},{name:"AttesterEnabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterDisabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"MaxMessageBodySizeUpdated",fields:[{name:"newMaxMessageBodySize",type:"u64",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6002,name:"InvalidMessageTransmitterState",msg:"Invalid message transmitter state"},{code:6003,name:"InvalidSignatureThreshold",msg:"Invalid signature threshold"},{code:6004,name:"SignatureThresholdAlreadySet",msg:"Signature threshold already set"},{code:6005,name:"InvalidOwner",msg:"Invalid owner"},{code:6006,name:"InvalidPauser",msg:"Invalid pauser"},{code:6007,name:"InvalidAttesterManager",msg:"Invalid attester manager"},{code:6008,name:"InvalidAttester",msg:"Invalid attester"},{code:6009,name:"AttesterAlreadyEnabled",msg:"Attester already enabled"},{code:6010,name:"TooFewEnabledAttesters",msg:"Too few enabled attesters"},{code:6011,name:"SignatureThresholdTooLow",msg:"Signature threshold is too low"},{code:6012,name:"AttesterAlreadyDisabled",msg:"Attester already disabled"},{code:6013,name:"MessageBodyLimitExceeded",msg:"Message body exceeds max size"},{code:6014,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6015,name:"InvalidRecipient",msg:"Invalid message recipient"},{code:6016,name:"SenderNotPermitted",msg:"Sender is not permitted"},{code:6017,name:"InvalidSourceDomain",msg:"Invalid source domain"},{code:6018,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6019,name:"InvalidMessageVersion",msg:"Invalid message version"},{code:6020,name:"InvalidUsedNoncesAccount",msg:"Invalid used nonces account"},{code:6021,name:"InvalidRecipientProgram",msg:"Invalid recipient program"},{code:6022,name:"InvalidNonce",msg:"Invalid nonce"},{code:6023,name:"NonceAlreadyUsed",msg:"Nonce already used"},{code:6024,name:"MessageTooShort",msg:"Message is too short"},{code:6025,name:"MalformedMessage",msg:"Malformed message"},{code:6026,name:"InvalidSignatureOrderOrDupe",msg:"Invalid signature order or dupe"},{code:6027,name:"InvalidAttesterSignature",msg:"Invalid attester signature"},{code:6028,name:"InvalidAttestationLength",msg:"Invalid attestation length"},{code:6029,name:"InvalidSignatureRecoveryId",msg:"Invalid signature recovery ID"},{code:6030,name:"InvalidSignatureSValue",msg:"Invalid signature S value"},{code:6031,name:"InvalidMessageHash",msg:"Invalid message hash"}]};n.registerProtocol(n._platform$1,"CircleBridge",b);const I={TokenMessengerIdl:Q,MessageTransmitterIdl:Z};exports.SolanaCircleBridge=b;exports.calculateFirstNonce=w;exports.createDepositForBurnInstruction=R;exports.createMessageTransmitterProgramInterface=A;exports.createReadOnlyMessageTransmitterProgramInterface=C;exports.createReadOnlyTokenMessengerProgramInterface=D;exports.createReceiveMessageInstruction=O;exports.createTokenMessengerProgramInterface=v;exports.findProgramAddress=m;exports.idl=I;exports.nonceAccount=K;
1
+ "use strict";var F=Object.defineProperty;var $=(i,e,a)=>e in i?F(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var y=(i,e,a)=>$(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-D7FFeuCp.js"),k=new n.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new n.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const T=new n.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new n.PublicKey("So11111111111111111111111111111111111111112");new n.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class V extends Error{constructor(e){super(e)}}class H extends V{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const G=n.struct([n.u32$1("mintAuthorityOption"),n.publicKey("mintAuthority"),n.u64("supply"),n.u8("decimals"),n.bool("isInitialized"),n.u32$1("freezeAuthorityOption"),n.publicKey("freezeAuthority")]);G.span;function X(i,e,a=!1,t=k,r=T){if(!a&&!n.PublicKey.isOnCurve(e.toBuffer()))throw new H;const[s]=n.PublicKey.findProgramAddressSync([e.toBuffer(),t.toBuffer(),i.toBuffer()],r);return s}function q(i,e,a,t,r=k,s=T){return J(i,e,a,t,n.dist.Buffer.alloc(0),r,s)}function J(i,e,a,t,r,s=k,o=T){const u=[{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new n.TransactionInstruction({keys:u,programId:o,data:r})}function v(i,e){return new n.Program(I.TokenMessengerIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function D(i,e){return v(i,n.createReadOnlyProvider(e))}function A(i,e){return new n.Program(I.MessageTransmitterIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function C(i,e){return A(i,n.createReadOnlyProvider(e))}const m=(i,e,a)=>{const t=[n.dist.Buffer.from(n.index.bytes.utf8.encode(i))];if(a)for(const s of a)typeof s=="string"?t.push(n.dist.Buffer.from(n.index.bytes.utf8.encode(s))):Array.isArray(s)?t.push(n.dist.Buffer.from(s)):n.dist.Buffer.isBuffer(s)?t.push(s):t.push(s.toBuffer());const r=n.PublicKey.findProgramAddressSync(t,e);return{publicKey:r[0],bump:r[1]}};function R(i,e,a,t,r,s,o,u,l){const c=m("message_transmitter",i),d=m("token_messenger",e),f=m("token_minter",e),p=m("local_token",e,[a]),M=m("remote_token_messenger",e,[t.toString()]),S=m("sender_authority",e),h=v(e),P=m("__event_authority",e);return h.methods.depositForBurn({amount:new n.BN(u.toString()),destinationDomain:t,mintRecipient:new n.PublicKey(o.toUint8Array())}).accounts({owner:r,senderAuthorityPda:S.publicKey,burnTokenAccount:s,messageTransmitter:c.publicKey,tokenMessenger:d.publicKey,remoteTokenMessenger:M.publicKey,tokenMinter:f.publicKey,localToken:p.publicKey,burnTokenMint:a,messageTransmitterProgram:i,tokenMessengerMinterProgram:e,tokenProgram:k,eventAuthority:P.publicKey,eventRentPayer:r,messageSentEventData:l}).instruction()}const B=6400n;function w(i){return(i-BigInt(1))/B*B+BigInt(1)}function K(i,e,a){const t=e.toString();return m("used_nonces",a,[t,w(i).toString()]).publicKey}async function O(i,e,a,t,r,s){const o=n.dist.Buffer.from(n.CircleBridge.serialize(t)),u=n.dist.Buffer.from(n.hex.decode(r)),l=new n.PublicKey(a),c=new n.PublicKey(t.payload.burnToken.toUint8Array()),d=new n.SolanaAddress(t.payload.mintRecipient).unwrap(),f=s?new n.PublicKey(s):d,p=t.sourceDomain.toString(),M=m("message_transmitter",i),S=m("token_messenger",e),h=m("token_minter",e),P=m("local_token",e,[l]),N=m("remote_token_messenger",e,[p]),E=m("token_pair",e,[p,c]),_=m("custody",e,[l]),U=m("message_transmitter_authority",i,[e]).publicKey,L=K(t.nonce,t.sourceDomain,i),W=m("__event_authority",i),z=m("__event_authority",e),g=[];g.push({isSigner:!1,isWritable:!1,pubkey:S.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:N.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:h.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:P.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:E.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:d}),g.push({isSigner:!1,isWritable:!0,pubkey:_.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:k}),g.push({isSigner:!1,isWritable:!1,pubkey:z.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const x=A(i);return x.methods.receiveMessage({message:o,attestation:u}).accounts({payer:f,caller:f,authorityPda:U,messageTransmitter:M.publicKey,usedNonces:L,receiver:e,systemProgram:n.SystemProgram.programId,eventAuthority:W.publicKey,program:x.programId}).remainingAccounts(g).transaction()}class b{constructor(e,a,t,r){y(this,"network");y(this,"chain");y(this,"connection");y(this,"contracts");y(this,"tokenMessenger");y(this,"messageTransmitter");var u,l;if(this.network=e,this.chain=a,this.connection=t,this.contracts=r,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=(u=r.cctp)==null?void 0:u.messageTransmitter;if(!s)throw new Error(`Circle Messenge Transmitter contract for domain ${a} not found`);this.messageTransmitter=C(new n.PublicKey(s),this.connection);const o=(l=r.cctp)==null?void 0:l.tokenMessenger;if(!o)throw new Error(`Circle Token Messenger contract for domain ${a} not found`);this.tokenMessenger=D(new n.PublicKey(o),this.connection)}static async fromRpc(e,a){const[t,r]=await n.SolanaPlatform.chainFromRpc(e),s=a[r];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} != ${t}`);return new b(t,r,e,s.contracts)}async*redeem(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),o=new n.SolanaAddress(a.payload.mintRecipient).unwrap();if(!await this.connection.getAccountInfo(o)){const d=new n.Transaction$1().add(q(s,o,s,r));d.feePayer=s,yield this.createUnsignedTx({transaction:d},"CircleBridge.CreateATA")}const l=await O(this.messageTransmitter.programId,this.tokenMessenger.programId,r,a,t,s),c=new n.Transaction$1;c.feePayer=s,c.add(l),yield this.createUnsignedTx({transaction:c},"CircleBridge.Redeem")}async*transfer(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),o=X(r,s),u=n.circleChainId.get(this.network,a.chain),l=a.address.toUniversalAddress(),c=n.Keypair.generate(),d=await R(this.messageTransmitter.programId,this.tokenMessenger.programId,r,u,s,o,l,t,c.publicKey),f=new n.Transaction$1;f.feePayer=s,f.add(d),yield this.createUnsignedTx({transaction:f,signers:[c]},"CircleBridge.Transfer")}async isTransferCompleted(e){const a=K(e.nonce,e.sourceDomain,this.messageTransmitter.programId),t=w(e.nonce),{usedNonces:r}=await this.messageTransmitter.account.usedNonces.fetch(a),s=Number(e.nonce-t),o=r[Math.floor(s/64)];if(!o)throw new Error("Invalid nonce byte index");const u=s%64,l=new n.BN((BigInt(1)<<BigInt(u)).toString());return!o.and(l).isZero()}async parseTransactionDetails(e){const a=await this.connection.getTransaction(e);if(!a||!a.meta)throw new Error("Transaction not found");const t=a.transaction.message.getAccountKeys();if(t.length<2)throw new Error("No message account found");const r=t.get(1),s=await this.connection.getAccountInfo(r);if(!s)throw new Error("No account data found");const o=new Uint8Array(s.data).slice(44),[u,l]=n.CircleBridge.deserialize(o),{payload:c}=u,d=c.messageSender,f=c.mintRecipient,p=n.toCircleChain(this.network,u.sourceDomain),M=n.toCircleChain(this.network,u.destinationDomain),S={chain:p,address:c.burnToken};return{from:{chain:p,address:d},to:{chain:M,address:f},token:S,amount:c.amount,message:u,id:{hash:l}}}createUnsignedTx(e,a,t=!1){return new n.SolanaUnsignedTransaction(e,this.network,this.chain,a,t)}}const Q={version:"0.1.0",name:"token_messenger_minter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"tokenMessengerMinterProgramData",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"addRemoteTokenMessenger",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddRemoteTokenMessengerParams"}}]},{name:"removeRemoteTokenMessenger",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveRemoteTokenMessengerParams"}}]},{name:"depositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnParams"}}],returns:"u64"},{name:"depositForBurnWithCaller",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnWithCallerParams"}}],returns:"u64"},{name:"replaceDepositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceDepositForBurnParams"}}],returns:"u64"},{name:"handleReceiveMessage",accounts:[{name:"authorityPda",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"tokenPair",isMut:!1,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"HandleReceiveMessageParams"}}]},{name:"setTokenController",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetTokenControllerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"setMaxBurnAmountPerMessage",accounts:[{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxBurnAmountPerMessageParams"}}]},{name:"addLocalToken",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"localTokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddLocalTokenParams"}}]},{name:"removeLocalToken",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveLocalTokenParams"}}]},{name:"linkTokenPair",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"LinkTokenPairParams"}}]},{name:"unlinkTokenPair",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UninkTokenPairParams"}}]},{name:"burnTokenCustody",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!1,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenMint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"BurnTokenCustodyParams"}}]}],accounts:[{name:"tokenMessenger",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"},{name:"authorityBump",type:"u8"}]}},{name:"remoteTokenMessenger",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"tokenMinter",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"bump",type:"u8"}]}},{name:"tokenPair",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"},{name:"localToken",type:"publicKey"},{name:"bump",type:"u8"}]}},{name:"localToken",type:{kind:"struct",fields:[{name:"custody",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"burnLimitPerMessage",type:"u64"},{name:"messagesSent",type:"u64"},{name:"messagesReceived",type:"u64"},{name:"amountSent",type:"u128"},{name:"amountReceived",type:"u128"},{name:"bump",type:"u8"},{name:"custodyBump",type:"u8"}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"AddRemoteTokenMessengerParams",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"DepositForBurnWithCallerParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"}]}},{name:"DepositForBurnParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"}]}},{name:"RemoveRemoteTokenMessengerParams",type:{kind:"struct",fields:[]}},{name:"ReplaceDepositForBurnParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"},{name:"newMintRecipient",type:"publicKey"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"AddLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"BurnTokenCustodyParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"}]}},{name:"LinkTokenPairParams",type:{kind:"struct",fields:[{name:"localToken",type:"publicKey"},{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"RemoveLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"SetMaxBurnAmountPerMessageParams",type:{kind:"struct",fields:[{name:"burnLimitPerMessage",type:"u64"}]}},{name:"SetTokenControllerParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"}]}},{name:"UninkTokenPairParams",type:{kind:"struct",fields:[]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"TokenMinterError",type:{kind:"enum",variants:[{name:"InvalidAuthority"},{name:"InvalidTokenMinterState"},{name:"ProgramPaused"},{name:"InvalidTokenPairState"},{name:"InvalidLocalTokenState"},{name:"InvalidPauser"},{name:"InvalidTokenController"},{name:"BurnAmountExceeded"},{name:"InvalidAmount"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"DepositForBurn",fields:[{name:"nonce",type:"u64",index:!1},{name:"burnToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"depositor",type:"publicKey",index:!1},{name:"mintRecipient",type:"publicKey",index:!1},{name:"destinationDomain",type:"u32",index:!1},{name:"destinationTokenMessenger",type:"publicKey",index:!1},{name:"destinationCaller",type:"publicKey",index:!1}]},{name:"MintAndWithdraw",fields:[{name:"mintRecipient",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"mintToken",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerAdded",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerRemoved",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"SetTokenController",fields:[{name:"tokenController",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"SetBurnLimitPerMessage",fields:[{name:"token",type:"publicKey",index:!1},{name:"burnLimitPerMessage",type:"u64",index:!1}]},{name:"LocalTokenAdded",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"LocalTokenRemoved",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"TokenPairLinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"TokenPairUnlinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]},{name:"TokenCustodyBurned",fields:[{name:"custodyTokenAccount",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"InvalidTokenMessengerState",msg:"Invalid token messenger state"},{code:6002,name:"InvalidTokenMessenger",msg:"Invalid token messenger"},{code:6003,name:"InvalidOwner",msg:"Invalid owner"},{code:6004,name:"MalformedMessage",msg:"Malformed message"},{code:6005,name:"InvalidMessageBodyVersion",msg:"Invalid message body version"},{code:6006,name:"InvalidAmount",msg:"Invalid amount"},{code:6007,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6008,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6009,name:"InvalidMintRecipient",msg:"Invalid mint recipient"},{code:6010,name:"InvalidSender",msg:"Invalid sender"},{code:6011,name:"InvalidTokenPair",msg:"Invalid token pair"},{code:6012,name:"InvalidTokenMint",msg:"Invalid token mint"}]},Z={version:"0.1.0",name:"message_transmitter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageTransmitterProgramData",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"updateAttesterManager",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdateAttesterManagerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"setMaxMessageBodySize",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxMessageBodySizeParams"}}]},{name:"enableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"EnableAttesterParams"}}]},{name:"disableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DisableAttesterParams"}}]},{name:"setSignatureThreshold",accounts:[{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetSignatureThresholdParams"}}]},{name:"sendMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageParams"}}],returns:"u64"},{name:"sendMessageWithCaller",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageWithCallerParams"}}],returns:"u64"},{name:"replaceMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceMessageParams"}}],returns:"u64"},{name:"receiveMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"caller",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"usedNonces",isMut:!0,isSigner:!1},{name:"receiver",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReceiveMessageParams"}}]},{name:"reclaimEventAccount",accounts:[{name:"payee",isMut:!0,isSigner:!0,docs:["rent SOL receiver, should match original rent payer"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!1}],args:[{name:"params",type:{defined:"ReclaimEventAccountParams"}}]},{name:"getNoncePda",accounts:[{name:"messageTransmitter",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"GetNoncePDAParams"}}],returns:"publicKey"},{name:"isNonceUsed",accounts:[{name:"usedNonces",isMut:!1,isSigner:!1,docs:["Account will be explicitly loaded to avoid error when it's not initialized"]}],args:[{name:"params",type:{defined:"IsNonceUsedParams"}}],returns:"bool"}],accounts:[{name:"messageSent",type:{kind:"struct",fields:[{name:"rentPayer",type:"publicKey"},{name:"message",type:"bytes"}]}},{name:"messageTransmitter",docs:["Main state of the MessageTransmitter program"],type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"},{name:"nextAvailableNonce",type:"u64"}]}},{name:"usedNonces",docs:["UsedNonces account holds an array of bits that indicate which nonces were already used","so they can't be resused to receive new messages. Array starts with the first_nonce and","holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain."],type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"firstNonce",type:"u64"},{name:"usedNonces",type:{array:["u64",100]}}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"DisableAttesterParams",type:{kind:"struct",fields:[{name:"attester",type:"publicKey"}]}},{name:"EnableAttesterParams",type:{kind:"struct",fields:[{name:"newAttester",type:"publicKey"}]}},{name:"GetNoncePDAParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"sourceDomain",type:"u32"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"localDomain",type:"u32"},{name:"attester",type:"publicKey"},{name:"maxMessageBodySize",type:"u64"},{name:"version",type:"u32"}]}},{name:"IsNonceUsedParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"ReceiveMessageParams",type:{kind:"struct",fields:[{name:"message",type:"bytes"},{name:"attestation",type:"bytes"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"ReclaimEventAccountParams",type:{kind:"struct",fields:[{name:"attestation",type:"bytes"}]}},{name:"ReplaceMessageParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newMessageBody",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"}]}},{name:"SendMessageWithCallerParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"destinationCaller",type:"publicKey"}]}},{name:"SendMessageParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"}]}},{name:"SetMaxMessageBodySizeParams",type:{kind:"struct",fields:[{name:"newMaxMessageBodySize",type:"u64"}]}},{name:"SetSignatureThresholdParams",type:{kind:"struct",fields:[{name:"newSignatureThreshold",type:"u32"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateAttesterManagerParams",type:{kind:"struct",fields:[{name:"newAttesterManager",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"MathError",type:{kind:"enum",variants:[{name:"MathOverflow"},{name:"MathUnderflow"},{name:"ErrorInDivision"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"AttesterManagerUpdated",fields:[{name:"previousAttesterManager",type:"publicKey",index:!1},{name:"newAttesterManager",type:"publicKey",index:!1}]},{name:"MessageReceived",fields:[{name:"caller",type:"publicKey",index:!1},{name:"sourceDomain",type:"u32",index:!1},{name:"nonce",type:"u64",index:!1},{name:"sender",type:"publicKey",index:!1},{name:"messageBody",type:"bytes",index:!1}]},{name:"SignatureThresholdUpdated",fields:[{name:"oldSignatureThreshold",type:"u32",index:!1},{name:"newSignatureThreshold",type:"u32",index:!1}]},{name:"AttesterEnabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterDisabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"MaxMessageBodySizeUpdated",fields:[{name:"newMaxMessageBodySize",type:"u64",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6002,name:"InvalidMessageTransmitterState",msg:"Invalid message transmitter state"},{code:6003,name:"InvalidSignatureThreshold",msg:"Invalid signature threshold"},{code:6004,name:"SignatureThresholdAlreadySet",msg:"Signature threshold already set"},{code:6005,name:"InvalidOwner",msg:"Invalid owner"},{code:6006,name:"InvalidPauser",msg:"Invalid pauser"},{code:6007,name:"InvalidAttesterManager",msg:"Invalid attester manager"},{code:6008,name:"InvalidAttester",msg:"Invalid attester"},{code:6009,name:"AttesterAlreadyEnabled",msg:"Attester already enabled"},{code:6010,name:"TooFewEnabledAttesters",msg:"Too few enabled attesters"},{code:6011,name:"SignatureThresholdTooLow",msg:"Signature threshold is too low"},{code:6012,name:"AttesterAlreadyDisabled",msg:"Attester already disabled"},{code:6013,name:"MessageBodyLimitExceeded",msg:"Message body exceeds max size"},{code:6014,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6015,name:"InvalidRecipient",msg:"Invalid message recipient"},{code:6016,name:"SenderNotPermitted",msg:"Sender is not permitted"},{code:6017,name:"InvalidSourceDomain",msg:"Invalid source domain"},{code:6018,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6019,name:"InvalidMessageVersion",msg:"Invalid message version"},{code:6020,name:"InvalidUsedNoncesAccount",msg:"Invalid used nonces account"},{code:6021,name:"InvalidRecipientProgram",msg:"Invalid recipient program"},{code:6022,name:"InvalidNonce",msg:"Invalid nonce"},{code:6023,name:"NonceAlreadyUsed",msg:"Nonce already used"},{code:6024,name:"MessageTooShort",msg:"Message is too short"},{code:6025,name:"MalformedMessage",msg:"Malformed message"},{code:6026,name:"InvalidSignatureOrderOrDupe",msg:"Invalid signature order or dupe"},{code:6027,name:"InvalidAttesterSignature",msg:"Invalid attester signature"},{code:6028,name:"InvalidAttestationLength",msg:"Invalid attestation length"},{code:6029,name:"InvalidSignatureRecoveryId",msg:"Invalid signature recovery ID"},{code:6030,name:"InvalidSignatureSValue",msg:"Invalid signature S value"},{code:6031,name:"InvalidMessageHash",msg:"Invalid message hash"}]};n.registerProtocol(n._platform$1,"CircleBridge",b);const I={TokenMessengerIdl:Q,MessageTransmitterIdl:Z};exports.SolanaCircleBridge=b;exports.calculateFirstNonce=w;exports.createDepositForBurnInstruction=R;exports.createMessageTransmitterProgramInterface=A;exports.createReadOnlyMessageTransmitterProgramInterface=C;exports.createReadOnlyTokenMessengerProgramInterface=D;exports.createReceiveMessageInstruction=O;exports.createTokenMessengerProgramInterface=v;exports.findProgramAddress=m;exports.idl=I;exports.nonceAccount=K;
@@ -1,7 +1,7 @@
1
1
  var k = Object.defineProperty;
2
2
  var v = (u, s, t) => s in u ? k(u, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : u[s] = t;
3
3
  var i = (u, s, t) => v(u, typeof s != "symbol" ? s + "" : s, t);
4
- import { cX as C, c1 as S, d4 as f, b$ as _, aD as w, c0 as b, ap as y, c2 as T, dh as M, bW as x } from "./index-CnlVWsC5.mjs";
4
+ import { cX as C, c1 as S, d4 as f, b$ as _, aD as w, c0 as b, ap as y, c2 as T, dh as M, bW as x } from "./index-DGkJ3qwd.mjs";
5
5
  const j = [
6
6
  [
7
7
  "Testnet",
@@ -1,4 +1,4 @@
1
- import { ch as J, dv as Z } from "./index-CnlVWsC5.mjs";
1
+ import { ch as J, dv as Z } from "./index-DGkJ3qwd.mjs";
2
2
  const j = "logger/5.8.0";
3
3
  let F = !1, k = !1;
4
4
  const U = { debug: 1, default: 2, info: 2, warning: 3, error: 4, off: 5 };
@@ -1,4 +1,4 @@
1
- import { g as te } from "./index-CnlVWsC5.mjs";
1
+ import { g as te } from "./index-DGkJ3qwd.mjs";
2
2
  function re(e, u) {
3
3
  if (e.length >= 255)
4
4
  throw new TypeError("Alphabet too long");
@@ -1,6 +1,6 @@
1
- import { s as ce, T as N, o as ot, n as _t, R as Do, t as H, y as gt, a as C, p as K } from "./index-eZTLr3IN.mjs";
1
+ import { s as ce, T as N, o as ot, n as _t, R as Do, t as H, y as gt, a as C, p as K } from "./index-IrWII0fq.mjs";
2
2
  import { d as Uo } from "./dijkstra-BZM-8g-B.mjs";
3
- import { d as Wo } from "./index-CnlVWsC5.mjs";
3
+ import { d as Wo } from "./index-DGkJ3qwd.mjs";
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2019 Google LLC
@@ -1,4 +1,4 @@
1
- "use strict";const re=require("./index-hMJhZX_v.js");function ne(e,u){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),r=0;r<t.length;r++)t[r]=255;for(var D=0;D<e.length;D++){var n=e.charAt(D),a=n.charCodeAt(0);if(t[a]!==255)throw new TypeError(n+" is ambiguous");t[a]=D}var i=e.length,s=e.charAt(0),o=Math.log(i)/Math.log(256),f=Math.log(256)/Math.log(i);function _(c){if(c instanceof Uint8Array||(ArrayBuffer.isView(c)?c=new Uint8Array(c.buffer,c.byteOffset,c.byteLength):Array.isArray(c)&&(c=Uint8Array.from(c))),!(c instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(c.length===0)return"";for(var d=0,w=0,h=0,C=c.length;h!==C&&c[h]===0;)h++,d++;for(var p=(C-h)*f+1>>>0,b=new Uint8Array(p);h!==C;){for(var O=c[h],m=0,y=p-1;(O!==0||m<w)&&y!==-1;y--,m++)O+=256*b[y]>>>0,b[y]=O%i>>>0,O=O/i>>>0;if(O!==0)throw new Error("Non-zero carry");w=m,h++}for(var S=p-w;S!==p&&b[S]===0;)S++;for(var R=s.repeat(d);S<p;++S)R+=e.charAt(b[S]);return R}function l(c){if(typeof c!="string")throw new TypeError("Expected String");if(c.length===0)return new Uint8Array;var d=0;if(c[d]!==" "){for(var w=0,h=0;c[d]===s;)w++,d++;for(var C=(c.length-d)*o+1>>>0,p=new Uint8Array(C);c[d];){var b=t[c.charCodeAt(d)];if(b===255)return;for(var O=0,m=C-1;(b!==0||O<h)&&m!==-1;m--,O++)b+=i*p[m]>>>0,p[m]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");h=O,d++}if(c[d]!==" "){for(var y=C-h;y!==C&&p[y]===0;)y++;for(var S=new Uint8Array(w+(C-y)),R=w;y!==C;)S[R++]=p[y++];return S}}}function v(c){var d=l(c);if(d)return d;throw new Error(`Non-${u} character`)}return{encode:_,decodeUnsafe:l,decode:v}}var De=ne,ae=De;const ie=e=>{if(e instanceof Uint8Array&&e.constructor.name==="Uint8Array")return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Unknown type, must be binary type")},oe=e=>new TextEncoder().encode(e),ce=e=>new TextDecoder().decode(e);class fe{constructor(u,t,r){this.name=u,this.prefix=t,this.baseEncode=r}encode(u){if(u instanceof Uint8Array)return`${this.prefix}${this.baseEncode(u)}`;throw Error("Unknown type, must be binary type")}}class se{constructor(u,t,r){if(this.name=u,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=r}decode(u){if(typeof u=="string"){if(u.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(u)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(u.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(u){return Z(this,u)}}class le{constructor(u){this.decoders=u}or(u){return Z(this,u)}decode(u){const t=u[0],r=this.decoders[t];if(r)return r.decode(u);throw RangeError(`Unable to decode multibase string ${JSON.stringify(u)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Z=(e,u)=>new le({...e.decoders||{[e.prefix]:e},...u.decoders||{[u.prefix]:u}});class Ee{constructor(u,t,r,D){this.name=u,this.prefix=t,this.baseEncode=r,this.baseDecode=D,this.encoder=new fe(u,t,r),this.decoder=new se(u,t,D)}encode(u){return this.encoder.encode(u)}decode(u){return this.decoder.decode(u)}}const M=({name:e,prefix:u,encode:t,decode:r})=>new Ee(e,u,t,r),j=({prefix:e,name:u,alphabet:t})=>{const{encode:r,decode:D}=ae(t,u);return M({prefix:e,name:u,encode:r,decode:n=>ie(D(n))})},de=(e,u,t,r)=>{const D={};for(let f=0;f<u.length;++f)D[u[f]]=f;let n=e.length;for(;e[n-1]==="=";)--n;const a=new Uint8Array(n*t/8|0);let i=0,s=0,o=0;for(let f=0;f<n;++f){const _=D[e[f]];if(_===void 0)throw new SyntaxError(`Non-${r} character`);s=s<<t|_,i+=t,i>=8&&(i-=8,a[o++]=255&s>>i)}if(i>=t||255&s<<8-i)throw new SyntaxError("Unexpected end of data");return a},be=(e,u,t)=>{const r=u[u.length-1]==="=",D=(1<<t)-1;let n="",a=0,i=0;for(let s=0;s<e.length;++s)for(i=i<<8|e[s],a+=8;a>t;)a-=t,n+=u[D&i>>a];if(a&&(n+=u[D&i<<t-a]),r)for(;n.length*t&7;)n+="=";return n},E=({name:e,prefix:u,bitsPerChar:t,alphabet:r})=>M({prefix:u,name:e,encode(D){return be(D,r,t)},decode(D){return de(D,r,t,e)}}),_e=M({prefix:"\0",name:"identity",encode:e=>ce(e),decode:e=>oe(e)}),he=Object.freeze(Object.defineProperty({__proto__:null,identity:_e},Symbol.toStringTag,{value:"Module"})),ye=E({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),Ce=Object.freeze(Object.defineProperty({__proto__:null,base2:ye},Symbol.toStringTag,{value:"Module"})),pe=E({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),Oe=Object.freeze(Object.defineProperty({__proto__:null,base8:pe},Symbol.toStringTag,{value:"Module"})),Se=j({prefix:"9",name:"base10",alphabet:"0123456789"}),ve=Object.freeze(Object.defineProperty({__proto__:null,base10:Se},Symbol.toStringTag,{value:"Module"})),me=E({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),we=E({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),Ae=Object.freeze(Object.defineProperty({__proto__:null,base16:me,base16upper:we},Symbol.toStringTag,{value:"Module"})),ge=E({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Te=E({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ne=E({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Fe=E({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ue=E({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),je=E({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Re=E({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Me=E({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Pe=E({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),Ie=Object.freeze(Object.defineProperty({__proto__:null,base32:ge,base32hex:Ue,base32hexpad:Re,base32hexpadupper:Me,base32hexupper:je,base32pad:Ne,base32padupper:Fe,base32upper:Te,base32z:Pe},Symbol.toStringTag,{value:"Module"})),Be=j({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ye=j({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),He=Object.freeze(Object.defineProperty({__proto__:null,base36:Be,base36upper:Ye},Symbol.toStringTag,{value:"Module"})),We=j({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),qe=j({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),ze=Object.freeze(Object.defineProperty({__proto__:null,base58btc:We,base58flickr:qe},Symbol.toStringTag,{value:"Module"})),$e=E({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ve=E({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ke=E({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Xe=E({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Ge=Object.freeze(Object.defineProperty({__proto__:null,base64:$e,base64pad:Ve,base64url:Ke,base64urlpad:Xe},Symbol.toStringTag,{value:"Module"})),x=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),Je=x.reduce((e,u,t)=>(e[t]=u,e),[]),ke=x.reduce((e,u,t)=>(e[u.codePointAt(0)]=t,e),[]);function Le(e){return e.reduce((u,t)=>(u+=Je[t],u),"")}function Qe(e){const u=[];for(const t of e){const r=ke[t.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${t}`);u.push(r)}return new Uint8Array(u)}const Ze=M({prefix:"🚀",name:"base256emoji",encode:Le,decode:Qe}),xe=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Ze},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;var ee={};/*! *****************************************************************************
1
+ "use strict";const re=require("./index-D7FFeuCp.js");function ne(e,u){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),r=0;r<t.length;r++)t[r]=255;for(var D=0;D<e.length;D++){var n=e.charAt(D),a=n.charCodeAt(0);if(t[a]!==255)throw new TypeError(n+" is ambiguous");t[a]=D}var i=e.length,s=e.charAt(0),o=Math.log(i)/Math.log(256),f=Math.log(256)/Math.log(i);function _(c){if(c instanceof Uint8Array||(ArrayBuffer.isView(c)?c=new Uint8Array(c.buffer,c.byteOffset,c.byteLength):Array.isArray(c)&&(c=Uint8Array.from(c))),!(c instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(c.length===0)return"";for(var d=0,w=0,h=0,C=c.length;h!==C&&c[h]===0;)h++,d++;for(var p=(C-h)*f+1>>>0,b=new Uint8Array(p);h!==C;){for(var O=c[h],m=0,y=p-1;(O!==0||m<w)&&y!==-1;y--,m++)O+=256*b[y]>>>0,b[y]=O%i>>>0,O=O/i>>>0;if(O!==0)throw new Error("Non-zero carry");w=m,h++}for(var S=p-w;S!==p&&b[S]===0;)S++;for(var R=s.repeat(d);S<p;++S)R+=e.charAt(b[S]);return R}function l(c){if(typeof c!="string")throw new TypeError("Expected String");if(c.length===0)return new Uint8Array;var d=0;if(c[d]!==" "){for(var w=0,h=0;c[d]===s;)w++,d++;for(var C=(c.length-d)*o+1>>>0,p=new Uint8Array(C);c[d];){var b=t[c.charCodeAt(d)];if(b===255)return;for(var O=0,m=C-1;(b!==0||O<h)&&m!==-1;m--,O++)b+=i*p[m]>>>0,p[m]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");h=O,d++}if(c[d]!==" "){for(var y=C-h;y!==C&&p[y]===0;)y++;for(var S=new Uint8Array(w+(C-y)),R=w;y!==C;)S[R++]=p[y++];return S}}}function v(c){var d=l(c);if(d)return d;throw new Error(`Non-${u} character`)}return{encode:_,decodeUnsafe:l,decode:v}}var De=ne,ae=De;const ie=e=>{if(e instanceof Uint8Array&&e.constructor.name==="Uint8Array")return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Unknown type, must be binary type")},oe=e=>new TextEncoder().encode(e),ce=e=>new TextDecoder().decode(e);class fe{constructor(u,t,r){this.name=u,this.prefix=t,this.baseEncode=r}encode(u){if(u instanceof Uint8Array)return`${this.prefix}${this.baseEncode(u)}`;throw Error("Unknown type, must be binary type")}}class se{constructor(u,t,r){if(this.name=u,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=r}decode(u){if(typeof u=="string"){if(u.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(u)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(u.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(u){return Z(this,u)}}class le{constructor(u){this.decoders=u}or(u){return Z(this,u)}decode(u){const t=u[0],r=this.decoders[t];if(r)return r.decode(u);throw RangeError(`Unable to decode multibase string ${JSON.stringify(u)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Z=(e,u)=>new le({...e.decoders||{[e.prefix]:e},...u.decoders||{[u.prefix]:u}});class Ee{constructor(u,t,r,D){this.name=u,this.prefix=t,this.baseEncode=r,this.baseDecode=D,this.encoder=new fe(u,t,r),this.decoder=new se(u,t,D)}encode(u){return this.encoder.encode(u)}decode(u){return this.decoder.decode(u)}}const M=({name:e,prefix:u,encode:t,decode:r})=>new Ee(e,u,t,r),j=({prefix:e,name:u,alphabet:t})=>{const{encode:r,decode:D}=ae(t,u);return M({prefix:e,name:u,encode:r,decode:n=>ie(D(n))})},de=(e,u,t,r)=>{const D={};for(let f=0;f<u.length;++f)D[u[f]]=f;let n=e.length;for(;e[n-1]==="=";)--n;const a=new Uint8Array(n*t/8|0);let i=0,s=0,o=0;for(let f=0;f<n;++f){const _=D[e[f]];if(_===void 0)throw new SyntaxError(`Non-${r} character`);s=s<<t|_,i+=t,i>=8&&(i-=8,a[o++]=255&s>>i)}if(i>=t||255&s<<8-i)throw new SyntaxError("Unexpected end of data");return a},be=(e,u,t)=>{const r=u[u.length-1]==="=",D=(1<<t)-1;let n="",a=0,i=0;for(let s=0;s<e.length;++s)for(i=i<<8|e[s],a+=8;a>t;)a-=t,n+=u[D&i>>a];if(a&&(n+=u[D&i<<t-a]),r)for(;n.length*t&7;)n+="=";return n},E=({name:e,prefix:u,bitsPerChar:t,alphabet:r})=>M({prefix:u,name:e,encode(D){return be(D,r,t)},decode(D){return de(D,r,t,e)}}),_e=M({prefix:"\0",name:"identity",encode:e=>ce(e),decode:e=>oe(e)}),he=Object.freeze(Object.defineProperty({__proto__:null,identity:_e},Symbol.toStringTag,{value:"Module"})),ye=E({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),Ce=Object.freeze(Object.defineProperty({__proto__:null,base2:ye},Symbol.toStringTag,{value:"Module"})),pe=E({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),Oe=Object.freeze(Object.defineProperty({__proto__:null,base8:pe},Symbol.toStringTag,{value:"Module"})),Se=j({prefix:"9",name:"base10",alphabet:"0123456789"}),ve=Object.freeze(Object.defineProperty({__proto__:null,base10:Se},Symbol.toStringTag,{value:"Module"})),me=E({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),we=E({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),Ae=Object.freeze(Object.defineProperty({__proto__:null,base16:me,base16upper:we},Symbol.toStringTag,{value:"Module"})),ge=E({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Te=E({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ne=E({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Fe=E({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ue=E({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),je=E({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Re=E({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Me=E({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Pe=E({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),Ie=Object.freeze(Object.defineProperty({__proto__:null,base32:ge,base32hex:Ue,base32hexpad:Re,base32hexpadupper:Me,base32hexupper:je,base32pad:Ne,base32padupper:Fe,base32upper:Te,base32z:Pe},Symbol.toStringTag,{value:"Module"})),Be=j({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ye=j({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),He=Object.freeze(Object.defineProperty({__proto__:null,base36:Be,base36upper:Ye},Symbol.toStringTag,{value:"Module"})),We=j({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),qe=j({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),ze=Object.freeze(Object.defineProperty({__proto__:null,base58btc:We,base58flickr:qe},Symbol.toStringTag,{value:"Module"})),$e=E({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ve=E({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ke=E({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Xe=E({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Ge=Object.freeze(Object.defineProperty({__proto__:null,base64:$e,base64pad:Ve,base64url:Ke,base64urlpad:Xe},Symbol.toStringTag,{value:"Module"})),x=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),Je=x.reduce((e,u,t)=>(e[t]=u,e),[]),ke=x.reduce((e,u,t)=>(e[u.codePointAt(0)]=t,e),[]);function Le(e){return e.reduce((u,t)=>(u+=Je[t],u),"")}function Qe(e){const u=[];for(const t of e){const r=ke[t.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${t}`);u.push(r)}return new Uint8Array(u)}const Ze=M({prefix:"🚀",name:"base256emoji",encode:Le,decode:Qe}),xe=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Ze},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;var ee={};/*! *****************************************************************************
2
2
  Copyright (c) Microsoft Corporation.
3
3
 
4
4
  Permission to use, copy, modify, and/or distribute this software for any
@@ -1 +1 @@
1
- "use strict";var h=Object.defineProperty;var m=(a,e,t)=>e in a?h(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var s=(a,e,t)=>m(a,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./index-hMJhZX_v.js"),w=require("./aptos-C9OAMi1H.js");class c{constructor(e,t,r,o){s(this,"network");s(this,"chain");s(this,"connection");s(this,"contracts");s(this,"chainId");s(this,"coreBridge");this.network=e,this.chain=t,this.connection=r,this.contracts=o,this.chainId=i.toChainId(t);const n=o.coreBridge;if(!n)throw new Error(`CoreBridge contract Address for chain ${t} not found`);this.coreBridge=n}getGuardianSet(e){throw new Error("Method not implemented.")}getGuardianSetIndex(){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,t){const[r,o]=await w.AptosPlatform.chainFromRpc(e),n=t[o];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} !== ${r}`);return new c(r,o,e,n.contracts)}async*publishMessage(e,t){throw new Error("Method not implemented.")}async*verifyMessage(e,t){throw new Error("Not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(r=>({chain:r.emitterChain,emitter:r.emitterAddress,sequence:r.sequence}))}async parseMessages(e){const t=await this.connection.getTransactionByHash({transactionHash:e});if(t.type!=="user_transaction")throw new Error(`${e} is not a user_transaction`);const r=t.events.filter(o=>o.type.endsWith("WormholeMessage"));if(!r||r.length===0)throw new Error(`WormholeMessage not found for ${e}`);return r.map(o=>{const n=o.data,d=new i.UniversalAddress(BigInt(n.sender).toString(16).padStart(64,"0"));return i.createVAA("Uint8Array",{guardianSet:0,emitterChain:this.chain,emitterAddress:d,sequence:BigInt(n.sequence),timestamp:Number(n.timestamp),consistencyLevel:n.consistency_level,nonce:Number(n.nonce),signatures:[],payload:i.hex.decode(n.payload)})})}}i.registerProtocol("Aptos","WormholeCore",c);exports.AptosWormholeCore=c;
1
+ "use strict";var h=Object.defineProperty;var m=(a,e,t)=>e in a?h(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var s=(a,e,t)=>m(a,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./index-D7FFeuCp.js"),w=require("./aptos-BVPA8gYF.js");class c{constructor(e,t,r,o){s(this,"network");s(this,"chain");s(this,"connection");s(this,"contracts");s(this,"chainId");s(this,"coreBridge");this.network=e,this.chain=t,this.connection=r,this.contracts=o,this.chainId=i.toChainId(t);const n=o.coreBridge;if(!n)throw new Error(`CoreBridge contract Address for chain ${t} not found`);this.coreBridge=n}getGuardianSet(e){throw new Error("Method not implemented.")}getGuardianSetIndex(){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,t){const[r,o]=await w.AptosPlatform.chainFromRpc(e),n=t[o];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} !== ${r}`);return new c(r,o,e,n.contracts)}async*publishMessage(e,t){throw new Error("Method not implemented.")}async*verifyMessage(e,t){throw new Error("Not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(r=>({chain:r.emitterChain,emitter:r.emitterAddress,sequence:r.sequence}))}async parseMessages(e){const t=await this.connection.getTransactionByHash({transactionHash:e});if(t.type!=="user_transaction")throw new Error(`${e} is not a user_transaction`);const r=t.events.filter(o=>o.type.endsWith("WormholeMessage"));if(!r||r.length===0)throw new Error(`WormholeMessage not found for ${e}`);return r.map(o=>{const n=o.data,d=new i.UniversalAddress(BigInt(n.sender).toString(16).padStart(64,"0"));return i.createVAA("Uint8Array",{guardianSet:0,emitterChain:this.chain,emitterAddress:d,sequence:BigInt(n.sequence),timestamp:Number(n.timestamp),consistencyLevel:n.consistency_level,nonce:Number(n.nonce),signatures:[],payload:i.hex.decode(n.payload)})})}}i.registerProtocol("Aptos","WormholeCore",c);exports.AptosWormholeCore=c;
@@ -1,7 +1,7 @@
1
1
  var Pt = Object.defineProperty;
2
2
  var _t = (e, t, r) => t in e ? Pt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
3
3
  var f = (e, t, r) => _t(e, typeof t != "symbol" ? t + "" : t, r);
4
- import { P as c, d as l, bC as A, T as le, bG as z, bF as U, bH as G, bE as S, bD as V, cv as Ge, cw as He, cx as Wt, cy as It, cz as Ut, cA as Nt, cq as O, cd as E, bK as y, cB as T, cC as Ft, cD as ye, c6 as dt, cE as xt, ce as lt, cf as zt, cF as Ot, cG as Q, cH as Lt, ct as H, cu as Z, cI as Dt, cr as qt, cJ as Kt, cK as Vt, cL as Se, cM as Gt, ch as v, cs as Ht, ad as oe, ae as k, c5 as Ce, bR as Zt, am as $, cb as Be, cN as Yt, cO as Qt, K as se, a$ as L, cP as Xt, ci as ft, bW as mt, af as gt } from "./index-CnlVWsC5.mjs";
4
+ import { P as c, d as l, bC as A, T as le, bG as z, bF as U, bH as G, bE as S, bD as V, cv as Ge, cw as He, cx as Wt, cy as It, cz as Ut, cA as Nt, cq as O, cd as E, bK as y, cB as T, cC as Ft, cD as ye, c6 as dt, cE as xt, ce as lt, cf as zt, cF as Ot, cG as Q, cH as Lt, ct as H, cu as Z, cI as Dt, cr as qt, cJ as Kt, cK as Vt, cL as Se, cM as Gt, ch as v, cs as Ht, ad as oe, ae as k, c5 as Ce, bR as Zt, am as $, cb as Be, cN as Yt, cO as Qt, K as se, a$ as L, cP as Xt, ci as ft, bW as mt, af as gt } from "./index-DGkJ3qwd.mjs";
5
5
  const M = new c("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
6
6
  new c("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
7
7
  const Ae = new c("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), D = new c("So11111111111111111111111111111111111111112");
@@ -1,8 +1,8 @@
1
1
  var Z = Object.defineProperty;
2
2
  var j = (n, t, e) => t in n ? Z(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
3
  var d = (n, t, e) => j(n, typeof t != "symbol" ? t + "" : t, e);
4
- import { P as s, d as c, bK as h, bC as Q, bD as E, bE as W, bF as X, bG as Y, bH as J, cd as $, T as ee, ce as te, ad as ne, ae as K, cj as ie, ck as se, cl as ae, cm as re, cn as oe, co as x, cp as ce, cq as N, cr as de, a as v, V as G, cs as ue, ct as me, cu as ge, ci as fe, bW as le, af as he } from "./index-CnlVWsC5.mjs";
5
- import { deriveWrappedMetaKey as O, deriveTokenBridgeConfigKey as R, deriveAuthoritySignerKey as pe, deriveSenderAccountKey as ye, deriveMintAuthorityKey as we, deriveEndpointKey as ke } from "./index-BDLAOszA.mjs";
4
+ import { P as s, d as c, bK as h, bC as Q, bD as E, bE as W, bF as X, bG as Y, bH as J, cd as $, T as ee, ce as te, ad as ne, ae as K, cj as ie, ck as se, cl as ae, cm as re, cn as oe, co as x, cp as ce, cq as N, cr as de, a as v, V as G, cs as ue, ct as me, cu as ge, ci as fe, bW as le, af as he } from "./index-DGkJ3qwd.mjs";
5
+ import { deriveWrappedMetaKey as O, deriveTokenBridgeConfigKey as R, deriveAuthoritySignerKey as pe, deriveSenderAccountKey as ye, deriveMintAuthorityKey as we, deriveEndpointKey as ke } from "./index-CTShjNeL.mjs";
6
6
  const Se = {
7
7
  version: "0.1.0",
8
8
  name: "wormhole_gateway",
@@ -1 +1 @@
1
- "use strict";var v=Object.defineProperty;var y=(b,e,t)=>e in b?v(b,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):b[e]=t;var i=(b,e,t)=>y(b,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./chunk-IMTC3J2M-AVjGjGaL.js"),c=require("./index-hMJhZX_v.js"),k=require("./aptos-C9OAMi1H.js"),M=require("./unsignedTransaction-C1YeEl4G.js"),x=[["Mainnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000019bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d0000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f17729bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d000001070b000e010e02110011010102"}],["Testnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000015f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b90000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d95f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9000001070b000e010e02110011010102"}]],u=c.constMap(x,[0,1]);class h{constructor(e,t,n,s){i(this,"network");i(this,"chain");i(this,"provider");i(this,"contracts");i(this,"usdcId");i(this,"tokenMessengerId");i(this,"messageTransmitterId");i(this,"moveScripts");var a,f,o;if(this.network=e,this.chain=t,this.provider=n,this.contracts=s,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const r=c.usdcContract.get(this.network,this.chain);if(!r)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!((a=s.cctp)!=null&&a.tokenMessenger))throw new Error(`Circle Token Messenger contract for domain ${t} not found`);if(!((f=s.cctp)!=null&&f.messageTransmitter))throw new Error(`Circle Message Transmitter contract for domain ${t} not found`);if(!u.has(e))throw new Error("No Aptos CCTP move scripts found");this.usdcId=r,this.tokenMessengerId=(o=s.cctp)==null?void 0:o.tokenMessenger,this.messageTransmitterId=s.cctp.messageTransmitter,this.moveScripts=u.get(e)}async*transfer(e,t,n){const s=new d.y$2(c.circleChainId.get(this.network,t.chain)),r=d.l.from(this.usdcId),a=d.l.from(t.address.toUniversalAddress().toUint8Array()),f=[new d.m$1(n),s,a,r],o={bytecode:this.moveScripts.depositForBurn,functionArguments:f};yield this.createUnsignedTx(o,"Aptos.CircleBridge.Transfer")}async isTransferCompleted(e){const t=new d.y$2(e.sourceDomain).bcsToBytes(),n=new d.m$1(e.nonce).bcsToBytes(),s=c.keccak_256(new Uint8Array([...t,45,...n])),r=c.hex.encode(s);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[r]}}))[0]}async*redeem(e,t,n){const s=[d.t$4.U8(c.CircleBridge.serialize(t)),d.t$4.U8(c.hex.decode(n))],r={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:s};yield this.createUnsignedTx(r,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(e){var g;const t=await this.provider.getTransactionByHash({transactionHash:e}),n=this.messageTransmitterId.replace(/^0x0+/,"0x"),s=(g=t.events)==null?void 0:g.find(C=>C.type===`${n}::message_transmitter::MessageSent`);if(!s)throw new Error("No MessageSent event found");const r=c.hex.decode(s.data.message),[a,f]=c.CircleBridge.deserialize(r),{payload:o}=a,p=o.messageSender,l=o.mintRecipient,m=c.toCircleChain(this.network,a.sourceDomain),w=c.toCircleChain(this.network,a.destinationDomain),T={chain:m,address:o.burnToken};return{from:{chain:m,address:p},to:{chain:w,address:l},token:T,amount:o.amount,message:a,id:{hash:f}}}static async fromRpc(e,t){const[n,s]=await k.AptosPlatform.chainFromRpc(e),r=t[s];if(r.network!==n)throw new Error(`Network mismatch: ${r.network} != ${n}`);return new h(n,s,e,r.contracts)}createUnsignedTx(e,t,n=!1){return new M.AptosUnsignedTransaction(e,this.network,this.chain,t,n)}}c.registerProtocol("Aptos","CircleBridge",h);exports.AptosCircleBridge=h;
1
+ "use strict";var v=Object.defineProperty;var y=(b,e,t)=>e in b?v(b,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):b[e]=t;var i=(b,e,t)=>y(b,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./chunk-IMTC3J2M-0BfyFPJr.js"),c=require("./index-D7FFeuCp.js"),k=require("./aptos-BVPA8gYF.js"),M=require("./unsignedTransaction-C1YeEl4G.js"),x=[["Mainnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000019bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d0000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f17729bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d000001070b000e010e02110011010102"}],["Testnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000015f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b90000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d95f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9000001070b000e010e02110011010102"}]],u=c.constMap(x,[0,1]);class h{constructor(e,t,n,s){i(this,"network");i(this,"chain");i(this,"provider");i(this,"contracts");i(this,"usdcId");i(this,"tokenMessengerId");i(this,"messageTransmitterId");i(this,"moveScripts");var a,f,o;if(this.network=e,this.chain=t,this.provider=n,this.contracts=s,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const r=c.usdcContract.get(this.network,this.chain);if(!r)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!((a=s.cctp)!=null&&a.tokenMessenger))throw new Error(`Circle Token Messenger contract for domain ${t} not found`);if(!((f=s.cctp)!=null&&f.messageTransmitter))throw new Error(`Circle Message Transmitter contract for domain ${t} not found`);if(!u.has(e))throw new Error("No Aptos CCTP move scripts found");this.usdcId=r,this.tokenMessengerId=(o=s.cctp)==null?void 0:o.tokenMessenger,this.messageTransmitterId=s.cctp.messageTransmitter,this.moveScripts=u.get(e)}async*transfer(e,t,n){const s=new d.y$2(c.circleChainId.get(this.network,t.chain)),r=d.l.from(this.usdcId),a=d.l.from(t.address.toUniversalAddress().toUint8Array()),f=[new d.m$1(n),s,a,r],o={bytecode:this.moveScripts.depositForBurn,functionArguments:f};yield this.createUnsignedTx(o,"Aptos.CircleBridge.Transfer")}async isTransferCompleted(e){const t=new d.y$2(e.sourceDomain).bcsToBytes(),n=new d.m$1(e.nonce).bcsToBytes(),s=c.keccak_256(new Uint8Array([...t,45,...n])),r=c.hex.encode(s);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[r]}}))[0]}async*redeem(e,t,n){const s=[d.t$4.U8(c.CircleBridge.serialize(t)),d.t$4.U8(c.hex.decode(n))],r={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:s};yield this.createUnsignedTx(r,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(e){var g;const t=await this.provider.getTransactionByHash({transactionHash:e}),n=this.messageTransmitterId.replace(/^0x0+/,"0x"),s=(g=t.events)==null?void 0:g.find(C=>C.type===`${n}::message_transmitter::MessageSent`);if(!s)throw new Error("No MessageSent event found");const r=c.hex.decode(s.data.message),[a,f]=c.CircleBridge.deserialize(r),{payload:o}=a,p=o.messageSender,l=o.mintRecipient,m=c.toCircleChain(this.network,a.sourceDomain),w=c.toCircleChain(this.network,a.destinationDomain),T={chain:m,address:o.burnToken};return{from:{chain:m,address:p},to:{chain:w,address:l},token:T,amount:o.amount,message:a,id:{hash:f}}}static async fromRpc(e,t){const[n,s]=await k.AptosPlatform.chainFromRpc(e),r=t[s];if(r.network!==n)throw new Error(`Network mismatch: ${r.network} != ${n}`);return new h(n,s,e,r.contracts)}createUnsignedTx(e,t,n=!1){return new M.AptosUnsignedTransaction(e,this.network,this.chain,t,n)}}c.registerProtocol("Aptos","CircleBridge",h);exports.AptosCircleBridge=h;
@@ -1,5 +1,5 @@
1
- import { b as vo, a as _o, d as xo, e as Eo, f as Fo, g as Ao, h as So, i as Bo, j as Io, k as Oo, c as To } from "./index-BXrG9Ruo.mjs";
2
- import { d as ge, aI as Tn, g as Co, c as me } from "./index-CnlVWsC5.mjs";
1
+ import { b as vo, a as _o, d as xo, e as Eo, f as Fo, g as Ao, h as So, i as Bo, j as Io, k as Oo, c as To } from "./index-C3HS7tO4.mjs";
2
+ import { d as ge, aI as Tn, g as Co, c as me } from "./index-DGkJ3qwd.mjs";
3
3
  function Cn(e = 0) {
4
4
  return globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null ? globalThis.Buffer.allocUnsafe(e) : new Uint8Array(e);
5
5
  }
@@ -1 +1 @@
1
- "use strict";var h=Object.defineProperty;var w=(o,t,e)=>t in o?h(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var s=(o,t,e)=>w(o,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-hMJhZX_v.js");class c{constructor(t,e,a,r){s(this,"network");s(this,"chain");s(this,"provider");s(this,"contracts");s(this,"chainId");s(this,"core");s(this,"gatewayAddress");s(this,"gateway");s(this,"tbtcTokenAddr");if(this.network=t,this.chain=e,this.provider=a,this.contracts=r,this.network!=="Mainnet")throw new Error("TBTC is only supported on Mainnet");if(!this.contracts.tbtc)throw new Error("TBTC contract address is required");const i=n.TBTCBridge.getNativeTbtcToken(this.chain);if(!i)throw new Error("Native tbtc token not found");this.chainId=n.networkChainToNativeChainId.get(t,e),this.core=new n.EvmWormholeCore(t,e,a,r),this.gatewayAddress=this.contracts.tbtc,this.gateway=new n.Contract(this.gatewayAddress,["function sendTbtc(uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64)","function receiveTbtc(bytes calldata encodedVm)"],a),this.tbtcTokenAddr=n.canonicalAddress(i)}static async fromRpc(t,e){const[a,r]=await n.EvmPlatform.chainFromRpc(t),i=e[r];if(i.network!==a)throw new Error(`Network mismatch: ${i.network} != ${a}`);return new c(a,r,t,i.contracts)}async*transfer(t,e,a){const r=new n.EvmAddress(t).toString(),i=await this.gateway.sendTbtc.populateTransaction(a,n.toChainId(e.chain),e.address.toUniversalAddress().toUint8Array(),0n,0n);i.value=await this.core.getMessageFee(),yield*this.approve(r,a,this.gatewayAddress),yield this.createUnsignedTransaction(n.addFrom(i,r),"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");const a=new n.EvmAddress(t).toString(),r=await this.gateway.receiveTbtc.populateTransaction(n.serialize(e));yield this.createUnsignedTransaction(n.addFrom(r,a),"TBTCBridge.Redeem")}async*approve(t,e,a){const r=n.EvmPlatform.getTokenImplementation(this.provider,this.tbtcTokenAddr);if(await r.allowance(t,a)<e){const d=await r.approve.populateTransaction(a,e);yield this.createUnsignedTransaction(n.addFrom(d,t),"TBTC.Approve")}}createUnsignedTransaction(t,e){return new n.EvmUnsignedTransaction(n.addChainId(t,this.chainId),this.network,this.chain,e,!1)}}n.registerProtocol(n._platform,"TBTCBridge",c);exports.EvmTBTCBridge=c;
1
+ "use strict";var h=Object.defineProperty;var w=(o,t,e)=>t in o?h(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var s=(o,t,e)=>w(o,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-D7FFeuCp.js");class c{constructor(t,e,a,r){s(this,"network");s(this,"chain");s(this,"provider");s(this,"contracts");s(this,"chainId");s(this,"core");s(this,"gatewayAddress");s(this,"gateway");s(this,"tbtcTokenAddr");if(this.network=t,this.chain=e,this.provider=a,this.contracts=r,this.network!=="Mainnet")throw new Error("TBTC is only supported on Mainnet");if(!this.contracts.tbtc)throw new Error("TBTC contract address is required");const i=n.TBTCBridge.getNativeTbtcToken(this.chain);if(!i)throw new Error("Native tbtc token not found");this.chainId=n.networkChainToNativeChainId.get(t,e),this.core=new n.EvmWormholeCore(t,e,a,r),this.gatewayAddress=this.contracts.tbtc,this.gateway=new n.Contract(this.gatewayAddress,["function sendTbtc(uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64)","function receiveTbtc(bytes calldata encodedVm)"],a),this.tbtcTokenAddr=n.canonicalAddress(i)}static async fromRpc(t,e){const[a,r]=await n.EvmPlatform.chainFromRpc(t),i=e[r];if(i.network!==a)throw new Error(`Network mismatch: ${i.network} != ${a}`);return new c(a,r,t,i.contracts)}async*transfer(t,e,a){const r=new n.EvmAddress(t).toString(),i=await this.gateway.sendTbtc.populateTransaction(a,n.toChainId(e.chain),e.address.toUniversalAddress().toUint8Array(),0n,0n);i.value=await this.core.getMessageFee(),yield*this.approve(r,a,this.gatewayAddress),yield this.createUnsignedTransaction(n.addFrom(i,r),"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");const a=new n.EvmAddress(t).toString(),r=await this.gateway.receiveTbtc.populateTransaction(n.serialize(e));yield this.createUnsignedTransaction(n.addFrom(r,a),"TBTCBridge.Redeem")}async*approve(t,e,a){const r=n.EvmPlatform.getTokenImplementation(this.provider,this.tbtcTokenAddr);if(await r.allowance(t,a)<e){const d=await r.approve.populateTransaction(a,e);yield this.createUnsignedTransaction(n.addFrom(d,t),"TBTC.Approve")}}createUnsignedTransaction(t,e){return new n.EvmUnsignedTransaction(n.addChainId(t,this.chainId),this.network,this.chain,e,!1)}}n.registerProtocol(n._platform,"TBTCBridge",c);exports.EvmTBTCBridge=c;
@@ -1,5 +1,5 @@
1
- import { bA as f, bB as c, P as s, bC as O, bD as t, bE as o, bF as A, bG as b, bH as d } from "./index-CnlVWsC5.mjs";
2
- import { bI as h } from "./index-CnlVWsC5.mjs";
1
+ import { bA as f, bB as c, P as s, bC as O, bD as t, bE as o, bF as A, bG as b, bH as d } from "./index-DGkJ3qwd.mjs";
2
+ import { bI as h } from "./index-DGkJ3qwd.mjs";
3
3
  class p extends Error {
4
4
  constructor(r) {
5
5
  super(r);
@@ -1,7 +1,7 @@
1
1
  var K = Object.defineProperty;
2
2
  var L = (i, e, b) => e in i ? K(i, e, { enumerable: !0, configurable: !0, writable: !0, value: b }) : i[e] = b;
3
3
  var d = (i, e, b) => L(i, typeof e != "symbol" ? e + "" : e, b);
4
- import { bM as D, bL as U, a6 as l, c5 as W, bK as m, bR as j, c6 as J, a9 as c, am as k, c7 as Q, c8 as Z, bS as A, c9 as E, ca as h, bQ as s, cb as _, bU as P, bV as N, c4 as q, bJ as O, i as H, bW as V, ab as $ } from "./index-CnlVWsC5.mjs";
4
+ import { bM as D, bL as U, a6 as l, c5 as W, bK as m, bR as j, c6 as J, a9 as c, am as k, c7 as Q, c8 as Z, bS as A, c9 as E, ca as h, bQ as s, cb as _, bU as P, bV as N, c4 as q, bJ as O, i as H, bW as V, ab as $ } from "./index-DGkJ3qwd.mjs";
5
5
  const z = {
6
6
  Mainnet: {
7
7
  Acala: "0x0000000000000000000000000000000000000000",