@allbridge/bridge-core-sdk 3.23.0 → 3.23.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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";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});
|
|
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.1-alpha.1";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
|