@allbridge/bridge-core-sdk 3.23.0-beta.1 → 3.23.0-beta.3

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 (64) hide show
  1. package/README.md +15 -8
  2. package/dist/browser/index.js +1 -1
  3. package/dist/browser/index.js.map +4 -4
  4. package/dist/cjs/index.js +1 -1
  5. package/dist/cjs/index.js.map +4 -4
  6. package/dist/esm/index.js +1 -1
  7. package/dist/esm/index.js.map +4 -4
  8. package/dist/src/client/core-api/api-client-caching.js +1 -1
  9. package/dist/src/client/core-api/api-client-caching.js.map +1 -1
  10. package/dist/src/client/core-api/api-client.js +6 -0
  11. package/dist/src/client/core-api/api-client.js.map +1 -1
  12. package/dist/src/client/core-api/core-api-mapper.js +3 -0
  13. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  14. package/dist/src/client/core-api/core-api.model.d.ts +8 -2
  15. package/dist/src/client/core-api/core-api.model.js +2 -0
  16. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  17. package/dist/src/exceptions/exceptions.d.ts +4 -0
  18. package/dist/src/exceptions/exceptions.js +8 -1
  19. package/dist/src/exceptions/exceptions.js.map +1 -1
  20. package/dist/src/index.d.ts +10 -17
  21. package/dist/src/index.js +34 -26
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/models/index.d.ts +1 -0
  24. package/dist/src/models/index.js.map +1 -1
  25. package/dist/src/services/bridge/evm/index.d.ts +3 -1
  26. package/dist/src/services/bridge/evm/index.js +46 -14
  27. package/dist/src/services/bridge/evm/index.js.map +1 -1
  28. package/dist/src/services/bridge/index.d.ts +1 -1
  29. package/dist/src/services/bridge/index.js +26 -19
  30. package/dist/src/services/bridge/index.js.map +1 -1
  31. package/dist/src/services/bridge/models/bridge.model.d.ts +4 -0
  32. package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
  33. package/dist/src/services/bridge/sol/index.d.ts +2 -2
  34. package/dist/src/services/bridge/sol/index.js +7 -4
  35. package/dist/src/services/bridge/sol/index.js.map +1 -1
  36. package/dist/src/services/bridge/sui/index.js +2 -0
  37. package/dist/src/services/bridge/sui/index.js.map +1 -1
  38. package/dist/src/services/bridge/trx/index.d.ts +1 -1
  39. package/dist/src/services/bridge/trx/index.js +84 -53
  40. package/dist/src/services/bridge/trx/index.js.map +1 -1
  41. package/dist/src/services/bridge/utils.d.ts +2 -2
  42. package/dist/src/services/bridge/utils.js +64 -36
  43. package/dist/src/services/bridge/utils.js.map +1 -1
  44. package/dist/src/services/index.d.ts +13 -7
  45. package/dist/src/services/index.js +129 -48
  46. package/dist/src/services/index.js.map +1 -1
  47. package/dist/src/services/models/abi/OftBridge.d.ts +386 -0
  48. package/dist/src/services/models/abi/OftBridge.js +500 -0
  49. package/dist/src/services/models/abi/OftBridge.js.map +1 -0
  50. package/dist/src/tokens-info/tokens-info.model.d.ts +14 -0
  51. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  52. package/dist/src/utils/evm/index.d.ts +40 -0
  53. package/dist/src/utils/evm/index.js +36 -0
  54. package/dist/src/utils/evm/index.js.map +1 -0
  55. package/dist/src/utils/index.d.ts +6 -0
  56. package/dist/src/utils/index.js +6 -0
  57. package/dist/src/utils/index.js.map +1 -1
  58. package/dist/src/utils/sui/index.d.ts +28 -0
  59. package/dist/src/utils/sui/index.js +57 -0
  60. package/dist/src/utils/sui/index.js.map +1 -0
  61. package/dist/src/version.d.ts +1 -1
  62. package/dist/src/version.js +1 -1
  63. package/dist/src/version.js.map +1 -1
  64. package/package.json +8 -8
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Wc=Object.create;var Ir=Object.defineProperty;var jc=Object.getOwnPropertyDescriptor;var Uc=Object.getOwnPropertyNames;var Ec=Object.getPrototypeOf,Gc=Object.prototype.hasOwnProperty;var fn=(i,n)=>()=>(i&&(n=i(i=0)),n);var Ei=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),_c=(i,n)=>{for(var r in n)Ir(i,r,{get:n[r],enumerable:!0})},ys=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Uc(n))!Gc.call(i,s)&&s!==r&&Ir(i,s,{get:()=>n[s],enumerable:!(a=jc(n,s))||a.enumerable});return i};var oe=(i,n,r)=>(r=i!=null?Wc(Ec(i)):{},ys(n||!i||!i.__esModule?Ir(r,"default",{value:i,enumerable:!0}):r,i)),Vc=i=>ys(Ir({},"__esModule",{value:!0}),i);function Qr(i){try{return(0,zr.fromBase58)(i).length===yA}catch{return!1}}function We(i){return bA(i)&&TA(i)===ar}function kn(i){return We(i)}function hA(i){return i.includes("::")?ua(i):i}function ua(i){let[n,r]=i.split("::"),a=i.slice(n.length+r.length+4),s=a.includes("<")?a.slice(0,a.indexOf("<")):a,o=a.includes("<")?(0,zr.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>hA(c.trim())):[];return{address:x(n),module:r,name:s,typeParams:o}}function sr(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?ua(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:sr(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function x(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(ar*2,"0")}`}function Be(i,n=!1){return x(i,n)}function bA(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function TA(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var zr,yA,ar,ve=fn(()=>{zr=require("@mysten/bcs"),yA=32;ar=32});var yo,SA,PA,xt,ma=fn(()=>{yo=require("@mysten/bcs");ve();SA=/^vector<(.+)>$/,PA=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,xt=class i{static parseFromStr(n,r=!1){if(n==="address")return{address:null};if(n==="bool")return{bool:null};if(n==="u8")return{u8:null};if(n==="u16")return{u16:null};if(n==="u32")return{u32:null};if(n==="u64")return{u64:null};if(n==="u128")return{u128:null};if(n==="u256")return{u256:null};if(n==="signer")return{signer:null};let a=n.match(SA);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(PA);if(s)return{struct:{address:r?x(s[1]):s[1],module:s[2],name:s[3],typeParams:s[5]===void 0?[]:i.parseStructTypeArgs(s[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${n}`)}static parseStructTypeArgs(n,r=!1){return(0,yo.splitGenericParameters)(n).map(a=>i.parseFromStr(a,r))}static tagToString(n){if("bool"in n)return"bool";if("u8"in n)return"u8";if("u16"in n)return"u16";if("u32"in n)return"u32";if("u64"in n)return"u64";if("u128"in n)return"u128";if("u256"in n)return"u256";if("address"in n)return"address";if("signer"in n)return"signer";if("vector"in n)return`vector<${i.tagToString(n.vector)}>`;if("struct"in n){let r=n.struct,a=r.typeParams.map(i.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${a?`<${a}>`:""}`}throw new Error("Invalid TypeTag")}}});function wA(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function CA(i){return f.bcs.enum("Option",{None:null,Some:i})}function ka(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ra,value:i})}var f,z,je,Re,la,da,pa,ga,qr,et,fa,ya,ha,ba,Ta,Sa,Pa,wa,Ca,Ia,Ba,va,Ra,Ma,xa,Oa,Fa,ho,IA,Na,bo,To,Da=fn(()=>{f=require("@mysten/bcs");ve();ma();z=f.bcs.bytes(ar).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!We(x(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(x(i)):i,output:i=>x((0,f.toHex)(i))}),je=f.bcs.vector(f.bcs.u8()).transform({name:"ObjectDigest",input:i=>(0,f.fromBase58)(i),output:i=>(0,f.toBase58)(new Uint8Array(i)),validate:i=>{if((0,f.fromBase58)(i).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),Re=f.bcs.struct("SuiObjectRef",{objectId:z,version:f.bcs.u64(),digest:je}),la=f.bcs.struct("SharedObjectRef",{objectId:z,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),da=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Re,SharedObject:la,Receiving:Re}),pa=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:da}),ga=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>ga),struct:f.bcs.lazy(()=>Sa),u16:null,u32:null,u256:null}),qr=ga.transform({input:i=>typeof i=="string"?xt.parseFromStr(i,!0):i,output:i=>xt.tagToString(i)}),et=f.bcs.enum("Argument",{GasCoin:null,Input:f.bcs.u16(),Result:f.bcs.u16(),NestedResult:f.bcs.tuple([f.bcs.u16(),f.bcs.u16()])}),fa=f.bcs.struct("ProgrammableMoveCall",{package:z,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(qr),arguments:f.bcs.vector(et)}),ya=f.bcs.enum("Command",{MoveCall:fa,TransferObjects:f.bcs.struct("TransferObjects",{objects:f.bcs.vector(et),address:et}),SplitCoins:f.bcs.struct("SplitCoins",{coin:et,amounts:f.bcs.vector(et)}),MergeCoins:f.bcs.struct("MergeCoins",{destination:et,sources:f.bcs.vector(et)}),Publish:f.bcs.struct("Publish",{modules:f.bcs.vector(f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})),dependencies:f.bcs.vector(z)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:CA(qr).transform({input:i=>i===null?{None:!0}:{Some:i},output:i=>i.Some??null}),elements:f.bcs.vector(et)}),Upgrade:f.bcs.struct("Upgrade",{modules:f.bcs.vector(f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})),dependencies:f.bcs.vector(z),package:z,ticket:et})}),ha=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(pa),commands:f.bcs.vector(ya)}),ba=f.bcs.enum("TransactionKind",{ProgrammableTransaction:ha,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),Ta=f.bcs.enum("TransactionExpiration",{None:null,Epoch:wA()}),Sa=f.bcs.struct("StructTag",{address:z,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(ga)}),Pa=f.bcs.struct("GasData",{payment:f.bcs.vector(Re),owner:z,price:f.bcs.u64(),budget:f.bcs.u64()}),wa=f.bcs.struct("TransactionDataV1",{kind:ba,sender:z,gasData:Pa,expiration:Ta}),Ca=f.bcs.enum("TransactionData",{V1:wa}),Ia=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Ba=f.bcs.enum("IntentVersion",{V0:null}),va=f.bcs.enum("AppId",{Sui:null}),Ra=f.bcs.struct("Intent",{scope:Ia,version:Ba,appId:va});Ma=f.bcs.enum("CompressedSignature",{ED25519:f.bcs.fixedArray(64,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(64,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(64,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),xa=f.bcs.enum("PublicKey",{ED25519:f.bcs.fixedArray(32,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(33,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(33,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),Oa=f.bcs.struct("MultiSigPkMap",{pubKey:xa,weight:f.bcs.u8()}),Fa=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(Oa),threshold:f.bcs.u16()}),ho=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(Ma),bitmap:f.bcs.u16(),multisig_pk:Fa}),IA=f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))}),Na=f.bcs.struct("SenderSignedTransaction",{intentMessage:ka(Ca),txSignatures:f.bcs.vector(IA)}),bo=f.bcs.vector(Na,{name:"SenderSignedData"}),To=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,BA,vA,So,RA,kA,MA,Po,wo,Mn,xA,Wa,OA,FA,NA,DA,WA,jA,Co,Io=fn(()=>{y=require("@mysten/bcs");Da();BA=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:z}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:z}),IncompatibleUpgrade:null,DigestDoesNotMatch:y.bcs.struct("DigestDoesNotMatch",{digest:y.bcs.vector(y.bcs.u8())}),UnknownUpgradePolicy:y.bcs.struct("UnknownUpgradePolicy",{policy:y.bcs.u8()}),PackageIDDoesNotMatch:y.bcs.struct("PackageIDDoesNotMatch",{packageId:z,ticketId:z})}),vA=y.bcs.struct("ModuleId",{address:z,name:y.bcs.string()}),So=y.bcs.struct("MoveLocation",{module:vA,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),RA=y.bcs.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:y.bcs.struct("IndexOutOfBounds",{idx:y.bcs.u16()}),SecondaryIndexOutOfBounds:y.bcs.struct("SecondaryIndexOutOfBounds",{resultIdx:y.bcs.u16(),secondaryIdx:y.bcs.u16()}),InvalidResultArity:y.bcs.struct("InvalidResultArity",{resultIdx:y.bcs.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),kA=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),MA=y.bcs.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:y.bcs.struct("MoveObjectTooBig",{objectSize:y.bcs.u64(),maxObjectSize:y.bcs.u64()}),MovePackageTooBig:y.bcs.struct("MovePackageTooBig",{objectSize:y.bcs.u64(),maxObjectSize:y.bcs.u64()}),CircularObjectOwnership:y.bcs.struct("CircularObjectOwnership",{object:z}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(So),MoveAbort:y.bcs.tuple([So,y.bcs.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:y.bcs.struct("CommandArgumentError",{argIdx:y.bcs.u16(),kind:RA}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:kA}),UnusedValueWithoutDrop:y.bcs.struct("UnusedValueWithoutDrop",{resultIdx:y.bcs.u16(),secondaryIdx:y.bcs.u16()}),InvalidPublicFunctionReturnType:y.bcs.struct("InvalidPublicFunctionReturnType",{idx:y.bcs.u16()}),InvalidTransferObject:null,EffectsTooLarge:y.bcs.struct("EffectsTooLarge",{currentSize:y.bcs.u64(),maxSize:y.bcs.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:y.bcs.struct("PackageUpgradeError",{upgradeError:BA}),WrittenObjectsTooLarge:y.bcs.struct("WrittenObjectsTooLarge",{currentSize:y.bcs.u64(),maxSize:y.bcs.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:y.bcs.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:y.bcs.vector(z)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:z,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),Po=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:MA,command:y.bcs.option(y.bcs.u64())})}),wo=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),Mn=y.bcs.enum("Owner",{AddressOwner:z,ObjectOwner:z,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),xA=y.bcs.struct("TransactionEffectsV1",{status:Po,executedEpoch:y.bcs.u64(),gasUsed:wo,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([z,y.bcs.u64()])),sharedObjects:y.bcs.vector(Re),transactionDigest:je,created:y.bcs.vector(y.bcs.tuple([Re,Mn])),mutated:y.bcs.vector(y.bcs.tuple([Re,Mn])),unwrapped:y.bcs.vector(y.bcs.tuple([Re,Mn])),deleted:y.bcs.vector(Re),unwrappedThenDeleted:y.bcs.vector(Re),wrapped:y.bcs.vector(Re),gasObject:y.bcs.tuple([Re,Mn]),eventsDigest:y.bcs.option(je),dependencies:y.bcs.vector(je)}),Wa=y.bcs.tuple([y.bcs.u64(),je]),OA=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Wa,Mn])}),FA=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([je,Mn]),PackageWrite:Wa}),NA=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),DA=y.bcs.struct("EffectsObjectChange",{inputState:OA,outputState:FA,idOperation:NA}),WA=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Wa,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),jA=y.bcs.struct("TransactionEffectsV2",{status:Po,executedEpoch:y.bcs.u64(),gasUsed:wo,transactionDigest:je,gasObjectIndex:y.bcs.option(y.bcs.u32()),eventsDigest:y.bcs.option(je),dependencies:y.bcs.vector(je),lamportVersion:y.bcs.u64(),changedObjects:y.bcs.vector(y.bcs.tuple([z,DA])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([z,WA])),auxDataDigest:y.bcs.option(je)}),Co=y.bcs.enum("TransactionEffects",{V1:xA,V2:jA})});var tt,UA,h,me=fn(()=>{tt=require("@mysten/bcs");Da();Io();ma();UA=require("@mysten/bcs"),h={...tt.bcs,U8:tt.bcs.u8(),U16:tt.bcs.u16(),U32:tt.bcs.u32(),U64:tt.bcs.u64(),U128:tt.bcs.u128(),U256:tt.bcs.u256(),ULEB128:tt.bcs.uleb128(),Bool:tt.bcs.bool(),String:tt.bcs.string(),Address:z,AppId:va,Argument:et,CallArg:pa,CompressedSignature:Ma,GasData:Pa,Intent:Ra,IntentMessage:ka,IntentScope:Ia,IntentVersion:Ba,MultiSig:ho,MultiSigPkMap:Oa,MultiSigPublicKey:Fa,ObjectArg:da,ObjectDigest:je,ProgrammableMoveCall:fa,ProgrammableTransaction:ha,PublicKey:xa,SenderSignedData:bo,SenderSignedTransaction:Na,SharedObjectRef:la,StructTag:Sa,SuiObjectRef:Re,Command:ya,TransactionData:Ca,TransactionDataV1:wa,TransactionExpiration:Ta,TransactionKind:ba,TypeTag:qr,TransactionEffects:Co,PasskeyAuthenticator:To}});function $u(i,n=["<",">"]){let[r,a]=n,s=[],o="",c=0;for(let A=0;A<i.length;A++){let u=i[A];if(u===r&&c++,u===a&&c--,c===0&&u===","){s.push(o.trim()),o="";continue}o+=u}return s.push(o.trim()),s}function be(i){if(typeof i!="string")throw new Error(`Illegal type passed as a name of the type: ${i}`);let[n,r]=["<",">"],a=i.indexOf(n),s=Array.from(i).reverse().indexOf(r);if(a===-1&&s===-1)return{typeName:i,typeArgs:[]};if(a===-1||s===-1)throw new Error(`Unclosed generic in name '${i}'`);let o=i.slice(0,a),c=$u(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function zo(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function R(i,n){return zo(n)?n:i.object(n)}function Ze(i,n,r){if(zo(n))return R(i,n);function a(m){let{typeName:l,typeArgs:g}=be(m);switch(l){case"bool":return h.Bool;case"u8":return h.U8;case"u16":return h.U16;case"u32":return h.U32;case"u64":return h.U64;case"u128":return h.U128;case"u256":return h.U256;case"address":return h.Address;case"0x1::string::String":case"0x1::ascii::String":return h.String;case"0x2::object::ID":return h.Address;case"0x1::option::Option":return h.option(a(g[0]));case"vector":return h.vector(a(g[0]));default:throw new Error(`invalid primitive type ${m}`)}}function s(m){for(let l of m){if(typeof l>"u"||l===null)return!0;if(Array.isArray(l))return s(l)}return!1}function o(m){for(let l of m){if(!Array.isArray(l)){if(l===null)continue;switch(typeof l){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return o(l)}return!0}function c(m){for(let l of m){if(!Array.isArray(l))switch(typeof l){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return c(l)}return!1}let{typeName:A,typeArgs:u}=be(r);switch(A){case"0x1::option::Option":if(n===null)return i.pure.option("bool",null);if(o([n]))return i.pure(a(r).serialize(n));if(c([n]))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.moveCall({target:"0x1::option::some",typeArguments:[u[0]],arguments:[Ze(i,n,u[0])]});case"vector":if(!Array.isArray(n))throw new Error("expected an array for vector type");if(n.length===0)return i.pure(h.vector(h.Bool).serialize([]));if(s(n))throw new Error("the provided array contains undefined or null values");if(o(n))return i.pure(a(r).serialize(n));if(c(n))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.makeMoveVec({type:u[0],elements:n});default:return i.pure(a(r).serialize(n))}}function Zu(i){let n=i.split("0x").join("");for(let r=0;r<n.length;r++)if(n[r]!=="0")return`0x${n.substring(r)}`;return"0x0"}function v(i){let{typeName:n,typeArgs:r}=be(i);switch(n){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return n;case"vector":return`vector<${v(r[0])}>`;default:{let a=n.split("::");a[0]=Zu(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>v(o)).join(",")}>`:s}}}function G(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var le=fn(()=>{"use strict";me()});var Kt=Ei((qg,Qo)=>{"use strict";le();var qa=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Ju=new qa;Qo.exports=Ju});var rs=Ei((rf,ac)=>{"use strict";le();var ns=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Lu=new ns;ac.exports=Lu});var ss=Ei((cf,oc)=>{"use strict";le();var as=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Xu=new as;oc.exports=Xu});var pm={};_c(pm,{AddressStatus:()=>vr,AllbridgeCoreSdk:()=>fs,AmountFormat:()=>Kn,AmountNotEnoughError:()=>zt,ArgumentInvalidDecimalsError:()=>Vn,CCTPDoesNotSupportedError:()=>pe,ChainSymbol:()=>Oe,ChainType:()=>Q,ErrorCode:()=>hs,ExtraGasMaxLimitExceededError:()=>_n,FeePaymentMethod:()=>$t,InsufficientPoolLiquidityError:()=>ft,InvalidAmountError:()=>gt,InvalidGasFeePaymentOptionError:()=>yn,InvalidMessengerOptionError:()=>Gi,InvalidTxError:()=>Qt,JupiterError:()=>ue,Messenger:()=>Ke,MethodNotSupportedError:()=>ce,NodeRpcUrlNotInitializedError:()=>$n,SdkError:()=>w,SdkRootError:()=>ae,SolanaAutoTxFee:()=>Gr,TimeoutError:()=>bn,TxTooLargeError:()=>Zn,VerifyTxError:()=>hn,mainnet:()=>Gn,nodeRpcUrlsDefault:()=>Zc,nodeUrlsDefault:()=>$c});module.exports=Vc(pm);var Gn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://lite-api.jup.ag/swap/v1",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},$c={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Zc={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};var Ce=require("big.js");var ae=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},w=class extends ae{constructor(n){super("SdkError",n)}},gt=class extends ae{constructor(n){super("InvalidAmountError",n)}},zt=class extends ae{constructor(n){super("AmountNotEnoughError",n)}},ft=class extends ae{constructor(n){super("InsufficientPoolLiquidityError",n)}},ue=class extends ae{constructor(n){super("JupiterError",n)}},yn=class extends ae{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},Gi=class extends ae{constructor(n){super("InvalidMessengerOptionError",n)}},ce=class extends ae{constructor(n){super("MethodNotSupportedError",n)}},hn=class extends ae{constructor(n){super("VerifyTxError",n)}},Qt=class extends ae{constructor(n){super("InvalidTxError",n)}},_n=class extends ae{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},Vn=class extends ae{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},bn=class extends ae{constructor(n){super("TimeoutError",n)}},$n=class extends ae{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},pe=class extends ae{constructor(n){super("CCTPDoesNotSupportedError",n)}},Zn=class extends ae{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},hs=(C=>(C.SDK_ERROR="SdkError",C.INVALID_AMOUNT_ERROR="InvalidAmountError",C.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",C.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",C.JUPITER_ERROR="JupiterError",C.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",C.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",C.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",C.VERIFY_TX_ERROR="VerifyTxError",C.INVALID_TX_ERROR="InvalidTxError",C.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",C.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",C.TIMEOUT_ERROR="TimeoutError",C.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",C.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",C.TX_TOO_LARGE="TxTooLargeError",C))(hs||{});var Oe=(b=>(b.BSC="BSC",b.ETH="ETH",b.BAS="BAS",b.SOL="SOL",b.TRX="TRX",b.POL="POL",b.ARB="ARB",b.CEL="CEL",b.AVA="AVA",b.SRB="SRB",b.STLR="STLR",b.OPT="OPT",b.SUI="SUI",b.SNC="SNC",b))(Oe||{}),Q=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(Q||{});var Jc={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Lc={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},$=(()=>{let i={...Lc};return{addChainsProperties(n){i={...i,...n}},getChainProperty(n){let r=i[n];if(!r)throw new w(`Cannot find chain properties for ${n}`);return r},getChainsProperties(){return i},getChainDecimalsByType(n){return Jc[n]}}})();var Ms=oe(require("axios"));var bs="3.23.0-beta.1";var I=require("big.js"),Br=oe(require("bn.js"));function _i(i,n){return(0,I.Big)(100).minus((0,I.Big)(100).times(n).div(i)).toNumber()}function qt(i,n){return yt(i,n,3).round(0,I.Big.roundDown)}function Fe(i,n){return yt(i,3,n)}function yt(i,n,r){let a=(0,I.Big)(r).minus(n).toNumber();return(0,I.Big)(i).times(Jn(a))}function Jn(i){return(0,I.Big)(10).pow(i)}function L(i,n){return(0,I.Big)(i).times(Jn(n))}function j(i,n){let r=(0,I.Big)(i);return r.eq(0)?(0,I.Big)(0):(0,I.Big)(r).div(Jn(n))}function Se(i){return j((0,I.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function ht(i,{feeShare:n,decimals:r},a){let s=(0,I.Big)(i);if(s.lte(0))return"0";let o=s.times(n),c=s.minus(o),A=qt(c,r),u=(0,I.Big)(a.tokenBalance).plus(A),m=bt(u,a.aValue,a.dValue);return(0,I.Big)(a.vUsdBalance).minus(m).round(0,I.Big.roundDown).toFixed()}function Ln(i,{feeShare:n,decimals:r},a){let s=(0,I.Big)(i);if(s.lte(0))return(0,I.Big)(0).toFixed();let o=s.plus(a.vUsdBalance),c=bt(o,a.aValue,a.dValue),A=Fe((0,I.Big)(a.tokenBalance).minus(c),r),u=(0,I.Big)(A).times(n);return(0,I.Big)(A).minus(u).round(0,I.Big.roundDown).toFixed()}function Ts(i,n){let r=(0,I.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=bt(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function Ss(i,{feeShare:n,decimals:r},a){if((0,I.Big)(i).lte(0))return(0,I.Big)(0);let s=(0,I.Big)(a.vUsdBalance).minus(i);if(s.lte(0))throw new ft;let o=bt(s,a.aValue,a.dValue),c=(0,I.Big)(o).minus(a.tokenBalance),A=Fe(c,r),u=(0,I.Big)(n).div((0,I.Big)(1).minus(n)),m=(0,I.Big)(A).times(u).round(0,I.Big.roundUp);return(0,I.Big)(A).plus(m).round(0,I.Big.roundDown)}function Ps(i,{feeShare:n,decimals:r},a){if((0,I.Big)(i).lte(0))return(0,I.Big)(0);let s=(0,I.Big)(n).div((0,I.Big)(1).minus(n)),o=(0,I.Big)(i).times(s).round(0,I.Big.roundUp),c=(0,I.Big)(i).plus(o),A=qt(c,r),u=(0,I.Big)(a.tokenBalance).minus(A);if(u.lte(0))throw new ft;let m=bt(u,a.aValue,a.dValue);return(0,I.Big)(m).minus(a.vUsdBalance).round(0,I.Big.roundDown)}function bt(i,n,r){let a=(0,I.Big)(4).times(n).times((0,I.Big)(r).minus(i)).minus(r),s=(0,I.Big)(r).pow(3),o=a.pow(2),c=(0,I.Big)(i).times((0,I.Big)(i).times(o).plus((0,I.Big)(4).times(n).times(s))).sqrt().round(0,I.Big.roundDown),A=(0,I.Big)(8).times(n).times(i),u=a.times(i).plus(c).div(A).round(0,I.Big.roundDown);return u.eq(0)?(0,I.Big)(0):u.plus(1)}function ws(i,n,r,a){let s=new Br.default(i),o=new Br.default(r),c=new Br.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Cs(i){return(0,I.Big)(i).gt(0)?`${Number((0,I.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Is(i,n,r){let a=(0,I.Big)(n).times(r),s=(0,I.Big)(n).plus(r),o=(0,I.Big)(8).times(i).times(a).times(s),c=a.times((0,I.Big)(16).times(i).minus(4)).div(3),A=o.times(o),u=c.times(c).times(c),m=A.plus(u),l=(0,I.Big)(m).sqrt(),g=(0,I.Big)(Math.cbrt(+o.plus(l).toFixed())),S=(0,I.Big)(Math.cbrt(+o.minus(l).toFixed()));return g.plus(S).toFixed()}var vr=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(vr||{});var Ke=(s=>(s[s.ALLBRIDGE=1]="ALLBRIDGE",s[s.WORMHOLE=2]="WORMHOLE",s[s.CCTP=3]="CCTP",s[s.CCTP_V2=4]="CCTP_V2",s))(Ke||{});function Bs(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=zc(a,s);return o&&(n[a]=o),n},{})}function vs(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=Tn({chainSymbol:s,poolAddress:o.poolAddress}),A=Se(o.poolInfo);n[c]={...o.poolInfo,imbalance:A}}}return n}function Xc(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function Yc(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4}}function Kc(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=Hc(a),n),{})}function Hc(i){return Object.entries(i).reduce((n,[r,a])=>{let s=Yc(r);return s&&(n[s]=a),n},{})}function zc(i,n){let r=$.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,transferTime:Kc(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>Xc(a,s))}}function Tn(i){return i.chainSymbol+"_"+i.poolAddress}function Rs(i){let n=[];for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens)n.push({chainSymbol:s,poolAddress:o.poolAddress})}return n}function ks(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=Se(c),n[Tn({chainSymbol:s,poolAddress:o})]=c}return n}var Rr=class{api;constructor(n){this.api=Ms.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+bs},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Bs(n),poolInfoMap:vs(n)}}async getPendingInfo(){let{data:n}=await this.api.get("/pending-info");return n}async getGasBalance(n,r){let{data:a}=await this.api.get(`/check/${n}/${r}`);return a}async getTransferStatus(n,r){let{data:a}=await this.api.get(`/chain/${n}/${r}`);return a}async getReceiveTransactionCost(n){let{data:r}=await this.api.post("/receive-fee",n,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice}}async getPoolInfoMap(n){let r=n instanceof Array?n:[n],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return ks(a)}};var Qc=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),xs="__cache__",Vi=function(i){return typeof i!="string"?xs+JSON.stringify(i):xs+i},$i=class{constructor(n={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=n.defaultTtl||60*1e3}put(n,r,a){let s=(a?a.ttl:void 0)||this.defaultTtl,o=(a?a.callback:void 0)||function(){},c=Vi(n),A=this.cache[c];A&&clearTimeout(A.handle);let u=setTimeout(()=>this.remove(n),s);this.cache[c]={handle:u,data:r,callback:o}}get(n){let r=this.cache[Vi(n)];return r&&r.data}remove(n){let r=Vi(n),a=this.cache[r];a&&(clearTimeout(a.handle),delete this.cache[r],a.callback(n,a.data))}clear(){for(let n in this.cache)Qc(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Rt=$i;var Zi=20*1e3,qc=55*1e3,kr=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new Rt({defaultTtl:qc}),this.receivedTransactionCache=new Rt({defaultTtl:Zi}),this.pendingInfoCache=new Rt({defaultTtl:Zi}),this.gasBalanceCache=new Rt({defaultTtl:Zi})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let n="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(n);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(n,a),a}async getGasBalance(n,r){let a=`GAS_BALANCE_${n}_${r}`,s=this.gasBalanceCache.get(a);if(s)return s;let o=this.apiClient.getGasBalance(n,r);return this.gasBalanceCache.put(a,o),o}async getPendingInfo(){let n="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(n);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(n,a),a}async getReceiveTransactionCost(n){let r=`RECEIVE_TX_COST_${n.sourceChainId}_${n.destinationChainId}_${n.messenger}`,a=this.receivedTransactionCache.get(r);if(a)return a;let s=await this.apiClient.getReceiveTransactionCost(n);return this.receivedTransactionCache.put(r,s),s}async getTransferStatus(n,r){return this.apiClient.getTransferStatus(n,r)}async getPoolInfoMap(n){return this.apiClient.getPoolInfoMap(n)}};var Mr=class{constructor(n){this.apiClient=n}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let n=await this.getChainDetailsMap();return Object.values(n).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(n,r){return this.apiClient.getGasBalance(n,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(n,r){return await this.apiClient.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.apiClient.getReceiveTransactionCost(n)}async getPoolInfoMap(n){return await this.apiClient.getPoolInfoMap(n)}};var xr=class{constructor(n,r){this.client=n;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(n){let r=await this.client.getChainDetailsMap(),a={};for(let s in r){let o=r[s];o&&(a[s]={...o,tokens:Os(o.tokens,n,this.isStaging)})}return a}async tokens(n){return Os(await this.client.tokens(),n,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getTransferStatus(n,r){return await this.client.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.client.getReceiveTransactionCost(n)}cachePut(n,r){return this.client.cachePut(n,r)}getPoolInfoByKey(n){return this.client.getPoolInfoByKey(n)}refreshPoolInfo(n){return this.client.refreshPoolInfo(n)}};function Os(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(eA)}function eA(i){let{flags:n,...r}=i;return r}var tA=55*1e3,Or=class{constructor(n){this.client=n;this.poolInfoCache=new Ji}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(n,r){return this.client.getTransferStatus(n,r)}getReceiveTransactionCost(n){return this.client.getReceiveTransactionCost(n)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getPoolInfoByKey(n){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(n);if(r)return r;{let a=await this.client.getPoolInfoMap(n);this.poolInfoCache.putAll(a);let s=a[Tn(n)];if(s)return s;throw new w("Cannot find pool info for "+n.poolAddress+" on chain "+n.chainSymbol)}}async refreshPoolInfo(n){let r;if(n)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(n);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(Rs(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(Tn(n),r)}},Ji=class{cache;constructor(){this.cache=new Rt({defaultTtl:tA})}putAll(n){for(let[r,a]of Object.entries(n))this.cache.put(r,a)}putAllIfNotExists(n){for(let[r,a]of Object.entries(n))this.cache.get(r)||this.cache.put(r,a)}put(n,r){this.cache.put(n,r)}get(n){let r=Tn(n);return this.cache.get(r)}};var gc=require("tronweb"),fc=require("web3");var Li=require("big.js");async function Ae(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function H(i){if((0,Li.Big)(i).lte(0))throw new gt("Amount must be greater than zero")}function q(i,n,r){let a=(0,Li.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new Vn(i,o.length,r)}async function Fr(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new bn(n)),r)})])}async function Xi(i,n,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let s=0;for(;;)try{return await Fr(i(),n,a)}catch{if(++s>=r)throw new bn(n)}}async function Fs(i,n,r,a=1.5,s=!1){let o=[],c=0,A=await i();if(o.push(A),!n(A))return o;let u=new Date(Date.now()+r*1e3).valueOf(),m=1e3,l=m;for(;Date.now()<u;){let g=o[o.length-1];if(g===void 0||!n(g))break;c++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${l}ms so far, of total ${r*1e3}ms)`),await new Promise(T=>setTimeout(T,m)),m=m*a,new Date(Date.now()+m).valueOf()>u&&(m=u-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),l=m+l;let S=await i(g);o.push(S),s&&n(S)&&console.info(`${c}. Called ${i.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var Hs=require("big.js");var nA={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Ns=nA;var rA={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Ds=rA;var Wr=oe(require("@project-serum/anchor")),ta=require("@solana/web3.js");var fe=oe(require("@project-serum/anchor")),ye=require("@solana/web3.js");async function He(i,n){return fe.utils.token.associatedAddress({mint:n,owner:i})}async function _t(i){let[n]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("config")],i);return n}async function Ws(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function Xn(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function Sn(i){let n=await _t(i),[r]=await ye.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function js(i,n){let[r]=await ye.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function Pn(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function Us(i,n,r){let[a]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function Yi(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function Ki(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function Es(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function Hi(i,n,r){let[a]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Gs(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function _s(i,n){let[r]=await ye.PublicKey.findProgramAddress([fe.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Vs(i,n){let[r]=ye.PublicKey.findProgramAddressSync([fe.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function $s(i,n,r,a){let s=en("message_transmitter",r),o=en("token_messenger",a),c=en("__event_authority",a),A=en("token_minter",a),u=en("local_token",a,[n]),m=en("remote_token_messenger",a,[i.toString()]),l=en("sender_authority",a);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:c,tokenMinter:A,localToken:u,remoteTokenMessengerKey:m,authorityPda:l}}function en(i,n,r=[]){let a=[Buffer.from(fe.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(fe.utils.bytes.utf8.encode(o))):Array.isArray(o)||Buffer.isBuffer(o)?a.push(Buffer.from(Uint8Array.from(o))):a.push(Buffer.from(Uint8Array.from(o.toBuffer())));return ye.PublicKey.findProgramAddressSync(a,n)[0]}var Zs=require("@project-serum/anchor"),Nr=require("@solana/web3.js");function Vt(i,n){let r=new Nr.Connection(i,"confirmed"),a=new Nr.PublicKey(n);return new Zs.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ls=require("@solana/web3.js"),Xs=require("@stellar/stellar-sdk"),Tt=require("big.js"),Qi=oe(require("randombytes")),zi=require("tronweb");function kt(i,n,r){let a;switch(n){case"EVM":{a=Js(i);break}case"SOLANA":{a=new Ls.PublicKey(i).toBuffer();break}case"TRX":{a=iA(i);break}case"SRB":{a=new Xs.Address(i).toBuffer();break}case"SUI":{a=Js(i);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(i){return i.replace(/^0x/i,"")}function Ys(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function Js(i){let r=Ys(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function iA(i){let n=Yn(i),r=Ys(n);return aA(r,32)}function Yn(i){let n=zi.utils.crypto.decodeBase58Address(i);return n?zi.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function aA(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Dr(){return(0,Qi.default)(32)}function St(){let i=(0,Qi.default)(32).readBigInt64BE();return i<0?i*-1n:i}function Pt(i,n){let r={},a=n.sourceToken;if(r.amount=L(n.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=n.fromAccountAddress,i==="SUI"){if(!a.originTokenAddress)throw new w("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=kt(a.tokenAddress,i,i);if(r.toAccountAddress=n.toAccountAddress,i==="SUI"){if(!n.destinationToken.originTokenAddress)throw new w("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=n.destinationToken.originTokenAddress}else r.toTokenAddress=kt(n.destinationToken.tokenAddress,i,i);return r.minimumReceiveAmount=n.minimumReceiveAmount?L(n.minimumReceiveAmount,n.destinationToken.decimals).toFixed():"0",r}async function Qe(i,n,r){let a={};a.fromChainId=n.sourceToken.allbridgeChainId,a.fromChainSymbol=n.sourceToken.chainSymbol;let s=$.getChainProperty(n.destinationToken.chainSymbol).chainType;if(i==="SUI"){if(!n.sourceToken.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=n.sourceToken.originTokenAddress}else a.fromTokenAddress=n.sourceToken.tokenAddress;a.toChainId=n.destinationToken.allbridgeChainId,a.toTokenAddress=n.destinationToken.tokenAddress,n.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let o=n.sourceToken;if(n.messenger===3){if(!o.cctpAddress||!n.destinationToken.cctpAddress)throw new pe("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress}else if(n.messenger===4){if(!o.cctpV2Address||!n.destinationToken.cctpV2Address)throw new pe("Such route does not support CCTP V2 protocol");a.contractAddress=o.cctpV2Address}else a.contractAddress=o.bridgeAddress;a.messenger=n.messenger,a.fromAccountAddress=n.fromAccountAddress,a.amount=L(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:A}=n;if(!c){let g=(await qi(a.fromChainId,n.sourceToken.chainType,a.toChainId,o.decimals,a.messenger,r))[a.gasFeePaymentMethod];if(!g)throw new yn;c=g.int,A="int"}if(A=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=L(c,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=L(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:u,extraGasFormat:m}=n;if(u&&+u>0){if(m=="float")switch(a.gasFeePaymentMethod){case"native":a.extraGas=L(u,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.extraGas=L(u,o.decimals).toFixed(0);break}else a.extraGas=u;await oA(a.extraGas,a.gasFeePaymentMethod,o,n.destinationToken,r)}return i!=="SUI"&&(a.fromTokenAddress=kt(a.fromTokenAddress,i,i)),a.toAccountAddress=kt(n.toAccountAddress,s,i),a.toTokenAddress=kt(a.toTokenAddress,s,i),a.gasFeePaymentMethod=="stablecoin"&&sA(a.amount,o.decimals,a.fee,a.extraGas),a}function sA(i,n,r,a){let s=(0,Tt.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new zt(`Amount not enough to pay fee, ${j((0,Tt.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function qi(i,n,r,a,s,o){let c=await o.getReceiveTransactionCost({sourceChainId:i,destinationChainId:r,messenger:s}),A={native:{int:c.fee,float:j(c.fee,$.getChainDecimalsByType(n)).toFixed()}};if(c.sourceNativeTokenPrice){let u=yt(new Tt.Big(c.fee).mul(c.sourceNativeTokenPrice),$.getChainDecimalsByType(n),a).toFixed(0,Tt.Big.roundUp);A.stablecoin={int:u,float:j(u,a).toFixed()}}return A}async function oA(i,n,r,a,s){let c=(await ea(r,a,s)).extraGasMax[n];if(!c)throw new yn(`Impossible to pay extra gas by '${n}' payment method`);let A=c.int;if((0,Tt.Big)(i).gt(A))throw new _n(`Extra gas ${i} in int format, exceeded limit ${A} for '${n}' payment method`)}async function ea(i,n,r){let a={},s=await r.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:n.allbridgeChainId,messenger:1}),o=n.txCostAmount.maxAmount,c=j(o,$.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,Tt.Big)(c).div(s.exchangeRate).toFixed($.getChainDecimalsByType(i.chainType),Tt.Big.roundDown),u=L(A,$.getChainDecimalsByType(i.chainType)).toFixed(0);if(a.native={int:u,float:A},s.sourceNativeTokenPrice){let m=(0,Tt.Big)(A).mul(s.sourceNativeTokenPrice).toFixed(i.decimals,Tt.Big.roundDown);a.stablecoin={int:L(m,i.decimals).toFixed(0),float:m}}return{extraGasMax:a,destinationChain:{gasAmountMax:{int:o,float:c},swap:{int:n.txCostAmount.swap,float:j(n.txCostAmount.swap,$.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:j(n.txCostAmount.transfer,$.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Ks(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function jr(i,n,r,a){let s,o=new ta.PublicKey(n),c=new ta.PublicKey(r),A=await He(o,c),u=Vt(a,n);Wr.setProvider(u);let m=await Wr.Spl.token(u).account.token.fetchNullable(A);if(m?.authority.equals(o))s=kt(A.toBase58(),"SOLANA",i);else{let l=await u.connection.getTokenAccountsByOwner(o,{mint:c});if(l.value.length===0&&!m)s=kt(A.toBase58(),"SOLANA",i);else if(l.value.length>0){let g=l.value[0];if(!g?.pubkey)throw new w("First token account or its public key is undefined");s=kt(g.pubkey.toBase58(),"SOLANA",i)}else throw new w("Associated account has wrong owner")}return s}var Ne=class{};var Hn=class extends Ne{constructor(r,a,s){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=s}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=Pt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,g=this.getBridgeContract(s).methods.swap(a,c,u,A,m);return Promise.resolve({from:o,to:s,data:g.encodeABI()})}async buildRawTransactionSend(r){let a=await Qe(this.chainType,r,this.api),{amount:s,contractAddress:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,messenger:g,fee:S,gasFeePaymentMethod:T,extraGas:b}=a,B="0x"+Dr().toString("hex"),C,k,N=S;if(b&&(N=(0,Hs.Big)(N).plus(b).toFixed()),g===3||g===4){let _=await this.buildRawTransactionCctpSend(r,a,N);C=_.sendMethod,k=_.value}else{let _=this.getBridgeContract(o);T==="stablecoin"?(C=_.methods.swapAndBridge(A,s,m,u,l,B,g,N),k="0"):(C=_.methods.swapAndBridge(A,s,m,u,l,B,g,0),k=N)}return Promise.resolve({from:c,to:o,value:k,data:C.encodeABI()})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,contractAddress:c,toChainId:A,toAccountAddress:u,gasFeePaymentMethod:m}=a,l=this.getCctpBridgeContract(c),g,S;if(r.destinationToken.chainType==="SOLANA"){let T=await jr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));m==="stablecoin"?(g=l.methods.bridgeWithWalletAddress(o,T,u,A,s),S="0"):(g=l.methods.bridgeWithWalletAddress(o,T,u,A,0),S=s)}else m==="stablecoin"?(g=l.methods.bridge(o,u,A,s),S="0"):(g=l.methods.bridge(o,u,A,0),S=s);return{sendMethod:g,value:S}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...r,gas:a,...s});return{txId:o.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Ns.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Ds.abi,r)}};var Ur=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},a)}async send(n,r){return H(n.amount),q("amount",n.amount,n.sourceToken.decimals),Ks(n)?Er(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Er(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var te=require("@project-serum/anchor"),J=require("@solana/web3.js"),Ve=require("big.js");var Qn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var zs={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var Qs=require("@project-serum/anchor"),qs=oe(require("big.js")),qn=require("web3");async function wn(i,n){return await Qs.Spl.token(n).account.token.fetch(i)}async function eo(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,qs.default)(a.feeShareBp.toString()).div(1e4).toFixed(),c={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return ht(i,{decimals:s,feeShare:o},c)}function to(i){let n=i.amount,r="0x"+i.recipient.toString("hex"),a=i.sourceChainId,s=i.destinationChainId,o="0x"+i.receiveToken.toString("hex"),c="0x"+i.nonce.toString("hex"),A=1,u="0x"+i.chainBridge.toString("hex"),m=qn.Web3.utils.encodePacked({t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:o},{t:"uint256",v:c},{t:"uint8",v:A});if(!m)throw new w("message cannot be undefined");let l=qn.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),g=Buffer.from(l.replace("0x",""),"hex");g[0]=a,g[1]=s;let S=qn.Web3.utils.encodePacked({t:"bytes32",v:"0x"+g.toString("hex")},{t:"bytes32",v:u});if(!S)throw new Qt("messageWithSigner cannot be undefined");let T=qn.Web3.utils.keccak256(Buffer.from(S.replace("0x",""),"hex")),b=Buffer.from(T.replace("0x",""),"hex");return b[0]=g[0],b[1]=g[1],b}var De=require("@solana/web3.js"),no=require("big.js");var na=require("@solana/web3.js");async function tn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new na.AddressLookupTableAccount({key:r.accountKey,state:na.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new w("Cannot get AccountInfo");return a.data}))})))}var Gr="AUTO";async function Cn(i,n,r){let a=new De.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await io(i.instructions,s,n,a)}async function ro(i,n,r){let a=new De.Connection(r,"confirmed"),s=await tn(i,a),o=De.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:s});if(i.serialize().length>1232)throw new Zn;await io(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function io(i,n,r,a){if(n>0){let s=cA(n,i);if(r?.solana){let o=r.solana;if(o===Gr)await ra(i,a);else if("pricePerUnitInMicroLamports"in o)await ra(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,no.Big)(o.extraFeeInLamports).div(s).mul(Jn(6)).toFixed(0);await ra(i,a,c)}}}}function cA(i,n){let r=n.findIndex(o=>o.programId.equals(De.ComputeBudgetProgram.programId)&&De.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),a=Number((i*1.3).toFixed(0)),s=De.ComputeBudgetProgram.setComputeUnitLimit({units:a});return r>=0?n[r]=s:n.push(s),a.toString()}async function ra(i,n,r){let a=i.findIndex(c=>c.programId.equals(De.ComputeBudgetProgram.programId)&&De.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await AA(n)),o=De.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function AA(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var ao=require("@solana/spl-token"),nn=require("@solana/web3.js"),In=oe(require("axios"));var _r=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(n,r){this.connection=new nn.Connection(n),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(n,r,a,s){let o;try{let g=s?"ExactOut":"ExactIn",S=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${ao.NATIVE_MINT.toString()}&amount=${a}&swapMode=${g}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(S+=`&maxAccounts=${this.maxAccounts}`),o=await In.default.get(S,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(g){throw g instanceof In.AxiosError&&g.response&&g.response.data&&g.response.data.error?new ue(g.response.data.error):new ue("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new ue("Cannot get inAmount");let A;try{A=await In.default.post(`${this.jupiterUrl}/swap`,{quoteResponse:o.data,userPublicKey:n,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(g){throw g instanceof In.AxiosError&&g.response&&g.response.data&&g.response.data.error?new ue(g.response.data.error):new ue("Cannot get swap transaction")}let u;if(A?.data?.swapTransaction)u=A.data.swapTransaction;else throw new ue("Cannot get swap transaction");let m=Buffer.from(u,"base64"),l=nn.VersionedTransaction.deserialize(m);return s?{tx:l,amountIn:c}:{tx:l}}async amendJupiterWithSdkTx(n,r){try{let a=await tn(n,this.connection),s=await tn(r,this.connection),o=nn.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:a}),c=nn.TransactionMessage.decompile(r.message,{addressLookupTableAccounts:s});if(c.instructions.shift(),o.instructions.push(...c.instructions),a.push(...s),n.message=o.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&n.signatures.length===1){let A=r.signatures[0];if(!A)throw new w("Signature is undefined");n.signatures.push(A)}return n}catch(a){throw a instanceof Error&&a.message?new ue(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new ue("Some error occurred during creation final swap and bridge transaction")}}};var ia=1e6,so=1.1,Vr=class extends Ne{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new _r(r,a.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=Pt(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,s,o){let{fromAccountAddress:c,amount:A,contractAddress:u,fromTokenAddress:m,toTokenAddress:l,toAccountAddress:g,minimumReceiveAmount:S}=r,T=c,b=u,B=m,C=l,k=s,N=g,_=new J.PublicKey(T),de=Vt(this.solanaRpcUrl,_.toString()),X=new te.Program(Qn,b,de),V=await Sn(X.programId),Me=await _t(X.programId),se=new J.PublicKey(B),mt=await Pn(se,X.programId),lt=new J.PublicKey(a),vt=await He(_,se),Le=new J.PublicKey(N),Ie=new J.PublicKey(C),_e=await Pn(Ie,X.programId),Xe=new J.PublicKey(k),xe=await He(Le,Ie),dt=[te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ia})];try{await wn(xe,de)}catch{let Dc=await te.Spl.associatedToken(de).methods.create().accounts({mint:Ie,owner:Le,associatedAccount:xe}).instruction();dt.push(Dc)}let pt=await X.methods.swap(new te.BN(A),new te.BN(S||0)).accounts({payer:_,config:Me,bridgeAuthority:V,user:_,sendBridgeToken:mt,sendMint:se,sendPool:lt,sendUserToken:vt,receiveBridgeToken:_e,receiveMint:Ie,receivePool:Xe,receiveUserToken:xe}).preInstructions(dt).transaction(),Ye=de.connection;return pt.recentBlockhash=(await Ye.getLatestBlockhash()).blockhash,pt.feePayer=_,await Cn(pt,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(pt,Ye)}async buildRawTransactionSend(r){let a=await Qe(this.chainType,r,this.api),s=this.addPoolAddress(r,a),o=s.gasFeePaymentMethod=="stablecoin",c;if(o)try{let{tx:m,solTxSendUpdatedParams:l}=await this.processJup(s,r,!0);c=m,s={...s,...l}}catch{try{let{tx:l,solTxSendUpdatedParams:g}=await this.processJup(s,r,!1);c=l,s={...s,...g}}catch(l){throw l instanceof ae?l:l instanceof Error&&l.message?new ue(`Some error occurred during creation Jupiter swap transaction. ${l.message}`):new ue("Some error occurred during creation Jupiter swap transaction")}}let A,u;switch(a.messenger){case 1:{let m=await this.prepareSwapAndBridgeData(s);A=await this.buildSwapAndBridgeAllbridgeTransaction(m);break}case 2:{let m=await this.prepareSwapAndBridgeData(s),{transaction:l,messageAccount:g}=await this.buildSwapAndBridgeWormholeTransaction(m);A=l,u=g;break}case 3:case 4:{let m=await this.prepareSwapAndBridgeCctpData(s),{transaction:l,messageSentEventDataKeypair:g}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,m);A=l,u=g;break}}if(o){if(!c)throw new ue("Swap tx is absent");A=await this.jupiterService.amendJupiterWithSdkTx(c,A)}return await ro(A,r.txFeeParams,this.solanaRpcUrl),u&&A.sign([u]),A}async processJup(r,a,s){let{fee:o,extraGas:c,gasFeePaymentMethod:A}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken.decimals,r),u=s?(0,Ve.Big)(o):(0,Ve.Big)(r.fee);c&&(u=u.plus(c)),s||(u=u.mul(so));let{tx:m,amountIn:l}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,u.toFixed(0),s),g;if(s){if(!l)throw new ue("Cannot get inAmount");g=(0,Ve.Big)(r.amount).minus((0,Ve.Big)(l).mul(so)).toFixed(0)}else g=(0,Ve.Big)(r.amount).minus(u).toFixed(0);if((0,Ve.Big)(g).lte(0))throw new zt(`Amount not enough to pay fee, ${j((0,Ve.Big)(g).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:m,solTxSendUpdatedParams:{amount:g,fee:o,extraGas:c,gasFeePaymentMethod:A}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger})).sourceNativeTokenPrice,o=(0,Ve.Big)(a.fee).div(s).mul((0,Ve.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0),c;return a.extraGas&&(c=(0,Ve.Big)(a.extraGas).div(s).mul((0,Ve.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0)),{fee:o,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,s){return te.web3.SystemProgram.transfer({fromPubkey:a,toPubkey:s,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:s,fromChainId:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,poolAddress:g,extraGas:S}=r,T=A,b=c,B=u,C=l,k=m,N=s,_=o,de=Vt(this.solanaRpcUrl,b),X=new te.Program(Qn,N,de),V=Array.from(Dr()),Me=new J.PublicKey(g),se=await eo(a,X,Me),mt=await Ws(V,X.programId),lt=await Sn(X.programId),vt=await He(new J.PublicKey(b),new J.PublicKey(T)),Le=await Pn(new J.PublicKey(T),X.programId),Ie=await Yi(B,X.programId),_e=await Us(B,Buffer.from(C),X.programId),Xe=await _t(X.programId),xe=await X.account.config.fetch(Xe),dt=await Xn(B,xe.gasOracleProgramId),pt=await Xn(_,xe.gasOracleProgramId),Ye=to({amount:se,recipient:Buffer.from(k),nonce:Buffer.from(V),receiveToken:Buffer.from(C),destinationChainId:B,sourceChainId:_,chainBridge:(await Sn(X.programId)).toBuffer()}),Z={};return Z.bridge=X,Z.amount=new te.BN(a),Z.vusdAmount=new te.BN(se),Z.nonce=V,Z.recipient=Array.from(k),Z.receiveToken=Array.from(C),Z.poolAccount=Me,Z.lockAccount=mt,Z.bridgeAuthority=lt,Z.userToken=vt,Z.bridgeTokenAccount=Le,Z.chainBridgeAccount=Ie,Z.otherBridgeTokenAccount=_e,Z.userAccount=new J.PublicKey(b),Z.destinationChainId=B,Z.mint=new J.PublicKey(T),Z.config=Xe,Z.configAccountInfo=xe,Z.gasPrice=dt,Z.thisGasPrice=pt,Z.message=Ye,S&&(Z.extraGasInstruction=this.getExtraGasInstruction(S,Z.userAccount,Xe)),Z}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:S,chainBridgeAccount:T,otherBridgeTokenAccount:b,userAccount:B,destinationChainId:C,mint:k,config:N,configAccountInfo:_,gasPrice:de,thisGasPrice:X,message:V,extraGasInstruction:Me}=r,se=_.allbridgeMessengerProgramId,mt=await Ki(C,se),lt=await _t(se),vt=await Es(V,se),Le=[];Me&&Le.push(Me);let Ie=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:C,recipient:c,receiveToken:A}).accounts({mint:k,user:B,config:N,lock:m,pool:u,gasPrice:de,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:S,chainBridge:T,messenger:se,messengerGasUsage:mt,messengerConfig:lt,sentMessageAccount:vt,otherBridgeToken:b}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ia})]).postInstructions(Le).transaction(),_e=Vt(this.solanaRpcUrl,B.toString()).connection;return Ie.recentBlockhash=(await _e.getLatestBlockhash()).blockhash,Ie.feePayer=B,await this.convertToVersionedTransaction(Ie,_e)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new J.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new w("Cannot find allbridgeLookupTableAccount");let o=new te.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new te.web3.VersionedTransaction(o)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:S,chainBridgeAccount:T,otherBridgeTokenAccount:b,userAccount:B,destinationChainId:C,mint:k,config:N,configAccountInfo:_,gasPrice:de,thisGasPrice:X,message:V,extraGasInstruction:Me}=r,se=this.params.wormholeMessengerProgramId,[mt]=J.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new J.PublicKey(se)),[lt]=J.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new J.PublicKey(se)),[vt]=J.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),l.toBuffer()],new J.PublicKey(se)),Le=await Ki(C,_.wormholeMessengerProgramId),Ie=await _t(_.wormholeMessengerProgramId),_e=J.Keypair.generate(),Xe=Vt(this.solanaRpcUrl,B.toString()),xe=await Xe.connection.getAccountInfo(mt);if(xe==null)throw new w("Cannot fetch wormhole bridge account info");let dt=new te.BN(xe.data.slice(16,24),"le").toString(),pt=J.SystemProgram.transfer({fromPubkey:B,toPubkey:lt,lamports:+dt}),Ye=[];Me&&Ye.push(Me);let Z={mint:k,user:B,config:N,lock:m,pool:u,gasPrice:de,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:S,chainBridge:T,otherBridgeToken:b,messengerGasUsage:Le,wormholeProgram:se,bridge:mt,message:_e.publicKey,wormholeMessenger:_.wormholeMessengerProgramId,sequence:vt,feeCollector:lt,wormholeMessengerConfig:Ie,clock:te.web3.SYSVAR_CLOCK_PUBKEY},Cr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:C,recipient:c,receiveToken:A}).accounts(Z).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ia}),pt]).postInstructions(Ye).signers([_e]).transaction();return Cr.recentBlockhash=(await Xe.connection.getLatestBlockhash()).blockhash,Cr.feePayer=B,{transaction:await this.convertToVersionedTransaction(Cr,Xe.connection),messageAccount:_e}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,extraGas:l}=r,g=a;if(!g)throw new pe("Such route does not support CCTP protocol");let S=4,T=o,b=m,B=u,C=Vt(this.solanaRpcUrl,T),k=new te.Program(zs,g,C),N=new J.PublicKey(c),_=await Gs(N,k.programId),de=new J.PublicKey(T),X=await k.account.cctpBridge.fetch(_),V={};return V.cctpBridge=k,V.cctpBridgeAccount=_,V.cctpAddressAccount=new J.PublicKey(g),V.amount=new te.BN(s),V.recipient=Array.from(B),V.receiveToken=Array.from(b),V.userToken=await He(de,N),V.bridgeAuthority=await js(_,k.programId),V.bridgeTokenAccount=await _s(N,k.programId),V.chainBridgeAccount=await Yi(A,k.programId),V.userAccount=de,V.destinationChainId=A,V.mint=N,V.gasPrice=await Xn(A,X.gasOracleProgramId),V.thisGasPrice=await Xn(S,X.gasOracleProgramId),V.provider=C,l&&(V.extraGasInstruction=this.getExtraGasInstruction(l,V.userAccount,_)),V}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:s,cctpBridgeAccount:o,amount:c,recipient:A,receiveToken:u,bridgeAuthority:m,userToken:l,bridgeTokenAccount:g,chainBridgeAccount:S,userAccount:T,destinationChainId:b,mint:B,gasPrice:C,thisGasPrice:k,extraGasInstruction:N,provider:_}=a,de=this.params.cctpParams.cctpDomains[r],X=this.params.cctpParams.cctpTransmitterProgramId,V=this.params.cctpParams.cctpTokenMessengerMinter;if(de==null||!X||!V)throw new w("CCTP is not configured");let Me=new J.PublicKey(X),se=new J.PublicKey(V),{messageTransmitterAccount:mt,tokenMessenger:lt,tokenMessengerEventAuthority:vt,tokenMinter:Le,localToken:Ie,remoteTokenMessengerKey:_e,authorityPda:Xe}=$s(de,B,Me,se),xe=[];N&&xe.push(N);let dt=J.Keypair.generate(),pt=Vs(s.programId,dt.publicKey),Ye=await s.methods.bridge({amount:c,destinationChainId:b,recipient:A,receiveToken:u}).accounts({mint:B,user:T,cctpBridge:o,messageSentEventData:dt.publicKey,lock:pt,cctpMessenger:se,messageTransmitterProgram:Me,messageTransmitterAccount:mt,tokenMessenger:lt,tokenMinter:Le,localToken:Ie,remoteTokenMessengerKey:_e,authorityPda:Xe,eventAuthority:vt,bridgeToken:g,gasPrice:C,thisGasPrice:k,chainBridge:S,userToken:l,bridgeAuthority:m}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(xe).transaction(),Z=_.connection;return Ye.recentBlockhash=(await Z.getLatestBlockhash()).blockhash,Ye.feePayer=T,{transaction:await this.convertToVersionedTransaction(Ye,Z),messageSentEventDataKeypair:dt}}send(r){throw new ce}};var $r=require("@stellar/stellar-sdk"),oo=require("big.js");var t=require("@stellar/stellar-sdk"),uA=t.contract.Spec,mA=t.contract.Client;var er=class extends mA{constructor(r){super(new uA(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Zr=class extends Ne{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";async buildRawTransactionSend(r){let a=await Qe(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,T=l;S&&(T=(0,oo.Big)(T).plus(S).toFixed());let b=this.getContract(er,s,o),B;return g==="stablecoin"?B=await b.swap_and_bridge({sender:o,token:$r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:St(),gas_amount:BigInt(0),fee_token_amount:BigInt(T)}):B=await b.swap_and_bridge({sender:o,token:$r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:St(),gas_amount:BigInt(T),fee_token_amount:BigInt(0)}),B.toXDR()}async buildRawTransactionSwap(r){let a=Pt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r;return(await this.getContract(er,s,o).swap({sender:o,amount:BigInt(a),token:$r.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(u),recipient:A,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ce}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var co="1.18.0",Ao="1.40.0";var lA={"-32700":"ParseError","-32701":"OversizedRequest","-32702":"OversizedResponse","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError","-32604":"ServerBusy","-32000":"CallExecutionFailed","-32001":"UnknownError","-32003":"SubscriptionClosed","-32004":"SubscriptionClosedWithError","-32005":"BatchesNotSupported","-32006":"TooManySubscriptions","-32050":"TransientError","-32002":"TransactionExecutionClientError"},Jr=class extends Error{},Bn=class extends Jr{constructor(n,r){super(n),this.code=r,this.type=lA[r]??"ServerError"}},Lr=class extends Jr{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var uo=i=>{throw TypeError(i)},sa=(i,n,r)=>n.has(i)||uo("Cannot "+r),ne=(i,n,r)=>(sa(i,n,"read from private field"),r?r.call(i):n.get(i)),rn=(i,n,r)=>n.has(i)?uo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),vn=(i,n,r,a)=>(sa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),mo=(i,n,r)=>(sa(i,n,"access private method"),r),dA=(i,n,r,a)=>({set _(s){vn(i,n,s,r)},get _(){return ne(i,n,a)}}),an,tr,Mt,sn,nr,Rn,Xr,lo,po;function pA(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var gA={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Yr=class{constructor(n,r={}){if(rn(this,Xr),rn(this,an,0),rn(this,tr,0),rn(this,Mt,null),rn(this,sn,null),rn(this,nr,new Set),rn(this,Rn,new Map),this.endpoint=n,this.options={...gA,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=pA(this.endpoint))}async makeRequest(n,r){let a=await mo(this,Xr,lo).call(this);return new Promise((s,o)=>{vn(this,an,ne(this,an)+1),ne(this,Rn).set(ne(this,an),{resolve:s,reject:o,timeout:setTimeout(()=>{ne(this,Rn).delete(ne(this,an)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:ne(this,an),method:n,params:r}))}).then(({error:s,result:o})=>{if(s)throw new Bn(s.message,s.code);return o})}async subscribe(n){let r=new aa(n);return ne(this,nr).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};an=new WeakMap;tr=new WeakMap;Mt=new WeakMap;sn=new WeakMap;nr=new WeakMap;Rn=new WeakMap;Xr=new WeakSet;lo=function(){return ne(this,sn)?ne(this,sn):(vn(this,sn,new Promise(i=>{ne(this,Mt)?.close(),vn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),ne(this,Mt).addEventListener("open",()=>{vn(this,tr,0),i(ne(this,Mt))}),ne(this,Mt).addEventListener("close",()=>{dA(this,tr)._++,ne(this,tr)<=this.options.maxReconnects&&setTimeout(()=>{mo(this,Xr,po).call(this)},this.options.reconnectTimeout)}),ne(this,Mt).addEventListener("message",({data:n})=>{let r;try{r=JSON.parse(n)}catch(a){console.error(new Error(`Failed to parse RPC message: ${n}`,{cause:a}));return}if("id"in r&&r.id!=null&&ne(this,Rn).has(r.id)){let{resolve:a,timeout:s}=ne(this,Rn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;ne(this,nr).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),ne(this,sn))};po=async function(){return ne(this,Mt)?.close(),vn(this,sn,null),Promise.allSettled([...ne(this,nr)].map(i=>i.subscribe(this)))};var aa=class{constructor(n){this.subscriptionId=null,this.subscribed=!1,this.input=n}onMessage(n){this.subscribed&&this.input.onMessage(n)}async unsubscribe(n){let{subscriptionId:r}=this;return this.subscribed=!1,r==null?!1:(this.subscriptionId=null,n.makeRequest(this.input.unsubscribe,[r]))}async subscribe(n){this.subscriptionId=null,this.subscribed=!0;let r=await n.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=r)}};var go=i=>{throw TypeError(i)},Aa=(i,n,r)=>n.has(i)||go("Cannot "+r),$e=(i,n,r)=>(Aa(i,n,"read from private field"),r?r.call(i):n.get(i)),Kr=(i,n,r)=>n.has(i)?go("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),oa=(i,n,r,a)=>(Aa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),fA=(i,n,r)=>(Aa(i,n,"access private method"),r),rr,qe,ir,ca,fo,Hr=class{constructor(n){Kr(this,ca),Kr(this,rr,0),Kr(this,qe),Kr(this,ir),oa(this,qe,n)}fetch(n,r){let a=$e(this,qe).fetch??fetch;if(!a)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return a(n,r)}async request(n){oa(this,rr,$e(this,rr)+1);let r=await this.fetch($e(this,qe).rpc?.url??$e(this,qe).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":co,"Client-Target-Api-Version":Ao,"Client-Request-Method":n.method,...$e(this,qe).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:$e(this,rr),method:n.method,params:n.params})});if(!r.ok)throw new Lr(`Unexpected status code: ${r.status}`,r.status,r.statusText);let a=await r.json();if("error"in a&&a.error!=null)throw new Bn(a.error.message,a.error.code);return a.result}async subscribe(n){let r=await fA(this,ca,fo).call(this).subscribe(n);return async()=>!!await r()}};rr=new WeakMap;qe=new WeakMap;ir=new WeakMap;ca=new WeakSet;fo=function(){if(!$e(this,ir)){let i=$e(this,qe).WebSocketConstructor??WebSocket;if(!i)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");oa(this,ir,new Yr($e(this,qe).websocket?.url??$e(this,qe).url,{WebSocketConstructor:i,...$e(this,qe).websocket}))}return $e(this,ir)};var Wt=require("@mysten/bcs");me();ve();var U=require("@mysten/bcs");var EA=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,GA=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function Bo(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!EA.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!GA.test(r))throw new Error(`Invalid SuiNS name ${i}`);a=r.split(".").slice(0,-1)}return n==="dot"?`${a.join(".")}.sui`:`${a.slice(0,-1).join(".")}@${a[a.length-1]}`}ve();var _A=BigInt(1e9),ja="0x1",ei="0x2";var ti=Be("0x6");var Ua=`${ei}::sui::SUI`,VA=Be("0x5");ve();var $A="object",ZA="ID",JA="ascii",LA="String",XA="string",YA="String",KA="option",HA="Option";function vo(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&x(n.package)===x("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function ni(i){if(typeof i=="string")switch(i){case"address":return h.Address;case"bool":return h.Bool;case"u8":return h.U8;case"u16":return h.U16;case"u32":return h.U32;case"u64":return h.U64;case"u128":return h.U128;case"u256":return h.U256;default:throw new Error(`Unknown type signature ${i}`)}if("vector"in i){if(i.vector==="u8")return h.vector(h.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});let n=ni(i.vector);return n?h.vector(n):null}if("datatype"in i){let n=x(i.datatype.package);if(n===x(ja)){if(i.datatype.module===JA&&i.datatype.type===LA)return h.String;if(i.datatype.module===XA&&i.datatype.type===YA)return h.String;if(i.datatype.module===KA&&i.datatype.type===HA){let r=ni(i.datatype.typeParameters[0]);return r?h.vector(r):null}}if(n===x(ei)&&i.datatype.module===$A&&i.datatype.type===ZA)return h.Address}return null}function Ro(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:or(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:or(i.MutableReference)}:{ref:null,body:or(i)}}function or(i){if(typeof i=="string")switch(i){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${i}`)}if("Vector"in i)return{vector:or(i.Vector)};if("Struct"in i)return{datatype:{package:i.Struct.address,module:i.Struct.module,type:i.Struct.name,typeParameters:i.Struct.typeArguments.map(or)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var ko=require("@mysten/bcs");ve();function zA(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,ko.toBase64)(i):i.toBase64()}}}var ke={Pure:zA,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:x(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:x(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:x(i)}}}}};var Va=require("@mysten/bcs"),rt=require("valibot");ve();var p=require("valibot");ve();function Jt(i){let n=Object.entries(i).map(([r,a])=>(0,p.object)({[r]:a}));return(0,p.pipe)((0,p.union)(n),(0,p.transform)(r=>({...r,$kind:Object.keys(r)[0]})))}var on=(0,p.pipe)((0,p.string)(),(0,p.transform)(i=>x(i)),(0,p.check)(We)),Pe=on,Zt=(0,p.string)(),he=(0,p.pipe)((0,p.union)([(0,p.string)(),(0,p.pipe)((0,p.number)(),(0,p.integer)())]),(0,p.check)(i=>{try{return BigInt(i),BigInt(i)>=0&&BigInt(i)<=18446744073709551615n}catch{return!1}},"Invalid u64")),nt=(0,p.object)({objectId:on,version:he,digest:(0,p.string)()}),Y=(0,p.pipe)((0,p.union)([(0,p.object)({GasCoin:(0,p.literal)(!0)}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("pure"))}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("object"))}),(0,p.object)({Result:(0,p.pipe)((0,p.number)(),(0,p.integer)())}),(0,p.object)({NestedResult:(0,p.tuple)([(0,p.pipe)((0,p.number)(),(0,p.integer)()),(0,p.pipe)((0,p.number)(),(0,p.integer)())])})]),(0,p.transform)(i=>({...i,$kind:Object.keys(i)[0]}))),QA=(0,p.object)({budget:(0,p.nullable)(he),price:(0,p.nullable)(he),owner:(0,p.nullable)(on),payment:(0,p.nullable)((0,p.array)(nt))}),Zp=(0,p.object)({address:(0,p.string)(),module:(0,p.string)(),name:(0,p.string)(),typeParams:(0,p.array)((0,p.string)())}),Ea=(0,p.union)([(0,p.literal)("address"),(0,p.literal)("bool"),(0,p.literal)("u8"),(0,p.literal)("u16"),(0,p.literal)("u32"),(0,p.literal)("u64"),(0,p.literal)("u128"),(0,p.literal)("u256"),(0,p.object)({vector:(0,p.lazy)(()=>Ea)}),(0,p.object)({datatype:(0,p.object)({package:(0,p.string)(),module:(0,p.string)(),type:(0,p.string)(),typeParameters:(0,p.array)((0,p.lazy)(()=>Ea))})}),(0,p.object)({typeParameter:(0,p.pipe)((0,p.number)(),(0,p.integer)())})]),qA=(0,p.object)({ref:(0,p.nullable)((0,p.union)([(0,p.literal)("&"),(0,p.literal)("&mut")])),body:Ea}),eu=(0,p.object)({package:Pe,module:(0,p.string)(),function:(0,p.string)(),typeArguments:(0,p.array)((0,p.string)()),arguments:(0,p.array)(Y),_argumentTypes:(0,p.optional)((0,p.nullable)((0,p.array)(qA)))}),tu=(0,p.object)({name:(0,p.string)(),inputs:(0,p.record)((0,p.string)(),(0,p.union)([Y,(0,p.array)(Y)])),data:(0,p.record)((0,p.string)(),(0,p.unknown)())}),nu=Jt({MoveCall:eu,TransferObjects:(0,p.object)({objects:(0,p.array)(Y),address:Y}),SplitCoins:(0,p.object)({coin:Y,amounts:(0,p.array)(Y)}),MergeCoins:(0,p.object)({destination:Y,sources:(0,p.array)(Y)}),Publish:(0,p.object)({modules:(0,p.array)(Zt),dependencies:(0,p.array)(Pe)}),MakeMoveVec:(0,p.object)({type:(0,p.nullable)((0,p.string)()),elements:(0,p.array)(Y)}),Upgrade:(0,p.object)({modules:(0,p.array)(Zt),dependencies:(0,p.array)(Pe),package:Pe,ticket:Y}),$Intent:tu}),Mo=Jt({ImmOrOwnedObject:nt,SharedObject:(0,p.object)({objectId:Pe,initialSharedVersion:he,mutable:(0,p.boolean)()}),Receiving:nt}),ru=Jt({Object:Mo,Pure:(0,p.object)({bytes:Zt}),UnresolvedPure:(0,p.object)({value:(0,p.unknown)()}),UnresolvedObject:(0,p.object)({objectId:Pe,version:(0,p.optional)((0,p.nullable)(he)),digest:(0,p.optional)((0,p.nullable)((0,p.string)())),initialSharedVersion:(0,p.optional)((0,p.nullable)(he))})}),Ga=Jt({Object:Mo,Pure:(0,p.object)({bytes:Zt})}),_a=Jt({None:(0,p.literal)(!0),Epoch:he}),xn=(0,p.object)({version:(0,p.literal)(2),sender:(0,p.nullish)(on),expiration:(0,p.nullish)(_a),gasData:QA,inputs:(0,p.array)(ru),commands:(0,p.array)(nu)});var Ue={MoveCall(i){let[n,r="",a=""]="target"in i?i.target.split("::"):[i.package,i.module,i.function];return{$kind:"MoveCall",MoveCall:{package:n,module:r,function:a,typeArguments:i.typeArguments??[],arguments:i.arguments??[]}}},TransferObjects(i,n){return{$kind:"TransferObjects",TransferObjects:{objects:i.map(r=>(0,rt.parse)(Y,r)),address:(0,rt.parse)(Y,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,rt.parse)(Y,i),amounts:n.map(r=>(0,rt.parse)(Y,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,rt.parse)(Y,i),sources:n.map(r=>(0,rt.parse)(Y,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,Va.toBase64)(new Uint8Array(r))),dependencies:n.map(r=>Be(r))}}},Upgrade({modules:i,dependencies:n,package:r,ticket:a}){return{$kind:"Upgrade",Upgrade:{modules:i.map(s=>typeof s=="string"?s:(0,Va.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Be(s)),package:r,ticket:(0,rt.parse)(Y,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,rt.parse)(Y,r))}}},Intent({name:i,inputs:n={},data:r={}}){return{$kind:"$Intent",$Intent:{name:i,inputs:Object.fromEntries(Object.entries(n).map(([a,s])=>[a,Array.isArray(s)?s.map(o=>(0,rt.parse)(Y,o)):(0,rt.parse)(Y,s)])),data:r}}}};var On=require("@mysten/bcs"),wt=require("valibot");ve();var Lt=require("@mysten/bcs"),d=require("valibot");me();var $a=(0,d.object)({digest:(0,d.string)(),objectId:(0,d.string)(),version:(0,d.union)([(0,d.pipe)((0,d.number)(),(0,d.integer)()),(0,d.string)(),(0,d.bigint)()])}),iu=Jt({ImmOrOwned:$a,Shared:(0,d.object)({objectId:Pe,initialSharedVersion:he,mutable:(0,d.boolean)()}),Receiving:$a}),xo=Jt({Object:iu,Pure:(0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))}),Fo=(0,d.union)([(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.optional)((0,d.literal)("object"))}),(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.literal)("pure")})]),au=(0,d.union)([(0,d.object)({Epoch:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),Oo=(0,d.pipe)((0,d.union)([(0,d.number)(),(0,d.string)(),(0,d.bigint)()]),(0,d.check)(i=>{if(!["string","number","bigint"].includes(typeof i))return!1;try{return BigInt(i),!0}catch{return!1}})),Za=(0,d.union)([(0,d.object)({bool:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u8:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u64:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u128:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({address:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({signer:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({vector:(0,d.lazy)(()=>Za)}),(0,d.object)({struct:(0,d.lazy)(()=>su)}),(0,d.object)({u16:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u32:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u256:(0,d.nullable)((0,d.literal)(!0))})]),su=(0,d.object)({address:(0,d.string)(),module:(0,d.string)(),name:(0,d.string)(),typeParams:(0,d.array)(Za)}),ou=(0,d.object)({budget:(0,d.optional)(Oo),price:(0,d.optional)(Oo),payment:(0,d.optional)((0,d.array)($a)),owner:(0,d.optional)((0,d.string)())}),cu=[Fo,(0,d.object)({kind:(0,d.literal)("GasCoin")}),(0,d.object)({kind:(0,d.literal)("Result"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({kind:(0,d.literal)("NestedResult"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),resultIndex:(0,d.pipe)((0,d.number)(),(0,d.integer)())})],Nt=(0,d.union)([...cu]),Au=(0,d.object)({kind:(0,d.literal)("MoveCall"),target:(0,d.pipe)((0,d.string)(),(0,d.check)(i=>i.split("::").length===3)),typeArguments:(0,d.array)((0,d.string)()),arguments:(0,d.array)(Nt)}),uu=(0,d.object)({kind:(0,d.literal)("TransferObjects"),objects:(0,d.array)(Nt),address:Nt}),mu=(0,d.object)({kind:(0,d.literal)("SplitCoins"),coin:Nt,amounts:(0,d.array)(Nt)}),lu=(0,d.object)({kind:(0,d.literal)("MergeCoins"),destination:Nt,sources:(0,d.array)(Nt)}),du=(0,d.object)({kind:(0,d.literal)("MakeMoveVec"),type:(0,d.union)([(0,d.object)({Some:Za}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),objects:(0,d.array)(Nt)}),pu=(0,d.object)({kind:(0,d.literal)("Publish"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)())}),gu=(0,d.object)({kind:(0,d.literal)("Upgrade"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)()),packageId:(0,d.string)(),ticket:Nt}),fu=[Au,uu,mu,lu,pu,gu,du],yu=(0,d.union)([...fu]),zp=(0,d.object)({version:(0,d.literal)(1),sender:(0,d.optional)((0,d.string)()),expiration:(0,d.nullish)(au),gasConfig:ou,inputs:(0,d.array)(Fo),transactions:(0,d.array)(yu)});function Ja(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Lt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some:xt.parseFromStr(r.MakeMoveVec.type)},objects:r.MakeMoveVec.elements.map(a=>Ot(a,n))};if(r.MergeCoins)return{kind:"MergeCoins",destination:Ot(r.MergeCoins.destination,n),sources:r.MergeCoins.sources.map(a=>Ot(a,n))};if(r.MoveCall)return{kind:"MoveCall",target:`${r.MoveCall.package}::${r.MoveCall.module}::${r.MoveCall.function}`,typeArguments:r.MoveCall.typeArguments,arguments:r.MoveCall.arguments.map(a=>Ot(a,n))};if(r.Publish)return{kind:"Publish",modules:r.Publish.modules.map(a=>Array.from((0,Lt.fromBase64)(a))),dependencies:r.Publish.dependencies};if(r.SplitCoins)return{kind:"SplitCoins",coin:Ot(r.SplitCoins.coin,n),amounts:r.SplitCoins.amounts.map(a=>Ot(a,n))};if(r.TransferObjects)return{kind:"TransferObjects",objects:r.TransferObjects.objects.map(a=>Ot(a,n)),address:Ot(r.TransferObjects.address,n)};if(r.Upgrade)return{kind:"Upgrade",modules:r.Upgrade.modules.map(a=>Array.from((0,Lt.fromBase64)(a))),dependencies:r.Upgrade.dependencies,packageId:r.Upgrade.package,ticket:Ot(r.Upgrade.ticket,n)};throw new Error(`Unknown transaction ${Object.keys(r)}`)})}}function Ot(i,n){if(i.$kind==="GasCoin")return{kind:"GasCoin"};if(i.$kind==="Result")return{kind:"Result",index:i.Result};if(i.$kind==="NestedResult")return{kind:"NestedResult",index:i.NestedResult[0],resultIndex:i.NestedResult[1]};if(i.$kind==="Input")return n[i.Input];throw new Error(`Invalid argument ${Object.keys(i)}`)}function No(i){return(0,d.parse)(xn,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,d.is)(xo,n.value)){let r=(0,d.parse)(xo,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Lt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?xt.tagToString(n.type.Some):null,elements:n.objects.map(r=>Ft(r))}};case"MergeCoins":return{MergeCoins:{destination:Ft(n.destination),sources:n.sources.map(r=>Ft(r))}};case"MoveCall":{let[r,a,s]=n.target.split("::");return{MoveCall:{package:r,module:a,function:s,typeArguments:n.typeArguments,arguments:n.arguments.map(o=>Ft(o))}}}case"Publish":return{Publish:{modules:n.modules.map(r=>(0,Lt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Lt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var P=require("valibot");function cr(i){return(0,P.union)(Object.entries(i).map(([n,r])=>(0,P.object)({[n]:r})))}var it=cr({GasCoin:(0,P.literal)(!0),Input:(0,P.pipe)((0,P.number)(),(0,P.integer)()),Result:(0,P.pipe)((0,P.number)(),(0,P.integer)()),NestedResult:(0,P.tuple)([(0,P.pipe)((0,P.number)(),(0,P.integer)()),(0,P.pipe)((0,P.number)(),(0,P.integer)())])}),hu=(0,P.object)({budget:(0,P.nullable)(he),price:(0,P.nullable)(he),owner:(0,P.nullable)(on),payment:(0,P.nullable)((0,P.array)(nt))}),bu=(0,P.object)({package:Pe,module:(0,P.string)(),function:(0,P.string)(),typeArguments:(0,P.array)((0,P.string)()),arguments:(0,P.array)(it)}),Tu=(0,P.object)({name:(0,P.string)(),inputs:(0,P.record)((0,P.string)(),(0,P.union)([it,(0,P.array)(it)])),data:(0,P.record)((0,P.string)(),(0,P.unknown)())}),Su=cr({MoveCall:bu,TransferObjects:(0,P.object)({objects:(0,P.array)(it),address:it}),SplitCoins:(0,P.object)({coin:it,amounts:(0,P.array)(it)}),MergeCoins:(0,P.object)({destination:it,sources:(0,P.array)(it)}),Publish:(0,P.object)({modules:(0,P.array)(Zt),dependencies:(0,P.array)(Pe)}),MakeMoveVec:(0,P.object)({type:(0,P.nullable)((0,P.string)()),elements:(0,P.array)(it)}),Upgrade:(0,P.object)({modules:(0,P.array)(Zt),dependencies:(0,P.array)(Pe),package:Pe,ticket:it}),$Intent:Tu}),Pu=cr({ImmOrOwnedObject:nt,SharedObject:(0,P.object)({objectId:Pe,initialSharedVersion:he,mutable:(0,P.boolean)()}),Receiving:nt}),wu=cr({Object:Pu,Pure:(0,P.object)({bytes:Zt}),UnresolvedPure:(0,P.object)({value:(0,P.unknown)()}),UnresolvedObject:(0,P.object)({objectId:Pe,version:(0,P.optional)((0,P.nullable)(he)),digest:(0,P.optional)((0,P.nullable)((0,P.string)())),initialSharedVersion:(0,P.optional)((0,P.nullable)(he))})}),Cu=cr({None:(0,P.literal)(!0),Epoch:he}),Do=(0,P.object)({version:(0,P.literal)(2),sender:(0,P.nullish)(on),expiration:(0,P.nullish)(Cu),gasData:hu,inputs:(0,P.array)(wu),commands:(0,P.array)(Su)});var jo=require("valibot");me();var Iu=50,Bu=1000n,vu=5e10;async function Uo(i,n,r){return await Ou(i,n),await xu(i,n),n.onlyTransactionKind||(await Ru(i,n),await ku(i,n),await Mu(i,n)),await Fu(i),await r()}async function Ru(i,n){i.gasConfig.price||(i.gasConfig.price=String(await cn(n).getReferenceGasPrice()))}async function ku(i,n){if(i.gasConfig.budget)return;let r=await cn(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(vu),payment:[]}}})});if(r.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${r.effects.status.error}`,{cause:r});let a=Bu*BigInt(i.gasConfig.price||1n),s=BigInt(r.effects.gasUsed.computationCost)+a,o=s+BigInt(r.effects.gasUsed.storageCost)-BigInt(r.effects.gasUsed.storageRebate);i.gasConfig.budget=String(o>s?o:s)}async function Mu(i,n){if(!i.gasConfig.payment){let a=(await cn(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:Ua})).data.filter(s=>!i.inputs.find(c=>c.Object?.ImmOrOwnedObject?s.coinObjectId===c.Object.ImmOrOwnedObject.objectId:!1)).map(s=>({objectId:s.coinObjectId,digest:s.digest,version:s.version}));if(!a.length)throw new Error("No valid gas coins found for the transaction.");i.gasConfig.payment=a.map(s=>(0,jo.parse)(nt,s))}}async function xu(i,n){let r=i.inputs.filter(l=>l.UnresolvedObject&&!(l.UnresolvedObject.version||l.UnresolvedObject?.initialSharedVersion)),a=[...new Set(r.map(l=>Be(l.UnresolvedObject.objectId)))],s=a.length?ju(a,Iu):[],o=(await Promise.all(s.map(l=>cn(n).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat(),c=new Map(a.map((l,g)=>[l,o[g]])),A=Array.from(c).filter(([l,g])=>g.error).map(([l,g])=>JSON.stringify(g.error));if(A.length)throw new Error(`The following input objects are invalid: ${A.join(", ")}`);let u=o.map(l=>{if(l.error||!l.data)throw new Error(`Failed to fetch object: ${l.error}`);let g=l.data.owner,S=g&&typeof g=="object"&&"Shared"in g?g.Shared.initial_shared_version:null;return{objectId:l.data.objectId,digest:l.data.digest,version:l.data.version,initialSharedVersion:S}}),m=new Map(a.map((l,g)=>[l,u[g]]));for(let[l,g]of i.inputs.entries()){if(!g.UnresolvedObject)continue;let S,T=x(g.UnresolvedObject.objectId),b=m.get(T);g.UnresolvedObject.initialSharedVersion??b?.initialSharedVersion?S=ke.SharedObjectRef({objectId:T,initialSharedVersion:g.UnresolvedObject.initialSharedVersion||b?.initialSharedVersion,mutable:Nu(i,l)}):Du(i,l)&&(S=ke.ReceivingRef({objectId:T,digest:g.UnresolvedObject.digest??b?.digest,version:g.UnresolvedObject.version??b?.version})),i.inputs[i.inputs.indexOf(g)]=S??ke.ObjectRef({objectId:T,digest:g.UnresolvedObject.digest??b?.digest,version:g.UnresolvedObject.version??b?.version})}}async function Ou(i,n){let{inputs:r,commands:a}=i,s=[],o=new Set;a.forEach(A=>{if(A.MoveCall){if(A.MoveCall._argumentTypes)return;if(A.MoveCall.arguments.map(l=>l.$kind==="Input"?i.inputs[l.Input]:null).some(l=>l?.UnresolvedPure||l?.UnresolvedObject)){let l=`${A.MoveCall.package}::${A.MoveCall.module}::${A.MoveCall.function}`;o.add(l),s.push(A.MoveCall)}}switch(A.$kind){case"SplitCoins":A.SplitCoins.amounts.forEach(u=>{Wo(u,h.U64,i)});break;case"TransferObjects":Wo(A.TransferObjects.address,h.Address,i);break}});let c=new Map;if(o.size>0){let A=cn(n);await Promise.all([...o].map(async u=>{let[m,l,g]=u.split("::"),S=await A.getNormalizedMoveFunction({package:m,module:l,function:g});c.set(u,S.parameters.map(T=>Ro(T)))}))}s.length&&await Promise.all(s.map(async A=>{let u=c.get(`${A.package}::${A.module}::${A.function}`);if(!u)return;let l=u.length>0&&vo(u.at(-1))?u.slice(0,u.length-1):u;A._argumentTypes=l})),a.forEach(A=>{if(!A.MoveCall)return;let u=A.MoveCall,m=`${u.package}::${u.module}::${u.function}`,l=u._argumentTypes;if(l){if(l.length!==A.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${m}`);l.forEach((g,S)=>{let T=u.arguments[S];if(T.$kind!=="Input")return;let b=r[T.Input];if(!b.UnresolvedPure&&!b.UnresolvedObject)return;let B=b.UnresolvedPure?.value??b.UnresolvedObject?.objectId,C=ni(g.body);if(C){T.type="pure",r[r.indexOf(b)]=ke.Pure(C.serialize(B));return}if(typeof B!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(B,null,2)}`);T.type="object";let k=b.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:B}}:b;r[T.Input]=k})}})}function Fu(i){i.inputs.forEach((n,r)=>{if(n.$kind!=="Object"&&n.$kind!=="Pure")throw new Error(`Input at index ${r} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(n)}`)})}function Wo(i,n,r){if(i.$kind!=="Input")return;let a=r.inputs[i.Input];a.$kind==="UnresolvedPure"&&(r.inputs[i.Input]=ke.Pure(n.serialize(a.UnresolvedPure.value)))}function Nu(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=s.MoveCall._argumentTypes[o].ref!=="&"||r}(s.$kind==="MakeMoveVec"||s.$kind==="MergeCoins"||s.$kind==="SplitCoins")&&(r=!0)}),r}function Du(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=Wu(s.MoveCall._argumentTypes[o])||r}}),r}function Wu(i){return typeof i.body!="object"||!("datatype"in i.body)?!1:i.body.datatype.package==="0x2"&&i.body.datatype.module==="transfer"&&i.body.datatype.type==="Receiving"}function cn(i){if(!i.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return i.client}function ju(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Eo(i){function n(r){return i(r)}return n.system=()=>n("0x5"),n.clock=()=>n("0x6"),n.random=()=>n("0x8"),n.denyList=()=>n("0x403"),n.option=({type:r,value:a})=>s=>s.moveCall({typeArguments:[r],target:`0x1::option::${a===null?"none":"some"}`,arguments:a===null?[]:[s.object(a)]}),n}var Go=require("@mysten/bcs");me();function _o(i){function n(r,a){if(typeof r=="string")return i(Ar(r).serialize(a));if(r instanceof Uint8Array||(0,Go.isSerializedBcs)(r))return i(r);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return n.u8=r=>i(h.U8.serialize(r)),n.u16=r=>i(h.U16.serialize(r)),n.u32=r=>i(h.U32.serialize(r)),n.u64=r=>i(h.U64.serialize(r)),n.u128=r=>i(h.U128.serialize(r)),n.u256=r=>i(h.U256.serialize(r)),n.bool=r=>i(h.Bool.serialize(r)),n.string=r=>i(h.String.serialize(r)),n.address=r=>i(h.Address.serialize(r)),n.id=n.address,n.vector=(r,a)=>i(h.vector(Ar(r)).serialize(a)),n.option=(r,a)=>i(h.option(Ar(r)).serialize(a)),n}function Ar(i){switch(i){case"u8":return h.u8();case"u16":return h.u16();case"u32":return h.u32();case"u64":return h.u64();case"u128":return h.u128();case"u256":return h.u256();case"bool":return h.bool();case"string":return h.string();case"id":case"address":return h.Address}let n=i.match(/^(vector|option)<(.+)>$/);if(n){let[r,a]=n.slice(1);return r==="vector"?h.vector(Ar(a)):h.option(Ar(a))}throw new Error(`Invalid Pure type name: ${i}`)}var Jo=require("@mysten/bcs"),ri=require("valibot");me();ve();var Vo=require("@noble/hashes/blake2b");function $o(i,n){let r=Array.from(`${i}::`).map(s=>s.charCodeAt(0)),a=new Uint8Array(r.length+n.length);return a.set(r),a.set(n,r.length),(0,Vo.blake2b)(a,{dkLen:32})}function Zo(i){return x(i).replace("0x","")}var Xt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=h.TransactionKind.parse(n).ProgrammableTransaction;if(!a)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:a.inputs,commands:a.commands})}static fromBytes(n){let a=h.TransactionData.parse(n)?.V1,s=a.kind.ProgrammableTransaction;if(!a||!s)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:a.sender,expiration:a.expiration,gasData:a.gasData,inputs:s.inputs,commands:s.commands})}static restore(n){return n.version===2?new i((0,ri.parse)(xn,n)):new i((0,ri.parse)(xn,No(n)))}static getDigestFromBytes(n){let r=$o("TransactionData",n);return(0,Jo.toBase58)(r)}get gasConfig(){return this.gasData}set gasConfig(n){this.gasData=n}build({maxSizeBytes:n=1/0,overrides:r,onlyTransactionKind:a}={}){let s=this.inputs,o=this.commands,c={ProgrammableTransaction:{inputs:s,commands:o}};if(a)return h.TransactionKind.serialize(c,{maxSize:n}).toBytes();let A=r?.expiration??this.expiration,u=r?.sender??this.sender,m={...this.gasData,...r?.gasConfig,...r?.gasData};if(!u)throw new Error("Missing transaction sender");if(!m.budget)throw new Error("Missing gas budget");if(!m.payment)throw new Error("Missing gas payment");if(!m.price)throw new Error("Missing gas price");let l={sender:Zo(u),expiration:A||{None:!0},gasData:{payment:m.payment,owner:Zo(this.gasData.owner??u),price:BigInt(m.price),budget:BigInt(m.budget)},kind:{ProgrammableTransaction:{inputs:s,commands:o}}};return h.TransactionData.serialize({V1:l},{maxSize:n}).toBytes()}addInput(n,r){let a=this.inputs.length;return this.inputs.push(r),{Input:a,type:n,$kind:"Input"}}getInputUses(n,r){this.mapArguments((a,s)=>(a.$kind==="Input"&&a.Input===n&&r(a,s),a))}mapArguments(n){for(let r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(s=>n(s,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(s=>n(s,r)),r.TransferObjects.address=n(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=n(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(s=>n(s,r));break;case"MergeCoins":r.MergeCoins.destination=n(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(s=>n(s,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(s=>n(s,r));break;case"Upgrade":r.Upgrade.ticket=n(r.Upgrade.ticket,r);break;case"$Intent":let a=r.$Intent.inputs;r.$Intent.inputs={};for(let[s,o]of Object.entries(a))r.$Intent.inputs[s]=Array.isArray(o)?o.map(c=>n(c,r)):n(o,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(n,r){if(!Array.isArray(r)){this.commands[n]=r;return}let a=r.length-1;this.commands.splice(n,1,...r),a!==0&&this.mapArguments(s=>{switch(s.$kind){case"Result":s.Result>n&&(s.Result+=a);break;case"NestedResult":s.NestedResult[0]>n&&(s.NestedResult[0]+=a);break}return s})}getDigest(){let n=this.build({onlyTransactionKind:!1});return i.getDigestFromBytes(n)}snapshot(){return(0,ri.parse)(xn,this)}};ve();function La(i){if(typeof i=="string")return x(i);if(i.Object)return i.Object.ImmOrOwnedObject?x(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?x(i.Object.Receiving.objectId):x(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return x(i.UnresolvedObject.objectId)}var Yo=i=>{throw TypeError(i)},Ha=(i,n,r)=>n.has(i)||Yo("Cannot "+r),D=(i,n,r)=>(Ha(i,n,"read from private field"),r?r.call(i):n.get(i)),ur=(i,n,r)=>n.has(i)?Yo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),An=(i,n,r,a)=>(Ha(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Dt=(i,n,r)=>(Ha(i,n,"access private method"),r),lr,dr,un,E,at,ii,za,Ya,Qa;function Lo(i,n=1/0){let r={$kind:"Result",Result:i},a=[],s=o=>a[o]??(a[o]={$kind:"NestedResult",NestedResult:[i,o]});return new Proxy(r,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(o,c){if(c in o)return Reflect.get(o,c);if(c===Symbol.iterator)return function*(){let u=0;for(;u<n;)yield s(u),u++};if(typeof c=="symbol")return;let A=parseInt(c,10);if(!(Number.isNaN(A)||A<0))return s(A)}})}var Ko=Symbol.for("@mysten/transaction");function ai(i){return!!i&&typeof i=="object"&&i[Ko]===!0}var Xo={buildPlugins:new Map,serializationPlugins:new Map},Xa=Symbol.for("@mysten/transaction/registry");function mr(){try{let i=globalThis;return i[Xa]||(i[Xa]=Xo),i[Xa]}catch{return Xo}}var Uu=class Ka{constructor(){ur(this,at),ur(this,lr),ur(this,dr),ur(this,un,new Map),ur(this,E),this.object=Eo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,wt.is)(Y,r))return r;let a=La(r),s=D(this,E).inputs.find(o=>a===La(o));return s?.Object?.SharedObject&&typeof r=="object"&&r.Object?.SharedObject&&(s.Object.SharedObject.mutable=s.Object.SharedObject.mutable||r.Object.SharedObject.mutable),s?{$kind:"Input",Input:D(this,E).inputs.indexOf(s),type:"object"}:D(this,E).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:x(r)}}:r)});let n=mr();An(this,E,new Xt),An(this,dr,[...n.buildPlugins.values()]),An(this,lr,[...n.serializationPlugins.values()])}static fromKind(n){let r=new Ka;return An(r,E,Xt.fromKindBytes(typeof n=="string"?(0,On.fromBase64)(n):n)),r}static from(n){let r=new Ka;return ai(n)?An(r,E,new Xt(n.getData())):typeof n!="string"||!n.startsWith("{")?An(r,E,Xt.fromBytes(typeof n=="string"?(0,On.fromBase64)(n):n)):An(r,E,Xt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){mr().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){mr().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){mr().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){mr().buildPlugins.delete(n)}addSerializationPlugin(n){D(this,lr).push(n)}addBuildPlugin(n){D(this,dr).push(n)}addIntentResolver(n,r){if(D(this,un).has(n)&&D(this,un).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);D(this,un).set(n,r)}setSender(n){D(this,E).sender=n}setSenderIfNotSet(n){D(this,E).sender||(D(this,E).sender=n)}setExpiration(n){D(this,E).expiration=n?(0,wt.parse)(_a,n):null}setGasPrice(n){D(this,E).gasConfig.price=String(n)}setGasBudget(n){D(this,E).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){D(this,E).gasData.budget==null&&(D(this,E).gasConfig.budget=String(n))}setGasOwner(n){D(this,E).gasConfig.owner=n}setGasPayment(n){D(this,E).gasConfig.payment=n.map(r=>(0,wt.parse)(nt,r))}get blockData(){return Ja(D(this,E).snapshot())}getData(){return D(this,E).snapshot()}get[Ko](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:_o(n=>(0,On.isSerializedBcs)(n)?D(this,E).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):D(this,E).addInput("pure",(0,wt.is)(Ga,n)?(0,wt.parse)(Ga,n):n instanceof Uint8Array?ke.Pure(n):{$kind:"UnresolvedPure",UnresolvedPure:{value:n}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...n){return this.object(ke.ObjectRef(...n))}receivingRef(...n){return this.object(ke.ReceivingRef(...n))}sharedObjectRef(...n){return this.object(ke.SharedObjectRef(...n))}add(n){if(typeof n=="function")return n(this);let r=D(this,E).commands.push(n);return Lo(r-1)}splitCoins(n,r){let a=Ue.SplitCoins(typeof n=="string"?this.object(n):Dt(this,at,za).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Dt(this,at,ii).call(this,o))),s=D(this,E).commands.push(a);return Lo(s-1,r.length)}mergeCoins(n,r){return this.add(Ue.MergeCoins(this.object(n),r.map(a=>this.object(a))))}publish({modules:n,dependencies:r}){return this.add(Ue.Publish({modules:n,dependencies:r}))}upgrade({modules:n,dependencies:r,package:a,ticket:s}){return this.add(Ue.Upgrade({modules:n,dependencies:r,package:a,ticket:this.object(s)}))}moveCall({arguments:n,...r}){return this.add(Ue.MoveCall({...r,arguments:n?.map(a=>Dt(this,at,ii).call(this,a))}))}transferObjects(n,r){return this.add(Ue.TransferObjects(n.map(a=>this.object(a)),typeof r=="string"?this.pure.address(r):Dt(this,at,ii).call(this,r)))}makeMoveVec({type:n,elements:r}){return this.add(Ue.MakeMoveVec({type:n,elements:r.map(a=>this.object(a))}))}serialize(){return JSON.stringify(Ja(D(this,E).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,wt.parse)(Do,D(this,E).snapshot()),(r,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(n){let{signer:r,...a}=n,s=await this.build(a);return r.signTransaction(s)}async build(n={}){return await this.prepareForSerialization(n),await Dt(this,at,Ya).call(this,n),D(this,E).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Dt(this,at,Ya).call(this,n),D(this,E).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of D(this,E).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...D(this,lr)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!D(this,un).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(D(this,un).get(s))}await Dt(this,at,Qa).call(this,a,n)}};lr=new WeakMap;dr=new WeakMap;un=new WeakMap;E=new WeakMap;at=new WeakSet;ii=function(i){return(0,On.isSerializedBcs)(i)?this.pure(i):Dt(this,at,za).call(this,i)};za=function(i){return typeof i=="function"?(0,wt.parse)(Y,i(this)):(0,wt.parse)(Y,i)};Ya=async function(i){if(!i.onlyTransactionKind&&!D(this,E).sender)throw new Error("Missing transaction sender");await Dt(this,at,Qa).call(this,[...D(this,dr),Uo],i)};Qa=async function(i,n){let r=a=>{if(a>=i.length)return()=>{};let s=i[a];return async()=>{let o=r(a+1),c=!1,A=!1;if(await s(D(this,E),n,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${a}`);c=!0,await o(),A=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${a}`);if(!A)throw new Error(`next() was not awaited in TransactionPlugin ${a}`)}};await r(0)()};var st=Uu;var Yt=require("valibot");me();ve();var si="CoinWithBalance",Ho=sr("0x2::sui::SUI");function ee({type:i=Ho,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(si,Gu);let s=i==="gas"?i:sr(i);return a.add(Ue.Intent({name:si,inputs:{},data:{type:s===Ho&&r?"gas":s,balance:BigInt(n)}}))}}var Eu=(0,Yt.object)({type:(0,Yt.string)(),balance:(0,Yt.bigint)()});async function Gu(i,n,r){let a=new Set,s=new Map;if(!i.sender)throw new Error("Sender must be set to resolve CoinWithBalance");for(let m of i.commands)if(m.$kind==="$Intent"&&m.$Intent.name===si){let{type:l,balance:g}=(0,Yt.parse)(Eu,m.$Intent.data);l!=="gas"&&g>0n&&a.add(l),s.set(l,(s.get(l)??0n)+g)}let o=new Set;for(let m of i.inputs)m.Object?.ImmOrOwnedObject&&o.add(m.Object.ImmOrOwnedObject.objectId),m.UnresolvedObject?.objectId&&o.add(m.UnresolvedObject.objectId);let c=new Map,A=cn(n);await Promise.all([...a].map(async m=>{c.set(m,await _u({coinType:m,balance:s.get(m),client:A,owner:i.sender,usedIds:o}))}));let u=new Map;u.set("gas",{$kind:"GasCoin",GasCoin:!0});for(let[m,l]of i.commands.entries()){if(l.$kind!=="$Intent"||l.$Intent.name!==si)continue;let{type:g,balance:S}=l.$Intent.data;if(S===0n){i.replaceCommand(m,Ue.MoveCall({target:"0x2::coin::zero",typeArguments:[g]}));continue}let T=[];if(!u.has(g)){let[b,...B]=c.get(g).map(C=>i.addInput("object",ke.ObjectRef({objectId:C.coinObjectId,digest:C.digest,version:C.version})));B.length>0&&T.push(Ue.MergeCoins(b,B)),u.set(g,b)}T.push(Ue.SplitCoins(u.get(g),[i.addInput("pure",ke.Pure(h.u64().serialize(S)))])),i.replaceCommand(m,T),i.mapArguments(b=>b.$kind==="Result"&&b.Result===m?{$kind:"NestedResult",NestedResult:[m+T.length-1,0]}:b)}return r()}async function _u({coinType:i,balance:n,client:r,owner:a,usedIds:s}){let o=n,c=[];return A();async function A(u=null){let{data:m,hasNextPage:l,nextCursor:g}=await r.getCoins({owner:a,coinType:i,cursor:u}),S=m.sort((T,b)=>Number(BigInt(b.balance)-BigInt(T.balance)));for(let T of S){if(s.has(T.coinObjectId))continue;let b=BigInt(T.balance);if(c.push(T),o-=b,o<=0)return c}if(l)return A(g);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}ve();var Vu=Symbol.for("@mysten/SuiClient");var jt=class{get[Vu](){return!0}constructor(n){this.transport=n.transport??new Hr({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!We(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[n.owner,n.coinType,n.cursor,n.limit]})}async getAllCoins(n){if(!n.owner||!We(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[n.owner,n.cursor,n.limit]})}async getBalance(n){if(!n.owner||!We(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[n.owner,n.coinType]})}async getAllBalances(n){if(!n.owner||!We(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[n.owner]})}async getCoinMetadata(n){return await this.transport.request({method:"suix_getCoinMetadata",params:[n.coinType]})}async getTotalSupply(n){return await this.transport.request({method:"suix_getTotalSupply",params:[n.coinType]})}async call(n,r){return await this.transport.request({method:n,params:r})}async getMoveFunctionArgTypes(n){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[n.package,n.module,n.function]})}async getNormalizedMoveModulesByPackage(n){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[n.package]})}async getNormalizedMoveModule(n){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[n.package,n.module]})}async getNormalizedMoveFunction(n){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[n.package,n.module,n.function]})}async getNormalizedMoveStruct(n){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[n.package,n.module,n.struct]})}async getOwnedObjects(n){if(!n.owner||!We(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[n.owner,{filter:n.filter,options:n.options},n.cursor,n.limit]})}async getObject(n){if(!n.id||!kn(Be(n.id)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"sui_getObject",params:[n.id,n.options]})}async tryGetPastObject(n){return await this.transport.request({method:"sui_tryGetPastObject",params:[n.id,n.version,n.options]})}async multiGetObjects(n){if(n.ids.forEach(a=>{if(!a||!kn(Be(a)))throw new Error(`Invalid Sui Object id ${a}`)}),n.ids.length!==new Set(n.ids).size)throw new Error(`Duplicate object ids in batch call ${n.ids}`);return await this.transport.request({method:"sui_multiGetObjects",params:[n.ids,n.options]})}async queryTransactionBlocks(n){return await this.transport.request({method:"suix_queryTransactionBlocks",params:[{filter:n.filter,options:n.options},n.cursor,n.limit,(n.order||"descending")==="descending"]})}async getTransactionBlock(n){if(!Qr(n.digest))throw new Error("Invalid Transaction digest");return await this.transport.request({method:"sui_getTransactionBlock",params:[n.digest,n.options]})}async multiGetTransactionBlocks(n){if(n.digests.forEach(a=>{if(!Qr(a))throw new Error(`Invalid Transaction digest ${a}`)}),n.digests.length!==new Set(n.digests).size)throw new Error(`Duplicate digests in batch call ${n.digests}`);return await this.transport.request({method:"sui_multiGetTransactionBlocks",params:[n.digests,n.options]})}async executeTransactionBlock({transactionBlock:n,signature:r,options:a,requestType:s}){let o=await this.transport.request({method:"sui_executeTransactionBlock",params:[typeof n=="string"?n:(0,Wt.toBase64)(n),Array.isArray(r)?r:[r],a]});if(s==="WaitForLocalExecution")try{await this.waitForTransaction({digest:o.digest})}catch{}return o}async signAndExecuteTransaction({transaction:n,signer:r,...a}){let s;n instanceof Uint8Array?s=n:(n.setSenderIfNotSet(r.toSuiAddress()),s=await n.build({client:this}));let{signature:o,bytes:c}=await r.signTransaction(s);return this.executeTransactionBlock({transactionBlock:c,signature:o,...a})}async getTotalTransactionBlocks(){let n=await this.transport.request({method:"sui_getTotalTransactionBlocks",params:[]});return BigInt(n)}async getReferenceGasPrice(){let n=await this.transport.request({method:"suix_getReferenceGasPrice",params:[]});return BigInt(n)}async getStakes(n){if(!n.owner||!We(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[n.owner]})}async getStakesByIds(n){return n.stakedSuiIds.forEach(r=>{if(!r||!kn(Be(r)))throw new Error(`Invalid Sui Stake id ${r}`)}),await this.transport.request({method:"suix_getStakesByIds",params:[n.stakedSuiIds]})}async getLatestSuiSystemState(){return await this.transport.request({method:"suix_getLatestSuiSystemState",params:[]})}async queryEvents(n){return await this.transport.request({method:"suix_queryEvents",params:[n.query,n.cursor,n.limit,(n.order||"descending")==="descending"]})}async subscribeEvent(n){return this.transport.subscribe({method:"suix_subscribeEvent",unsubscribe:"suix_unsubscribeEvent",params:[n.filter],onMessage:n.onMessage})}async subscribeTransaction(n){return this.transport.subscribe({method:"suix_subscribeTransaction",unsubscribe:"suix_unsubscribeTransaction",params:[n.filter],onMessage:n.onMessage})}async devInspectTransactionBlock(n){let r;if(ai(n.transactionBlock))n.transactionBlock.setSenderIfNotSet(n.sender),r=(0,Wt.toBase64)(await n.transactionBlock.build({client:this,onlyTransactionKind:!0}));else if(typeof n.transactionBlock=="string")r=n.transactionBlock;else if(n.transactionBlock instanceof Uint8Array)r=(0,Wt.toBase64)(n.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[n.sender,r,n.gasPrice?.toString(),n.epoch]})}async dryRunTransactionBlock(n){return await this.transport.request({method:"sui_dryRunTransactionBlock",params:[typeof n.transactionBlock=="string"?n.transactionBlock:(0,Wt.toBase64)(n.transactionBlock)]})}async getDynamicFields(n){if(!n.parentId||!kn(Be(n.parentId)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"suix_getDynamicFields",params:[n.parentId,n.cursor,n.limit]})}async getDynamicFieldObject(n){return await this.transport.request({method:"suix_getDynamicFieldObject",params:[n.parentId,n.name]})}async getLatestCheckpointSequenceNumber(){let n=await this.transport.request({method:"sui_getLatestCheckpointSequenceNumber",params:[]});return String(n)}async getCheckpoint(n){return await this.transport.request({method:"sui_getCheckpoint",params:[n.id]})}async getCheckpoints(n){return await this.transport.request({method:"sui_getCheckpoints",params:[n.cursor,n?.limit,n.descendingOrder]})}async getCommitteeInfo(n){return await this.transport.request({method:"suix_getCommitteeInfo",params:[n?.epoch]})}async getNetworkMetrics(){return await this.transport.request({method:"suix_getNetworkMetrics",params:[]})}async getAddressMetrics(){return await this.transport.request({method:"suix_getLatestAddressMetrics",params:[]})}async getEpochMetrics(n){return await this.transport.request({method:"suix_getEpochMetrics",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getAllEpochAddressMetrics(n){return await this.transport.request({method:"suix_getAllEpochAddressMetrics",params:[n?.descendingOrder]})}async getEpochs(n){return await this.transport.request({method:"suix_getEpochs",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getMoveCallMetrics(){return await this.transport.request({method:"suix_getMoveCallMetrics",params:[]})}async getCurrentEpoch(){return await this.transport.request({method:"suix_getCurrentEpoch",params:[]})}async getValidatorsApy(){return await this.transport.request({method:"suix_getValidatorsApy",params:[]})}async getChainIdentifier(){let n=await this.getCheckpoint({id:"0"}),r=(0,Wt.fromBase58)(n.digest);return(0,Wt.toHex)(r.slice(0,4))}async resolveNameServiceAddress(n){return await this.transport.request({method:"suix_resolveNameServiceAddress",params:[n.name]})}async resolveNameServiceNames({format:n="dot",...r}){let{nextCursor:a,hasNextPage:s,data:o}=await this.transport.request({method:"suix_resolveNameServiceNames",params:[r.address,r.cursor,r.limit]});return{hasNextPage:s,nextCursor:a,data:o.map(c=>Bo(c,n))}}async getProtocolConfig(n){return await this.transport.request({method:"sui_getProtocolConfig",params:[n?.version]})}async waitForTransaction({signal:n,timeout:r=60*1e3,pollInterval:a=2*1e3,...s}){let o=AbortSignal.timeout(r),c=new Promise((A,u)=>{o.addEventListener("abort",()=>u(o.reason))});for(c.catch(()=>{});!o.aborted;){n?.throwIfAborted();try{return await this.getTransactionBlock(s)}catch{await Promise.race([new Promise(u=>setTimeout(u,a)),c])}}throw o.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};var li=require("big.js");var cs=oe(Kt());var Ut=oe(Kt());le();function qo(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[R(i,r.bridge),R(i,r.coin),Ze(i,r.receiveAmountMin,"u64")]})}function ec(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[R(i,r.bridge),R(i,r.userDeposit),R(i,r.coin)]})}function tc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[R(i,r.bridge),R(i,r.userDeposit),Ze(i,r.amountLp,"u64")]})}function nc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[R(i,r.bridge),R(i,r.userDeposit)]})}function rc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[R(i,r)]})}function es(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[R(i,r.bridge),R(i,r.messenger),R(i,r.wormholeState),R(i,r.theClock),R(i,r.gasOracle),R(i,r.amount),R(i,r.recipient),Ze(i,r.destinationChainId,"u8"),R(i,r.receiveToken),Ze(i,r.nonce,"u256"),R(i,r.feeSuiCoin),R(i,r.feeTokenCoin)]})}function ic(i,n){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function ts(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[R(i,r.bridge),R(i,r.messenger),R(i,r.gasOracle),R(i,r.amount),R(i,r.recipient),Ze(i,r.destinationChainId,"u8"),R(i,r.receiveToken),Ze(i,r.nonce,"u256"),R(i,r.feeSuiCoin),R(i,r.feeTokenCoin)]})}var uc=oe(rs());var sc=oe(rs());le();function is(i,n,r){return i.moveCall({target:`${sc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[R(i,r.cctpBridge),R(i,r.gasOracle),R(i,r.tokenMessengerMinterState),R(i,r.messageTransmitterState),R(i,r.treasury),R(i,r.denyList),R(i,r.amount),R(i,r.feeSuiCoin),R(i,r.feeTokenCoin),Ze(i,r.destinationChainId,"u8"),R(i,r.recipient),R(i,r.recipientWalletAddress)]})}var mc=oe(ss());var Ac=oe(ss());me();le();me();le();var os=class i{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(n,r){this.$fullTypeName=G(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:G(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs(pr(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([M(n)],r),kind:"VectorClassReified"}}static get r(){return i.reified}static get bcs(){return h.vector}static fromFields(n,r){return i.reified(n).new(r.map(a=>W(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>O(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(pr(n)).parse(r))}toJSONField(){return this.elements.map(n=>mn(this.$typeArgs[0],n))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new(r.map(a=>F(n,a)))}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a vector json object");return i.fromJSONField(n,r.elements)}};function Fn(i){return os.r(i)}function re(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var Yu=h.bytes(32).transform({input:i=>(0,U.fromHEX)(i),output:i=>(0,U.toHEX)(i)});function pr(i){switch(i){case"bool":return h.bool();case"u8":return h.u8();case"u16":return h.u16();case"u32":return h.u32();case"u64":return h.u64();case"u128":return h.u128();case"u256":return h.u256();case"address":return Yu;default:return i.bcs}}function M(i){switch(i){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return i}switch(i.kind){case"PhantomReified":return i.phantomType;case"StructClassReified":return i.fullTypeName;case"VectorClassReified":return i.fullTypeName}throw new Error("unreachable")}function W(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return`0x${n}`}if(i.kind==="VectorClassReified")return i.fromFields(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(n.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(n.url.bytes)).toString();case"0x2::object::ID":return`0x${n.bytes}`;case"0x2::object::UID":return`0x${n.id.bytes}`;case"0x1::option::Option":return n.vec.length===0?null:i.fromFields(n).vec[0];default:return i.fromFields(n)}}function O(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.fromFieldsWithTypes(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return n;case"0x2::object::UID":return n.id;case"0x2::balance::Balance":return i.fromFields({value:BigInt(n)});case"0x1::option::Option":return n===null?null:O(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function ot(i,n,r){if(r.length!==n.length)throw new Error(`provided item has mismatching number of type argments ${i} (expected ${r.length}, got ${n.length}))`);for(let a=0;a<n.length;a++)if(v(n[a])!==v(M(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${M(r[a])}, got ${n[a]}))`)}function Ct(i,n){let{typeArgs:r}=be(i.type);ot(i.type,r,n)}function mn(i,n){let{typeName:r,typeArgs:a}=be(i);switch(r){case"bool":return n;case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return n.toString();case"address":case"signer":return n;case"vector":return n.map(s=>mn(a[0],s));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return n;case"0x1::option::Option":return n===null?null:mn(a[0],n);default:return n.toJSONField()}}function F(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.fromJSONField(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return n;case"0x1::option::Option":return n===null?null:F(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}le();var oi="0x1";le();me();function ci(i){return i=v(i),i===`${oi}::string::String`}var Ai=class i{__StructClass=!0;static get $typeName(){return`${oi}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:G(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("String",{bytes:h.vector(h.u8())})}static fromFields(n){return i.reified().new({bytes:W(Fn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!ci(n.type))throw new Error("not a String type");return i.reified().new({bytes:O(Fn("u8"),n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:mn("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:F(Fn("u8"),n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!ci(n.type))throw new Error(`object at ${n.fields.id} is not a String object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!ci(n.bcs.type))throw new Error("object at is not a String object");return i.fromBcs((0,U.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!ci(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};le();le();var Ht="0x2";me();function ui(i){return i=v(i),i===`${Ht}::object::ID`}var ln=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:G(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("ID",{bytes:h.bytes(32).transform({input:n=>(0,U.fromHEX)(n),output:n=>(0,U.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:W("address",n.bytes)})}static fromFieldsWithTypes(n){if(!ui(n.type))throw new Error("not a ID type");return i.reified().new({bytes:O("address",n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:F("address",n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!ui(n.type))throw new Error(`object at ${n.fields.id} is not a ID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!ui(n.bcs.type))throw new Error("object at is not a ID object");return i.fromBcs((0,U.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!ui(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function mi(i){return i=v(i),i===`${Ht}::object::UID`}var Je=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:G(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("UID",{id:ln.bcs})}static fromFields(n){return i.reified().new({id:W(ln.reified(),n.id)})}static fromFieldsWithTypes(n){if(!mi(n.type))throw new Error("not a UID type");return i.reified().new({id:O(ln.reified(),n.fields.id)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({id:F(ln.reified(),n.id)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!mi(n.type))throw new Error(`object at ${n.fields.id} is not a UID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!mi(n.bcs.type))throw new Error("object at is not a UID object");return i.fromBcs((0,U.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!mi(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function ct(i,n){return i.moveCall({target:`${Ac.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Ze(i,n,`${Ai.$typeName}`)]})}async function It(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?It(i,a.nextCursor,s):s}var di=class extends Ne{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new jt({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new w("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");(0,cs.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let s=Pt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toTokenAddress:A,minimumReceiveAmount:u}=r,m=new st;m.setSender(o);let l={bridge:a.bridgeObjectAddress,coin:ee({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(u)},g=qo(m,[c,A],l),S=await It(T=>this.client.getCoins({owner:r.toAccountAddress,coinType:A,cursor:T}));return S.length===0||!S[0]?m.transferObjects([g],r.toAccountAddress):m.mergeCoins(S[0].coinObjectId,[g]),await m.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await Qe(this.chainType,r,this.api),{messenger:s}=a,o=r.sourceToken.suiAddresses;if(!o)throw new w("SUI token must contain 'suiAddresses'");switch((0,cs.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin),(0,mc.setAddress)(o.utilsAddress),s){case 1:return this.buildRawTransactionAllbridgeSend(a,o);case 2:return this.buildRawTransactionWormholeSend(a,o);case 3:case 4:return this.buildRawTransactionCctpSend(r,a,o)}}async buildRawTransactionAllbridgeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,T=l;S&&(T=(0,li.Big)(T).plus(S).toFixed());let b=new st;if(b.setSender(o),g==="stablecoin"){let B=BigInt(s)-BigInt(T),C={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:B,type:c}),destinationChainId:A,nonce:St(),recipient:ct(b,ze(u)),receiveToken:ct(b,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(T),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};ts(b,c,C)}else{let B=T==="0"?ee({balance:BigInt(T),useGasCoin:!1}):ee({balance:BigInt(T)}),C={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:St(),recipient:ct(b,ze(u)),receiveToken:ct(b,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:B};ts(b,c,C)}return await b.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,T=l;S&&(T=(0,li.Big)(T).plus(S).toFixed());let b=new st;if(b.setSender(o),g==="stablecoin"){let B=BigInt(s)-BigInt(T),C={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:ti,amount:ee({balance:B,type:c}),destinationChainId:A,nonce:St(),recipient:ct(b,ze(u)),receiveToken:ct(b,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(T),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};es(b,c,C)}else{let B=T==="0"?ee({balance:BigInt(T),useGasCoin:!1}):ee({balance:BigInt(T)}),C={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:ti,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:St(),recipient:ct(b,ze(u)),receiveToken:ct(b,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:B};es(b,c,C)}return await b.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=a;(0,uc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let T=l;S&&(T=(0,li.Big)(T).plus(S).toFixed());let b=new st;b.setSender(c);let B=ct(b,ze(m)),C;if(r.destinationToken.chainType==="SOLANA"){let k=await jr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));C=ct(b,ze(k))}else C=B;if(g==="stablecoin"){let k=BigInt(o)-BigInt(T),N={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:k,type:A}),destinationChainId:u,recipient:C,recipientWalletAddress:B,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(T),type:A}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};is(b,A,N)}else{let k=T==="0"?ee({balance:BigInt(T),useGasCoin:!1}):ee({balance:BigInt(T)}),N={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:BigInt(o),type:A}),destinationChainId:u,recipient:C,recipientWalletAddress:B,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:A}),feeSuiCoin:k};is(b,A,N)}return await b.toJSON({client:this.client})}};var pc=require("big.js");var lc=oe(require("bn.js"));function pi(i){return"0x"+new lc.default(i).toString("hex")}function dc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function gi(i,n){let r=await i.trx.sign(n);if(!r.signature)throw new Qt("Transaction was not signed properly");let s=(await i.trx.sendRawTransaction(r)).transaction.txID;return await Ku(i,s),{txId:s}}async function Ku(i,n,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new hn("Transaction not found");let s=await i.trx.getUnconfirmedTransactionInfo(n);if(!s?.receipt){await dc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new hn(`Transaction status is ${s.receipt.result}`)}}var gr=class extends Ne{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await Qe(this.chainType,r,this.api),s=await this.buildRawTransactionSendFromParams(a);return await gi(this.tronWeb,s)}async buildRawTransactionSwap(r){let a=Pt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,l=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:u},{type:"address",value:A},{type:"uint256",value:m}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",l,"0",o)}async buildRawTransactionSend(r){let a=await Qe(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,messenger:l,fee:g,gasFeePaymentMethod:S,extraGas:T}=r,b=g;T&&(b=(0,pc.Big)(b).plus(T).toFixed());let B=St().toString(),C,k,N;return l==3||l==4?(S==="stablecoin"?(C=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:b}],k="0"):(C=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:0}],k=b),N="bridge(uint256,bytes32,uint256,uint256)"):(S==="stablecoin"?(C=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:B},{type:"uint8",value:l},{type:"uint256",value:b}],k="0"):(C=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:B},{type:"uint8",value:l},{type:"uint256",value:0}],k=b),N="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(s,N,C,k,o)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new w("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var fi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new Ur(n,r,a,s)}rawTxBuilder;async getAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:o},a)}async checkAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},a)}async approve(n,r){let a=zn(r.token,r.messenger);return this.tokenService.approve(n,{...r,spender:a})}async send(n,r){return H(r.amount),q("amount",r.amount,r.sourceToken.decimals),Er(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).send(r)}};function zn(i,n){if(n&&n==3){if(i.cctpAddress)return i.cctpAddress;throw new pe("Such route does not support CCTP protocol")}else if(n&&n==4){if(i.cctpV2Address)return i.cctpV2Address;throw new pe("Such route does not support CCTP V2 protocol")}else return i.bridgeAddress}function Er(i,n,r,a,s){switch($.getChainProperty(i).chainType){case"EVM":{if(s)return new Hn(s,n,r);{let o=r.getNodeRpcUrl(i);return new Hn(new fc.Web3(o),n,r)}}case"TRX":{if(s)return new gr(s,n);{let o=r.getNodeRpcUrl(i);return new gr(new gc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new Vr(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterParams:{jupiterUrl:a.jupiterUrl,jupiterApiKeyHeader:a.jupiterApiKeyHeader,jupiterMaxAccounts:a.jupiterMaxAccounts}},n);case"SRB":return new Zr(r,a,n);case"SUI":return new di(r,n)}}var Cc=require("big.js");var Ic=require("tronweb"),Un=require("web3");var Bt=require("big.js");function yc(i,n,r,a,s){let o=L(i,3),c=(0,Bt.Big)(o),A=(0,Bt.Big)(r),u=(0,Bt.Big)(a).plus(s),m,l;if(A.eq(0)||u.eq(0)){let S=c.div(2);m=(0,Bt.Big)(a).plus(S),l=(0,Bt.Big)(s).plus(S)}else m=(0,Bt.Big)(a).plus(c.mul(a).div(u)),l=(0,Bt.Big)(s).plus(c.mul(s).div(u));return(0,Bt.Big)(Is(n,m.toFixed(),l.toFixed())).minus(A).toFixed()}function hc(i){let n=L(i,3);return(0,Bt.Big)(n).round().toFixed()}var Et=require("web3");var Hu={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},fr=Hu;var we=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return j(this.lpAmount,3).toFixed()}earned(n,r){let a=ws(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?j(a,r).toFixed():a}};var Ee=class{};var yr=class extends Ee{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let s;try{s=await Fr(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await Xi(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return s}async getPoolInfoFromChain(r){let a;try{a=await Fr(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Xi(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let s=new this.web3.eth.BatchRequest,o=this.getPoolContract(a.poolAddress),c=o.methods.userRewardDebt(r).encodeABI(),A=o.methods.balanceOf(r).encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]});let[u,m]=await s.execute();if(u&&m&&!u.error&&!m.error)return new we({lpAmount:Et.Web3.utils.toBigInt(m.result).toString(),rewardDebt:Et.Web3.utils.toBigInt(u.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let s=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),o=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new we({lpAmount:o,rewardDebt:s})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,s=this.getPoolContract(r.poolAddress),o=s.methods.a().encodeABI(),c=s.methods.d().encodeABI(),A=s.methods.tokenBalance().encodeABI(),u=s.methods.vUsdBalance().encodeABI(),m=s.methods.totalSupply().encodeABI(),l=s.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:o},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:c},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:A},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:l},"latest"]});let[g,S,T,b,B,C]=await a.execute();if(g&&S&&T&&b&&B&&C&&!g.error&&!S.error&&!T.error&&!b.error&&!B.error&&!C.error){let k=Et.Web3.utils.toBigInt(T.result).toString(),N=Et.Web3.utils.toBigInt(b.result).toString(),_=Se({tokenBalance:k,vUsdBalance:N});return{aValue:Et.Web3.utils.toBigInt(g.result).toString(),dValue:Et.Web3.utils.toBigInt(S.result).toString(),tokenBalance:k,vUsdBalance:N,totalLpAmount:Et.Web3.utils.toBigInt(B.result).toString(),accRewardPerShareP:Et.Web3.utils.toBigInt(C.result).toString(),p:this.P,imbalance:_}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),s=(await a.methods.a().call()).toString(),o=(await a.methods.d().call()).toString(),c=(await a.methods.tokenBalance().call()).toString(),A=(await a.methods.vUsdBalance().call()).toString(),u=(await a.methods.totalSupply().call()).toString(),m=(await a.methods.accRewardPerShareP().call()).toString(),l=Se({tokenBalance:c,vUsdBalance:A});return{aValue:s,dValue:o,tokenBalance:c,vUsdBalance:A,totalLpAmount:u,accRewardPerShareP:m,p:this.P,imbalance:l}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(fr.abi,r)}};var yi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){if(r){let a=n,s=r;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(n,r){return H(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(n.amount,n.token.decimals).toFixed(),Nn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return H(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(n.amount,3).toFixed(),Nn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(n)}async claimRewards(n,r){return Nn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(n)}};var ut=require("@project-serum/anchor"),At=require("@solana/web3.js");var hi=class extends Ee{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let s=this.buildAnchorProvider(r),o=this.getBridge(a.bridgeAddress,s),c=new At.PublicKey(a.poolAddress),A=await o.account.pool.fetch(c);try{let u=await Hi(new At.PublicKey(r),A.mint,o.programId),{lpAmount:m,rewardDebt:l}=await o.account.userDeposit.fetch(u);return new we({lpAmount:m.toString(),rewardDebt:l.toString()})}catch{return new we({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),s=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),o=s.vUsdBalance.toString(),c=s.tokenBalance.toString(),A=Se({tokenBalance:c,vUsdBalance:o});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:o,tokenBalance:c,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:A}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.deposit(new ut.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new At.PublicKey(r.accountAddress),await Cn(c,r.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.withdraw(new ut.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new At.PublicKey(r.accountAddress),await Cn(c,r.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.claimRewards().accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new At.PublicKey(r.accountAddress),await Cn(c,r.txFeeParams,this.solanaRpcUrl),c}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),s=this.getBridge(r.token.bridgeAddress,a),{accounts:o,preInstructions:c}=await this._getLPTransactionData(s,r.token.poolAddress,r.accountAddress,a);return{bridge:s,accounts:o,preInstructions:c}}getBridge(r,a){return new ut.Program(Qn,r,a)}buildAnchorProvider(r){let a=new At.Connection(this.solanaRpcUrl,"confirmed"),s=new At.PublicKey(r);return new ut.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new At.PublicKey(s),A=await _t(r.programId),u=await Sn(r.programId),m=new At.PublicKey(a),g=(await r.account.pool.fetch(m)).mint,S=await He(c,g),T=await Pn(g,r.programId),b=await Hi(c,g,r.programId),B=[ut.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await wn(S,o)}catch{let _=await ut.Spl.associatedToken(o).methods.create().accounts({mint:g,owner:c,associatedAccount:S}).instruction();B.push(_)}try{await r.account.userDeposit.fetch(b)}catch{let N=await r.methods.initDepositAccount().accounts({mint:g,user:c,userDeposit:b}).instruction();B.push(N)}return{accounts:{mint:g,user:c,config:A,pool:m,bridgeAuthority:u,userDeposit:b,userToken:S,bridgeToken:T},preInstructions:B}}};var Qh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),zu=e.contract.Spec,Qu=e.contract.Client;var bi=class extends Qu{constructor(r){super(new zu(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};var As=require("@stellar/stellar-sdk"),bc=As.rpc.Api;function Dn(i){let{simulation:n,options:r}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");if(bc.isSimulationSuccess(n))return n.result==null?void 0:r.parseResultXdr(n.result.retval);throw new Error(n.error)}function Wn(i){let{simulation:n}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");return bc.isSimulationError(n)}var Ti=class extends Ee{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let o=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Wn(o))throw new w;let c=Dn(o);if(!c)throw new w;let A=c.unwrap();return new we({lpAmount:A.lp_amount.toString(),rewardDebt:A.reward_debt.toString()})}async getPoolInfoFromChain(r){let s=await this.getContract(r.poolAddress).get_pool();if(Wn(s))throw new w;let o=Dn(s);if(!o)throw new w;let c=o.unwrap();return{aValue:c.a.toString(),accRewardPerShareP:c.acc_reward_per_share_p.toString(),dValue:c.d.toString(),tokenBalance:c.token_balance.toString(),p:this.P,totalLpAmount:c.total_lp_amount.toString(),vUsdBalance:c.v_usd_balance.toString(),imbalance:Se({tokenBalance:c.token_balance.toString(),vUsdBalance:c.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let s={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new bi(s)}};var jn=oe(Kt());le();le();me();function Si(i){return i=v(i),i.startsWith(`${Ht}::balance::Balance<`)}var Te=class i{__StructClass=!0;static get $typeName(){return`${Ht}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;value;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:G(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("Balance",{value:h.u64()})}static fromFields(n,r){return i.reified(n).new({value:W("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!Si(r.type))throw new Error("not a Balance type");return Ct(r,[n]),i.reified(n).new({value:O("u64",r.fields.value)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({value:F("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ot(G(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Si(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Si(r.bcs.type))throw new Error("object at is not a Balance object");let a=be(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,U.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching Balance object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Si(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var ls=oe(Kt());le();var us=oe(Kt());me();function Pi(i){return i=v(i),i.startsWith(`${us.PKG_V1}::pool_rewards::PoolRewards<`)}var dn=class i{__StructClass=!0;static get $typeName(){return`${us.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(n){return{typeName:i.$typeName,fullTypeName:G(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("PoolRewards",{acc_reward_per_share_p:h.u128(),admin_fee_share_bp:h.u64(),admin_fee:Te.bcs,rewards:Te.bcs,lp_supply:h.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:W("u128",r.acc_reward_per_share_p),adminFeeShareBp:W("u64",r.admin_fee_share_bp),adminFee:W(Te.reified(n),r.admin_fee),rewards:W(Te.reified(n),r.rewards),lpSupply:W("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!Pi(r.type))throw new Error("not a PoolRewards type");return Ct(r,[n]),i.reified(n).new({accRewardPerShareP:O("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:O("u64",r.fields.admin_fee_share_bp),adminFee:O(Te.reified(n),r.fields.admin_fee),rewards:O(Te.reified(n),r.fields.rewards),lpSupply:O("u64",r.fields.lp_supply)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({accRewardPerShareP:F("u128",r.accRewardPerShareP),adminFeeShareBp:F("u64",r.adminFeeShareBp),adminFee:F(Te.reified(n),r.adminFee),rewards:F(Te.reified(n),r.rewards),lpSupply:F("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ot(G(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Pi(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Pi(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=be(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,U.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Pi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};le();var ms=oe(Kt());me();function wi(i){return i=v(i),i.startsWith(`${ms.PKG_V1}::pool_state::PoolState<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${ms.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(n){return{typeName:i.$typeName,fullTypeName:G(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("PoolState",{token_balance:h.u64(),vusd_balance:h.u64(),d:h.u64(),a:h.u64(),balance_ratio_min_bp:h.u64()})}static fromFields(n,r){return i.reified(n).new({tokenBalance:W("u64",r.token_balance),vusdBalance:W("u64",r.vusd_balance),d:W("u64",r.d),a:W("u64",r.a),balanceRatioMinBp:W("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!wi(r.type))throw new Error("not a PoolState type");return Ct(r,[n]),i.reified(n).new({tokenBalance:O("u64",r.fields.token_balance),vusdBalance:O("u64",r.fields.vusd_balance),d:O("u64",r.fields.d),a:O("u64",r.fields.a),balanceRatioMinBp:O("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({tokenBalance:F("u64",r.tokenBalance),vusdBalance:F("u64",r.vusdBalance),d:F("u64",r.d),a:F("u64",r.a),balanceRatioMinBp:F("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ot(G(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!wi(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!wi(r.bcs.type))throw new Error("object at is not a PoolState object");let a=be(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,U.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching PoolState object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!wi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};me();function Ci(i){return i=v(i),i.startsWith(`${ls.PKG_V1}::pool::Pool<`)}var Ii=class i{__StructClass=!0;static get $typeName(){return`${ls.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(n){return{typeName:i.$typeName,fullTypeName:G(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("Pool",{id:Je.bcs,state:pn.bcs,rewards:dn.bcs,fee_share_bp:h.u64(),can_deposit:h.bool(),can_withdraw:h.bool(),decimals:h.u8(),balance:Te.bcs})}static fromFields(n,r){return i.reified(n).new({id:W(Je.reified(),r.id),state:W(pn.reified(n),r.state),rewards:W(dn.reified(n),r.rewards),feeShareBp:W("u64",r.fee_share_bp),canDeposit:W("bool",r.can_deposit),canWithdraw:W("bool",r.can_withdraw),decimals:W("u8",r.decimals),balance:W(Te.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Ci(r.type))throw new Error("not a Pool type");return Ct(r,[n]),i.reified(n).new({id:O(Je.reified(),r.fields.id),state:O(pn.reified(n),r.fields.state),rewards:O(dn.reified(n),r.fields.rewards),feeShareBp:O("u64",r.fields.fee_share_bp),canDeposit:O("bool",r.fields.can_deposit),canWithdraw:O("bool",r.fields.can_withdraw),decimals:O("u8",r.fields.decimals),balance:O(Te.reified(n),r.fields.balance)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({id:F(Je.reified(),r.id),state:F(pn.reified(n),r.state),rewards:F(dn.reified(n),r.rewards),feeShareBp:F("u64",r.feeShareBp),canDeposit:F("bool",r.canDeposit),canWithdraw:F("bool",r.canWithdraw),decimals:F("u8",r.decimals),balance:F(Te.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ot(G(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ci(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ci(r.bcs.type))throw new Error("object at is not a Pool object");let a=be(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,U.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching Pool object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Ci(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};le();var ds=oe(Kt());me();function Bi(i){return i=v(i),i.startsWith(`${ds.PKG_V1}::user_deposit::UserDeposit<`)}var vi=class i{__StructClass=!0;static get $typeName(){return`${ds.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;lpAmount;rewardDebt;constructor(n,r){this.$fullTypeName=G(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(n){return{typeName:i.$typeName,fullTypeName:G(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("UserDeposit",{id:Je.bcs,lp_amount:h.u64(),reward_debt:h.u64()})}static fromFields(n,r){return i.reified(n).new({id:W(Je.reified(),r.id),lpAmount:W("u64",r.lp_amount),rewardDebt:W("u64",r.reward_debt)})}static fromFieldsWithTypes(n,r){if(!Bi(r.type))throw new Error("not a UserDeposit type");return Ct(r,[n]),i.reified(n).new({id:O(Je.reified(),r.fields.id),lpAmount:O("u64",r.fields.lp_amount),rewardDebt:O("u64",r.fields.reward_debt)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({id:F(Je.reified(),r.id),lpAmount:F("u64",r.lpAmount),rewardDebt:F("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ot(G(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Bi(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Bi(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=be(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,U.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Bi(s.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return i.fromSuiObjectData(r,s.data)}};function Sc(i,n,r){if(n.length===0||!n[0])return[];let a=n[0],s=i.reduce((A,u)=>A+BigInt(u),BigInt(0)),o=BigInt(a.balance),c=[];for(let A of n.slice(1)){if(o>s)return Tc(r,a,c,i);o+=BigInt(A.balance),c.push(A)}return o>=s?Tc(r,a,c,i):[]}function Tc(i,n,r,a){let s=a.map(o=>i.pure.u64(o));return r.length>0&&i.mergeCoins(n.coinObjectId,r.map(o=>o.coinObjectId)),i.splitCoins(n.coinObjectId,s)}var qu="0x0000000000000000000000000000000000000000000000000000000000000000";async function Pc(i,n,r){let a=await i.devInspectTransactionBlock({sender:qu,transactionBlock:n});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let s=a.results?.pop()?.returnValues?.pop();if(!s)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[o,c]=s;return typeof r=="object"?r.fromBcs(Uint8Array.from(o)).toJSONField():pr(r).parse(Uint8Array.from(o))}var Ri=class extends Ee{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new jt({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=a.suiAddresses;if(!s)throw new w("SUI token must contain 'suiAddresses'");(0,jn.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin);let c=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((A,u)=>{if(u.data)return A.lpAmount+=BigInt(u.data.content.fields.lp_amount),A.rewardDebt+=BigInt(u.data.content.fields.reward_debt),A;throw new w("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new we({lpAmount:c.lpAmount.toString(),rewardDebt:c.rewardDebt.toString()})}async fetchDeposits(r,a){return await It(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:vi.phantom(re(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=48,o=new st;rc(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await Pc(this.client,o,Ii.reified(re(r.originTokenAddress))),A=c.state.tokenBalance,u=c.state.vusdBalance,m=Se({tokenBalance:A,vUsdBalance:u});return{dValue:c.state.d,aValue:c.state.a,totalLpAmount:c.rewards.lpSupply,vUsdBalance:u,tokenBalance:A,accRewardPerShareP:c.rewards.accRewardPerShareP,p:s,imbalance:m}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=await It(g=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:g}));if(s.length===0||!s[0])throw new gt("No coins to deposit");let o=s[0],c=new st;c.setSender(r.accountAddress);let{depositObj:A,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=Sc([r.amount],s,c);if(!m)throw new gt("No coins to deposit");if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let l=ec(c,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:A,coin:m});return c.mergeCoins(o.coinObjectId,[l]),u&&c.transferObjects([A],r.accountAddress),await c.toJSON({client:this.client})}async getDepositObject(r,a,s){let o=await this.fetchDeposits(r,a);if(o.length===0||!o[0]){let c=re(a).phantomType;return{depositObj:ic(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new w("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new st;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=tc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await It(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));if(!u[0]||!u[1])throw new w("No rewards found");return m[0]?o.mergeCoins(m[0].coinObjectId,[u[0],u[1]]):(o.mergeCoins(u[0],[u[1]]),o.transferObjects([u[0]],r.accountAddress)),await o.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new st;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=nc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await It(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));return m[0]?o.mergeCoins(m[0].coinObjectId,[u]):o.transferObjects([u],r.accountAddress),await o.toJSON({client:this.client})}};var hr=require("web3"),wc=require("web3-eth-abi");var br=class extends Ee{constructor(r,a,s){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=s}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let s;if(this.tronJsonRpc)try{s=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{s=await this.getUserBalanceInfoPerProperty(r,a)}else s=await this.getUserBalanceInfoPerProperty(r,a);return s}async getUserBalanceInfoByBatch(r,a,s){let o=Yn(s.poolAddress),c=Yn(a),A=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("userRewardDebt",c)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("balanceOf",c)},"latest"]}],m=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)})).json();if(Array.isArray(m)&&m.length===2){let l=g=>{let S=m.find(T=>T.id===g);if(!S||!S.result)throw new Error(`Missing or invalid result for id ${g}`);return hr.Web3.utils.toBigInt(S.result).toString()};return new we({lpAmount:hr.Web3.utils.toBigInt(l(2)).toString(),rewardDebt:hr.Web3.utils.toBigInt(l(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let s=this.getContract(a.poolAddress),o=(await s.methods.userRewardDebt(r).call()).toString(),c=(await s.methods.balanceOf(r).call()).toString();return new we({lpAmount:c,rewardDebt:o})}async getPoolInfoFromChain(r){let a;if(this.tronJsonRpc)try{a=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let s=Yn(a.poolAddress),o=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("a")},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("d")},"latest"]},{jsonrpc:"2.0",id:3,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("tokenBalance")},"latest"]},{jsonrpc:"2.0",id:4,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("vUsdBalance")},"latest"]},{jsonrpc:"2.0",id:5,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("totalSupply")},"latest"]},{jsonrpc:"2.0",id:6,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("accRewardPerShareP")},"latest"]}],A=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json();if(Array.isArray(A)&&A.length===6){let u=S=>{let T=A.find(b=>b.id===S);if(!T||!T.result)throw new Error(`Missing or invalid result for id ${S}`);return hr.Web3.utils.toBigInt(T.result).toString()},m=u(3),l=u(4),g=Se({tokenBalance:m,vUsdBalance:l});return{aValue:u(1),dValue:u(2),tokenBalance:m,vUsdBalance:l,totalLpAmount:u(5),accRewardPerShareP:u(6),p:this.P,imbalance:g}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[s,o,c,A,u,m]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),l=c.toString(),g=A.toString(),S=Se({tokenBalance:l,vUsdBalance:g});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:l,vUsdBalance:g,totalLpAmount:u.toString(),accRewardPerShareP:m.toString(),p:this.P,imbalance:S}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",o,"0",s)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",o,"0",s)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,s=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",s,"0",a)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new w("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}getContract(r){return this.tronWeb.contract(fr.abi,r)}getFunctionAbi(r,...a){let s=fr.abi.find(o=>o.type==="function"&&"name"in o&&o.name===r);if(!s)throw new Error(`${r} method not found in Pool ABI`);return(0,wc.encodeFunctionCall)(s,a)}};var ki=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new yi(n,r,this.params,s);let o=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Rt({defaultTtl:o})}rawTxBuilder;cache;async getAllowance(n,r){if(r){let a=n,s=r;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(n,r){if(r){let a=n,s=r;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(n,r){return this.tokenService.approve(n,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(n,r,a){H(n),q("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:A,dValue:u}=s,m=yc(n,A,u,c,o);return j(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){H(n),q("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=hc(n),A=Fe(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",l=(0,Cc.Big)(A).plus(m).toFixed();return j(l,a.decimals).toFixed()}async getUserBalanceInfo(n,r,a){return Nn(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(n,r)}async getPoolInfoFromChain(n,r){let a={chainSymbol:n.chainSymbol,poolAddress:n.poolAddress},s=this.cache.get(a);if(s)return s;{let o=await Nn(n.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(n);return this.cache.put(a,o),this.api.cachePut({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress},o),o}}};function Nn(i,n,r,a,s){switch($.getChainProperty(i).chainType){case"EVM":{if(s)return new yr(s,n);{let o=r.getNodeRpcUrl(i),c=new Un.Web3(o);return c.defaultReturnFormat={number:Un.FMT_NUMBER.STR,bytes:Un.FMT_BYTES.HEX},new yr(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new br(s,n,c);{let A=new Ic.TronWeb({fullHost:o});return new br(A,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new hi(o,n)}case"SRB":return new Ti(r,a,n);case"SUI":return new Ri(r.getNodeRpcUrl(i),n)}}var ie=require("big.js");function Rc(i,n,r){let a=em(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=tm(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function kc(i,n,r){let a=nm(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=rm(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function em(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Bc(qt(c,r),a),amountExcludingCommissionInSystemPrecision:Bc(qt(s,r),a)}}function Bc(i,n){if(i.eq(0))return"0";let r=(0,ie.Big)(n.tokenBalance).plus(i),a=bt(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(n.vUsdBalance).minus(a).round().toFixed()}function tm(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,ie.Big)(i).plus(a.vUsdBalance),c=bt(o,a.aValue,a.dValue),A=Fe((0,ie.Big)(a.tokenBalance).minus(c),r),u=(0,ie.Big)(A).times(n),m=(0,ie.Big)(A).minus(u).round();return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}function nm(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),o=(0,ie.Big)(i).times(s),c=(0,ie.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:vc(qt(c,r),a),amountExcludingCommissionInSystemPrecision:vc(qt(i,r),a)}}function vc(i,n){let r=(0,ie.Big)(n.tokenBalance).minus(i),a=bt(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(a).minus(n.vUsdBalance).round().toFixed()}function rm(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,ie.Big)(a.vUsdBalance).minus(i),o=bt(s.toFixed(),a.aValue,a.dValue),c=(0,ie.Big)(o).minus(a.tokenBalance),A=Fe(c.toFixed(),r),u=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),m=(0,ie.Big)(A).times(u),l=(0,ie.Big)(A).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:l.round().toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}var Gt=require("big.js");function Mc(i,n,r,a,s){let o=ht(i,n,r),c=Fe(o,n.decimals),A=Ln(o,a,s),u=(0,Gt.Big)(i).times(n.feeShare),m=(0,Gt.Big)(A).div((0,Gt.Big)(1).minus(a.feeShare)).minus(A);return{sourceLPSwap:{fee:j(u,n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed(),swap:j((0,Gt.Big)(i).minus(c).minus(u),n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed()},destLPSwap:{fee:j(m,a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed(),swap:j(Fe(o,a.decimals).minus(A).minus(m),a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed()}}}var En=require("@solana/web3.js");var Mi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async addMemoToTx(n,r){if(r.length>28)throw new w("InvalidArgumentException memo cannot be more than 28 characters");let a=new En.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await tn(n,a),o=En.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s}),c=o.instructions[o.instructions.length-1];if(!c?.keys)throw new w("Last instruction or its keys are invalid.");c.keys.push({pubkey:new En.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var K=require("@stellar/stellar-sdk");var zC=require("@stellar/stellar-sdk"),im=zC.contract.Spec,am=zC.contract.Client;var Tr=class extends am{constructor(r){super(new im(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var sm=100,om=180,xi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=await this.getContract(Tr,n.tokenAddress).name();if(Wn(o))throw new w;let c=Dn(o);if(!c)throw new w;let[A,u]=c.split(":");if(A===void 0||u===void 0)throw new w("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let m=new K.Asset(A,u),l=K.Operation.changeTrust({asset:m,limit:n.limit});return new K.TransactionBuilder(a,{fee:sm.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(l).setTimeout(om).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(Tr,r).name();if(Wn(s))throw new w;let o=Dn(s);if(!o)throw new w;let[c,A]=o.split(":"),u=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new K.Horizon.Server(u).loadAccount(n)).balances.find(S=>(S.asset_type==="credit_alphanum4"||S.asset_type==="credit_alphanum12")&&S.asset_code==c&&S.asset_issuer==A)}async submitTransactionStellar(n){let r=new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=K.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(K.rpc.Api.isSimulationRestore(c))return new K.TransactionBuilder(s,{fee:(+K.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(K.Operation.restoreFootprint({})).setTimeout(K.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Fs(()=>a.getTransaction(n),c=>c.status===K.rpc.Api.GetTransactionStatus.NOT_FOUND,r);if(s.length===0)throw new w("No transaction responses found.");let o=s[s.length-1];if(!o)throw new w("Unexpected error: last response is undefined.");return o}getContract(n,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(a)}};var Oi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new xi(n,r),this.sol=new Mi(n,r)}srb;sol};var $t=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))($t||{}),Kn=(r=>(r.INT="int",r.FLOAT="float",r))(Kn||{});var Oc=require("big.js"),Fc=require("tronweb"),Nc=require("web3");var cm={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Fi=cm;var ps=require("big.js"),Ge=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,ps.Big)(r).gte((0,ps.Big)(n.amount))}};var Am="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",um="0xdac17f958d2ee523a2206206994597c13d831ec7",mm=1e5,Sr=class extends Ge{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,s=r.owner,o=r.spender;return this.getAllowanceByTokenAddress(a,s,o)}getAllowanceByTokenAddress(r,a,s){return this.getERC20Contract(r).methods.allowance(a,s).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let o=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(o,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===um}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=this.getERC20Contract(a).methods.approve(s,c==null?Am:pi(c));return Promise.resolve({from:o,to:a,value:"0",data:u.encodeABI()})}async sendRawTransaction(r,a){let s=r,o={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?s.gas=mm:s.gas=await this.web3.eth.estimateGas(r);let{transactionHash:c}=await this.web3.eth.sendTransaction({...s,...o});return{txId:c.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Fi.abi,r)}};var xc=require("@project-serum/anchor"),gn=require("@solana/web3.js");var Ni=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}buildAnchorProvider(r){let a=new gn.Connection(this.solanaRpcUrl,"confirmed"),s=new gn.PublicKey(r);return new xc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ce}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await He(new gn.PublicKey(a),new gn.PublicKey(s.tokenAddress));return(await wn(o,this.buildAnchorProvider(a))).amount.toString()}catch(o){if(o instanceof Error)return o.message.startsWith("Account does not exist"),"0";throw o}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new gn.PublicKey(r.account))).toString()}};var gs=require("@stellar/stellar-sdk");var Di=class extends Ge{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new gs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof gs.NotFoundError)return"0";throw m}let u=c.balances.find(m=>(m.asset_type==="credit_alphanum4"||m.asset_type==="credit_alphanum12")&&m.asset_code==a&&m.asset_issuer==s);return u?.balance?L(u.balance,$.getChainDecimalsByType($.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new gs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(A=>A.asset_type==="native");return c?.balance?L(c.balance,$.getChainDecimalsByType($.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ce}buildRawTransactionApprove(){throw new ce}};var Wi=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new jt({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}getAllowance(r){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await It(s=>this.suiClient.getCoins({owner:r.account,cursor:s}));return a.length===0?"0":a.reduce((s,o)=>s+BigInt(o.balance),BigInt(0)).toString()}};var lm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Pr=class extends Ge{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:s}=r;return(await(await this.getContract(a)).methods.allowance(s,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await gi(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=c==null?lm:pi(c),u=[{type:"address",value:s},{type:"uint256",value:A}];return this.buildRawTransaction(a,"approve(address,uint256)",u,"0",o)}getContract(r){return this.tronWeb.contract(Fi.abi,r)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new w("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var ji=class{constructor(n,r,a){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.owner,r).getAllowance(n);return j(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return H(n.amount),q("amount",n.amount,n.token.decimals),this.getChainTokenService(n.token.chainSymbol,n.owner,r).checkAllowance(this.prepareCheckAllowanceParams(n))}async approve(n,r){return r.amount&&(H(r.amount),q("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,n).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(n,r){return n.amount&&(H(n.amount),q("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,r).buildRawTransactionApprove(this.prepareApproveParams(n))}async getTokenBalance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.account,r).getTokenBalance(n);return n.token.decimals?j(a,n.token.decimals).toFixed():a}async getNativeTokenBalance(n,r){let a=await this.getChainTokenService(n.chainSymbol,n.account,r).getNativeTokenBalance(n);return{int:a,float:j(a,$.getChainDecimalsByType($.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch($.getChainProperty(n).chainType){case"EVM":{if(a)return new Sr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Sr(new Nc.Web3(s),this.api)}}case"TRX":{if(a)return new Pr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Fc.TronWeb({fullHost:s});return o.setAddress(r),new Pr(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Ni(s,this.api)}case"SRB":return new Di(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Wi(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:L(n.amount,n.token.decimals)}}prepareApproveParams(n){return{tokenAddress:n.token.tokenAddress,owner:n.owner,spender:n.spender,chainSymbol:n.token.chainSymbol,amount:n.amount==null?void 0:(0,Oc.Big)(n.amount).toFixed()}}};var wr=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new $n(n)}},Ui=class{api;tokenService;params;bridge;pool;constructor(n,r=Gn){$.addChainsProperties(r.additionalChainsProperties);let a=new Rr(r),s=new kr(a),o=new Mr(s),c=new Or(o);this.api=new xr(c,r),this.tokenService=new ji(this.api,n,r),this.bridge=new fi(this.api,n,r,this.tokenService),this.pool=new ki(this.api,n,r,this.tokenService),this.params=r}async chainDetailsMap(n){return this.api.getChainDetailsMap(n)}async tokens(n){return this.api.tokens(n)}async tokensByChain(n,r){let s=(await this.api.getChainDetailsMap(r))[n];return s?s.tokens:[]}async getTransferStatus(n,r){return this.api.getTransferStatus(n,r)}async getGasBalance(n,r){return this.api.getGasBalance(n,r)}async checkAddress(){return new Promise(n=>{n({status:"OK",gasBalance:null})})}async getPendingStatusInfo(n,r,a,s){H(n);let o;r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n;let c=ht(o,a,await Ae(this.api,a)),A=await Ae(this.api,s),u=this.getAmountFromVUsdFormatted(c,s,A),m,l=await this.api.getPendingInfo();for(let g in l[s.chainSymbol]){let S=l[s.chainSymbol];if(!S)throw new w("Cannot find pending info for "+s.chainSymbol);m=S[g]}if(m){let g=Ts(m.totalSentAmount,A),S=this.getAmountFromVUsdFormatted(c,s,g),T;return(0,Ce.Big)(S.int).gt(u.int)?T={min:u,max:S}:T={min:S,max:u},{pendingTxs:m.pendingTxs,pendingAmount:{int:yt(m.totalSentAmount,3,s.decimals).toFixed(0),float:j(m.totalSentAmount,3).toFixed()},estimatedAmount:T}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:u,max:u}}}async getTokenBalance(n,r){return this.tokenService.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.tokenService.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){H(n),q("amountFloat",n,r.decimals);let a=L(n,r.decimals);if(a.eq(0))return 0;let s=ht(a,r,await Ae(this.api,r)),o=Fe(s,r.decimals);return _i(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){H(n),q("amountFloat",n,r.decimals);let s=L(n,r.decimals);if(s.eq(0))return 0;let o=ht(s,r,await Ae(this.api,r)),c=Ln(o,a,await Ae(this.api,a)),A=Fe(o,a.decimals);return _i(A,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return H(n),q("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,Ce.Big)(n).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(n,r,a,s),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToSendAndGasFeeOptions(n,r,a,s){return H(n),q("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,Ce.Big)(n).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToBeReceived(n,r,a,s){let o=await Ae(this.api,r),c=await Ae(this.api,a);return this.getAmountToBeReceivedFromPools(n,r,a,o,c,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToBeReceivedFromPools(n,r,a,A,u,s)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){H(n),q("amountToSendFloat",n,r.decimals);let A=L(n,r.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new pe("Such route does not support CCTP protocol");let m=A.mul((0,Ce.Big)(1).minus(r.cctpFeeShare)).round(0,Ce.Big.roundUp),l=yt(m,r.decimals,a.decimals).round(0);return j(l,a.decimals).toFixed()}if(c&&c==4){if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new pe("Such route does not support CCTP V2 protocol");let m=A.mul((0,Ce.Big)(1).minus(r.cctpV2FeeShare)).round(0,Ce.Big.roundUp),l=yt(m,r.decimals,a.decimals).round(0);return j(l,a.decimals).toFixed()}let u=ht(A,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}async getAmountToSend(n,r,a,s){let o=await Ae(this.api,r),c=await Ae(this.api,a);return this.getAmountToSendFromPools(n,r,a,o,c,s)}async getAmountToSendFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToSendFromPools(n,r,a,A,u,s)}getAmountToSendFromPools(n,r,a,s,o,c){H(n),q("amountToBeReceivedFloat",n,a.decimals);let A=L(n,a.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new pe("Such route does not support CCTP protocol");let l=A.div((0,Ce.Big)(1).minus(r.cctpFeeShare)).round(0,Ce.Big.roundDown),g=yt(l,a.decimals,r.decimals).round(0);return j(g,r.decimals).toFixed()}if(c&&c==4){if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new pe("Such route does not support CCTP V2 protocol");let l=A.div((0,Ce.Big)(1).minus(r.cctpV2FeeShare)).round(0,Ce.Big.roundDown),g=yt(l,a.decimals,r.decimals).round(0);return j(g,r.decimals).toFixed()}let u=Ps(A,a,o),m=Ss(u,r,s);if((0,Ce.Big)(m).lte(0))throw new ft;return j(m,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return qi(n.allbridgeChainId,n.chainType,r.allbridgeChainId,n.decimals,a,this.api)}getAverageTransferTime(n,r,a){return n.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(n){return await this.api.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}async refreshPoolInfo(n){if(n){let a=(n instanceof Array?n:[n]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(n){return Cs(n)}async getExtraGasMaxLimits(n,r){return await ea(n,r,this.api)}async getVUsdFromAmount(n,r,a){H(n);let s;r=="float"?(q("amount",n,a.decimals),s=L(n,a.decimals).toFixed()):s=n;let o=ht(s,a,await Ae(this.api,a));return{int:o,float:j(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await Ae(this.api,r))}getAmountFromVUsdFormatted(n,r,a){H(n);let s=Ln(n,r,a);if((0,Ce.Big)(s).lt(0))throw new ft;return{int:s,float:j(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return Rc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await Ae(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await Ae(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=kc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await Ae(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await Ae(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,Ce.Big)(o).lt(0))throw new ft;return s}async getSendAmountDetails(n,r,a,s){H(n);let o;return r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n,Mc(o,a,await Ae(this.api,a),s,await Ae(this.api,s))}};function dm(i){return"solanaRpcUrl"in i}var fs=class{params;bridge;pool;utils;service;constructor(n,r=Gn){let a;dm(n)?a=new wr({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new wr(n),this.service=new Ui(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Oi(a,r),this.params=r}async chainDetailsMap(n="swap"){return this.service.chainDetailsMap(n)}async tokens(n="swap"){return this.service.tokens(n)}async tokensByChain(n,r="swap"){return this.service.tokensByChain(n,r)}async getTransferStatus(n,r){return this.service.getTransferStatus(n,r)}async getGasBalance(n,r){return this.service.getGasBalance(n,r)}async checkAddress(n,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(n,r,a,s){return this.service.getPendingStatusInfo(n,r,a,s)}async getTokenBalance(n,r){return this.service.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.service.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){return this.service.calculateFeePercentOnSourceChain(n,r)}async calculateFeePercentOnDestinationChain(n,r,a){return this.service.calculateFeePercentOnDestinationChain(n,r,a)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(n,r,a,s)}async getAmountToSendAndGasFeeOptions(n,r,a,s){return this.service.getAmountToSendAndGasFeeOptions(n,r,a,s)}async getAmountToBeReceived(n,r,a,s){return this.service.getAmountToBeReceived(n,r,a,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromChain(n,r,a,s,o,c)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromPools(n,r,a,s,o,c)}async getAmountToSend(n,r,a,s){return this.service.getAmountToSend(n,r,a,s)}async getAmountToSendFromChain(n,r,a,s,o,c){return this.service.getAmountToSendFromChain(n,r,a,s,o,c)}getAmountToSendFromPools(n,r,a,s,o,c){return this.service.getAmountToSendFromPools(n,r,a,s,o,c)}async getGasFeeOptions(n,r,a){return this.service.getGasFeeOptions(n,r,a)}getAverageTransferTime(n,r,a){return this.service.getAverageTransferTime(n,r,a)}async getPoolInfoByToken(n){return this.service.getPoolInfoByToken(n)}async refreshPoolInfo(n){return this.service.refreshPoolInfo(n)}aprInPercents(n){return this.service.aprInPercents(n)}async getExtraGasMaxLimits(n,r){return this.service.getExtraGasMaxLimits(n,r)}async getVUsdFromAmount(n,r,a){return this.service.getVUsdFromAmount(n,r,a)}async getAmountFromVUsd(n,r){return this.service.getAmountFromVUsd(n,r)}async swapAndBridgeFeeCalculation(n,r,a){return this.service.swapAndBridgeFeeCalculation(n,r,a)}async swapAndBridgeFeeCalculationReverse(n,r,a){return this.service.swapAndBridgeFeeCalculationReverse(n,r,a)}async getSendAmountDetails(n,r,a,s){return this.service.getSendAmountDetails(n,r,a,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
1
+ "use strict";var Gc=Object.create;var Fr=Object.defineProperty;var _c=Object.getOwnPropertyDescriptor;var Vc=Object.getOwnPropertyNames;var $c=Object.getPrototypeOf,Zc=Object.prototype.hasOwnProperty;var yn=(i,n)=>()=>(i&&(n=i(i=0)),n);var $i=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),Jc=(i,n)=>{for(var r in n)Fr(i,r,{get:n[r],enumerable:!0})},bs=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Vc(n))!Zc.call(i,s)&&s!==r&&Fr(i,s,{get:()=>n[s],enumerable:!(a=_c(n,s))||a.enumerable});return i};var ce=(i,n,r)=>(r=i!=null?Gc($c(i)):{},bs(n||!i||!i.__esModule?Fr(r,"default",{value:i,enumerable:!0}):r,i)),Lc=i=>bs(Fr({},"__esModule",{value:!0}),i);function ti(i){try{return(0,ei.fromBase58)(i).length===lu}catch{return!1}}function je(i){return gu(i)&&fu(i)===lr}function kn(i){return je(i)}function pu(i){return i.includes("::")?ua(i):i}function ua(i){let[n,r]=i.split("::"),a=i.slice(n.length+r.length+4),s=a.includes("<")?a.slice(0,a.indexOf("<")):a,o=a.includes("<")?(0,ei.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>pu(c.trim())):[];return{address:x(n),module:r,name:s,typeParams:o}}function pr(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?ua(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:pr(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function x(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(lr*2,"0")}`}function Re(i,n=!1){return x(i,n)}function gu(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function fu(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var ei,lu,lr,ke=yn(()=>{ei=require("@mysten/bcs"),lu=32;lr=32});var lo,yu,hu,Ot,Aa=yn(()=>{lo=require("@mysten/bcs");ke();yu=/^vector<(.+)>$/,hu=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,Ot=class i{static parseFromStr(n,r=!1){if(n==="address")return{address:null};if(n==="bool")return{bool:null};if(n==="u8")return{u8:null};if(n==="u16")return{u16:null};if(n==="u32")return{u32:null};if(n==="u64")return{u64:null};if(n==="u128")return{u128:null};if(n==="u256")return{u256:null};if(n==="signer")return{signer:null};let a=n.match(yu);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(hu);if(s)return{struct:{address:r?x(s[1]):s[1],module:s[2],name:s[3],typeParams:s[5]===void 0?[]:i.parseStructTypeArgs(s[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${n}`)}static parseStructTypeArgs(n,r=!1){return(0,lo.splitGenericParameters)(n).map(a=>i.parseFromStr(a,r))}static tagToString(n){if("bool"in n)return"bool";if("u8"in n)return"u8";if("u16"in n)return"u16";if("u32"in n)return"u32";if("u64"in n)return"u64";if("u128"in n)return"u128";if("u256"in n)return"u256";if("address"in n)return"address";if("signer"in n)return"signer";if("vector"in n)return`vector<${i.tagToString(n.vector)}>`;if("struct"in n){let r=n.struct,a=r.typeParams.map(i.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${a?`<${a}>`:""}`}throw new Error("Invalid TypeTag")}}});function Tu(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function bu(i){return f.bcs.enum("Option",{None:null,Some:i})}function Ra(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:va,value:i})}var f,q,Ge,Me,ma,da,la,pa,ni,it,ga,fa,ya,ha,Ta,ba,Sa,Pa,wa,Ca,Ia,Ba,va,ka,Ma,Oa,xa,po,Su,Fa,go,fo,Da=yn(()=>{f=require("@mysten/bcs");ke();Aa();q=f.bcs.bytes(lr).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!je(x(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(x(i)):i,output:i=>x((0,f.toHex)(i))}),Ge=f.bcs.vector(f.bcs.u8()).transform({name:"ObjectDigest",input:i=>(0,f.fromBase58)(i),output:i=>(0,f.toBase58)(new Uint8Array(i)),validate:i=>{if((0,f.fromBase58)(i).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),Me=f.bcs.struct("SuiObjectRef",{objectId:q,version:f.bcs.u64(),digest:Ge}),ma=f.bcs.struct("SharedObjectRef",{objectId:q,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),da=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Me,SharedObject:ma,Receiving:Me}),la=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:da}),pa=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>pa),struct:f.bcs.lazy(()=>ba),u16:null,u32:null,u256:null}),ni=pa.transform({input:i=>typeof i=="string"?Ot.parseFromStr(i,!0):i,output:i=>Ot.tagToString(i)}),it=f.bcs.enum("Argument",{GasCoin:null,Input:f.bcs.u16(),Result:f.bcs.u16(),NestedResult:f.bcs.tuple([f.bcs.u16(),f.bcs.u16()])}),ga=f.bcs.struct("ProgrammableMoveCall",{package:q,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(ni),arguments:f.bcs.vector(it)}),fa=f.bcs.enum("Command",{MoveCall:ga,TransferObjects:f.bcs.struct("TransferObjects",{objects:f.bcs.vector(it),address:it}),SplitCoins:f.bcs.struct("SplitCoins",{coin:it,amounts:f.bcs.vector(it)}),MergeCoins:f.bcs.struct("MergeCoins",{destination:it,sources:f.bcs.vector(it)}),Publish:f.bcs.struct("Publish",{modules:f.bcs.vector(f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})),dependencies:f.bcs.vector(q)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:bu(ni).transform({input:i=>i===null?{None:!0}:{Some:i},output:i=>i.Some??null}),elements:f.bcs.vector(it)}),Upgrade:f.bcs.struct("Upgrade",{modules:f.bcs.vector(f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})),dependencies:f.bcs.vector(q),package:q,ticket:it})}),ya=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(la),commands:f.bcs.vector(fa)}),ha=f.bcs.enum("TransactionKind",{ProgrammableTransaction:ya,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),Ta=f.bcs.enum("TransactionExpiration",{None:null,Epoch:Tu()}),ba=f.bcs.struct("StructTag",{address:q,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(pa)}),Sa=f.bcs.struct("GasData",{payment:f.bcs.vector(Me),owner:q,price:f.bcs.u64(),budget:f.bcs.u64()}),Pa=f.bcs.struct("TransactionDataV1",{kind:ha,sender:q,gasData:Sa,expiration:Ta}),wa=f.bcs.enum("TransactionData",{V1:Pa}),Ca=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Ia=f.bcs.enum("IntentVersion",{V0:null}),Ba=f.bcs.enum("AppId",{Sui:null}),va=f.bcs.struct("Intent",{scope:Ca,version:Ia,appId:Ba});ka=f.bcs.enum("CompressedSignature",{ED25519:f.bcs.fixedArray(64,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(64,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(64,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),Ma=f.bcs.enum("PublicKey",{ED25519:f.bcs.fixedArray(32,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(33,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(33,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),Oa=f.bcs.struct("MultiSigPkMap",{pubKey:Ma,weight:f.bcs.u8()}),xa=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(Oa),threshold:f.bcs.u16()}),po=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(ka),bitmap:f.bcs.u16(),multisig_pk:xa}),Su=f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))}),Fa=f.bcs.struct("SenderSignedTransaction",{intentMessage:Ra(wa),txSignatures:f.bcs.vector(Su)}),go=f.bcs.vector(Fa,{name:"SenderSignedData"}),fo=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,Pu,wu,yo,Cu,Iu,Bu,ho,To,Mn,vu,Na,Ru,ku,Mu,Ou,xu,Fu,bo,So=yn(()=>{y=require("@mysten/bcs");Da();Pu=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:q}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:q}),IncompatibleUpgrade:null,DigestDoesNotMatch:y.bcs.struct("DigestDoesNotMatch",{digest:y.bcs.vector(y.bcs.u8())}),UnknownUpgradePolicy:y.bcs.struct("UnknownUpgradePolicy",{policy:y.bcs.u8()}),PackageIDDoesNotMatch:y.bcs.struct("PackageIDDoesNotMatch",{packageId:q,ticketId:q})}),wu=y.bcs.struct("ModuleId",{address:q,name:y.bcs.string()}),yo=y.bcs.struct("MoveLocation",{module:wu,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),Cu=y.bcs.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:y.bcs.struct("IndexOutOfBounds",{idx:y.bcs.u16()}),SecondaryIndexOutOfBounds:y.bcs.struct("SecondaryIndexOutOfBounds",{resultIdx:y.bcs.u16(),secondaryIdx:y.bcs.u16()}),InvalidResultArity:y.bcs.struct("InvalidResultArity",{resultIdx:y.bcs.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),Iu=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),Bu=y.bcs.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:y.bcs.struct("MoveObjectTooBig",{objectSize:y.bcs.u64(),maxObjectSize:y.bcs.u64()}),MovePackageTooBig:y.bcs.struct("MovePackageTooBig",{objectSize:y.bcs.u64(),maxObjectSize:y.bcs.u64()}),CircularObjectOwnership:y.bcs.struct("CircularObjectOwnership",{object:q}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(yo),MoveAbort:y.bcs.tuple([yo,y.bcs.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:y.bcs.struct("CommandArgumentError",{argIdx:y.bcs.u16(),kind:Cu}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:Iu}),UnusedValueWithoutDrop:y.bcs.struct("UnusedValueWithoutDrop",{resultIdx:y.bcs.u16(),secondaryIdx:y.bcs.u16()}),InvalidPublicFunctionReturnType:y.bcs.struct("InvalidPublicFunctionReturnType",{idx:y.bcs.u16()}),InvalidTransferObject:null,EffectsTooLarge:y.bcs.struct("EffectsTooLarge",{currentSize:y.bcs.u64(),maxSize:y.bcs.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:y.bcs.struct("PackageUpgradeError",{upgradeError:Pu}),WrittenObjectsTooLarge:y.bcs.struct("WrittenObjectsTooLarge",{currentSize:y.bcs.u64(),maxSize:y.bcs.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:y.bcs.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:y.bcs.vector(q)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:q,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),ho=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:Bu,command:y.bcs.option(y.bcs.u64())})}),To=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),Mn=y.bcs.enum("Owner",{AddressOwner:q,ObjectOwner:q,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),vu=y.bcs.struct("TransactionEffectsV1",{status:ho,executedEpoch:y.bcs.u64(),gasUsed:To,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([q,y.bcs.u64()])),sharedObjects:y.bcs.vector(Me),transactionDigest:Ge,created:y.bcs.vector(y.bcs.tuple([Me,Mn])),mutated:y.bcs.vector(y.bcs.tuple([Me,Mn])),unwrapped:y.bcs.vector(y.bcs.tuple([Me,Mn])),deleted:y.bcs.vector(Me),unwrappedThenDeleted:y.bcs.vector(Me),wrapped:y.bcs.vector(Me),gasObject:y.bcs.tuple([Me,Mn]),eventsDigest:y.bcs.option(Ge),dependencies:y.bcs.vector(Ge)}),Na=y.bcs.tuple([y.bcs.u64(),Ge]),Ru=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Na,Mn])}),ku=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([Ge,Mn]),PackageWrite:Na}),Mu=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),Ou=y.bcs.struct("EffectsObjectChange",{inputState:Ru,outputState:ku,idOperation:Mu}),xu=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Na,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),Fu=y.bcs.struct("TransactionEffectsV2",{status:ho,executedEpoch:y.bcs.u64(),gasUsed:To,transactionDigest:Ge,gasObjectIndex:y.bcs.option(y.bcs.u32()),eventsDigest:y.bcs.option(Ge),dependencies:y.bcs.vector(Ge),lamportVersion:y.bcs.u64(),changedObjects:y.bcs.vector(y.bcs.tuple([q,Ou])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([q,xu])),auxDataDigest:y.bcs.option(Ge)}),bo=y.bcs.enum("TransactionEffects",{V1:vu,V2:Fu})});var at,Du,h,le=yn(()=>{at=require("@mysten/bcs");Da();So();Aa();Du=require("@mysten/bcs"),h={...at.bcs,U8:at.bcs.u8(),U16:at.bcs.u16(),U32:at.bcs.u32(),U64:at.bcs.u64(),U128:at.bcs.u128(),U256:at.bcs.u256(),ULEB128:at.bcs.uleb128(),Bool:at.bcs.bool(),String:at.bcs.string(),Address:q,AppId:Ba,Argument:it,CallArg:la,CompressedSignature:ka,GasData:Sa,Intent:va,IntentMessage:Ra,IntentScope:Ca,IntentVersion:Ia,MultiSig:po,MultiSigPkMap:Oa,MultiSigPublicKey:xa,ObjectArg:da,ObjectDigest:Ge,ProgrammableMoveCall:ga,ProgrammableTransaction:ya,PublicKey:Ma,SenderSignedData:go,SenderSignedTransaction:Fa,SharedObjectRef:ma,StructTag:ba,SuiObjectRef:Me,Command:fa,TransactionData:wa,TransactionDataV1:Pa,TransactionExpiration:Ta,TransactionKind:ha,TypeTag:ni,TransactionEffects:bo,PasskeyAuthenticator:fo}});function jA(i,n=["<",">"]){let[r,a]=n,s=[],o="",c=0;for(let u=0;u<i.length;u++){let A=i[u];if(A===r&&c++,A===a&&c--,c===0&&A===","){s.push(o.trim()),o="";continue}o+=A}return s.push(o.trim()),s}function Se(i){if(typeof i!="string")throw new Error(`Illegal type passed as a name of the type: ${i}`);let[n,r]=["<",">"],a=i.indexOf(n),s=Array.from(i).reverse().indexOf(r);if(a===-1&&s===-1)return{typeName:i,typeArgs:[]};if(a===-1||s===-1)throw new Error(`Unclosed generic in name '${i}'`);let o=i.slice(0,a),c=jA(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function Xo(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function k(i,n){return Xo(n)?n:i.object(n)}function Ke(i,n,r){if(Xo(n))return k(i,n);function a(m){let{typeName:d,typeArgs:p}=Se(m);switch(d){case"bool":return h.Bool;case"u8":return h.U8;case"u16":return h.U16;case"u32":return h.U32;case"u64":return h.U64;case"u128":return h.U128;case"u256":return h.U256;case"address":return h.Address;case"0x1::string::String":case"0x1::ascii::String":return h.String;case"0x2::object::ID":return h.Address;case"0x1::option::Option":return h.option(a(p[0]));case"vector":return h.vector(a(p[0]));default:throw new Error(`invalid primitive type ${m}`)}}function s(m){for(let d of m){if(typeof d>"u"||d===null)return!0;if(Array.isArray(d))return s(d)}return!1}function o(m){for(let d of m){if(!Array.isArray(d)){if(d===null)continue;switch(typeof d){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return o(d)}return!0}function c(m){for(let d of m){if(!Array.isArray(d))switch(typeof d){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return c(d)}return!1}let{typeName:u,typeArgs:A}=Se(r);switch(u){case"0x1::option::Option":if(n===null)return i.pure.option("bool",null);if(o([n]))return i.pure(a(r).serialize(n));if(c([n]))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.moveCall({target:"0x1::option::some",typeArguments:[A[0]],arguments:[Ke(i,n,A[0])]});case"vector":if(!Array.isArray(n))throw new Error("expected an array for vector type");if(n.length===0)return i.pure(h.vector(h.Bool).serialize([]));if(s(n))throw new Error("the provided array contains undefined or null values");if(o(n))return i.pure(a(r).serialize(n));if(c(n))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.makeMoveVec({type:A[0],elements:n});default:return i.pure(a(r).serialize(n))}}function GA(i){let n=i.split("0x").join("");for(let r=0;r<n.length;r++)if(n[r]!=="0")return`0x${n.substring(r)}`;return"0x0"}function R(i){let{typeName:n,typeArgs:r}=Se(i);switch(n){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return n;case"vector":return`vector<${R(r[0])}>`;default:{let a=n.split("::");a[0]=GA(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>R(o)).join(",")}>`:s}}}function $(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var pe=yn(()=>{"use strict";le()});var Ht=$i((Wg,Yo)=>{"use strict";pe();var Qa=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return R(i.$PACKAGE_ID)}get PUBLISHED_AT(){return R(i.$PUBLISHED_AT)}get PKG_V1(){return R(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},_A=new Qa;Yo.exports=_A});var ns=$i((Gg,tc)=>{"use strict";pe();var ts=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return R(i.$PACKAGE_ID)}get PUBLISHED_AT(){return R(i.$PUBLISHED_AT)}get PKG_V1(){return R(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},VA=new ts;tc.exports=VA});var as=$i((Zg,rc)=>{"use strict";pe();var is=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return R(i.$PACKAGE_ID)}get PUBLISHED_AT(){return R(i.$PUBLISHED_AT)}get PKG_V1(){return R(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},$A=new is;rc.exports=$A});var Tm={};Jc(Tm,{AddressStatus:()=>Dr,AllbridgeCoreSdk:()=>Ts,AmountFormat:()=>rr,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>Hn,CCTPDoesNotSupportedError:()=>ge,ChainSymbol:()=>De,ChainType:()=>ee,ErrorCode:()=>Ss,ExtraGasMaxLimitExceededError:()=>Kn,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>Tt,InvalidAmountError:()=>ht,InvalidGasFeePaymentOptionError:()=>hn,InvalidMessengerOptionError:()=>Yn,InvalidTxError:()=>qt,JupiterError:()=>de,Messenger:()=>Ne,MethodNotSupportedError:()=>ue,NodeRpcUrlNotInitializedError:()=>zn,OFTDoesNotSupportedError:()=>fe,SdkError:()=>w,SdkRootError:()=>ne,SolanaAutoTxFee:()=>$r,TimeoutError:()=>bn,TxTooLargeError:()=>Qn,VerifyTxError:()=>Tn,mainnet:()=>Xn,nodeRpcUrlsDefault:()=>Yc,nodeUrlsDefault:()=>Xc});module.exports=Lc(Tm);var Xn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://lite-api.jup.ag/swap/v1",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},Xc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Yc={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};var mc=require("tronweb"),dc=require("web3");var ne=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},w=class extends ne{constructor(n){super("SdkError",n)}},ht=class extends ne{constructor(n){super("InvalidAmountError",n)}},Qt=class extends ne{constructor(n){super("AmountNotEnoughError",n)}},Tt=class extends ne{constructor(n){super("InsufficientPoolLiquidityError",n)}},de=class extends ne{constructor(n){super("JupiterError",n)}},hn=class extends ne{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},Yn=class extends ne{constructor(n){super("InvalidMessengerOptionError",n)}},ue=class extends ne{constructor(n){super("MethodNotSupportedError",n)}},Tn=class extends ne{constructor(n){super("VerifyTxError",n)}},qt=class extends ne{constructor(n){super("InvalidTxError",n)}},Kn=class extends ne{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},Hn=class extends ne{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},bn=class extends ne{constructor(n){super("TimeoutError",n)}},zn=class extends ne{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},ge=class extends ne{constructor(n){super("CCTPDoesNotSupportedError",n)}},fe=class extends ne{constructor(n){super("OFTDoesNotSupportedError",n)}},Qn=class extends ne{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Ss=(B=>(B.SDK_ERROR="SdkError",B.INVALID_AMOUNT_ERROR="InvalidAmountError",B.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",B.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",B.JUPITER_ERROR="JupiterError",B.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",B.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",B.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",B.VERIFY_TX_ERROR="VerifyTxError",B.INVALID_TX_ERROR="InvalidTxError",B.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",B.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",B.TIMEOUT_ERROR="TimeoutError",B.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",B.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",B.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",B.TX_TOO_LARGE="TxTooLargeError",B))(Ss||{});var De=(S=>(S.BSC="BSC",S.ETH="ETH",S.BAS="BAS",S.SOL="SOL",S.TRX="TRX",S.POL="POL",S.ARB="ARB",S.CEL="CEL",S.AVA="AVA",S.SRB="SRB",S.STLR="STLR",S.OPT="OPT",S.SUI="SUI",S.SNC="SNC",S))(De||{}),ee=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(ee||{});var Kc={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Hc={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},j=(()=>{let i={...Hc};return{addChainsProperties(n){i={...i,...n}},getChainProperty(n){let r=i[n];if(!r)throw new w(`Cannot find chain properties for ${n}`);return r},getChainsProperties(){return i},getChainDecimalsByType(n){return Kc[n]}}})();var Dr=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(Dr||{});var Ne=(o=>(o[o.ALLBRIDGE=1]="ALLBRIDGE",o[o.WORMHOLE=2]="WORMHOLE",o[o.CCTP=3]="CCTP",o[o.CCTP_V2=4]="CCTP_V2",o[o.OFT=5]="OFT",o))(Ne||{});var Zi=require("big.js");async function me(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function Y(i){if((0,Zi.Big)(i).lte(0))throw new ht("Amount must be greater than zero")}function K(i,n,r){let a=(0,Zi.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new Hn(i,o.length,r)}async function Nr(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new bn(n)),r)})])}async function Ji(i,n,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let s=0;for(;;)try{return await Nr(i(),n,a)}catch{if(++s>=r)throw new bn(n)}}async function Ps(i,n,r,a=1.5,s=!1){let o=[],c=0,u=await i();if(o.push(u),!n(u))return o;let A=new Date(Date.now()+r*1e3).valueOf(),m=1e3,d=m;for(;Date.now()<A;){let p=o[o.length-1];if(p===void 0||!n(p))break;c++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${d}ms so far, of total ${r*1e3}ms)`),await new Promise(b=>setTimeout(b,m)),m=m*a,new Date(Date.now()+m).valueOf()>A&&(m=A-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),d=m+d;let T=await i(p);o.push(T),s&&n(T)&&console.info(`${c}. Called ${i.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var Ls=require("big.js");var zc={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},ws=zc;var Qc={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Cs=Qc;var qc={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint16",name:"optionType",type:"uint16"}],name:"InvalidOptionType",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFeeWithExtraGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"extraGasDestinationToken",type:"uint256"}],name:"OftTokensSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"addToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"feeShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"},{internalType:"uint256",name:"extraGasInDestinationToken",type:"uint256"},{internalType:"uint256",name:"slippageBP",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"},{internalType:"uint128",name:"extraGasAmount_",type:"uint128"}],name:"extraGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getEidByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"oftAddress",outputs:[{internalType:"address",name:"oftAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"eid_",type:"uint32"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"removeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"setLzGasLimit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"maxExtraGas_",type:"uint256"}],name:"setMaxExtraGas",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token_",type:"address"}],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount_",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Is=qc;var jr=ce(require("@project-serum/anchor")),ea=require("@solana/web3.js");var ye=ce(require("@project-serum/anchor")),he=require("@solana/web3.js");async function et(i,n){return ye.utils.token.associatedAddress({mint:n,owner:i})}async function Vt(i){let[n]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("config")],i);return n}async function Bs(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function qn(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function Sn(i){let n=await Vt(i),[r]=await he.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function vs(i,n){let[r]=await he.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function Pn(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function Rs(i,n,r){let[a]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function Li(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function Xi(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function ks(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function Yi(i,n,r){let[a]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Ms(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function Os(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function xs(i,n){let[r]=he.PublicKey.findProgramAddressSync([ye.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function Fs(i,n,r,a){let s=en("message_transmitter",r),o=en("token_messenger",a),c=en("__event_authority",a),u=en("token_minter",a),A=en("local_token",a,[n]),m=en("remote_token_messenger",a,[i.toString()]),d=en("sender_authority",a);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:c,tokenMinter:u,localToken:A,remoteTokenMessengerKey:m,authorityPda:d}}function en(i,n,r=[]){let a=[Buffer.from(ye.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(ye.utils.bytes.utf8.encode(o))):Array.isArray(o)||Buffer.isBuffer(o)?a.push(Buffer.from(Uint8Array.from(o))):a.push(Buffer.from(Uint8Array.from(o.toBuffer())));return he.PublicKey.findProgramAddressSync(a,n)[0]}var Ds=require("@project-serum/anchor"),Wr=require("@solana/web3.js");function $t(i,n){let r=new Wr.Connection(i,"confirmed"),a=new Wr.PublicKey(n);return new Ds.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Vs=require("@solana/web3.js"),$s=require("@stellar/stellar-sdk"),ve=require("big.js"),zi=ce(require("randombytes")),Hi=require("tronweb");var C=require("big.js"),Er=ce(require("bn.js"));function Ki(i,n){return(0,C.Big)(100).minus((0,C.Big)(100).times(n).div(i)).toNumber()}function tn(i,n){return Le(i,n,3).round(0,C.Big.roundDown)}function We(i,n){return Le(i,3,n)}function Le(i,n,r){let a=(0,C.Big)(r).minus(n).toNumber();return(0,C.Big)(i).times(er(a))}function er(i){return(0,C.Big)(10).pow(i)}function G(i,n){return(0,C.Big)(i).times(er(n))}function D(i,n){let r=(0,C.Big)(i);return r.eq(0)?(0,C.Big)(0):(0,C.Big)(r).div(er(n))}function we(i){return D((0,C.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function bt(i,{feeShare:n,decimals:r},a){let s=(0,C.Big)(i);if(s.lte(0))return"0";let o=s.times(n),c=s.minus(o),u=tn(c,r),A=(0,C.Big)(a.tokenBalance).plus(u),m=St(A,a.aValue,a.dValue);return(0,C.Big)(a.vUsdBalance).minus(m).round(0,C.Big.roundDown).toFixed()}function tr(i,{feeShare:n,decimals:r},a){let s=(0,C.Big)(i);if(s.lte(0))return(0,C.Big)(0).toFixed();let o=s.plus(a.vUsdBalance),c=St(o,a.aValue,a.dValue),u=We((0,C.Big)(a.tokenBalance).minus(c),r),A=(0,C.Big)(u).times(n);return(0,C.Big)(u).minus(A).round(0,C.Big.roundDown).toFixed()}function Ns(i,n){let r=(0,C.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=St(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function Ws(i,{feeShare:n,decimals:r},a){if((0,C.Big)(i).lte(0))return(0,C.Big)(0);let s=(0,C.Big)(a.vUsdBalance).minus(i);if(s.lte(0))throw new Tt;let o=St(s,a.aValue,a.dValue),c=(0,C.Big)(o).minus(a.tokenBalance),u=We(c,r),A=(0,C.Big)(n).div((0,C.Big)(1).minus(n)),m=(0,C.Big)(u).times(A).round(0,C.Big.roundUp);return(0,C.Big)(u).plus(m).round(0,C.Big.roundDown)}function Es(i,{feeShare:n,decimals:r},a){if((0,C.Big)(i).lte(0))return(0,C.Big)(0);let s=(0,C.Big)(n).div((0,C.Big)(1).minus(n)),o=(0,C.Big)(i).times(s).round(0,C.Big.roundUp),c=(0,C.Big)(i).plus(o),u=tn(c,r),A=(0,C.Big)(a.tokenBalance).minus(u);if(A.lte(0))throw new Tt;let m=St(A,a.aValue,a.dValue);return(0,C.Big)(m).minus(a.vUsdBalance).round(0,C.Big.roundDown)}function St(i,n,r){let a=(0,C.Big)(4).times(n).times((0,C.Big)(r).minus(i)).minus(r),s=(0,C.Big)(r).pow(3),o=a.pow(2),c=(0,C.Big)(i).times((0,C.Big)(i).times(o).plus((0,C.Big)(4).times(n).times(s))).sqrt().round(0,C.Big.roundDown),u=(0,C.Big)(8).times(n).times(i),A=a.times(i).plus(c).div(u).round(0,C.Big.roundDown);return A.eq(0)?(0,C.Big)(0):A.plus(1)}function Us(i,n,r,a){let s=new Er.default(i),o=new Er.default(r),c=new Er.default(n);return s.mul(o).shrn(a).sub(c).toString()}function js(i){return(0,C.Big)(i).gt(0)?`${Number((0,C.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Gs(i,n,r){let a=(0,C.Big)(n).times(r),s=(0,C.Big)(n).plus(r),o=(0,C.Big)(8).times(i).times(a).times(s),c=a.times((0,C.Big)(16).times(i).minus(4)).div(3),u=o.times(o),A=c.times(c).times(c),m=u.plus(A),d=(0,C.Big)(m).sqrt(),p=(0,C.Big)(Math.cbrt(+o.plus(d).toFixed())),T=(0,C.Big)(Math.cbrt(+o.minus(d).toFixed()));return p.plus(T).toFixed()}function kt(i,n,r){let a;switch(n){case"EVM":{a=_s(i);break}case"SOLANA":{a=new Vs.PublicKey(i).toBuffer();break}case"TRX":{a=eu(i);break}case"SRB":{a=new $s.Address(i).toBuffer();break}case"SUI":{a=_s(i);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function tt(i){return i.replace(/^0x/i,"")}function Zs(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function _s(i){let r=Zs(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function eu(i){let n=nr(i),r=Zs(n);return tu(r,32)}function nr(i){let n=Hi.utils.crypto.decodeBase58Address(i);return n?Hi.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function tu(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Ur(){return(0,zi.default)(32)}function Pt(){let i=(0,zi.default)(32).readBigInt64BE();return i<0?i*-1n:i}function wt(i,n){let r={},a=n.sourceToken;if(r.amount=G(n.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=n.fromAccountAddress,i==="SUI"){if(!a.originTokenAddress)throw new w("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=kt(a.tokenAddress,i,i);if(r.toAccountAddress=n.toAccountAddress,i==="SUI"){if(!n.destinationToken.originTokenAddress)throw new w("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=n.destinationToken.originTokenAddress}else r.toTokenAddress=kt(n.destinationToken.tokenAddress,i,i);return r.minimumReceiveAmount=n.minimumReceiveAmount?G(n.minimumReceiveAmount,n.destinationToken.decimals).toFixed():"0",r}async function nt(i,n,r){let a={};a.fromChainId=n.sourceToken.allbridgeChainId,a.fromChainSymbol=n.sourceToken.chainSymbol;let s=j.getChainProperty(n.destinationToken.chainSymbol).chainType;if(i==="SUI"){if(!n.sourceToken.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=n.sourceToken.originTokenAddress}else a.fromTokenAddress=n.sourceToken.tokenAddress;a.toChainId=n.destinationToken.allbridgeChainId,a.toTokenAddress=n.destinationToken.tokenAddress,n.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let o=n.sourceToken;switch(n.messenger){case 3:if(!o.cctpAddress||!n.destinationToken.cctpAddress)throw new ge("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress;break;case 4:if(!o.cctpV2Address||!n.destinationToken.cctpV2Address)throw new ge("Such route does not support CCTP V2 protocol");a.contractAddress=o.cctpV2Address;break;case 5:if(!o.oftBridgeAddress||!n.destinationToken.oftBridgeAddress||o.oftId!==n.destinationToken.oftId)throw new fe("Such route does not support OFT protocol");a.contractAddress=o.oftBridgeAddress;break;case 1:case 2:a.contractAddress=o.bridgeAddress;break}a.messenger=n.messenger,a.fromAccountAddress=n.fromAccountAddress,a.amount=G(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:u}=n;if(!c){let p=(await Qi(n.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!p)throw new hn;c=p.int,u="int"}if(u=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=G(c,j.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=G(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:A,extraGasFormat:m}=n;if(A&&+A>0){let d=await qi(o,n.destinationToken,a.messenger,r),p,T;switch(a.gasFeePaymentMethod){case"native":p=j.getChainDecimalsByType(o.chainType),T=(0,ve.Big)(d.exchangeRate);break;case"stablecoin":p=o.decimals,T=(0,ve.Big)(d.exchangeRate).div(d.sourceNativeTokenPrice);break}switch(m??"int"){case"float":{a.extraGas=G(A,p).toFixed(0);let b=T.mul(A);a.extraGasDest=G(b,j.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,ve.Big.roundDown);break}case"int":{a.extraGas=A;let b=D(a.extraGas,j.getChainDecimalsByType(o.chainType)),S=T.mul(b);a.extraGasDest=G(S,j.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,ve.Big.roundDown);break}}ru(a.extraGas,a.gasFeePaymentMethod,d)}return i!=="SUI"&&(a.fromTokenAddress=kt(a.fromTokenAddress,i,i)),a.toAccountAddress=kt(n.toAccountAddress,s,i),a.toTokenAddress=kt(a.toTokenAddress,s,i),a.gasFeePaymentMethod=="stablecoin"&&nu(a.amount,o.decimals,a.fee,a.extraGas),a}function nu(i,n,r,a){let s=(0,ve.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new Qt(`Amount not enough to pay fee, ${D((0,ve.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function Qi(i,n,r,a){let s=await a.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:n,messenger:r,sourceToken:i.tokenAddress}),o={native:{int:s.fee,float:D(s.fee,j.getChainDecimalsByType(i.chainType)).toFixed()},adminFeeShareWithExtras:s.adminFeeShareWithExtras};if(s.sourceNativeTokenPrice){let c=Le(new ve.Big(s.fee).mul(s.sourceNativeTokenPrice),j.getChainDecimalsByType(i.chainType),i.decimals).toFixed(0,ve.Big.roundUp);o.stablecoin={int:c,float:D(c,i.decimals).toFixed()}}return o}function ru(i,n,r){let a=r.extraGasMax[n];if(!a)throw new hn(`Impossible to pay extra gas by '${n}' payment method`);let s=a.int;if((0,ve.Big)(i).gt(s))throw new Kn(`Extra gas ${i} in int format, exceeded limit ${s} for '${n}' payment method`)}async function qi(i,n,r,a){let s={},o=await a.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:n.allbridgeChainId,messenger:r,sourceToken:i.tokenAddress}),c=n.txCostAmount.maxAmount,u=D(c,j.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,ve.Big)(u).div(o.exchangeRate).toFixed(j.getChainDecimalsByType(i.chainType),ve.Big.roundDown),m=G(A,j.getChainDecimalsByType(i.chainType)).toFixed(0);if(s.native={int:m,float:A},o.sourceNativeTokenPrice){let d=(0,ve.Big)(A).mul(o.sourceNativeTokenPrice).toFixed(i.decimals,ve.Big.roundDown);s.stablecoin={int:G(d,i.decimals).toFixed(0),float:d}}return{extraGasMax:s,destinationChain:{gasAmountMax:{int:c,float:u},swap:{int:n.txCostAmount.swap,float:D(n.txCostAmount.swap,j.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:D(n.txCostAmount.transfer,j.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:o.exchangeRate,sourceNativeTokenPrice:o.sourceNativeTokenPrice}}function Js(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Gr(i,n,r,a){let s,o=new ea.PublicKey(n),c=new ea.PublicKey(r),u=await et(o,c),A=$t(a,n);jr.setProvider(A);let m=await jr.Spl.token(A).account.token.fetchNullable(u);if(m?.authority.equals(o))s=kt(u.toBase58(),"SOLANA",i);else{let d=await A.connection.getTokenAccountsByOwner(o,{mint:c});if(d.value.length===0&&!m)s=kt(u.toBase58(),"SOLANA",i);else if(d.value.length>0){let p=d.value[0];if(!p?.pubkey)throw new w("First token account or its public key is undefined");s=kt(p.pubkey.toBase58(),"SOLANA",i)}else throw new w("Associated account has wrong owner")}return s}var Ee=class{};var ir=class extends Ee{constructor(r,a,s){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=s}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=wt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:u,toTokenAddress:A,minimumReceiveAmount:m}=r,p=this.getBridgeContract(s).methods.swap(a,c,A,u,m);return Promise.resolve({from:o,to:s,data:p.encodeABI()})}async buildRawTransactionSend(r){let a=await nt(this.chainType,r,this.api),{amount:s,contractAddress:o,fromAccountAddress:c,fromTokenAddress:u,toChainId:A,toAccountAddress:m,toTokenAddress:d,messenger:p,fee:T,gasFeePaymentMethod:b,extraGas:S,extraGasDest:I}=a,v="0x"+Ur().toString("hex"),B,F,O=T;switch(S&&(O=(0,Ls.Big)(O).plus(S).toFixed()),p){case 3:case 4:{let J=await this.buildRawTransactionCctpSend(r,a,O);B=J.sendMethod,F=J.value;break}case 5:{let J=this.buildRawTransactionOftSend(r,a,O,I);B=J.sendMethod,F=J.value;break}case 1:case 2:{let J=this.getBridgeContract(o);b==="stablecoin"?(B=J.methods.swapAndBridge(u,s,m,A,d,v,p,O),F="0"):(B=J.methods.swapAndBridge(u,s,m,A,d,v,p,0),F=O)}break}return Promise.resolve({from:c,to:o,value:F,data:B.encodeABI()})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,contractAddress:c,toChainId:u,toAccountAddress:A,gasFeePaymentMethod:m}=a,d=this.getCctpBridgeContract(c),p,T;if(r.destinationToken.chainType==="SOLANA"){let b=await Gr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));m==="stablecoin"?(p=d.methods.bridgeWithWalletAddress(o,b,A,u,s),T="0"):(p=d.methods.bridgeWithWalletAddress(o,b,A,u,0),T=s)}else m==="stablecoin"?(p=d.methods.bridge(o,A,u,s),T="0"):(p=d.methods.bridge(o,A,u,0),T=s);return{sendMethod:p,value:T}}buildRawTransactionOftSend(r,a,s,o){let{amount:c,contractAddress:u,toChainId:A,toAccountAddress:m,gasFeePaymentMethod:d}=a,p=this.getOftBridgeContract(u),T,b;return d==="stablecoin"?(T=p.methods.bridge(r.sourceToken.tokenAddress,c,m,A,s,o??"0","10"),b="0"):(T=p.methods.bridge(r.sourceToken.tokenAddress,c,m,A,0,o??"0","10"),b=s),{sendMethod:T,value:b}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...r,gas:a,...s});return{txId:o.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(ws.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Cs.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Is.abi,r)}};var _r=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){let a,s;r?(a=n,s=r):s=n;let o=ar(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},a)}async send(n,r){return Y(n.amount),K("amount",n.amount,n.sourceToken.decimals),Js(n)?Vr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Vr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var re=require("@project-serum/anchor"),X=require("@solana/web3.js"),Xe=require("big.js");var sr={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var Xs={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var Ys=require("@project-serum/anchor"),Ks=ce(require("big.js")),or=require("web3");async function wn(i,n){return await Ys.Spl.token(n).account.token.fetch(i)}async function Hs(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,Ks.default)(a.feeShareBp.toString()).div(1e4).toFixed(),c={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return bt(i,{decimals:s,feeShare:o},c)}function zs(i){let n=i.amount,r="0x"+i.recipient.toString("hex"),a=i.sourceChainId,s=i.destinationChainId,o="0x"+i.receiveToken.toString("hex"),c="0x"+i.nonce.toString("hex"),u=1,A="0x"+i.chainBridge.toString("hex"),m=or.Web3.utils.encodePacked({t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:o},{t:"uint256",v:c},{t:"uint8",v:u});if(!m)throw new w("message cannot be undefined");let d=or.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),p=Buffer.from(d.replace("0x",""),"hex");p[0]=a,p[1]=s;let T=or.Web3.utils.encodePacked({t:"bytes32",v:"0x"+p.toString("hex")},{t:"bytes32",v:A});if(!T)throw new qt("messageWithSigner cannot be undefined");let b=or.Web3.utils.keccak256(Buffer.from(T.replace("0x",""),"hex")),S=Buffer.from(b.replace("0x",""),"hex");return S[0]=p[0],S[1]=p[1],S}var Ue=require("@solana/web3.js"),Qs=require("big.js");var ta=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new ta.AddressLookupTableAccount({key:r.accountKey,state:ta.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new w("Cannot get AccountInfo");return a.data}))})))}var $r="AUTO";async function Cn(i,n,r){let a=new Ue.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await eo(i.instructions,s,n,a)}async function qs(i,n,r){let a=new Ue.Connection(r,"confirmed"),s=await nn(i,a),o=Ue.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:s});if(i.serialize().length>1232)throw new Qn;await eo(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function eo(i,n,r,a){if(n>0){let s=iu(n,i);if(r?.solana){let o=r.solana;if(o===$r)await na(i,a);else if("pricePerUnitInMicroLamports"in o)await na(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,Qs.Big)(o.extraFeeInLamports).div(s).mul(er(6)).toFixed(0);await na(i,a,c)}}}}function iu(i,n){let r=n.findIndex(o=>o.programId.equals(Ue.ComputeBudgetProgram.programId)&&Ue.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),a=Number((i*1.3).toFixed(0)),s=Ue.ComputeBudgetProgram.setComputeUnitLimit({units:a});return r>=0?n[r]=s:n.push(s),a.toString()}async function na(i,n,r){let a=i.findIndex(c=>c.programId.equals(Ue.ComputeBudgetProgram.programId)&&Ue.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await au(n)),o=Ue.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function au(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var to=require("@solana/spl-token"),rn=require("@solana/web3.js"),In=ce(require("axios"));var Zr=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(n,r){this.connection=new rn.Connection(n),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(n,r,a,s){let o;try{let p=s?"ExactOut":"ExactIn",T=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${to.NATIVE_MINT.toString()}&amount=${a}&swapMode=${p}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(T+=`&maxAccounts=${this.maxAccounts}`),o=await In.default.get(T,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(p){throw p instanceof In.AxiosError&&p.response&&p.response.data&&p.response.data.error?new de(p.response.data.error):new de("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new de("Cannot get inAmount");let u;try{u=await In.default.post(`${this.jupiterUrl}/swap`,{quoteResponse:o.data,userPublicKey:n,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(p){throw p instanceof In.AxiosError&&p.response&&p.response.data&&p.response.data.error?new de(p.response.data.error):new de("Cannot get swap transaction")}let A;if(u?.data?.swapTransaction)A=u.data.swapTransaction;else throw new de("Cannot get swap transaction");let m=Buffer.from(A,"base64"),d=rn.VersionedTransaction.deserialize(m);return s?{tx:d,amountIn:c}:{tx:d}}async amendJupiterWithSdkTx(n,r){try{let a=await nn(n,this.connection),s=await nn(r,this.connection),o=rn.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:a}),c=rn.TransactionMessage.decompile(r.message,{addressLookupTableAccounts:s});if(c.instructions.shift(),o.instructions.push(...c.instructions),a.push(...s),n.message=o.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&n.signatures.length===1){let u=r.signatures[0];if(!u)throw new w("Signature is undefined");n.signatures.push(u)}return n}catch(a){throw a instanceof Error&&a.message?new de(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new de("Some error occurred during creation final swap and bridge transaction")}}};var ra=1e6,no=1.1,Jr=class extends Ee{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new Zr(r,a.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=wt(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,s,o){let{fromAccountAddress:c,amount:u,contractAddress:A,fromTokenAddress:m,toTokenAddress:d,toAccountAddress:p,minimumReceiveAmount:T}=r,b=c,S=A,I=m,v=d,B=s,F=p,O=new X.PublicKey(b),J=$t(this.solanaRpcUrl,O.toString()),H=new re.Program(sr,S,J),Z=await Sn(H.programId),xe=await Vt(H.programId),oe=new X.PublicKey(I),pt=await Pn(oe,H.programId),gt=new X.PublicKey(a),Rt=await et(O,oe),ze=new X.PublicKey(F),Be=new X.PublicKey(v),Je=await Pn(Be,H.programId),Qe=new X.PublicKey(B),Fe=await et(ze,Be),ft=[re.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ra})];try{await wn(Fe,J)}catch{let jc=await re.Spl.associatedToken(J).methods.create().accounts({mint:Be,owner:ze,associatedAccount:Fe}).instruction();ft.push(jc)}let yt=await H.methods.swap(new re.BN(u),new re.BN(T||0)).accounts({payer:O,config:xe,bridgeAuthority:Z,user:O,sendBridgeToken:pt,sendMint:oe,sendPool:gt,sendUserToken:Rt,receiveBridgeToken:Je,receiveMint:Be,receivePool:Qe,receiveUserToken:Fe}).preInstructions(ft).transaction(),qe=J.connection;return yt.recentBlockhash=(await qe.getLatestBlockhash()).blockhash,yt.feePayer=O,await Cn(yt,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(yt,qe)}async buildRawTransactionSend(r){let a=await nt(this.chainType,r,this.api),s=this.addPoolAddress(r,a),o=s.gasFeePaymentMethod=="stablecoin",c;if(o)try{let{tx:m,solTxSendUpdatedParams:d}=await this.processJup(s,r,!0);c=m,s={...s,...d}}catch{try{let{tx:d,solTxSendUpdatedParams:p}=await this.processJup(s,r,!1);c=d,s={...s,...p}}catch(d){throw d instanceof ne?d:d instanceof Error&&d.message?new de(`Some error occurred during creation Jupiter swap transaction. ${d.message}`):new de("Some error occurred during creation Jupiter swap transaction")}}let u,A;switch(a.messenger){case 1:{let m=await this.prepareSwapAndBridgeData(s);u=await this.buildSwapAndBridgeAllbridgeTransaction(m);break}case 2:{let m=await this.prepareSwapAndBridgeData(s),{transaction:d,messageAccount:p}=await this.buildSwapAndBridgeWormholeTransaction(m);u=d,A=p;break}case 3:case 4:{let m=await this.prepareSwapAndBridgeCctpData(s),{transaction:d,messageSentEventDataKeypair:p}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,m);u=d,A=p;break}case 5:throw new fe("Messenger OFT is not supported yet.")}if(o){if(!c)throw new de("Swap tx is absent");u=await this.jupiterService.amendJupiterWithSdkTx(c,u)}return await qs(u,r.txFeeParams,this.solanaRpcUrl),A&&u.sign([A]),u}async processJup(r,a,s){let{fee:o,extraGas:c,gasFeePaymentMethod:u}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken,r),A=s?(0,Xe.Big)(o):(0,Xe.Big)(r.fee);c&&(A=A.plus(c)),s||(A=A.mul(no));let{tx:m,amountIn:d}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,A.toFixed(0),s),p;if(s){if(!d)throw new de("Cannot get inAmount");p=(0,Xe.Big)(r.amount).minus((0,Xe.Big)(d).mul(no)).toFixed(0)}else p=(0,Xe.Big)(r.amount).minus(A).toFixed(0);if((0,Xe.Big)(p).lte(0))throw new Qt(`Amount not enough to pay fee, ${D((0,Xe.Big)(p).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:m,solTxSendUpdatedParams:{amount:p,fee:o,extraGas:c,gasFeePaymentMethod:u}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger,sourceToken:r.tokenAddress})).sourceNativeTokenPrice,o=(0,Xe.Big)(a.fee).div(s).mul((0,Xe.Big)(10).pow(j.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),c;return a.extraGas&&(c=(0,Xe.Big)(a.extraGas).div(s).mul((0,Xe.Big)(10).pow(j.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0)),{fee:o,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,s){return re.web3.SystemProgram.transfer({fromPubkey:a,toPubkey:s,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:s,fromChainId:o,fromAccountAddress:c,fromTokenAddress:u,toChainId:A,toAccountAddress:m,toTokenAddress:d,poolAddress:p,extraGas:T}=r,b=u,S=c,I=A,v=d,B=m,F=s,O=o,J=$t(this.solanaRpcUrl,S),H=new re.Program(sr,F,J),Z=Array.from(Ur()),xe=new X.PublicKey(p),oe=await Hs(a,H,xe),pt=await Bs(Z,H.programId),gt=await Sn(H.programId),Rt=await et(new X.PublicKey(S),new X.PublicKey(b)),ze=await Pn(new X.PublicKey(b),H.programId),Be=await Li(I,H.programId),Je=await Rs(I,Buffer.from(v),H.programId),Qe=await Vt(H.programId),Fe=await H.account.config.fetch(Qe),ft=await qn(I,Fe.gasOracleProgramId),yt=await qn(O,Fe.gasOracleProgramId),qe=zs({amount:oe,recipient:Buffer.from(B),nonce:Buffer.from(Z),receiveToken:Buffer.from(v),destinationChainId:I,sourceChainId:O,chainBridge:(await Sn(H.programId)).toBuffer()}),L={};return L.bridge=H,L.amount=new re.BN(a),L.vusdAmount=new re.BN(oe),L.nonce=Z,L.recipient=Array.from(B),L.receiveToken=Array.from(v),L.poolAccount=xe,L.lockAccount=pt,L.bridgeAuthority=gt,L.userToken=Rt,L.bridgeTokenAccount=ze,L.chainBridgeAccount=Be,L.otherBridgeTokenAccount=Je,L.userAccount=new X.PublicKey(S),L.destinationChainId=I,L.mint=new X.PublicKey(b),L.config=Qe,L.configAccountInfo=Fe,L.gasPrice=ft,L.thisGasPrice=yt,L.message=qe,T&&(L.extraGasInstruction=this.getExtraGasInstruction(T,L.userAccount,Qe)),L}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:u,poolAccount:A,lockAccount:m,bridgeAuthority:d,userToken:p,bridgeTokenAccount:T,chainBridgeAccount:b,otherBridgeTokenAccount:S,userAccount:I,destinationChainId:v,mint:B,config:F,configAccountInfo:O,gasPrice:J,thisGasPrice:H,message:Z,extraGasInstruction:xe}=r,oe=O.allbridgeMessengerProgramId,pt=await Xi(v,oe),gt=await Vt(oe),Rt=await ks(Z,oe),ze=[];xe&&ze.push(xe);let Be=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:v,recipient:c,receiveToken:u}).accounts({mint:B,user:I,config:F,lock:m,pool:A,gasPrice:J,thisGasPrice:H,bridgeAuthority:d,userToken:p,bridgeToken:T,chainBridge:b,messenger:oe,messengerGasUsage:pt,messengerConfig:gt,sentMessageAccount:Rt,otherBridgeToken:S}).preInstructions([re.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ra})]).postInstructions(ze).transaction(),Je=$t(this.solanaRpcUrl,I.toString()).connection;return Be.recentBlockhash=(await Je.getLatestBlockhash()).blockhash,Be.feePayer=I,await this.convertToVersionedTransaction(Be,Je)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new X.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new w("Cannot find allbridgeLookupTableAccount");let o=new re.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new re.web3.VersionedTransaction(o)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:u,poolAccount:A,lockAccount:m,bridgeAuthority:d,userToken:p,bridgeTokenAccount:T,chainBridgeAccount:b,otherBridgeTokenAccount:S,userAccount:I,destinationChainId:v,mint:B,config:F,configAccountInfo:O,gasPrice:J,thisGasPrice:H,message:Z,extraGasInstruction:xe}=r,oe=this.params.wormholeMessengerProgramId,[pt]=X.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new X.PublicKey(oe)),[gt]=X.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new X.PublicKey(oe)),[Rt]=X.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),d.toBuffer()],new X.PublicKey(oe)),ze=await Xi(v,O.wormholeMessengerProgramId),Be=await Vt(O.wormholeMessengerProgramId),Je=X.Keypair.generate(),Qe=$t(this.solanaRpcUrl,I.toString()),Fe=await Qe.connection.getAccountInfo(pt);if(Fe==null)throw new w("Cannot fetch wormhole bridge account info");let ft=new re.BN(Fe.data.slice(16,24),"le").toString(),yt=X.SystemProgram.transfer({fromPubkey:I,toPubkey:gt,lamports:+ft}),qe=[];xe&&qe.push(xe);let L={mint:B,user:I,config:F,lock:m,pool:A,gasPrice:J,thisGasPrice:H,bridgeAuthority:d,userToken:p,bridgeToken:T,chainBridge:b,otherBridgeToken:S,messengerGasUsage:ze,wormholeProgram:oe,bridge:pt,message:Je.publicKey,wormholeMessenger:O.wormholeMessengerProgramId,sequence:Rt,feeCollector:gt,wormholeMessengerConfig:Be,clock:re.web3.SYSVAR_CLOCK_PUBKEY},xr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:v,recipient:c,receiveToken:u}).accounts(L).preInstructions([re.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ra}),yt]).postInstructions(qe).signers([Je]).transaction();return xr.recentBlockhash=(await Qe.connection.getLatestBlockhash()).blockhash,xr.feePayer=I,{transaction:await this.convertToVersionedTransaction(xr,Qe.connection),messageAccount:Je}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:u,toAccountAddress:A,toTokenAddress:m,extraGas:d}=r,p=a;if(!p)throw new ge("Such route does not support CCTP protocol");let T=4,b=o,S=m,I=A,v=$t(this.solanaRpcUrl,b),B=new re.Program(Xs,p,v),F=new X.PublicKey(c),O=await Ms(F,B.programId),J=new X.PublicKey(b),H=await B.account.cctpBridge.fetch(O),Z={};return Z.cctpBridge=B,Z.cctpBridgeAccount=O,Z.cctpAddressAccount=new X.PublicKey(p),Z.amount=new re.BN(s),Z.recipient=Array.from(I),Z.receiveToken=Array.from(S),Z.userToken=await et(J,F),Z.bridgeAuthority=await vs(O,B.programId),Z.bridgeTokenAccount=await Os(F,B.programId),Z.chainBridgeAccount=await Li(u,B.programId),Z.userAccount=J,Z.destinationChainId=u,Z.mint=F,Z.gasPrice=await qn(u,H.gasOracleProgramId),Z.thisGasPrice=await qn(T,H.gasOracleProgramId),Z.provider=v,d&&(Z.extraGasInstruction=this.getExtraGasInstruction(d,Z.userAccount,O)),Z}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:s,cctpBridgeAccount:o,amount:c,recipient:u,receiveToken:A,bridgeAuthority:m,userToken:d,bridgeTokenAccount:p,chainBridgeAccount:T,userAccount:b,destinationChainId:S,mint:I,gasPrice:v,thisGasPrice:B,extraGasInstruction:F,provider:O}=a,J=this.params.cctpParams.cctpDomains[r],H=this.params.cctpParams.cctpTransmitterProgramId,Z=this.params.cctpParams.cctpTokenMessengerMinter;if(J==null||!H||!Z)throw new w("CCTP is not configured");let xe=new X.PublicKey(H),oe=new X.PublicKey(Z),{messageTransmitterAccount:pt,tokenMessenger:gt,tokenMessengerEventAuthority:Rt,tokenMinter:ze,localToken:Be,remoteTokenMessengerKey:Je,authorityPda:Qe}=Fs(J,I,xe,oe),Fe=[];F&&Fe.push(F);let ft=X.Keypair.generate(),yt=xs(s.programId,ft.publicKey),qe=await s.methods.bridge({amount:c,destinationChainId:S,recipient:u,receiveToken:A}).accounts({mint:I,user:b,cctpBridge:o,messageSentEventData:ft.publicKey,lock:yt,cctpMessenger:oe,messageTransmitterProgram:xe,messageTransmitterAccount:pt,tokenMessenger:gt,tokenMinter:ze,localToken:Be,remoteTokenMessengerKey:Je,authorityPda:Qe,eventAuthority:Rt,bridgeToken:p,gasPrice:v,thisGasPrice:B,chainBridge:T,userToken:d,bridgeAuthority:m}).preInstructions([re.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Fe).transaction(),L=O.connection;return qe.recentBlockhash=(await L.getLatestBlockhash()).blockhash,qe.feePayer=b,{transaction:await this.convertToVersionedTransaction(qe,L),messageSentEventDataKeypair:ft}}send(r){throw new ue}};var Lr=require("@stellar/stellar-sdk"),ro=require("big.js");var t=require("@stellar/stellar-sdk"),su=t.contract.Spec,ou=t.contract.Client;var cr=class extends ou{constructor(r){super(new su(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Xr=class extends Ee{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";async buildRawTransactionSend(r){let a=await nt(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:u,toAccountAddress:A,toTokenAddress:m,fee:d,gasFeePaymentMethod:p,extraGas:T}=r,b=d;T&&(b=(0,ro.Big)(b).plus(T).toFixed());let S=this.getContract(cr,s,o),I;return p==="stablecoin"?I=await S.swap_and_bridge({sender:o,token:Lr.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(A),destination_chain_id:+u,receive_token:Buffer.from(m),nonce:Pt(),gas_amount:BigInt(0),fee_token_amount:BigInt(b)}):I=await S.swap_and_bridge({sender:o,token:Lr.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(A),destination_chain_id:+u,receive_token:Buffer.from(m),nonce:Pt(),gas_amount:BigInt(b),fee_token_amount:BigInt(0)}),I.toXDR()}async buildRawTransactionSwap(r){let a=wt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:u,toTokenAddress:A,minimumReceiveAmount:m}=r;return(await this.getContract(cr,s,o).swap({sender:o,amount:BigInt(a),token:Lr.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(A),recipient:u,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ue}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var io="1.18.0",ao="1.40.0";var cu={"-32700":"ParseError","-32701":"OversizedRequest","-32702":"OversizedResponse","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError","-32604":"ServerBusy","-32000":"CallExecutionFailed","-32001":"UnknownError","-32003":"SubscriptionClosed","-32004":"SubscriptionClosedWithError","-32005":"BatchesNotSupported","-32006":"TooManySubscriptions","-32050":"TransientError","-32002":"TransactionExecutionClientError"},Yr=class extends Error{},Bn=class extends Yr{constructor(n,r){super(n),this.code=r,this.type=cu[r]??"ServerError"}},Kr=class extends Yr{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var so=i=>{throw TypeError(i)},aa=(i,n,r)=>n.has(i)||so("Cannot "+r),ie=(i,n,r)=>(aa(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?so("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),vn=(i,n,r,a)=>(aa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),oo=(i,n,r)=>(aa(i,n,"access private method"),r),uu=(i,n,r,a)=>({set _(s){vn(i,n,s,r)},get _(){return ie(i,n,a)}}),sn,ur,Mt,on,Ar,Rn,Hr,co,uo;function Au(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var mu={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},zr=class{constructor(n,r={}){if(an(this,Hr),an(this,sn,0),an(this,ur,0),an(this,Mt,null),an(this,on,null),an(this,Ar,new Set),an(this,Rn,new Map),this.endpoint=n,this.options={...mu,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=Au(this.endpoint))}async makeRequest(n,r){let a=await oo(this,Hr,co).call(this);return new Promise((s,o)=>{vn(this,sn,ie(this,sn)+1),ie(this,Rn).set(ie(this,sn),{resolve:s,reject:o,timeout:setTimeout(()=>{ie(this,Rn).delete(ie(this,sn)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:ie(this,sn),method:n,params:r}))}).then(({error:s,result:o})=>{if(s)throw new Bn(s.message,s.code);return o})}async subscribe(n){let r=new ia(n);return ie(this,Ar).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;ur=new WeakMap;Mt=new WeakMap;on=new WeakMap;Ar=new WeakMap;Rn=new WeakMap;Hr=new WeakSet;co=function(){return ie(this,on)?ie(this,on):(vn(this,on,new Promise(i=>{ie(this,Mt)?.close(),vn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),ie(this,Mt).addEventListener("open",()=>{vn(this,ur,0),i(ie(this,Mt))}),ie(this,Mt).addEventListener("close",()=>{uu(this,ur)._++,ie(this,ur)<=this.options.maxReconnects&&setTimeout(()=>{oo(this,Hr,uo).call(this)},this.options.reconnectTimeout)}),ie(this,Mt).addEventListener("message",({data:n})=>{let r;try{r=JSON.parse(n)}catch(a){console.error(new Error(`Failed to parse RPC message: ${n}`,{cause:a}));return}if("id"in r&&r.id!=null&&ie(this,Rn).has(r.id)){let{resolve:a,timeout:s}=ie(this,Rn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;ie(this,Ar).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),ie(this,on))};uo=async function(){return ie(this,Mt)?.close(),vn(this,on,null),Promise.allSettled([...ie(this,Ar)].map(i=>i.subscribe(this)))};var ia=class{constructor(n){this.subscriptionId=null,this.subscribed=!1,this.input=n}onMessage(n){this.subscribed&&this.input.onMessage(n)}async unsubscribe(n){let{subscriptionId:r}=this;return this.subscribed=!1,r==null?!1:(this.subscriptionId=null,n.makeRequest(this.input.unsubscribe,[r]))}async subscribe(n){this.subscriptionId=null,this.subscribed=!0;let r=await n.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=r)}};var Ao=i=>{throw TypeError(i)},ca=(i,n,r)=>n.has(i)||Ao("Cannot "+r),Ye=(i,n,r)=>(ca(i,n,"read from private field"),r?r.call(i):n.get(i)),Qr=(i,n,r)=>n.has(i)?Ao("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),sa=(i,n,r,a)=>(ca(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),du=(i,n,r)=>(ca(i,n,"access private method"),r),mr,rt,dr,oa,mo,qr=class{constructor(n){Qr(this,oa),Qr(this,mr,0),Qr(this,rt),Qr(this,dr),sa(this,rt,n)}fetch(n,r){let a=Ye(this,rt).fetch??fetch;if(!a)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return a(n,r)}async request(n){sa(this,mr,Ye(this,mr)+1);let r=await this.fetch(Ye(this,rt).rpc?.url??Ye(this,rt).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":io,"Client-Target-Api-Version":ao,"Client-Request-Method":n.method,...Ye(this,rt).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Ye(this,mr),method:n.method,params:n.params})});if(!r.ok)throw new Kr(`Unexpected status code: ${r.status}`,r.status,r.statusText);let a=await r.json();if("error"in a&&a.error!=null)throw new Bn(a.error.message,a.error.code);return a.result}async subscribe(n){let r=await du(this,oa,mo).call(this).subscribe(n);return async()=>!!await r()}};mr=new WeakMap;rt=new WeakMap;dr=new WeakMap;oa=new WeakSet;mo=function(){if(!Ye(this,dr)){let i=Ye(this,rt).WebSocketConstructor??WebSocket;if(!i)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");sa(this,dr,new zr(Ye(this,rt).websocket?.url??Ye(this,rt).url,{WebSocketConstructor:i,...Ye(this,rt).websocket}))}return Ye(this,dr)};var Wt=require("@mysten/bcs");le();ke();var _=require("@mysten/bcs");var Nu=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,Wu=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function Po(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!Nu.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!Wu.test(r))throw new Error(`Invalid SuiNS name ${i}`);a=r.split(".").slice(0,-1)}return n==="dot"?`${a.join(".")}.sui`:`${a.slice(0,-1).join(".")}@${a[a.length-1]}`}ke();var Eu=BigInt(1e9),Wa="0x1",ri="0x2";var ii=Re("0x6");var Ea=`${ri}::sui::SUI`,Uu=Re("0x5");ke();var ju="object",Gu="ID",_u="ascii",Vu="String",$u="string",Zu="String",Ju="option",Lu="Option";function wo(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&x(n.package)===x("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function ai(i){if(typeof i=="string")switch(i){case"address":return h.Address;case"bool":return h.Bool;case"u8":return h.U8;case"u16":return h.U16;case"u32":return h.U32;case"u64":return h.U64;case"u128":return h.U128;case"u256":return h.U256;default:throw new Error(`Unknown type signature ${i}`)}if("vector"in i){if(i.vector==="u8")return h.vector(h.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});let n=ai(i.vector);return n?h.vector(n):null}if("datatype"in i){let n=x(i.datatype.package);if(n===x(Wa)){if(i.datatype.module===_u&&i.datatype.type===Vu)return h.String;if(i.datatype.module===$u&&i.datatype.type===Zu)return h.String;if(i.datatype.module===Ju&&i.datatype.type===Lu){let r=ai(i.datatype.typeParameters[0]);return r?h.vector(r):null}}if(n===x(ri)&&i.datatype.module===ju&&i.datatype.type===Gu)return h.Address}return null}function Co(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:gr(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:gr(i.MutableReference)}:{ref:null,body:gr(i)}}function gr(i){if(typeof i=="string")switch(i){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${i}`)}if("Vector"in i)return{vector:gr(i.Vector)};if("Struct"in i)return{datatype:{package:i.Struct.address,module:i.Struct.module,type:i.Struct.name,typeParameters:i.Struct.typeArguments.map(gr)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var Io=require("@mysten/bcs");ke();function Xu(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,Io.toBase64)(i):i.toBase64()}}}var Oe={Pure:Xu,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:x(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:x(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:x(i)}}}}};var _a=require("@mysten/bcs"),ot=require("valibot");ke();var g=require("valibot");ke();function Lt(i){let n=Object.entries(i).map(([r,a])=>(0,g.object)({[r]:a}));return(0,g.pipe)((0,g.union)(n),(0,g.transform)(r=>({...r,$kind:Object.keys(r)[0]})))}var cn=(0,g.pipe)((0,g.string)(),(0,g.transform)(i=>x(i)),(0,g.check)(je)),Ce=cn,Jt=(0,g.string)(),be=(0,g.pipe)((0,g.union)([(0,g.string)(),(0,g.pipe)((0,g.number)(),(0,g.integer)())]),(0,g.check)(i=>{try{return BigInt(i),BigInt(i)>=0&&BigInt(i)<=18446744073709551615n}catch{return!1}},"Invalid u64")),st=(0,g.object)({objectId:cn,version:be,digest:(0,g.string)()}),z=(0,g.pipe)((0,g.union)([(0,g.object)({GasCoin:(0,g.literal)(!0)}),(0,g.object)({Input:(0,g.pipe)((0,g.number)(),(0,g.integer)()),type:(0,g.optional)((0,g.literal)("pure"))}),(0,g.object)({Input:(0,g.pipe)((0,g.number)(),(0,g.integer)()),type:(0,g.optional)((0,g.literal)("object"))}),(0,g.object)({Result:(0,g.pipe)((0,g.number)(),(0,g.integer)())}),(0,g.object)({NestedResult:(0,g.tuple)([(0,g.pipe)((0,g.number)(),(0,g.integer)()),(0,g.pipe)((0,g.number)(),(0,g.integer)())])})]),(0,g.transform)(i=>({...i,$kind:Object.keys(i)[0]}))),Yu=(0,g.object)({budget:(0,g.nullable)(be),price:(0,g.nullable)(be),owner:(0,g.nullable)(cn),payment:(0,g.nullable)((0,g.array)(st))}),vp=(0,g.object)({address:(0,g.string)(),module:(0,g.string)(),name:(0,g.string)(),typeParams:(0,g.array)((0,g.string)())}),Ua=(0,g.union)([(0,g.literal)("address"),(0,g.literal)("bool"),(0,g.literal)("u8"),(0,g.literal)("u16"),(0,g.literal)("u32"),(0,g.literal)("u64"),(0,g.literal)("u128"),(0,g.literal)("u256"),(0,g.object)({vector:(0,g.lazy)(()=>Ua)}),(0,g.object)({datatype:(0,g.object)({package:(0,g.string)(),module:(0,g.string)(),type:(0,g.string)(),typeParameters:(0,g.array)((0,g.lazy)(()=>Ua))})}),(0,g.object)({typeParameter:(0,g.pipe)((0,g.number)(),(0,g.integer)())})]),Ku=(0,g.object)({ref:(0,g.nullable)((0,g.union)([(0,g.literal)("&"),(0,g.literal)("&mut")])),body:Ua}),Hu=(0,g.object)({package:Ce,module:(0,g.string)(),function:(0,g.string)(),typeArguments:(0,g.array)((0,g.string)()),arguments:(0,g.array)(z),_argumentTypes:(0,g.optional)((0,g.nullable)((0,g.array)(Ku)))}),zu=(0,g.object)({name:(0,g.string)(),inputs:(0,g.record)((0,g.string)(),(0,g.union)([z,(0,g.array)(z)])),data:(0,g.record)((0,g.string)(),(0,g.unknown)())}),Qu=Lt({MoveCall:Hu,TransferObjects:(0,g.object)({objects:(0,g.array)(z),address:z}),SplitCoins:(0,g.object)({coin:z,amounts:(0,g.array)(z)}),MergeCoins:(0,g.object)({destination:z,sources:(0,g.array)(z)}),Publish:(0,g.object)({modules:(0,g.array)(Jt),dependencies:(0,g.array)(Ce)}),MakeMoveVec:(0,g.object)({type:(0,g.nullable)((0,g.string)()),elements:(0,g.array)(z)}),Upgrade:(0,g.object)({modules:(0,g.array)(Jt),dependencies:(0,g.array)(Ce),package:Ce,ticket:z}),$Intent:zu}),Bo=Lt({ImmOrOwnedObject:st,SharedObject:(0,g.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,g.boolean)()}),Receiving:st}),qu=Lt({Object:Bo,Pure:(0,g.object)({bytes:Jt}),UnresolvedPure:(0,g.object)({value:(0,g.unknown)()}),UnresolvedObject:(0,g.object)({objectId:Ce,version:(0,g.optional)((0,g.nullable)(be)),digest:(0,g.optional)((0,g.nullable)((0,g.string)())),initialSharedVersion:(0,g.optional)((0,g.nullable)(be))})}),ja=Lt({Object:Bo,Pure:(0,g.object)({bytes:Jt})}),Ga=Lt({None:(0,g.literal)(!0),Epoch:be}),On=(0,g.object)({version:(0,g.literal)(2),sender:(0,g.nullish)(cn),expiration:(0,g.nullish)(Ga),gasData:Yu,inputs:(0,g.array)(qu),commands:(0,g.array)(Qu)});var _e={MoveCall(i){let[n,r="",a=""]="target"in i?i.target.split("::"):[i.package,i.module,i.function];return{$kind:"MoveCall",MoveCall:{package:n,module:r,function:a,typeArguments:i.typeArguments??[],arguments:i.arguments??[]}}},TransferObjects(i,n){return{$kind:"TransferObjects",TransferObjects:{objects:i.map(r=>(0,ot.parse)(z,r)),address:(0,ot.parse)(z,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,ot.parse)(z,i),amounts:n.map(r=>(0,ot.parse)(z,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,ot.parse)(z,i),sources:n.map(r=>(0,ot.parse)(z,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,_a.toBase64)(new Uint8Array(r))),dependencies:n.map(r=>Re(r))}}},Upgrade({modules:i,dependencies:n,package:r,ticket:a}){return{$kind:"Upgrade",Upgrade:{modules:i.map(s=>typeof s=="string"?s:(0,_a.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Re(s)),package:r,ticket:(0,ot.parse)(z,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,ot.parse)(z,r))}}},Intent({name:i,inputs:n={},data:r={}}){return{$kind:"$Intent",$Intent:{name:i,inputs:Object.fromEntries(Object.entries(n).map(([a,s])=>[a,Array.isArray(s)?s.map(o=>(0,ot.parse)(z,o)):(0,ot.parse)(z,s)])),data:r}}}};var xn=require("@mysten/bcs"),Ct=require("valibot");ke();var Xt=require("@mysten/bcs"),l=require("valibot");le();var Va=(0,l.object)({digest:(0,l.string)(),objectId:(0,l.string)(),version:(0,l.union)([(0,l.pipe)((0,l.number)(),(0,l.integer)()),(0,l.string)(),(0,l.bigint)()])}),eA=Lt({ImmOrOwned:Va,Shared:(0,l.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,l.boolean)()}),Receiving:Va}),vo=Lt({Object:eA,Pure:(0,l.array)((0,l.pipe)((0,l.number)(),(0,l.integer)()))}),ko=(0,l.union)([(0,l.object)({kind:(0,l.literal)("Input"),index:(0,l.pipe)((0,l.number)(),(0,l.integer)()),value:(0,l.unknown)(),type:(0,l.optional)((0,l.literal)("object"))}),(0,l.object)({kind:(0,l.literal)("Input"),index:(0,l.pipe)((0,l.number)(),(0,l.integer)()),value:(0,l.unknown)(),type:(0,l.literal)("pure")})]),tA=(0,l.union)([(0,l.object)({Epoch:(0,l.pipe)((0,l.number)(),(0,l.integer)())}),(0,l.object)({None:(0,l.nullable)((0,l.literal)(!0))})]),Ro=(0,l.pipe)((0,l.union)([(0,l.number)(),(0,l.string)(),(0,l.bigint)()]),(0,l.check)(i=>{if(!["string","number","bigint"].includes(typeof i))return!1;try{return BigInt(i),!0}catch{return!1}})),$a=(0,l.union)([(0,l.object)({bool:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({u8:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({u64:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({u128:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({address:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({signer:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({vector:(0,l.lazy)(()=>$a)}),(0,l.object)({struct:(0,l.lazy)(()=>nA)}),(0,l.object)({u16:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({u32:(0,l.nullable)((0,l.literal)(!0))}),(0,l.object)({u256:(0,l.nullable)((0,l.literal)(!0))})]),nA=(0,l.object)({address:(0,l.string)(),module:(0,l.string)(),name:(0,l.string)(),typeParams:(0,l.array)($a)}),rA=(0,l.object)({budget:(0,l.optional)(Ro),price:(0,l.optional)(Ro),payment:(0,l.optional)((0,l.array)(Va)),owner:(0,l.optional)((0,l.string)())}),iA=[ko,(0,l.object)({kind:(0,l.literal)("GasCoin")}),(0,l.object)({kind:(0,l.literal)("Result"),index:(0,l.pipe)((0,l.number)(),(0,l.integer)())}),(0,l.object)({kind:(0,l.literal)("NestedResult"),index:(0,l.pipe)((0,l.number)(),(0,l.integer)()),resultIndex:(0,l.pipe)((0,l.number)(),(0,l.integer)())})],Dt=(0,l.union)([...iA]),aA=(0,l.object)({kind:(0,l.literal)("MoveCall"),target:(0,l.pipe)((0,l.string)(),(0,l.check)(i=>i.split("::").length===3)),typeArguments:(0,l.array)((0,l.string)()),arguments:(0,l.array)(Dt)}),sA=(0,l.object)({kind:(0,l.literal)("TransferObjects"),objects:(0,l.array)(Dt),address:Dt}),oA=(0,l.object)({kind:(0,l.literal)("SplitCoins"),coin:Dt,amounts:(0,l.array)(Dt)}),cA=(0,l.object)({kind:(0,l.literal)("MergeCoins"),destination:Dt,sources:(0,l.array)(Dt)}),uA=(0,l.object)({kind:(0,l.literal)("MakeMoveVec"),type:(0,l.union)([(0,l.object)({Some:$a}),(0,l.object)({None:(0,l.nullable)((0,l.literal)(!0))})]),objects:(0,l.array)(Dt)}),AA=(0,l.object)({kind:(0,l.literal)("Publish"),modules:(0,l.array)((0,l.array)((0,l.pipe)((0,l.number)(),(0,l.integer)()))),dependencies:(0,l.array)((0,l.string)())}),mA=(0,l.object)({kind:(0,l.literal)("Upgrade"),modules:(0,l.array)((0,l.array)((0,l.pipe)((0,l.number)(),(0,l.integer)()))),dependencies:(0,l.array)((0,l.string)()),packageId:(0,l.string)(),ticket:Dt}),dA=[aA,sA,oA,cA,AA,mA,uA],lA=(0,l.union)([...dA]),Dp=(0,l.object)({version:(0,l.literal)(1),sender:(0,l.optional)((0,l.string)()),expiration:(0,l.nullish)(tA),gasConfig:rA,inputs:(0,l.array)(ko),transactions:(0,l.array)(lA)});function Za(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Xt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some:Ot.parseFromStr(r.MakeMoveVec.type)},objects:r.MakeMoveVec.elements.map(a=>xt(a,n))};if(r.MergeCoins)return{kind:"MergeCoins",destination:xt(r.MergeCoins.destination,n),sources:r.MergeCoins.sources.map(a=>xt(a,n))};if(r.MoveCall)return{kind:"MoveCall",target:`${r.MoveCall.package}::${r.MoveCall.module}::${r.MoveCall.function}`,typeArguments:r.MoveCall.typeArguments,arguments:r.MoveCall.arguments.map(a=>xt(a,n))};if(r.Publish)return{kind:"Publish",modules:r.Publish.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Publish.dependencies};if(r.SplitCoins)return{kind:"SplitCoins",coin:xt(r.SplitCoins.coin,n),amounts:r.SplitCoins.amounts.map(a=>xt(a,n))};if(r.TransferObjects)return{kind:"TransferObjects",objects:r.TransferObjects.objects.map(a=>xt(a,n)),address:xt(r.TransferObjects.address,n)};if(r.Upgrade)return{kind:"Upgrade",modules:r.Upgrade.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Upgrade.dependencies,packageId:r.Upgrade.package,ticket:xt(r.Upgrade.ticket,n)};throw new Error(`Unknown transaction ${Object.keys(r)}`)})}}function xt(i,n){if(i.$kind==="GasCoin")return{kind:"GasCoin"};if(i.$kind==="Result")return{kind:"Result",index:i.Result};if(i.$kind==="NestedResult")return{kind:"NestedResult",index:i.NestedResult[0],resultIndex:i.NestedResult[1]};if(i.$kind==="Input")return n[i.Input];throw new Error(`Invalid argument ${Object.keys(i)}`)}function Mo(i){return(0,l.parse)(On,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,l.is)(vo,n.value)){let r=(0,l.parse)(vo,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Xt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?Ot.tagToString(n.type.Some):null,elements:n.objects.map(r=>Ft(r))}};case"MergeCoins":return{MergeCoins:{destination:Ft(n.destination),sources:n.sources.map(r=>Ft(r))}};case"MoveCall":{let[r,a,s]=n.target.split("::");return{MoveCall:{package:r,module:a,function:s,typeArguments:n.typeArguments,arguments:n.arguments.map(o=>Ft(o))}}}case"Publish":return{Publish:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var P=require("valibot");function fr(i){return(0,P.union)(Object.entries(i).map(([n,r])=>(0,P.object)({[n]:r})))}var ct=fr({GasCoin:(0,P.literal)(!0),Input:(0,P.pipe)((0,P.number)(),(0,P.integer)()),Result:(0,P.pipe)((0,P.number)(),(0,P.integer)()),NestedResult:(0,P.tuple)([(0,P.pipe)((0,P.number)(),(0,P.integer)()),(0,P.pipe)((0,P.number)(),(0,P.integer)())])}),pA=(0,P.object)({budget:(0,P.nullable)(be),price:(0,P.nullable)(be),owner:(0,P.nullable)(cn),payment:(0,P.nullable)((0,P.array)(st))}),gA=(0,P.object)({package:Ce,module:(0,P.string)(),function:(0,P.string)(),typeArguments:(0,P.array)((0,P.string)()),arguments:(0,P.array)(ct)}),fA=(0,P.object)({name:(0,P.string)(),inputs:(0,P.record)((0,P.string)(),(0,P.union)([ct,(0,P.array)(ct)])),data:(0,P.record)((0,P.string)(),(0,P.unknown)())}),yA=fr({MoveCall:gA,TransferObjects:(0,P.object)({objects:(0,P.array)(ct),address:ct}),SplitCoins:(0,P.object)({coin:ct,amounts:(0,P.array)(ct)}),MergeCoins:(0,P.object)({destination:ct,sources:(0,P.array)(ct)}),Publish:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Ce)}),MakeMoveVec:(0,P.object)({type:(0,P.nullable)((0,P.string)()),elements:(0,P.array)(ct)}),Upgrade:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Ce),package:Ce,ticket:ct}),$Intent:fA}),hA=fr({ImmOrOwnedObject:st,SharedObject:(0,P.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,P.boolean)()}),Receiving:st}),TA=fr({Object:hA,Pure:(0,P.object)({bytes:Jt}),UnresolvedPure:(0,P.object)({value:(0,P.unknown)()}),UnresolvedObject:(0,P.object)({objectId:Ce,version:(0,P.optional)((0,P.nullable)(be)),digest:(0,P.optional)((0,P.nullable)((0,P.string)())),initialSharedVersion:(0,P.optional)((0,P.nullable)(be))})}),bA=fr({None:(0,P.literal)(!0),Epoch:be}),Oo=(0,P.object)({version:(0,P.literal)(2),sender:(0,P.nullish)(cn),expiration:(0,P.nullish)(bA),gasData:pA,inputs:(0,P.array)(TA),commands:(0,P.array)(yA)});var Fo=require("valibot");le();var SA=50,PA=1000n,wA=5e10;async function Do(i,n,r){return await RA(i,n),await vA(i,n),n.onlyTransactionKind||(await CA(i,n),await IA(i,n),await BA(i,n)),await kA(i),await r()}async function CA(i,n){i.gasConfig.price||(i.gasConfig.price=String(await un(n).getReferenceGasPrice()))}async function IA(i,n){if(i.gasConfig.budget)return;let r=await un(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(wA),payment:[]}}})});if(r.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${r.effects.status.error}`,{cause:r});let a=PA*BigInt(i.gasConfig.price||1n),s=BigInt(r.effects.gasUsed.computationCost)+a,o=s+BigInt(r.effects.gasUsed.storageCost)-BigInt(r.effects.gasUsed.storageRebate);i.gasConfig.budget=String(o>s?o:s)}async function BA(i,n){if(!i.gasConfig.payment){let a=(await un(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:Ea})).data.filter(s=>!i.inputs.find(c=>c.Object?.ImmOrOwnedObject?s.coinObjectId===c.Object.ImmOrOwnedObject.objectId:!1)).map(s=>({objectId:s.coinObjectId,digest:s.digest,version:s.version}));if(!a.length)throw new Error("No valid gas coins found for the transaction.");i.gasConfig.payment=a.map(s=>(0,Fo.parse)(st,s))}}async function vA(i,n){let r=i.inputs.filter(d=>d.UnresolvedObject&&!(d.UnresolvedObject.version||d.UnresolvedObject?.initialSharedVersion)),a=[...new Set(r.map(d=>Re(d.UnresolvedObject.objectId)))],s=a.length?FA(a,SA):[],o=(await Promise.all(s.map(d=>un(n).multiGetObjects({ids:d,options:{showOwner:!0}})))).flat(),c=new Map(a.map((d,p)=>[d,o[p]])),u=Array.from(c).filter(([d,p])=>p.error).map(([d,p])=>JSON.stringify(p.error));if(u.length)throw new Error(`The following input objects are invalid: ${u.join(", ")}`);let A=o.map(d=>{if(d.error||!d.data)throw new Error(`Failed to fetch object: ${d.error}`);let p=d.data.owner,T=p&&typeof p=="object"&&"Shared"in p?p.Shared.initial_shared_version:null;return{objectId:d.data.objectId,digest:d.data.digest,version:d.data.version,initialSharedVersion:T}}),m=new Map(a.map((d,p)=>[d,A[p]]));for(let[d,p]of i.inputs.entries()){if(!p.UnresolvedObject)continue;let T,b=x(p.UnresolvedObject.objectId),S=m.get(b);p.UnresolvedObject.initialSharedVersion??S?.initialSharedVersion?T=Oe.SharedObjectRef({objectId:b,initialSharedVersion:p.UnresolvedObject.initialSharedVersion||S?.initialSharedVersion,mutable:MA(i,d)}):OA(i,d)&&(T=Oe.ReceivingRef({objectId:b,digest:p.UnresolvedObject.digest??S?.digest,version:p.UnresolvedObject.version??S?.version})),i.inputs[i.inputs.indexOf(p)]=T??Oe.ObjectRef({objectId:b,digest:p.UnresolvedObject.digest??S?.digest,version:p.UnresolvedObject.version??S?.version})}}async function RA(i,n){let{inputs:r,commands:a}=i,s=[],o=new Set;a.forEach(u=>{if(u.MoveCall){if(u.MoveCall._argumentTypes)return;if(u.MoveCall.arguments.map(d=>d.$kind==="Input"?i.inputs[d.Input]:null).some(d=>d?.UnresolvedPure||d?.UnresolvedObject)){let d=`${u.MoveCall.package}::${u.MoveCall.module}::${u.MoveCall.function}`;o.add(d),s.push(u.MoveCall)}}switch(u.$kind){case"SplitCoins":u.SplitCoins.amounts.forEach(A=>{xo(A,h.U64,i)});break;case"TransferObjects":xo(u.TransferObjects.address,h.Address,i);break}});let c=new Map;if(o.size>0){let u=un(n);await Promise.all([...o].map(async A=>{let[m,d,p]=A.split("::"),T=await u.getNormalizedMoveFunction({package:m,module:d,function:p});c.set(A,T.parameters.map(b=>Co(b)))}))}s.length&&await Promise.all(s.map(async u=>{let A=c.get(`${u.package}::${u.module}::${u.function}`);if(!A)return;let d=A.length>0&&wo(A.at(-1))?A.slice(0,A.length-1):A;u._argumentTypes=d})),a.forEach(u=>{if(!u.MoveCall)return;let A=u.MoveCall,m=`${A.package}::${A.module}::${A.function}`,d=A._argumentTypes;if(d){if(d.length!==u.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${m}`);d.forEach((p,T)=>{let b=A.arguments[T];if(b.$kind!=="Input")return;let S=r[b.Input];if(!S.UnresolvedPure&&!S.UnresolvedObject)return;let I=S.UnresolvedPure?.value??S.UnresolvedObject?.objectId,v=ai(p.body);if(v){b.type="pure",r[r.indexOf(S)]=Oe.Pure(v.serialize(I));return}if(typeof I!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(I,null,2)}`);b.type="object";let B=S.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:I}}:S;r[b.Input]=B})}})}function kA(i){i.inputs.forEach((n,r)=>{if(n.$kind!=="Object"&&n.$kind!=="Pure")throw new Error(`Input at index ${r} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(n)}`)})}function xo(i,n,r){if(i.$kind!=="Input")return;let a=r.inputs[i.Input];a.$kind==="UnresolvedPure"&&(r.inputs[i.Input]=Oe.Pure(n.serialize(a.UnresolvedPure.value)))}function MA(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=s.MoveCall._argumentTypes[o].ref!=="&"||r}(s.$kind==="MakeMoveVec"||s.$kind==="MergeCoins"||s.$kind==="SplitCoins")&&(r=!0)}),r}function OA(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=xA(s.MoveCall._argumentTypes[o])||r}}),r}function xA(i){return typeof i.body!="object"||!("datatype"in i.body)?!1:i.body.datatype.package==="0x2"&&i.body.datatype.module==="transfer"&&i.body.datatype.type==="Receiving"}function un(i){if(!i.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return i.client}function FA(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function No(i){function n(r){return i(r)}return n.system=()=>n("0x5"),n.clock=()=>n("0x6"),n.random=()=>n("0x8"),n.denyList=()=>n("0x403"),n.option=({type:r,value:a})=>s=>s.moveCall({typeArguments:[r],target:`0x1::option::${a===null?"none":"some"}`,arguments:a===null?[]:[s.object(a)]}),n}var Wo=require("@mysten/bcs");le();function Eo(i){function n(r,a){if(typeof r=="string")return i(yr(r).serialize(a));if(r instanceof Uint8Array||(0,Wo.isSerializedBcs)(r))return i(r);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return n.u8=r=>i(h.U8.serialize(r)),n.u16=r=>i(h.U16.serialize(r)),n.u32=r=>i(h.U32.serialize(r)),n.u64=r=>i(h.U64.serialize(r)),n.u128=r=>i(h.U128.serialize(r)),n.u256=r=>i(h.U256.serialize(r)),n.bool=r=>i(h.Bool.serialize(r)),n.string=r=>i(h.String.serialize(r)),n.address=r=>i(h.Address.serialize(r)),n.id=n.address,n.vector=(r,a)=>i(h.vector(yr(r)).serialize(a)),n.option=(r,a)=>i(h.option(yr(r)).serialize(a)),n}function yr(i){switch(i){case"u8":return h.u8();case"u16":return h.u16();case"u32":return h.u32();case"u64":return h.u64();case"u128":return h.u128();case"u256":return h.u256();case"bool":return h.bool();case"string":return h.string();case"id":case"address":return h.Address}let n=i.match(/^(vector|option)<(.+)>$/);if(n){let[r,a]=n.slice(1);return r==="vector"?h.vector(yr(a)):h.option(yr(a))}throw new Error(`Invalid Pure type name: ${i}`)}var _o=require("@mysten/bcs"),si=require("valibot");le();ke();var Uo=require("@noble/hashes/blake2b");function jo(i,n){let r=Array.from(`${i}::`).map(s=>s.charCodeAt(0)),a=new Uint8Array(r.length+n.length);return a.set(r),a.set(n,r.length),(0,Uo.blake2b)(a,{dkLen:32})}function Go(i){return x(i).replace("0x","")}var Yt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=h.TransactionKind.parse(n).ProgrammableTransaction;if(!a)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:a.inputs,commands:a.commands})}static fromBytes(n){let a=h.TransactionData.parse(n)?.V1,s=a.kind.ProgrammableTransaction;if(!a||!s)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:a.sender,expiration:a.expiration,gasData:a.gasData,inputs:s.inputs,commands:s.commands})}static restore(n){return n.version===2?new i((0,si.parse)(On,n)):new i((0,si.parse)(On,Mo(n)))}static getDigestFromBytes(n){let r=jo("TransactionData",n);return(0,_o.toBase58)(r)}get gasConfig(){return this.gasData}set gasConfig(n){this.gasData=n}build({maxSizeBytes:n=1/0,overrides:r,onlyTransactionKind:a}={}){let s=this.inputs,o=this.commands,c={ProgrammableTransaction:{inputs:s,commands:o}};if(a)return h.TransactionKind.serialize(c,{maxSize:n}).toBytes();let u=r?.expiration??this.expiration,A=r?.sender??this.sender,m={...this.gasData,...r?.gasConfig,...r?.gasData};if(!A)throw new Error("Missing transaction sender");if(!m.budget)throw new Error("Missing gas budget");if(!m.payment)throw new Error("Missing gas payment");if(!m.price)throw new Error("Missing gas price");let d={sender:Go(A),expiration:u||{None:!0},gasData:{payment:m.payment,owner:Go(this.gasData.owner??A),price:BigInt(m.price),budget:BigInt(m.budget)},kind:{ProgrammableTransaction:{inputs:s,commands:o}}};return h.TransactionData.serialize({V1:d},{maxSize:n}).toBytes()}addInput(n,r){let a=this.inputs.length;return this.inputs.push(r),{Input:a,type:n,$kind:"Input"}}getInputUses(n,r){this.mapArguments((a,s)=>(a.$kind==="Input"&&a.Input===n&&r(a,s),a))}mapArguments(n){for(let r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(s=>n(s,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(s=>n(s,r)),r.TransferObjects.address=n(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=n(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(s=>n(s,r));break;case"MergeCoins":r.MergeCoins.destination=n(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(s=>n(s,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(s=>n(s,r));break;case"Upgrade":r.Upgrade.ticket=n(r.Upgrade.ticket,r);break;case"$Intent":let a=r.$Intent.inputs;r.$Intent.inputs={};for(let[s,o]of Object.entries(a))r.$Intent.inputs[s]=Array.isArray(o)?o.map(c=>n(c,r)):n(o,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(n,r){if(!Array.isArray(r)){this.commands[n]=r;return}let a=r.length-1;this.commands.splice(n,1,...r),a!==0&&this.mapArguments(s=>{switch(s.$kind){case"Result":s.Result>n&&(s.Result+=a);break;case"NestedResult":s.NestedResult[0]>n&&(s.NestedResult[0]+=a);break}return s})}getDigest(){let n=this.build({onlyTransactionKind:!1});return i.getDigestFromBytes(n)}snapshot(){return(0,si.parse)(On,this)}};ke();function Ja(i){if(typeof i=="string")return x(i);if(i.Object)return i.Object.ImmOrOwnedObject?x(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?x(i.Object.Receiving.objectId):x(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return x(i.UnresolvedObject.objectId)}var Zo=i=>{throw TypeError(i)},Ka=(i,n,r)=>n.has(i)||Zo("Cannot "+r),E=(i,n,r)=>(Ka(i,n,"read from private field"),r?r.call(i):n.get(i)),hr=(i,n,r)=>n.has(i)?Zo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),An=(i,n,r,a)=>(Ka(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Nt=(i,n,r)=>(Ka(i,n,"access private method"),r),br,Sr,mn,V,ut,oi,Ha,Xa,za;function Vo(i,n=1/0){let r={$kind:"Result",Result:i},a=[],s=o=>a[o]??(a[o]={$kind:"NestedResult",NestedResult:[i,o]});return new Proxy(r,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(o,c){if(c in o)return Reflect.get(o,c);if(c===Symbol.iterator)return function*(){let A=0;for(;A<n;)yield s(A),A++};if(typeof c=="symbol")return;let u=parseInt(c,10);if(!(Number.isNaN(u)||u<0))return s(u)}})}var Jo=Symbol.for("@mysten/transaction");function ci(i){return!!i&&typeof i=="object"&&i[Jo]===!0}var $o={buildPlugins:new Map,serializationPlugins:new Map},La=Symbol.for("@mysten/transaction/registry");function Tr(){try{let i=globalThis;return i[La]||(i[La]=$o),i[La]}catch{return $o}}var DA=class Ya{constructor(){hr(this,ut),hr(this,br),hr(this,Sr),hr(this,mn,new Map),hr(this,V),this.object=No(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Ct.is)(z,r))return r;let a=Ja(r),s=E(this,V).inputs.find(o=>a===Ja(o));return s?.Object?.SharedObject&&typeof r=="object"&&r.Object?.SharedObject&&(s.Object.SharedObject.mutable=s.Object.SharedObject.mutable||r.Object.SharedObject.mutable),s?{$kind:"Input",Input:E(this,V).inputs.indexOf(s),type:"object"}:E(this,V).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:x(r)}}:r)});let n=Tr();An(this,V,new Yt),An(this,Sr,[...n.buildPlugins.values()]),An(this,br,[...n.serializationPlugins.values()])}static fromKind(n){let r=new Ya;return An(r,V,Yt.fromKindBytes(typeof n=="string"?(0,xn.fromBase64)(n):n)),r}static from(n){let r=new Ya;return ci(n)?An(r,V,new Yt(n.getData())):typeof n!="string"||!n.startsWith("{")?An(r,V,Yt.fromBytes(typeof n=="string"?(0,xn.fromBase64)(n):n)):An(r,V,Yt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){Tr().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){Tr().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){Tr().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){Tr().buildPlugins.delete(n)}addSerializationPlugin(n){E(this,br).push(n)}addBuildPlugin(n){E(this,Sr).push(n)}addIntentResolver(n,r){if(E(this,mn).has(n)&&E(this,mn).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);E(this,mn).set(n,r)}setSender(n){E(this,V).sender=n}setSenderIfNotSet(n){E(this,V).sender||(E(this,V).sender=n)}setExpiration(n){E(this,V).expiration=n?(0,Ct.parse)(Ga,n):null}setGasPrice(n){E(this,V).gasConfig.price=String(n)}setGasBudget(n){E(this,V).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){E(this,V).gasData.budget==null&&(E(this,V).gasConfig.budget=String(n))}setGasOwner(n){E(this,V).gasConfig.owner=n}setGasPayment(n){E(this,V).gasConfig.payment=n.map(r=>(0,Ct.parse)(st,r))}get blockData(){return Za(E(this,V).snapshot())}getData(){return E(this,V).snapshot()}get[Jo](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Eo(n=>(0,xn.isSerializedBcs)(n)?E(this,V).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):E(this,V).addInput("pure",(0,Ct.is)(ja,n)?(0,Ct.parse)(ja,n):n instanceof Uint8Array?Oe.Pure(n):{$kind:"UnresolvedPure",UnresolvedPure:{value:n}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...n){return this.object(Oe.ObjectRef(...n))}receivingRef(...n){return this.object(Oe.ReceivingRef(...n))}sharedObjectRef(...n){return this.object(Oe.SharedObjectRef(...n))}add(n){if(typeof n=="function")return n(this);let r=E(this,V).commands.push(n);return Vo(r-1)}splitCoins(n,r){let a=_e.SplitCoins(typeof n=="string"?this.object(n):Nt(this,ut,Ha).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Nt(this,ut,oi).call(this,o))),s=E(this,V).commands.push(a);return Vo(s-1,r.length)}mergeCoins(n,r){return this.add(_e.MergeCoins(this.object(n),r.map(a=>this.object(a))))}publish({modules:n,dependencies:r}){return this.add(_e.Publish({modules:n,dependencies:r}))}upgrade({modules:n,dependencies:r,package:a,ticket:s}){return this.add(_e.Upgrade({modules:n,dependencies:r,package:a,ticket:this.object(s)}))}moveCall({arguments:n,...r}){return this.add(_e.MoveCall({...r,arguments:n?.map(a=>Nt(this,ut,oi).call(this,a))}))}transferObjects(n,r){return this.add(_e.TransferObjects(n.map(a=>this.object(a)),typeof r=="string"?this.pure.address(r):Nt(this,ut,oi).call(this,r)))}makeMoveVec({type:n,elements:r}){return this.add(_e.MakeMoveVec({type:n,elements:r.map(a=>this.object(a))}))}serialize(){return JSON.stringify(Za(E(this,V).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Ct.parse)(Oo,E(this,V).snapshot()),(r,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(n){let{signer:r,...a}=n,s=await this.build(a);return r.signTransaction(s)}async build(n={}){return await this.prepareForSerialization(n),await Nt(this,ut,Xa).call(this,n),E(this,V).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Nt(this,ut,Xa).call(this,n),E(this,V).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of E(this,V).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...E(this,br)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!E(this,mn).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(E(this,mn).get(s))}await Nt(this,ut,za).call(this,a,n)}};br=new WeakMap;Sr=new WeakMap;mn=new WeakMap;V=new WeakMap;ut=new WeakSet;oi=function(i){return(0,xn.isSerializedBcs)(i)?this.pure(i):Nt(this,ut,Ha).call(this,i)};Ha=function(i){return typeof i=="function"?(0,Ct.parse)(z,i(this)):(0,Ct.parse)(z,i)};Xa=async function(i){if(!i.onlyTransactionKind&&!E(this,V).sender)throw new Error("Missing transaction sender");await Nt(this,ut,za).call(this,[...E(this,Sr),Do],i)};za=async function(i,n){let r=a=>{if(a>=i.length)return()=>{};let s=i[a];return async()=>{let o=r(a+1),c=!1,u=!1;if(await s(E(this,V),n,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${a}`);c=!0,await o(),u=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${a}`);if(!u)throw new Error(`next() was not awaited in TransactionPlugin ${a}`)}};await r(0)()};var Ve=DA;var Kt=require("valibot");le();ke();var ui="CoinWithBalance",Lo=pr("0x2::sui::SUI");function te({type:i=Lo,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(ui,WA);let s=i==="gas"?i:pr(i);return a.add(_e.Intent({name:ui,inputs:{},data:{type:s===Lo&&r?"gas":s,balance:BigInt(n)}}))}}var NA=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function WA(i,n,r){let a=new Set,s=new Map;if(!i.sender)throw new Error("Sender must be set to resolve CoinWithBalance");for(let m of i.commands)if(m.$kind==="$Intent"&&m.$Intent.name===ui){let{type:d,balance:p}=(0,Kt.parse)(NA,m.$Intent.data);d!=="gas"&&p>0n&&a.add(d),s.set(d,(s.get(d)??0n)+p)}let o=new Set;for(let m of i.inputs)m.Object?.ImmOrOwnedObject&&o.add(m.Object.ImmOrOwnedObject.objectId),m.UnresolvedObject?.objectId&&o.add(m.UnresolvedObject.objectId);let c=new Map,u=un(n);await Promise.all([...a].map(async m=>{c.set(m,await EA({coinType:m,balance:s.get(m),client:u,owner:i.sender,usedIds:o}))}));let A=new Map;A.set("gas",{$kind:"GasCoin",GasCoin:!0});for(let[m,d]of i.commands.entries()){if(d.$kind!=="$Intent"||d.$Intent.name!==ui)continue;let{type:p,balance:T}=d.$Intent.data;if(T===0n){i.replaceCommand(m,_e.MoveCall({target:"0x2::coin::zero",typeArguments:[p]}));continue}let b=[];if(!A.has(p)){let[S,...I]=c.get(p).map(v=>i.addInput("object",Oe.ObjectRef({objectId:v.coinObjectId,digest:v.digest,version:v.version})));I.length>0&&b.push(_e.MergeCoins(S,I)),A.set(p,S)}b.push(_e.SplitCoins(A.get(p),[i.addInput("pure",Oe.Pure(h.u64().serialize(T)))])),i.replaceCommand(m,b),i.mapArguments(S=>S.$kind==="Result"&&S.Result===m?{$kind:"NestedResult",NestedResult:[m+b.length-1,0]}:S)}return r()}async function EA({coinType:i,balance:n,client:r,owner:a,usedIds:s}){let o=n,c=[];return u();async function u(A=null){let{data:m,hasNextPage:d,nextCursor:p}=await r.getCoins({owner:a,coinType:i,cursor:A}),T=m.sort((b,S)=>Number(BigInt(S.balance)-BigInt(b.balance)));for(let b of T){if(s.has(b.coinObjectId))continue;let S=BigInt(b.balance);if(c.push(b),o-=S,o<=0)return c}if(d)return u(p);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}ke();var UA=Symbol.for("@mysten/SuiClient");var Et=class{get[UA](){return!0}constructor(n){this.transport=n.transport??new qr({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!je(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[n.owner,n.coinType,n.cursor,n.limit]})}async getAllCoins(n){if(!n.owner||!je(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[n.owner,n.cursor,n.limit]})}async getBalance(n){if(!n.owner||!je(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[n.owner,n.coinType]})}async getAllBalances(n){if(!n.owner||!je(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[n.owner]})}async getCoinMetadata(n){return await this.transport.request({method:"suix_getCoinMetadata",params:[n.coinType]})}async getTotalSupply(n){return await this.transport.request({method:"suix_getTotalSupply",params:[n.coinType]})}async call(n,r){return await this.transport.request({method:n,params:r})}async getMoveFunctionArgTypes(n){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[n.package,n.module,n.function]})}async getNormalizedMoveModulesByPackage(n){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[n.package]})}async getNormalizedMoveModule(n){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[n.package,n.module]})}async getNormalizedMoveFunction(n){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[n.package,n.module,n.function]})}async getNormalizedMoveStruct(n){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[n.package,n.module,n.struct]})}async getOwnedObjects(n){if(!n.owner||!je(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[n.owner,{filter:n.filter,options:n.options},n.cursor,n.limit]})}async getObject(n){if(!n.id||!kn(Re(n.id)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"sui_getObject",params:[n.id,n.options]})}async tryGetPastObject(n){return await this.transport.request({method:"sui_tryGetPastObject",params:[n.id,n.version,n.options]})}async multiGetObjects(n){if(n.ids.forEach(a=>{if(!a||!kn(Re(a)))throw new Error(`Invalid Sui Object id ${a}`)}),n.ids.length!==new Set(n.ids).size)throw new Error(`Duplicate object ids in batch call ${n.ids}`);return await this.transport.request({method:"sui_multiGetObjects",params:[n.ids,n.options]})}async queryTransactionBlocks(n){return await this.transport.request({method:"suix_queryTransactionBlocks",params:[{filter:n.filter,options:n.options},n.cursor,n.limit,(n.order||"descending")==="descending"]})}async getTransactionBlock(n){if(!ti(n.digest))throw new Error("Invalid Transaction digest");return await this.transport.request({method:"sui_getTransactionBlock",params:[n.digest,n.options]})}async multiGetTransactionBlocks(n){if(n.digests.forEach(a=>{if(!ti(a))throw new Error(`Invalid Transaction digest ${a}`)}),n.digests.length!==new Set(n.digests).size)throw new Error(`Duplicate digests in batch call ${n.digests}`);return await this.transport.request({method:"sui_multiGetTransactionBlocks",params:[n.digests,n.options]})}async executeTransactionBlock({transactionBlock:n,signature:r,options:a,requestType:s}){let o=await this.transport.request({method:"sui_executeTransactionBlock",params:[typeof n=="string"?n:(0,Wt.toBase64)(n),Array.isArray(r)?r:[r],a]});if(s==="WaitForLocalExecution")try{await this.waitForTransaction({digest:o.digest})}catch{}return o}async signAndExecuteTransaction({transaction:n,signer:r,...a}){let s;n instanceof Uint8Array?s=n:(n.setSenderIfNotSet(r.toSuiAddress()),s=await n.build({client:this}));let{signature:o,bytes:c}=await r.signTransaction(s);return this.executeTransactionBlock({transactionBlock:c,signature:o,...a})}async getTotalTransactionBlocks(){let n=await this.transport.request({method:"sui_getTotalTransactionBlocks",params:[]});return BigInt(n)}async getReferenceGasPrice(){let n=await this.transport.request({method:"suix_getReferenceGasPrice",params:[]});return BigInt(n)}async getStakes(n){if(!n.owner||!je(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[n.owner]})}async getStakesByIds(n){return n.stakedSuiIds.forEach(r=>{if(!r||!kn(Re(r)))throw new Error(`Invalid Sui Stake id ${r}`)}),await this.transport.request({method:"suix_getStakesByIds",params:[n.stakedSuiIds]})}async getLatestSuiSystemState(){return await this.transport.request({method:"suix_getLatestSuiSystemState",params:[]})}async queryEvents(n){return await this.transport.request({method:"suix_queryEvents",params:[n.query,n.cursor,n.limit,(n.order||"descending")==="descending"]})}async subscribeEvent(n){return this.transport.subscribe({method:"suix_subscribeEvent",unsubscribe:"suix_unsubscribeEvent",params:[n.filter],onMessage:n.onMessage})}async subscribeTransaction(n){return this.transport.subscribe({method:"suix_subscribeTransaction",unsubscribe:"suix_unsubscribeTransaction",params:[n.filter],onMessage:n.onMessage})}async devInspectTransactionBlock(n){let r;if(ci(n.transactionBlock))n.transactionBlock.setSenderIfNotSet(n.sender),r=(0,Wt.toBase64)(await n.transactionBlock.build({client:this,onlyTransactionKind:!0}));else if(typeof n.transactionBlock=="string")r=n.transactionBlock;else if(n.transactionBlock instanceof Uint8Array)r=(0,Wt.toBase64)(n.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[n.sender,r,n.gasPrice?.toString(),n.epoch]})}async dryRunTransactionBlock(n){return await this.transport.request({method:"sui_dryRunTransactionBlock",params:[typeof n.transactionBlock=="string"?n.transactionBlock:(0,Wt.toBase64)(n.transactionBlock)]})}async getDynamicFields(n){if(!n.parentId||!kn(Re(n.parentId)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"suix_getDynamicFields",params:[n.parentId,n.cursor,n.limit]})}async getDynamicFieldObject(n){return await this.transport.request({method:"suix_getDynamicFieldObject",params:[n.parentId,n.name]})}async getLatestCheckpointSequenceNumber(){let n=await this.transport.request({method:"sui_getLatestCheckpointSequenceNumber",params:[]});return String(n)}async getCheckpoint(n){return await this.transport.request({method:"sui_getCheckpoint",params:[n.id]})}async getCheckpoints(n){return await this.transport.request({method:"sui_getCheckpoints",params:[n.cursor,n?.limit,n.descendingOrder]})}async getCommitteeInfo(n){return await this.transport.request({method:"suix_getCommitteeInfo",params:[n?.epoch]})}async getNetworkMetrics(){return await this.transport.request({method:"suix_getNetworkMetrics",params:[]})}async getAddressMetrics(){return await this.transport.request({method:"suix_getLatestAddressMetrics",params:[]})}async getEpochMetrics(n){return await this.transport.request({method:"suix_getEpochMetrics",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getAllEpochAddressMetrics(n){return await this.transport.request({method:"suix_getAllEpochAddressMetrics",params:[n?.descendingOrder]})}async getEpochs(n){return await this.transport.request({method:"suix_getEpochs",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getMoveCallMetrics(){return await this.transport.request({method:"suix_getMoveCallMetrics",params:[]})}async getCurrentEpoch(){return await this.transport.request({method:"suix_getCurrentEpoch",params:[]})}async getValidatorsApy(){return await this.transport.request({method:"suix_getValidatorsApy",params:[]})}async getChainIdentifier(){let n=await this.getCheckpoint({id:"0"}),r=(0,Wt.fromBase58)(n.digest);return(0,Wt.toHex)(r.slice(0,4))}async resolveNameServiceAddress(n){return await this.transport.request({method:"suix_resolveNameServiceAddress",params:[n.name]})}async resolveNameServiceNames({format:n="dot",...r}){let{nextCursor:a,hasNextPage:s,data:o}=await this.transport.request({method:"suix_resolveNameServiceNames",params:[r.address,r.cursor,r.limit]});return{hasNextPage:s,nextCursor:a,data:o.map(c=>Po(c,n))}}async getProtocolConfig(n){return await this.transport.request({method:"sui_getProtocolConfig",params:[n?.version]})}async waitForTransaction({signal:n,timeout:r=60*1e3,pollInterval:a=2*1e3,...s}){let o=AbortSignal.timeout(r),c=new Promise((u,A)=>{o.addEventListener("abort",()=>A(o.reason))});for(c.catch(()=>{});!o.aborted;){n?.throwIfAborted();try{return await this.getTransactionBlock(s)}catch{await Promise.race([new Promise(A=>setTimeout(A,a)),c])}}throw o.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};var gi=require("big.js");var os=ce(Ht());var Ut=ce(Ht());pe();function Ko(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[k(i,r.bridge),k(i,r.coin),Ke(i,r.receiveAmountMin,"u64")]})}function Ho(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),k(i,r.coin)]})}function zo(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),Ke(i,r.amountLp,"u64")]})}function Qo(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit)]})}function qo(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[k(i,r)]})}function qa(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.wormholeState),k(i,r.theClock),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),Ke(i,r.destinationChainId,"u8"),k(i,r.receiveToken),Ke(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}function ec(i,n){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function es(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),Ke(i,r.destinationChainId,"u8"),k(i,r.receiveToken),Ke(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}var sc=ce(ns());var nc=ce(ns());pe();function rs(i,n,r){return i.moveCall({target:`${nc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[k(i,r.cctpBridge),k(i,r.gasOracle),k(i,r.tokenMessengerMinterState),k(i,r.messageTransmitterState),k(i,r.treasury),k(i,r.denyList),k(i,r.amount),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin),Ke(i,r.destinationChainId,"u8"),k(i,r.recipient),k(i,r.recipientWalletAddress)]})}var oc=ce(as());var ac=ce(as());le();pe();le();pe();var ss=class i{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(n,r){this.$fullTypeName=$(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:$(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs(Pr(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([M(n)],r),kind:"VectorClassReified"}}static get r(){return i.reified}static get bcs(){return h.vector}static fromFields(n,r){return i.reified(n).new(r.map(a=>U(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>N(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(Pr(n)).parse(r))}toJSONField(){return this.elements.map(n=>dn(this.$typeArgs[0],n))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new(r.map(a=>W(n,a)))}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a vector json object");return i.fromJSONField(n,r.elements)}};function Fn(i){return ss.r(i)}function ae(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var ZA=h.bytes(32).transform({input:i=>(0,_.fromHEX)(i),output:i=>(0,_.toHEX)(i)});function Pr(i){switch(i){case"bool":return h.bool();case"u8":return h.u8();case"u16":return h.u16();case"u32":return h.u32();case"u64":return h.u64();case"u128":return h.u128();case"u256":return h.u256();case"address":return ZA;default:return i.bcs}}function M(i){switch(i){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return i}switch(i.kind){case"PhantomReified":return i.phantomType;case"StructClassReified":return i.fullTypeName;case"VectorClassReified":return i.fullTypeName}throw new Error("unreachable")}function U(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return`0x${n}`}if(i.kind==="VectorClassReified")return i.fromFields(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(n.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(n.url.bytes)).toString();case"0x2::object::ID":return`0x${n.bytes}`;case"0x2::object::UID":return`0x${n.id.bytes}`;case"0x1::option::Option":return n.vec.length===0?null:i.fromFields(n).vec[0];default:return i.fromFields(n)}}function N(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.fromFieldsWithTypes(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return n;case"0x2::object::UID":return n.id;case"0x2::balance::Balance":return i.fromFields({value:BigInt(n)});case"0x1::option::Option":return n===null?null:N(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function At(i,n,r){if(r.length!==n.length)throw new Error(`provided item has mismatching number of type argments ${i} (expected ${r.length}, got ${n.length}))`);for(let a=0;a<n.length;a++)if(R(n[a])!==R(M(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${M(r[a])}, got ${n[a]}))`)}function It(i,n){let{typeArgs:r}=Se(i.type);At(i.type,r,n)}function dn(i,n){let{typeName:r,typeArgs:a}=Se(i);switch(r){case"bool":return n;case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return n.toString();case"address":case"signer":return n;case"vector":return n.map(s=>dn(a[0],s));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return n;case"0x1::option::Option":return n===null?null:dn(a[0],n);default:return n.toJSONField()}}function W(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.fromJSONField(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return n;case"0x1::option::Option":return n===null?null:W(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}pe();var Ai="0x1";pe();le();function mi(i){return i=R(i),i===`${Ai}::string::String`}var di=class i{__StructClass=!0;static get $typeName(){return`${Ai}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:$(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return ae(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("String",{bytes:h.vector(h.u8())})}static fromFields(n){return i.reified().new({bytes:U(Fn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!mi(n.type))throw new Error("not a String type");return i.reified().new({bytes:N(Fn("u8"),n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:dn("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:W(Fn("u8"),n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!mi(n.type))throw new Error(`object at ${n.fields.id} is not a String object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!mi(n.bcs.type))throw new Error("object at is not a String object");return i.fromBcs((0,_.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!mi(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};pe();pe();var zt="0x2";le();function li(i){return i=R(i),i===`${zt}::object::ID`}var ln=class i{__StructClass=!0;static get $typeName(){return`${zt}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:$(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return ae(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("ID",{bytes:h.bytes(32).transform({input:n=>(0,_.fromHEX)(n),output:n=>(0,_.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:U("address",n.bytes)})}static fromFieldsWithTypes(n){if(!li(n.type))throw new Error("not a ID type");return i.reified().new({bytes:N("address",n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:W("address",n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!li(n.type))throw new Error(`object at ${n.fields.id} is not a ID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!li(n.bcs.type))throw new Error("object at is not a ID object");return i.fromBcs((0,_.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!li(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function pi(i){return i=R(i),i===`${zt}::object::UID`}var He=class i{__StructClass=!0;static get $typeName(){return`${zt}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:$(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return ae(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("UID",{id:ln.bcs})}static fromFields(n){return i.reified().new({id:U(ln.reified(),n.id)})}static fromFieldsWithTypes(n){if(!pi(n.type))throw new Error("not a UID type");return i.reified().new({id:N(ln.reified(),n.fields.id)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({id:W(ln.reified(),n.id)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!pi(n.type))throw new Error(`object at ${n.fields.id} is not a UID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!pi(n.bcs.type))throw new Error("object at is not a UID object");return i.fromBcs((0,_.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!pi(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function mt(i,n){return i.moveCall({target:`${ac.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Ke(i,n,`${di.$typeName}`)]})}async function Bt(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?Bt(i,a.nextCursor,s):s}var fi=class extends Ee{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new Et({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new w("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");(0,os.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let s=wt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toTokenAddress:u,minimumReceiveAmount:A}=r,m=new Ve;m.setSender(o);let d={bridge:a.bridgeObjectAddress,coin:te({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(A)},p=Ko(m,[c,u],d),T=await Bt(b=>this.client.getCoins({owner:r.toAccountAddress,coinType:u,cursor:b}));return T.length===0||!T[0]?m.transferObjects([p],r.toAccountAddress):m.mergeCoins(T[0].coinObjectId,[p]),await m.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await nt(this.chainType,r,this.api),{messenger:s}=a,o=r.sourceToken.suiAddresses;if(!o)throw new w("SUI token must contain 'suiAddresses'");switch((0,os.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin),(0,oc.setAddress)(o.utilsAddress),s){case 1:return this.buildRawTransactionAllbridgeSend(a,o);case 2:return this.buildRawTransactionWormholeSend(a,o);case 3:case 4:return this.buildRawTransactionCctpSend(r,a,o);case 5:throw new fe("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:u,toAccountAddress:A,toTokenAddress:m,fee:d,gasFeePaymentMethod:p,extraGas:T}=r,b=d;T&&(b=(0,gi.Big)(b).plus(T).toFixed());let S=new Ve;if(S.setSender(o),p==="stablecoin"){let I=BigInt(s)-BigInt(b),v={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:te({balance:I,type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,tt(A)),receiveToken:mt(S,tt(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(b),type:c}),feeSuiCoin:te({balance:BigInt(0),useGasCoin:!1})};es(S,c,v)}else{let I=b==="0"?te({balance:BigInt(b),useGasCoin:!1}):te({balance:BigInt(b)}),v={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:te({balance:BigInt(s),type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,tt(A)),receiveToken:mt(S,tt(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(0),type:c}),feeSuiCoin:I};es(S,c,v)}return await S.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:u,toAccountAddress:A,toTokenAddress:m,fee:d,gasFeePaymentMethod:p,extraGas:T}=r,b=d;T&&(b=(0,gi.Big)(b).plus(T).toFixed());let S=new Ve;if(S.setSender(o),p==="stablecoin"){let I=BigInt(s)-BigInt(b),v={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:ii,amount:te({balance:I,type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,tt(A)),receiveToken:mt(S,tt(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(b),type:c}),feeSuiCoin:te({balance:BigInt(0),useGasCoin:!1})};qa(S,c,v)}else{let I=b==="0"?te({balance:BigInt(b),useGasCoin:!1}):te({balance:BigInt(b)}),v={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:ii,amount:te({balance:BigInt(s),type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,tt(A)),receiveToken:mt(S,tt(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(0),type:c}),feeSuiCoin:I};qa(S,c,v)}return await S.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,fromAccountAddress:c,fromTokenAddress:u,toChainId:A,toAccountAddress:m,fee:d,gasFeePaymentMethod:p,extraGas:T}=a;(0,sc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let b=d;T&&(b=(0,gi.Big)(b).plus(T).toFixed());let S=new Ve;S.setSender(c);let I=mt(S,tt(m)),v;if(r.destinationToken.chainType==="SOLANA"){let B=await Gr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));v=mt(S,tt(B))}else v=I;if(p==="stablecoin"){let B=BigInt(o)-BigInt(b),F={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:te({balance:B,type:u}),destinationChainId:A,recipient:v,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(b),type:u}),feeSuiCoin:te({balance:BigInt(0),useGasCoin:!1})};rs(S,u,F)}else{let B=b==="0"?te({balance:BigInt(b),useGasCoin:!1}):te({balance:BigInt(b)}),F={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:te({balance:BigInt(o),type:u}),destinationChainId:A,recipient:v,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(0),type:u}),feeSuiCoin:B};rs(S,u,F)}return await S.toJSON({client:this.client})}};var Ac=require("big.js");var cc=ce(require("bn.js"));function yi(i){return"0x"+new cc.default(i).toString("hex")}function uc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function hi(i,n){let r=await i.trx.sign(n);if(!r.signature)throw new qt("Transaction was not signed properly");let s=(await i.trx.sendRawTransaction(r)).transaction.txID;return await JA(i,s),{txId:s}}async function JA(i,n,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new Tn("Transaction not found");let s=await i.trx.getUnconfirmedTransactionInfo(n);if(!s?.receipt){await uc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new Tn(`Transaction status is ${s.receipt.result}`)}}var wr=class extends Ee{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await nt(this.chainType,r,this.api),s=await this.buildRawTransactionSendFromParams(r,a);return await hi(this.tronWeb,s)}async buildRawTransactionSwap(r){let a=wt(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:u,toTokenAddress:A,minimumReceiveAmount:m}=r,d=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:A},{type:"address",value:u},{type:"uint256",value:m}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",d,"0",o)}async buildRawTransactionSend(r){let a=await nt(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(r,a)}async buildRawTransactionSendFromParams(r,a){let{amount:s,contractAddress:o,fromAccountAddress:c,fromTokenAddress:u,toChainId:A,toAccountAddress:m,toTokenAddress:d,messenger:p,fee:T,gasFeePaymentMethod:b,extraGas:S,extraGasDest:I}=a,v=T;S&&(v=(0,Ac.Big)(v).plus(S).toFixed());let B=Pt().toString(),F,O,J;switch(p){case 3:case 4:b==="stablecoin"?(F=[{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:v}],O="0"):(F=[{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:0}],O=v),J="bridge(uint256,bytes32,uint256,uint256)";break;case 5:b==="stablecoin"?(F=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:v},{type:"uint256",value:I??"0"},{type:"uint256",value:"10"}],O="0"):(F=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:0},{type:"uint256",value:I??"0"},{type:"uint256",value:"10"}],O=v),J="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:b==="stablecoin"?(F=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"bytes32",value:d},{type:"uint256",value:B},{type:"uint8",value:p},{type:"uint256",value:v}],O="0"):(F=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"bytes32",value:d},{type:"uint256",value:B},{type:"uint8",value:p},{type:"uint256",value:0}],O=v),J="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(o,J,F,O,c)}async buildRawTransaction(r,a,s,o,c){let u=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!u?.result?.result)throw new w("Unknown error: "+JSON.stringify(u,null,2));return u.transaction}};var Ti=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new _r(n,r,a,s)}rawTxBuilder;async getAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=ar(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:o},a)}async checkAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=ar(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},a)}async approve(n,r){let a=ar(r.token,r.messenger);return this.tokenService.approve(n,{...r,spender:a})}async send(n,r){return Y(r.amount),K("amount",r.amount,r.sourceToken.decimals),Vr(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).send(r)}};function ar(i,n=1){switch(n){case 3:if(i.cctpAddress)return i.cctpAddress;throw new ge("Such route does not support CCTP protocol");case 4:if(i.cctpV2Address)return i.cctpV2Address;throw new ge("Such route does not support CCTP V2 protocol");case 5:if(i.oftBridgeAddress)return i.oftBridgeAddress;throw new fe("Such route does not support OFT protocol");case 1:case 2:return i.bridgeAddress}}function Vr(i,n,r,a,s){switch(j.getChainProperty(i).chainType){case"EVM":{if(s)return new ir(s,n,r);{let o=r.getNodeRpcUrl(i);return new ir(new dc.Web3(o),n,r)}}case"TRX":{if(s)return new wr(s,n);{let o=r.getNodeRpcUrl(i);return new wr(new mc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new Jr(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterParams:{jupiterUrl:a.jupiterUrl,jupiterApiKeyHeader:a.jupiterApiKeyHeader,jupiterMaxAccounts:a.jupiterMaxAccounts}},n);case"SRB":return new Xr(r,a,n);case"SUI":return new fi(r,n)}}var Sc=require("big.js");var LA=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),lc="__cache__",cs=function(i){return typeof i!="string"?lc+JSON.stringify(i):lc+i},us=class{constructor(n={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=n.defaultTtl||60*1e3}put(n,r,a){let s=(a?a.ttl:void 0)||this.defaultTtl,o=(a?a.callback:void 0)||function(){},c=cs(n),u=this.cache[c];u&&clearTimeout(u.handle);let A=setTimeout(()=>this.remove(n),s);this.cache[c]={handle:A,data:r,callback:o}}get(n){let r=this.cache[cs(n)];return r&&r.data}remove(n){let r=cs(n),a=this.cache[r];a&&(clearTimeout(a.handle),delete this.cache[r],a.callback(n,a.data))}clear(){for(let n in this.cache)LA(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},jt=us;var Pc=require("tronweb"),Un=require("web3");var vt=require("big.js");function pc(i,n,r,a,s){let o=G(i,3),c=(0,vt.Big)(o),u=(0,vt.Big)(r),A=(0,vt.Big)(a).plus(s),m,d;if(u.eq(0)||A.eq(0)){let T=c.div(2);m=(0,vt.Big)(a).plus(T),d=(0,vt.Big)(s).plus(T)}else m=(0,vt.Big)(a).plus(c.mul(a).div(A)),d=(0,vt.Big)(s).plus(c.mul(s).div(A));return(0,vt.Big)(Gs(n,m.toFixed(),d.toFixed())).minus(u).toFixed()}function gc(i){let n=G(i,3);return(0,vt.Big)(n).round().toFixed()}var Gt=require("web3");var XA={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Cr=XA;var Ie=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return D(this.lpAmount,3).toFixed()}earned(n,r){let a=Us(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?D(a,r).toFixed():a}};var $e=class{};var Ir=class extends $e{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let s;try{s=await Nr(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await Ji(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return s}async getPoolInfoFromChain(r){let a;try{a=await Nr(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Ji(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let s=new this.web3.eth.BatchRequest,o=this.getPoolContract(a.poolAddress),c=o.methods.userRewardDebt(r).encodeABI(),u=o.methods.balanceOf(r).encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:u},"latest"]});let[A,m]=await s.execute();if(A&&m&&!A.error&&!m.error)return new Ie({lpAmount:Gt.Web3.utils.toBigInt(m.result).toString(),rewardDebt:Gt.Web3.utils.toBigInt(A.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let s=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),o=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new Ie({lpAmount:o,rewardDebt:s})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,s=this.getPoolContract(r.poolAddress),o=s.methods.a().encodeABI(),c=s.methods.d().encodeABI(),u=s.methods.tokenBalance().encodeABI(),A=s.methods.vUsdBalance().encodeABI(),m=s.methods.totalSupply().encodeABI(),d=s.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:o},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:c},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:A},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:d},"latest"]});let[p,T,b,S,I,v]=await a.execute();if(p&&T&&b&&S&&I&&v&&!p.error&&!T.error&&!b.error&&!S.error&&!I.error&&!v.error){let B=Gt.Web3.utils.toBigInt(b.result).toString(),F=Gt.Web3.utils.toBigInt(S.result).toString(),O=we({tokenBalance:B,vUsdBalance:F});return{aValue:Gt.Web3.utils.toBigInt(p.result).toString(),dValue:Gt.Web3.utils.toBigInt(T.result).toString(),tokenBalance:B,vUsdBalance:F,totalLpAmount:Gt.Web3.utils.toBigInt(I.result).toString(),accRewardPerShareP:Gt.Web3.utils.toBigInt(v.result).toString(),p:this.P,imbalance:O}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),s=(await a.methods.a().call()).toString(),o=(await a.methods.d().call()).toString(),c=(await a.methods.tokenBalance().call()).toString(),u=(await a.methods.vUsdBalance().call()).toString(),A=(await a.methods.totalSupply().call()).toString(),m=(await a.methods.accRewardPerShareP().call()).toString(),d=we({tokenBalance:c,vUsdBalance:u});return{aValue:s,dValue:o,tokenBalance:c,vUsdBalance:u,totalLpAmount:A,accRewardPerShareP:m,p:this.P,imbalance:d}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Cr.abi,r)}};var bi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){if(r){let a=n,s=r;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(n,r){return Y(n.amount),K("amount",n.amount,n.token.decimals),n.amount=G(n.amount,n.token.decimals).toFixed(),Dn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return Y(n.amount),K("amount",n.amount,n.token.decimals),n.amount=G(n.amount,3).toFixed(),Dn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(n)}async claimRewards(n,r){return Dn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(n)}};var lt=require("@project-serum/anchor"),dt=require("@solana/web3.js");var Si=class extends $e{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let s=this.buildAnchorProvider(r),o=this.getBridge(a.bridgeAddress,s),c=new dt.PublicKey(a.poolAddress),u=await o.account.pool.fetch(c);try{let A=await Yi(new dt.PublicKey(r),u.mint,o.programId),{lpAmount:m,rewardDebt:d}=await o.account.userDeposit.fetch(A);return new Ie({lpAmount:m.toString(),rewardDebt:d.toString()})}catch{return new Ie({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),s=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),o=s.vUsdBalance.toString(),c=s.tokenBalance.toString(),u=we({tokenBalance:c,vUsdBalance:o});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:o,tokenBalance:c,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:u}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.deposit(new lt.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new dt.PublicKey(r.accountAddress),await Cn(c,r.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.withdraw(new lt.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new dt.PublicKey(r.accountAddress),await Cn(c,r.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.claimRewards().accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new dt.PublicKey(r.accountAddress),await Cn(c,r.txFeeParams,this.solanaRpcUrl),c}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),s=this.getBridge(r.token.bridgeAddress,a),{accounts:o,preInstructions:c}=await this._getLPTransactionData(s,r.token.poolAddress,r.accountAddress,a);return{bridge:s,accounts:o,preInstructions:c}}getBridge(r,a){return new lt.Program(sr,r,a)}buildAnchorProvider(r){let a=new dt.Connection(this.solanaRpcUrl,"confirmed"),s=new dt.PublicKey(r);return new lt.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new dt.PublicKey(s),u=await Vt(r.programId),A=await Sn(r.programId),m=new dt.PublicKey(a),p=(await r.account.pool.fetch(m)).mint,T=await et(c,p),b=await Pn(p,r.programId),S=await Yi(c,p,r.programId),I=[lt.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await wn(T,o)}catch{let O=await lt.Spl.associatedToken(o).methods.create().accounts({mint:p,owner:c,associatedAccount:T}).instruction();I.push(O)}try{await r.account.userDeposit.fetch(S)}catch{let F=await r.methods.initDepositAccount().accounts({mint:p,user:c,userDeposit:S}).instruction();I.push(F)}return{accounts:{mint:p,user:c,config:u,pool:m,bridgeAuthority:A,userDeposit:S,userToken:T,bridgeToken:b},preInstructions:I}}};var Wh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),YA=e.contract.Spec,KA=e.contract.Client;var Pi=class extends KA{constructor(r){super(new YA(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};var As=require("@stellar/stellar-sdk"),fc=As.rpc.Api;function Nn(i){let{simulation:n,options:r}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");if(fc.isSimulationSuccess(n))return n.result==null?void 0:r.parseResultXdr(n.result.retval);throw new Error(n.error)}function Wn(i){let{simulation:n}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");return fc.isSimulationError(n)}var wi=class extends $e{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let o=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Wn(o))throw new w;let c=Nn(o);if(!c)throw new w;let u=c.unwrap();return new Ie({lpAmount:u.lp_amount.toString(),rewardDebt:u.reward_debt.toString()})}async getPoolInfoFromChain(r){let s=await this.getContract(r.poolAddress).get_pool();if(Wn(s))throw new w;let o=Nn(s);if(!o)throw new w;let c=o.unwrap();return{aValue:c.a.toString(),accRewardPerShareP:c.acc_reward_per_share_p.toString(),dValue:c.d.toString(),tokenBalance:c.token_balance.toString(),p:this.P,totalLpAmount:c.total_lp_amount.toString(),vUsdBalance:c.v_usd_balance.toString(),imbalance:we({tokenBalance:c.token_balance.toString(),vUsdBalance:c.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let s={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new Pi(s)}};var En=ce(Ht());pe();pe();le();function Ci(i){return i=R(i),i.startsWith(`${zt}::balance::Balance<`)}var Pe=class i{__StructClass=!0;static get $typeName(){return`${zt}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;value;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:$(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return ae(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("Balance",{value:h.u64()})}static fromFields(n,r){return i.reified(n).new({value:U("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!Ci(r.type))throw new Error("not a Balance type");return It(r,[n]),i.reified(n).new({value:N("u64",r.fields.value)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({value:W("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return At($(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ci(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ci(r.bcs.type))throw new Error("object at is not a Balance object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=R(a[0]),o=R(M(n));if(s!==R(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,_.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching Balance object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Ci(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var ls=ce(Ht());pe();var ms=ce(Ht());le();function Ii(i){return i=R(i),i.startsWith(`${ms.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${ms.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(n){return{typeName:i.$typeName,fullTypeName:$(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return ae(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("PoolRewards",{acc_reward_per_share_p:h.u128(),admin_fee_share_bp:h.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:h.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:U("u128",r.acc_reward_per_share_p),adminFeeShareBp:U("u64",r.admin_fee_share_bp),adminFee:U(Pe.reified(n),r.admin_fee),rewards:U(Pe.reified(n),r.rewards),lpSupply:U("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!Ii(r.type))throw new Error("not a PoolRewards type");return It(r,[n]),i.reified(n).new({accRewardPerShareP:N("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:N("u64",r.fields.admin_fee_share_bp),adminFee:N(Pe.reified(n),r.fields.admin_fee),rewards:N(Pe.reified(n),r.fields.rewards),lpSupply:N("u64",r.fields.lp_supply)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({accRewardPerShareP:W("u128",r.accRewardPerShareP),adminFeeShareBp:W("u64",r.adminFeeShareBp),adminFee:W(Pe.reified(n),r.adminFee),rewards:W(Pe.reified(n),r.rewards),lpSupply:W("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return At($(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ii(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ii(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=R(a[0]),o=R(M(n));if(s!==R(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,_.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Ii(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};pe();var ds=ce(Ht());le();function Bi(i){return i=R(i),i.startsWith(`${ds.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${ds.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(n){return{typeName:i.$typeName,fullTypeName:$(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return ae(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("PoolState",{token_balance:h.u64(),vusd_balance:h.u64(),d:h.u64(),a:h.u64(),balance_ratio_min_bp:h.u64()})}static fromFields(n,r){return i.reified(n).new({tokenBalance:U("u64",r.token_balance),vusdBalance:U("u64",r.vusd_balance),d:U("u64",r.d),a:U("u64",r.a),balanceRatioMinBp:U("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!Bi(r.type))throw new Error("not a PoolState type");return It(r,[n]),i.reified(n).new({tokenBalance:N("u64",r.fields.token_balance),vusdBalance:N("u64",r.fields.vusd_balance),d:N("u64",r.fields.d),a:N("u64",r.fields.a),balanceRatioMinBp:N("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({tokenBalance:W("u64",r.tokenBalance),vusdBalance:W("u64",r.vusdBalance),d:W("u64",r.d),a:W("u64",r.a),balanceRatioMinBp:W("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return At($(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Bi(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Bi(r.bcs.type))throw new Error("object at is not a PoolState object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=R(a[0]),o=R(M(n));if(s!==R(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,_.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching PoolState object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Bi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};le();function vi(i){return i=R(i),i.startsWith(`${ls.PKG_V1}::pool::Pool<`)}var Ri=class i{__StructClass=!0;static get $typeName(){return`${ls.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(n){return{typeName:i.$typeName,fullTypeName:$(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return ae(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("Pool",{id:He.bcs,state:gn.bcs,rewards:pn.bcs,fee_share_bp:h.u64(),can_deposit:h.bool(),can_withdraw:h.bool(),decimals:h.u8(),balance:Pe.bcs})}static fromFields(n,r){return i.reified(n).new({id:U(He.reified(),r.id),state:U(gn.reified(n),r.state),rewards:U(pn.reified(n),r.rewards),feeShareBp:U("u64",r.fee_share_bp),canDeposit:U("bool",r.can_deposit),canWithdraw:U("bool",r.can_withdraw),decimals:U("u8",r.decimals),balance:U(Pe.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!vi(r.type))throw new Error("not a Pool type");return It(r,[n]),i.reified(n).new({id:N(He.reified(),r.fields.id),state:N(gn.reified(n),r.fields.state),rewards:N(pn.reified(n),r.fields.rewards),feeShareBp:N("u64",r.fields.fee_share_bp),canDeposit:N("bool",r.fields.can_deposit),canWithdraw:N("bool",r.fields.can_withdraw),decimals:N("u8",r.fields.decimals),balance:N(Pe.reified(n),r.fields.balance)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({id:W(He.reified(),r.id),state:W(gn.reified(n),r.state),rewards:W(pn.reified(n),r.rewards),feeShareBp:W("u64",r.feeShareBp),canDeposit:W("bool",r.canDeposit),canWithdraw:W("bool",r.canWithdraw),decimals:W("u8",r.decimals),balance:W(Pe.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return At($(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!vi(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!vi(r.bcs.type))throw new Error("object at is not a Pool object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=R(a[0]),o=R(M(n));if(s!==R(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,_.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching Pool object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!vi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};pe();var ps=ce(Ht());le();function ki(i){return i=R(i),i.startsWith(`${ps.PKG_V1}::user_deposit::UserDeposit<`)}var Mi=class i{__StructClass=!0;static get $typeName(){return`${ps.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;lpAmount;rewardDebt;constructor(n,r){this.$fullTypeName=$(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(n){return{typeName:i.$typeName,fullTypeName:$(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return ae(i.reified(n))}static get p(){return i.phantom}static get bcs(){return h.struct("UserDeposit",{id:He.bcs,lp_amount:h.u64(),reward_debt:h.u64()})}static fromFields(n,r){return i.reified(n).new({id:U(He.reified(),r.id),lpAmount:U("u64",r.lp_amount),rewardDebt:U("u64",r.reward_debt)})}static fromFieldsWithTypes(n,r){if(!ki(r.type))throw new Error("not a UserDeposit type");return It(r,[n]),i.reified(n).new({id:N(He.reified(),r.fields.id),lpAmount:N("u64",r.fields.lp_amount),rewardDebt:N("u64",r.fields.reward_debt)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({id:W(He.reified(),r.id),lpAmount:W("u64",r.lpAmount),rewardDebt:W("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return At($(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!ki(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!ki(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=R(a[0]),o=R(M(n));if(s!==R(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,_.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!ki(s.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return i.fromSuiObjectData(r,s.data)}};function hc(i,n,r){if(n.length===0||!n[0])return[];let a=n[0],s=i.reduce((u,A)=>u+BigInt(A),BigInt(0)),o=BigInt(a.balance),c=[];for(let u of n.slice(1)){if(o>s)return yc(r,a,c,i);o+=BigInt(u.balance),c.push(u)}return o>=s?yc(r,a,c,i):[]}function yc(i,n,r,a){let s=a.map(o=>i.pure.u64(o));return r.length>0&&i.mergeCoins(n.coinObjectId,r.map(o=>o.coinObjectId)),i.splitCoins(n.coinObjectId,s)}var HA="0x0000000000000000000000000000000000000000000000000000000000000000";async function Tc(i,n,r){let a=await i.devInspectTransactionBlock({sender:HA,transactionBlock:n});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let s=a.results?.pop()?.returnValues?.pop();if(!s)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[o,c]=s;return typeof r=="object"?r.fromBcs(Uint8Array.from(o)).toJSONField():Pr(r).parse(Uint8Array.from(o))}var Oi=class extends $e{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new Et({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=a.suiAddresses;if(!s)throw new w("SUI token must contain 'suiAddresses'");(0,En.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin);let c=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((u,A)=>{if(A.data)return u.lpAmount+=BigInt(A.data.content.fields.lp_amount),u.rewardDebt+=BigInt(A.data.content.fields.reward_debt),u;throw new w("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new Ie({lpAmount:c.lpAmount.toString(),rewardDebt:c.rewardDebt.toString()})}async fetchDeposits(r,a){return await Bt(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:Mi.phantom(ae(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=48,o=new Ve;qo(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await Tc(this.client,o,Ri.reified(ae(r.originTokenAddress))),u=c.state.tokenBalance,A=c.state.vusdBalance,m=we({tokenBalance:u,vUsdBalance:A});return{dValue:c.state.d,aValue:c.state.a,totalLpAmount:c.rewards.lpSupply,vUsdBalance:A,tokenBalance:u,accRewardPerShareP:c.rewards.accRewardPerShareP,p:s,imbalance:m}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=await Bt(p=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:p}));if(s.length===0||!s[0])throw new ht("No coins to deposit");let o=s[0],c=new Ve;c.setSender(r.accountAddress);let{depositObj:u,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=hc([r.amount],s,c);if(!m)throw new ht("No coins to deposit");if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let d=Ho(c,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:u,coin:m});return c.mergeCoins(o.coinObjectId,[d]),A&&c.transferObjects([u],r.accountAddress),await c.toJSON({client:this.client})}async getDepositObject(r,a,s){let o=await this.fetchDeposits(r,a);if(o.length===0||!o[0]){let c=ae(a).phantomType;return{depositObj:ec(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new w("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=ae(r.token.originTokenAddress).phantomType,o=new Ve;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(u)throw new ht("No deposit found");let A=zo(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await Bt(d=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:d}));if(!A[0]||!A[1])throw new w("No rewards found");return m[0]?o.mergeCoins(m[0].coinObjectId,[A[0],A[1]]):(o.mergeCoins(A[0],[A[1]]),o.transferObjects([A[0]],r.accountAddress)),await o.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=ae(r.token.originTokenAddress).phantomType,o=new Ve;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(u)throw new ht("No deposit found");let A=Qo(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await Bt(d=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:d}));return m[0]?o.mergeCoins(m[0].coinObjectId,[A]):o.transferObjects([A],r.accountAddress),await o.toJSON({client:this.client})}};var Br=require("web3"),bc=require("web3-eth-abi");var vr=class extends $e{constructor(r,a,s){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=s}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let s;if(this.tronJsonRpc)try{s=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{s=await this.getUserBalanceInfoPerProperty(r,a)}else s=await this.getUserBalanceInfoPerProperty(r,a);return s}async getUserBalanceInfoByBatch(r,a,s){let o=nr(s.poolAddress),c=nr(a),u=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("userRewardDebt",c)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("balanceOf",c)},"latest"]}],m=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)})).json();if(Array.isArray(m)&&m.length===2){let d=p=>{let T=m.find(b=>b.id===p);if(!T||!T.result)throw new Error(`Missing or invalid result for id ${p}`);return Br.Web3.utils.toBigInt(T.result).toString()};return new Ie({lpAmount:Br.Web3.utils.toBigInt(d(2)).toString(),rewardDebt:Br.Web3.utils.toBigInt(d(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let s=this.getContract(a.poolAddress),o=(await s.methods.userRewardDebt(r).call()).toString(),c=(await s.methods.balanceOf(r).call()).toString();return new Ie({lpAmount:c,rewardDebt:o})}async getPoolInfoFromChain(r){let a;if(this.tronJsonRpc)try{a=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let s=nr(a.poolAddress),o=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("a")},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("d")},"latest"]},{jsonrpc:"2.0",id:3,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("tokenBalance")},"latest"]},{jsonrpc:"2.0",id:4,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("vUsdBalance")},"latest"]},{jsonrpc:"2.0",id:5,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("totalSupply")},"latest"]},{jsonrpc:"2.0",id:6,method:"eth_call",params:[{to:s,data:this.getFunctionAbi("accRewardPerShareP")},"latest"]}],u=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json();if(Array.isArray(u)&&u.length===6){let A=T=>{let b=u.find(S=>S.id===T);if(!b||!b.result)throw new Error(`Missing or invalid result for id ${T}`);return Br.Web3.utils.toBigInt(b.result).toString()},m=A(3),d=A(4),p=we({tokenBalance:m,vUsdBalance:d});return{aValue:A(1),dValue:A(2),tokenBalance:m,vUsdBalance:d,totalLpAmount:A(5),accRewardPerShareP:A(6),p:this.P,imbalance:p}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[s,o,c,u,A,m]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),d=c.toString(),p=u.toString(),T=we({tokenBalance:d,vUsdBalance:p});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:d,vUsdBalance:p,totalLpAmount:A.toString(),accRewardPerShareP:m.toString(),p:this.P,imbalance:T}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",o,"0",s)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",o,"0",s)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,s=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",s,"0",a)}async buildRawTransaction(r,a,s,o,c){let u=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!u?.result?.result)throw new w("Unknown error: "+JSON.stringify(u,null,2));return u.transaction}getContract(r){return this.tronWeb.contract(Cr.abi,r)}getFunctionAbi(r,...a){let s=Cr.abi.find(o=>o.type==="function"&&"name"in o&&o.name===r);if(!s)throw new Error(`${r} method not found in Pool ABI`);return(0,bc.encodeFunctionCall)(s,a)}};var xi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new bi(n,r,this.params,s);let o=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new jt({defaultTtl:o})}rawTxBuilder;cache;async getAllowance(n,r){if(r){let a=n,s=r;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(n,r){if(r){let a=n,s=r;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(n,r){return this.tokenService.approve(n,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(n,r,a){Y(n),K("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:u,dValue:A}=s,m=pc(n,u,A,c,o);return D(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){Y(n),K("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=gc(n),u=We(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",d=(0,Sc.Big)(u).plus(m).toFixed();return D(d,a.decimals).toFixed()}async getUserBalanceInfo(n,r,a){return Dn(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(n,r)}async getPoolInfoFromChain(n,r){let a={chainSymbol:n.chainSymbol,poolAddress:n.poolAddress},s=this.cache.get(a);if(s)return s;{let o=await Dn(n.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(n);return this.cache.put(a,o),this.api.cachePut({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress},o),o}}};function Dn(i,n,r,a,s){switch(j.getChainProperty(i).chainType){case"EVM":{if(s)return new Ir(s,n);{let o=r.getNodeRpcUrl(i),c=new Un.Web3(o);return c.defaultReturnFormat={number:Un.FMT_NUMBER.STR,bytes:Un.FMT_BYTES.HEX},new Ir(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new vr(s,n,c);{let u=new Pc.TronWeb({fullHost:o});return new vr(u,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new Si(o,n)}case"SRB":return new wi(r,a,n);case"SUI":return new Oi(r.getNodeRpcUrl(i),n)}}var se=require("big.js");function Ic(i,n,r){let a=zA(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=QA(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Bc(i,n,r){let a=qA(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=em(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function zA(i,{feeShare:n,decimals:r},a){let s=(0,se.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:wc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:wc(tn(s,r),a)}}function wc(i,n){if(i.eq(0))return"0";let r=(0,se.Big)(n.tokenBalance).plus(i),a=St(r.toFixed(),n.aValue,n.dValue);return(0,se.Big)(n.vUsdBalance).minus(a).round().toFixed()}function QA(i,{feeShare:n,decimals:r},a){if((0,se.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,se.Big)(i).plus(a.vUsdBalance),c=St(o,a.aValue,a.dValue),u=We((0,se.Big)(a.tokenBalance).minus(c),r),A=(0,se.Big)(u).times(n),m=(0,se.Big)(u).minus(A).round();return{bridgeFeeInTokenPrecision:A.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:u.toFixed()}}function qA(i,{feeShare:n,decimals:r},a){let s=(0,se.Big)(n).div((0,se.Big)(1).minus(n)),o=(0,se.Big)(i).times(s),c=(0,se.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Cc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Cc(tn(i,r),a)}}function Cc(i,n){let r=(0,se.Big)(n.tokenBalance).minus(i),a=St(r.toFixed(),n.aValue,n.dValue);return(0,se.Big)(a).minus(n.vUsdBalance).round().toFixed()}function em(i,{feeShare:n,decimals:r},a){if((0,se.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,se.Big)(a.vUsdBalance).minus(i),o=St(s.toFixed(),a.aValue,a.dValue),c=(0,se.Big)(o).minus(a.tokenBalance),u=We(c.toFixed(),r),A=(0,se.Big)(n).div((0,se.Big)(1).minus(n)),m=(0,se.Big)(u).times(A),d=(0,se.Big)(u).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:d.round().toFixed(),amountExcludingCommissionInTokenPrecision:u.toFixed()}}var _t=require("big.js");function vc(i,n,r,a,s){let o=bt(i,n,r),c=We(o,n.decimals),u=tr(o,a,s),A=(0,_t.Big)(i).times(n.feeShare),m=(0,_t.Big)(u).div((0,_t.Big)(1).minus(a.feeShare)).minus(u);return{sourceLPSwap:{fee:D(A,n.decimals).neg().round(n.decimals,_t.Big.roundUp).toFixed(),swap:D((0,_t.Big)(i).minus(c).minus(A),n.decimals).neg().round(n.decimals,_t.Big.roundUp).toFixed()},destLPSwap:{fee:D(m,a.decimals).neg().round(a.decimals,_t.Big.roundUp).toFixed(),swap:D(We(o,a.decimals).minus(u).minus(m),a.decimals).neg().round(a.decimals,_t.Big.roundUp).toFixed()}}}var Fc=ce(require("axios"));var Rc="3.23.0-beta.3";function kc(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=am(a,s);return o&&(n[a]=o),n},{})}function Mc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=jn({chainSymbol:s,poolAddress:o.poolAddress}),u=we(o.poolInfo);n[c]={...o.poolInfo,imbalance:u}}}return n}function tm(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function nm(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function rm(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=im(a),n),{})}function im(i){return Object.entries(i).reduce((n,[r,a])=>{let s=nm(r);return s&&(n[s]=a),n},{})}function am(i,n){let r=j.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,oftBridgeAddress:n.oftBridgeAddress,transferTime:rm(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>tm(a,s))}}function jn(i){return i.chainSymbol+"_"+i.poolAddress}function Oc(i){let n=[];for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens)n.push({chainSymbol:s,poolAddress:o.poolAddress})}return n}function xc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=we(c),n[jn({chainSymbol:s,poolAddress:o})]=c}return n}var Gn=class{api;constructor(n){this.api=Fc.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Rc},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:kc(n),poolInfoMap:Mc(n)}}async getPendingInfo(){let{data:n}=await this.api.get("/pending-info");return n}async getGasBalance(n,r){let{data:a}=await this.api.get(`/check/${n}/${r}`);return a}async getTransferStatus(n,r){let{data:a}=await this.api.get(`/chain/${n}/${r}`);return a}async getReceiveTransactionCost(n){if(n.messenger===5&&!n.sourceToken)throw new Yn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",n,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(n){let r=n instanceof Array?n:[n],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return xc(a)}};var gs=20*1e3,sm=55*1e3,_n=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new jt({defaultTtl:sm}),this.receivedTransactionCache=new jt({defaultTtl:gs}),this.pendingInfoCache=new jt({defaultTtl:gs}),this.gasBalanceCache=new jt({defaultTtl:gs})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let n="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(n);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(n,a),a}async getGasBalance(n,r){let a=`GAS_BALANCE_${n}_${r}`,s=this.gasBalanceCache.get(a);if(s)return s;let o=this.apiClient.getGasBalance(n,r);return this.gasBalanceCache.put(a,o),o}async getPendingInfo(){let n="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(n);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(n,a),a}async getReceiveTransactionCost(n){let r=`RECEIVE_TX_COST_${n.sourceChainId}_${n.destinationChainId}_${n.messenger}${n.sourceToken?"_"+n.sourceToken:""}`,a=this.receivedTransactionCache.get(r);if(a)return a;let s=await this.apiClient.getReceiveTransactionCost(n);return this.receivedTransactionCache.put(r,s),s}async getTransferStatus(n,r){return this.apiClient.getTransferStatus(n,r)}async getPoolInfoMap(n){return this.apiClient.getPoolInfoMap(n)}};var Vn=class{constructor(n){this.apiClient=n}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let n=await this.getChainDetailsMap();return Object.values(n).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(n,r){return this.apiClient.getGasBalance(n,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(n,r){return await this.apiClient.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.apiClient.getReceiveTransactionCost(n)}async getPoolInfoMap(n){return await this.apiClient.getPoolInfoMap(n)}};var $n=class{constructor(n,r){this.client=n;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(n){let r=await this.client.getChainDetailsMap(),a={};for(let s in r){let o=r[s];o&&(a[s]={...o,tokens:Dc(o.tokens,n,this.isStaging)})}return a}async tokens(n){return Dc(await this.client.tokens(),n,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getTransferStatus(n,r){return await this.client.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.client.getReceiveTransactionCost(n)}cachePut(n,r){return this.client.cachePut(n,r)}getPoolInfoByKey(n){return this.client.getPoolInfoByKey(n)}refreshPoolInfo(n){return this.client.refreshPoolInfo(n)}};function Dc(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(om)}function om(i){let{flags:n,...r}=i;return r}var cm=55*1e3,Zn=class{constructor(n){this.client=n;this.poolInfoCache=new fs}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(n,r){return this.client.getTransferStatus(n,r)}getReceiveTransactionCost(n){return this.client.getReceiveTransactionCost(n)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getPoolInfoByKey(n){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(n);if(r)return r;{let a=await this.client.getPoolInfoMap(n);this.poolInfoCache.putAll(a);let s=a[jn(n)];if(s)return s;throw new w("Cannot find pool info for "+n.poolAddress+" on chain "+n.chainSymbol)}}async refreshPoolInfo(n){let r;if(n)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(n);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(Oc(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(jn(n),r)}},fs=class{cache;constructor(){this.cache=new jt({defaultTtl:cm})}putAll(n){for(let[r,a]of Object.entries(n))this.cache.put(r,a)}putAllIfNotExists(n){for(let[r,a]of Object.entries(n))this.cache.get(r)||this.cache.put(r,a)}put(n,r){this.cache.put(n,r)}get(n){let r=jn(n);return this.cache.get(r)}};var Wc=require("big.js"),Ec=require("tronweb"),Uc=require("web3");var um={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Fi=um;var ys=require("big.js"),Ze=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,ys.Big)(r).gte((0,ys.Big)(n.amount))}};var Am="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",mm="0xdac17f958d2ee523a2206206994597c13d831ec7",dm=1e5,Rr=class extends Ze{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,s=r.owner,o=r.spender;return this.getAllowanceByTokenAddress(a,s,o)}getAllowanceByTokenAddress(r,a,s){return this.getERC20Contract(r).methods.allowance(a,s).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let o=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(o,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===mm}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=this.getERC20Contract(a).methods.approve(s,c==null?Am:yi(c));return Promise.resolve({from:o,to:a,value:"0",data:A.encodeABI()})}async sendRawTransaction(r,a){let s=r,o={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?s.gas=dm:s.gas=await this.web3.eth.estimateGas(r);let{transactionHash:c}=await this.web3.eth.sendTransaction({...s,...o});return{txId:c.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Fi.abi,r)}};var Nc=require("@project-serum/anchor"),fn=require("@solana/web3.js");var Di=class extends Ze{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ue}buildRawTransactionApprove(r){throw new ue}buildAnchorProvider(r){let a=new fn.Connection(this.solanaRpcUrl,"confirmed"),s=new fn.PublicKey(r);return new Nc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ue}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await et(new fn.PublicKey(a),new fn.PublicKey(s.tokenAddress));return(await wn(o,this.buildAnchorProvider(a))).amount.toString()}catch(o){if(o instanceof Error)return o.message.startsWith("Account does not exist"),"0";throw o}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new fn.PublicKey(r.account))).toString()}};var hs=require("@stellar/stellar-sdk");var Ni=class extends Ze{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ue}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new hs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof hs.NotFoundError)return"0";throw m}let A=c.balances.find(m=>(m.asset_type==="credit_alphanum4"||m.asset_type==="credit_alphanum12")&&m.asset_code==a&&m.asset_issuer==s);return A?.balance?G(A.balance,j.getChainDecimalsByType(j.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new hs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(u=>u.asset_type==="native");return c?.balance?G(c.balance,j.getChainDecimalsByType(j.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ue}buildRawTransactionApprove(){throw new ue}};var Wi=class extends Ze{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Et({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new ue}buildRawTransactionApprove(r){throw new ue}getAllowance(r){throw new ue}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await Bt(s=>this.suiClient.getCoins({owner:r.account,cursor:s}));return a.length===0?"0":a.reduce((s,o)=>s+BigInt(o.balance),BigInt(0)).toString()}};var lm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",kr=class extends Ze{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:s}=r;return(await(await this.getContract(a)).methods.allowance(s,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await hi(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=c==null?lm:yi(c),A=[{type:"address",value:s},{type:"uint256",value:u}];return this.buildRawTransaction(a,"approve(address,uint256)",A,"0",o)}getContract(r){return this.tronWeb.contract(Fi.abi,r)}async buildRawTransaction(r,a,s,o,c){let u=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!u?.result?.result)throw new w("Unknown error: "+JSON.stringify(u,null,2));return u.transaction}};var Jn=class{constructor(n,r,a){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.owner,r).getAllowance(n);return D(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return Y(n.amount),K("amount",n.amount,n.token.decimals),this.getChainTokenService(n.token.chainSymbol,n.owner,r).checkAllowance(this.prepareCheckAllowanceParams(n))}async approve(n,r){return r.amount&&(Y(r.amount),K("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,n).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(n,r){return n.amount&&(Y(n.amount),K("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,r).buildRawTransactionApprove(this.prepareApproveParams(n))}async getTokenBalance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.account,r).getTokenBalance(n);return n.token.decimals?D(a,n.token.decimals).toFixed():a}async getNativeTokenBalance(n,r){let a=await this.getChainTokenService(n.chainSymbol,n.account,r).getNativeTokenBalance(n);return{int:a,float:D(a,j.getChainDecimalsByType(j.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch(j.getChainProperty(n).chainType){case"EVM":{if(a)return new Rr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Rr(new Uc.Web3(s),this.api)}}case"TRX":{if(a)return new kr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Ec.TronWeb({fullHost:s});return o.setAddress(r),new kr(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Di(s,this.api)}case"SRB":return new Ni(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Wi(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:G(n.amount,n.token.decimals)}}prepareApproveParams(n){return{tokenAddress:n.token.tokenAddress,owner:n.owner,spender:n.spender,chainSymbol:n.token.chainSymbol,amount:n.amount==null?void 0:(0,Wc.Big)(n.amount).toFixed()}}};var Ei=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r;let a=new Gn(r),s=new _n(a),o=new Vn(s),c=new Zn(o);this.api=new $n(c,r),this.tokenService=new Jn(this.api,n,r)}api;tokenService;buildRawTransactionApprove(n,r){return this.tokenService.buildRawTransactionApprove(n,r)}checkAllowance(n,r){return this.tokenService.checkAllowance(n,r)}getAllowance(n,r){return this.tokenService.getAllowance(n,r)}};var Ln=require("@solana/web3.js");var Ui=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async addMemoToTx(n,r){if(r.length>28)throw new w("InvalidArgumentException memo cannot be more than 28 characters");let a=new Ln.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=Ln.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s}),c=o.instructions[o.instructions.length-1];if(!c?.keys)throw new w("Last instruction or its keys are invalid.");c.keys.push({pubkey:new Ln.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var Q=require("@stellar/stellar-sdk");var KI=require("@stellar/stellar-sdk"),pm=KI.contract.Spec,gm=KI.contract.Client;var Mr=class extends gm{constructor(r){super(new pm(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var fm=100,ym=180,ji=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new Q.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=await this.getContract(Mr,n.tokenAddress).name();if(Wn(o))throw new w;let c=Nn(o);if(!c)throw new w;let[u,A]=c.split(":");if(u===void 0||A===void 0)throw new w("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let m=new Q.Asset(u,A),d=Q.Operation.changeTrust({asset:m,limit:n.limit});return new Q.TransactionBuilder(a,{fee:fm.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(d).setTimeout(ym).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(Mr,r).name();if(Wn(s))throw new w;let o=Nn(s);if(!o)throw new w;let[c,u]=o.split(":"),A=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new Q.Horizon.Server(A).loadAccount(n)).balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==c&&T.asset_issuer==u)}async submitTransactionStellar(n){let r=new Q.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=Q.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new Q.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=Q.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(Q.rpc.Api.isSimulationRestore(c))return new Q.TransactionBuilder(s,{fee:(+Q.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(Q.Operation.restoreFootprint({})).setTimeout(Q.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new Q.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=Q.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new Q.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Ps(()=>a.getTransaction(n),c=>c.status===Q.rpc.Api.GetTransactionStatus.NOT_FOUND,r);if(s.length===0)throw new w("No transaction responses found.");let o=s[s.length-1];if(!o)throw new w("Unexpected error: last response is undefined.");return o}getContract(n,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(a)}};var Gi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}keyMap={SplitCoins:"amounts",MoveCall:"arguments",MergeCoins:"sources",TransferObjects:"objects",MakeMoveVec:"elements",Upgrade:"ticket"};offset(n,r,a){return n.Input!==void 0?(n.Input=n.Input+r,n):n.NestedResult!==void 0?(n.NestedResult=[n.NestedResult[0]+a,n.NestedResult[1]],n):(n.Result!==void 0&&(n.Result=n.Result+a),n)}async merge(n,r){let a=JSON.parse(n),s=a.inputs.length,o=a.commands.length,c=JSON.parse(r);a.inputs=a.inputs.concat(c.inputs);for(let A of c.commands){let m=Object.keys(A)[0],d=this.keyMap[m];if(!d)continue;let p=A[m][d];Array.isArray(p)&&(A[m][d]=p.map(T=>this.offset(T,s,o)),a.commands.push(A))}return Ve.from(JSON.stringify(a)).toJSON()}};var _i=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new ji(n,r),this.sol=new Ui(n,r),this.sui=new Gi(n,r),this.evm=new Ei(n,r)}srb;sol;sui;evm};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),rr=(r=>(r.INT="int",r.FLOAT="float",r))(rr||{});var Ae=require("big.js");var Or=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new zn(n)}},Vi=class{api;tokenService;params;bridge;pool;constructor(n,r=Xn){j.addChainsProperties(r.additionalChainsProperties);let a=new Gn(r),s=new _n(a),o=new Vn(s),c=new Zn(o);this.api=new $n(c,r),this.tokenService=new Jn(this.api,n,r),this.bridge=new Ti(this.api,n,r,this.tokenService),this.pool=new xi(this.api,n,r,this.tokenService),this.params=r}async chainDetailsMap(n){return this.api.getChainDetailsMap(n)}async tokens(n){return this.api.tokens(n)}async tokensByChain(n,r){let s=(await this.api.getChainDetailsMap(r))[n];return s?s.tokens:[]}async getTransferStatus(n,r){return this.api.getTransferStatus(n,r)}async getGasBalance(n,r){return this.api.getGasBalance(n,r)}async checkAddress(){return new Promise(n=>{n({status:"OK",gasBalance:null})})}async getPendingStatusInfo(n,r,a,s){Y(n);let o;r=="float"?(K("amount",n,a.decimals),o=G(n,a.decimals).toFixed()):o=n;let c=bt(o,a,await me(this.api,a)),u=await me(this.api,s),A=this.getAmountFromVUsdFormatted(c,s,u),m,d=await this.api.getPendingInfo();for(let p in d[s.chainSymbol]){let T=d[s.chainSymbol];if(!T)throw new w("Cannot find pending info for "+s.chainSymbol);m=T[p]}if(m){let p=Ns(m.totalSentAmount,u),T=this.getAmountFromVUsdFormatted(c,s,p),b;return(0,Ae.Big)(T.int).gt(A.int)?b={min:A,max:T}:b={min:T,max:A},{pendingTxs:m.pendingTxs,pendingAmount:{int:Le(m.totalSentAmount,3,s.decimals).toFixed(0),float:D(m.totalSentAmount,3).toFixed()},estimatedAmount:b}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:A,max:A}}}async getTokenBalance(n,r){return this.tokenService.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.tokenService.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){Y(n),K("amountFloat",n,r.decimals);let a=G(n,r.decimals);if(a.eq(0))return 0;let s=bt(a,r,await me(this.api,r)),o=We(s,r.decimals);return Ki(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){Y(n),K("amountFloat",n,r.decimals);let s=G(n,r.decimals);if(s.eq(0))return 0;let o=bt(s,r,await me(this.api,r)),c=tr(o,a,await me(this.api,a)),u=We(o,a.decimals);return Ki(u,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return Y(n),K("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,Ae.Big)(n).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(n,r,a,s),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToSendAndGasFeeOptions(n,r,a,s){return Y(n),K("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,Ae.Big)(n).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToBeReceived(n,r,a,s){return this.getAmountToBeReceivedCompute(n,r,a,s,async()=>await me(this.api,r),async()=>await me(this.api,a))}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){return this.getAmountToBeReceivedCompute(n,r,a,s,async()=>await this.pool.getPoolInfoFromChain(r,o),async()=>await this.pool.getPoolInfoFromChain(a,c))}async getAmountToBeReceivedCompute(n,r,a,s=1,o,c){switch(s){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(n,r,a,await o(),await c());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(n,r,a,s);case 5:return this.getAmountToBeReceivedComputeOft(n,r,a)}}getAmountToBeReceivedComputeWithPools(n,r,a,s,o){Y(n),K("amountToSendFloat",n,r.decimals);let c=G(n,r.decimals),u=bt(c,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}getAmountToBeReceivedComputeCctp(n,r,a,s){Y(n),K("amountToSendFloat",n,r.decimals);let o=G(n,r.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new ge("Such route does not support CCTP protocol");let c=o.mul((0,Ae.Big)(1).minus(r.cctpFeeShare)).round(0,Ae.Big.roundUp),u=Le(c,r.decimals,a.decimals).round(0);return D(u,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new ge("Such route does not support CCTP V2 protocol");let c=o.mul((0,Ae.Big)(1).minus(r.cctpV2FeeShare)).round(0,Ae.Big.roundUp),u=Le(c,r.decimals,a.decimals).round(0);return D(u,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(n,r,a){Y(n),K("amountToSendFloat",n,r.decimals);let s=G(n,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new fe("Such route does not support OFT protocol");let{adminFeeShareWithExtras:o}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!o)throw new fe("Such route does not support OFT protocol");let c=s.mul((0,Ae.Big)(1).minus(o)).round(0,Ae.Big.roundUp),u=Le(c,r.decimals,a.decimals).round(0);return D(u,a.decimals).toFixed()}async getAmountToSend(n,r,a,s){return this.getAmountToSendCompute(n,r,a,s,()=>me(this.api,r),()=>me(this.api,a))}async getAmountToSendFromChain(n,r,a,s,o,c){return this.getAmountToSendCompute(n,r,a,s,()=>this.pool.getPoolInfoFromChain(r,o),()=>this.pool.getPoolInfoFromChain(a,c))}async getAmountToSendCompute(n,r,a,s=1,o,c){switch(s){case 1:case 2:return this.getAmountToSendComputeWithPools(n,r,a,await o(),await c());case 3:case 4:return this.getAmountToSendComputeCctp(n,r,a,s);case 5:return this.getAmountToSendComputeOft(n,r,a)}}getAmountToSendComputeWithPools(n,r,a,s,o){Y(n),K("amountToBeReceivedFloat",n,a.decimals);let c=G(n,a.decimals),u=Es(c,a,o),A=Ws(u,r,s);if((0,Ae.Big)(A).lte(0))throw new Tt;return D(A,r.decimals).toFixed()}getAmountToSendComputeCctp(n,r,a,s){Y(n),K("amountToBeReceivedFloat",n,a.decimals);let o=G(n,a.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new ge("Such route does not support CCTP protocol");let c=o.div((0,Ae.Big)(1).minus(r.cctpFeeShare)).round(0,Ae.Big.roundDown),u=Le(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new ge("Such route does not support CCTP V2 protocol");let c=o.div((0,Ae.Big)(1).minus(r.cctpV2FeeShare)).round(0,Ae.Big.roundDown),u=Le(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}}}async getAmountToSendComputeOft(n,r,a){Y(n),K("amountToBeReceivedFloat",n,a.decimals);let s=G(n,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new fe("Such route does not support OFT protocol");let{adminFeeShareWithExtras:o}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!o)throw new fe("Such route does not support OFT protocol");let c=s.div((0,Ae.Big)(1).minus(o)).round(0,Ae.Big.roundDown),u=Le(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return Qi(n,r.allbridgeChainId,a,this.api)}getAverageTransferTime(n,r,a){return n.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(n){return await this.api.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}async refreshPoolInfo(n){if(n){let a=(n instanceof Array?n:[n]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(n){return js(n)}async getExtraGasMaxLimits(n,r,a){return await qi(n,r,a,this.api)}async getVUsdFromAmount(n,r,a){Y(n);let s;r=="float"?(K("amount",n,a.decimals),s=G(n,a.decimals).toFixed()):s=n;let o=bt(s,a,await me(this.api,a));return{int:o,float:D(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await me(this.api,r))}getAmountFromVUsdFormatted(n,r,a){Y(n);let s=tr(n,r,a);if((0,Ae.Big)(s).lt(0))throw new Tt;return{int:s,float:D(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return Ic(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await me(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await me(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Bc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await me(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await me(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,Ae.Big)(o).lt(0))throw new Tt;return s}async getSendAmountDetails(n,r,a,s){Y(n);let o;return r=="float"?(K("amount",n,a.decimals),o=G(n,a.decimals).toFixed()):o=n,vc(o,a,await me(this.api,a),s,await me(this.api,s))}};function hm(i){return"solanaRpcUrl"in i}var Ts=class{params;bridge;pool;utils;service;constructor(n,r=Xn){let a;hm(n)?a=new Or({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new Or(n),this.service=new Vi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new _i(a,r),this.params=r}async chainDetailsMap(n="swap"){return this.service.chainDetailsMap(n)}async tokens(n="swap"){return this.service.tokens(n)}async tokensByChain(n,r="swap"){return this.service.tokensByChain(n,r)}async getTransferStatus(n,r){return this.service.getTransferStatus(n,r)}async getGasBalance(n,r){return this.service.getGasBalance(n,r)}async checkAddress(n,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(n,r,a,s){return this.service.getPendingStatusInfo(n,r,a,s)}async getTokenBalance(n,r){return this.service.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.service.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){return this.service.calculateFeePercentOnSourceChain(n,r)}async calculateFeePercentOnDestinationChain(n,r,a){return this.service.calculateFeePercentOnDestinationChain(n,r,a)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(n,r,a,s)}async getAmountToSendAndGasFeeOptions(n,r,a,s){return this.service.getAmountToSendAndGasFeeOptions(n,r,a,s)}async getAmountToBeReceived(n,r,a,s=1){return this.service.getAmountToBeReceived(n,r,a,s)}async getAmountToBeReceivedFromChain(n,r,a,s=1,o,c){return this.service.getAmountToBeReceivedFromChain(n,r,a,s,o,c)}getAmountToBeReceivedFromPools(n,r,a,s,o,c=1){switch(c){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(n,r,a,s,o);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(n,r,a,c)}}async getAmountToSend(n,r,a,s=1){return this.service.getAmountToSend(n,r,a,s)}async getAmountToSendFromChain(n,r,a,s=1,o,c){return this.service.getAmountToSendFromChain(n,r,a,s,o,c)}getAmountToSendFromPools(n,r,a,s,o,c=1){switch(c){case 1:case 2:return this.service.getAmountToSendComputeWithPools(n,r,a,s,o);case 3:case 4:return this.service.getAmountToSendComputeCctp(n,r,a,c)}}async getGasFeeOptions(n,r,a){return this.service.getGasFeeOptions(n,r,a)}getAverageTransferTime(n,r,a){return this.service.getAverageTransferTime(n,r,a)}async getPoolInfoByToken(n){return this.service.getPoolInfoByToken(n)}async refreshPoolInfo(n){return this.service.refreshPoolInfo(n)}aprInPercents(n){return this.service.aprInPercents(n)}async getExtraGasMaxLimits(n,r,a=1){return this.service.getExtraGasMaxLimits(n,r,a)}async getVUsdFromAmount(n,r,a){return this.service.getVUsdFromAmount(n,r,a)}async getAmountFromVUsd(n,r){return this.service.getAmountFromVUsd(n,r)}async swapAndBridgeFeeCalculation(n,r,a){return this.service.swapAndBridgeFeeCalculation(n,r,a)}async swapAndBridgeFeeCalculationReverse(n,r,a){return this.service.swapAndBridgeFeeCalculationReverse(n,r,a)}async getSendAmountDetails(n,r,a,s){return this.service.getSendAmountDetails(n,r,a,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,OFTDoesNotSupportedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
2
2
  //# sourceMappingURL=index.js.map