@allbridge/bridge-core-sdk 3.23.0-beta.2 → 3.23.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +4 -4
- package/dist/src/utils/evm/index.d.ts +40 -0
- package/dist/src/utils/evm/index.js +36 -0
- package/dist/src/utils/evm/index.js.map +1 -0
- package/dist/src/utils/index.d.ts +6 -0
- package/dist/src/utils/index.js +6 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/sui/index.d.ts +28 -0
- package/dist/src/utils/sui/index.js +57 -0
- package/dist/src/utils/sui/index.js.map +1 -0
- 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 jc=Object.create;var vr=Object.defineProperty;var Uc=Object.getOwnPropertyDescriptor;var Gc=Object.getOwnPropertyNames;var _c=Object.getPrototypeOf,Vc=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),$c=(i,n)=>{for(var r in n)vr(i,r,{get:n[r],enumerable:!0})},hs=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Gc(n))!Vc.call(i,s)&&s!==r&&vr(i,s,{get:()=>n[s],enumerable:!(a=Uc(n,s))||a.enumerable});return i};var ce=(i,n,r)=>(r=i!=null?jc(_c(i)):{},hs(n||!i||!i.__esModule?vr(r,"default",{value:i,enumerable:!0}):r,i)),Zc=i=>hs(vr({},"__esModule",{value:!0}),i);function Kr(i){try{return(0,Yr.fromBase58)(i).length===mu}catch{return!1}}function Ue(i){return lu(i)&&pu(i)===or}function kn(i){return Ue(i)}function du(i){return i.includes("::")?oa(i):i}function oa(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,Yr.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>du(c.trim())):[];return{address:x(n),module:r,name:s,typeParams:o}}function cr(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?oa(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:cr(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(or*2,"0")}`}function Re(i,n=!1){return x(i,n)}function lu(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function pu(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var Yr,mu,or,ke=yn(()=>{Yr=require("@mysten/bcs"),mu=32;or=32});var Ao,gu,fu,Ot,ca=yn(()=>{Ao=require("@mysten/bcs");ke();gu=/^vector<(.+)>$/,fu=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,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(gu);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(fu);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,Ao.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 yu(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function hu(i){return f.bcs.enum("Option",{None:null,Some:i})}function Ba(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ia,value:i})}var f,q,Ge,Me,ua,Aa,ma,da,Hr,rt,la,pa,ga,fa,ya,ha,ba,Ta,Sa,Pa,wa,Ca,Ia,va,Ra,ka,Ma,mo,bu,Oa,lo,po,xa=yn(()=>{f=require("@mysten/bcs");ke();ca();q=f.bcs.bytes(or).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!Ue(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}),ua=f.bcs.struct("SharedObjectRef",{objectId:q,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),Aa=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Me,SharedObject:ua,Receiving:Me}),ma=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:Aa}),da=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>da),struct:f.bcs.lazy(()=>ha),u16:null,u32:null,u256:null}),Hr=da.transform({input:i=>typeof i=="string"?Ot.parseFromStr(i,!0):i,output:i=>Ot.tagToString(i)}),rt=f.bcs.enum("Argument",{GasCoin:null,Input:f.bcs.u16(),Result:f.bcs.u16(),NestedResult:f.bcs.tuple([f.bcs.u16(),f.bcs.u16()])}),la=f.bcs.struct("ProgrammableMoveCall",{package:q,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(Hr),arguments:f.bcs.vector(rt)}),pa=f.bcs.enum("Command",{MoveCall:la,TransferObjects:f.bcs.struct("TransferObjects",{objects:f.bcs.vector(rt),address:rt}),SplitCoins:f.bcs.struct("SplitCoins",{coin:rt,amounts:f.bcs.vector(rt)}),MergeCoins:f.bcs.struct("MergeCoins",{destination:rt,sources:f.bcs.vector(rt)}),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:hu(Hr).transform({input:i=>i===null?{None:!0}:{Some:i},output:i=>i.Some??null}),elements:f.bcs.vector(rt)}),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:rt})}),ga=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(ma),commands:f.bcs.vector(pa)}),fa=f.bcs.enum("TransactionKind",{ProgrammableTransaction:ga,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),ya=f.bcs.enum("TransactionExpiration",{None:null,Epoch:yu()}),ha=f.bcs.struct("StructTag",{address:q,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(da)}),ba=f.bcs.struct("GasData",{payment:f.bcs.vector(Me),owner:q,price:f.bcs.u64(),budget:f.bcs.u64()}),Ta=f.bcs.struct("TransactionDataV1",{kind:fa,sender:q,gasData:ba,expiration:ya}),Sa=f.bcs.enum("TransactionData",{V1:Ta}),Pa=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),wa=f.bcs.enum("IntentVersion",{V0:null}),Ca=f.bcs.enum("AppId",{Sui:null}),Ia=f.bcs.struct("Intent",{scope:Pa,version:wa,appId:Ca});va=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())}),Ra=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())}),ka=f.bcs.struct("MultiSigPkMap",{pubKey:Ra,weight:f.bcs.u8()}),Ma=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(ka),threshold:f.bcs.u16()}),mo=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(va),bitmap:f.bcs.u16(),multisig_pk:Ma}),bu=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))}),Oa=f.bcs.struct("SenderSignedTransaction",{intentMessage:Ba(Sa),txSignatures:f.bcs.vector(bu)}),lo=f.bcs.vector(Oa,{name:"SenderSignedData"}),po=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,Tu,Su,go,Pu,wu,Cu,fo,yo,Mn,Iu,Fa,Bu,vu,Ru,ku,Mu,Ou,ho,bo=yn(()=>{y=require("@mysten/bcs");xa();Tu=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})}),Su=y.bcs.struct("ModuleId",{address:q,name:y.bcs.string()}),go=y.bcs.struct("MoveLocation",{module:Su,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),Pu=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}),wu=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),Cu=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(go),MoveAbort:y.bcs.tuple([go,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:Pu}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:wu}),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:Tu}),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}),fo=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:Cu,command:y.bcs.option(y.bcs.u64())})}),yo=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}),Iu=y.bcs.struct("TransactionEffectsV1",{status:fo,executedEpoch:y.bcs.u64(),gasUsed:yo,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)}),Fa=y.bcs.tuple([y.bcs.u64(),Ge]),Bu=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Fa,Mn])}),vu=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([Ge,Mn]),PackageWrite:Fa}),Ru=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),ku=y.bcs.struct("EffectsObjectChange",{inputState:Bu,outputState:vu,idOperation:Ru}),Mu=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Fa,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),Ou=y.bcs.struct("TransactionEffectsV2",{status:fo,executedEpoch:y.bcs.u64(),gasUsed:yo,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,ku])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([q,Mu])),auxDataDigest:y.bcs.option(Ge)}),ho=y.bcs.enum("TransactionEffects",{V1:Iu,V2:Ou})});var it,xu,h,le=yn(()=>{it=require("@mysten/bcs");xa();bo();ca();xu=require("@mysten/bcs"),h={...it.bcs,U8:it.bcs.u8(),U16:it.bcs.u16(),U32:it.bcs.u32(),U64:it.bcs.u64(),U128:it.bcs.u128(),U256:it.bcs.u256(),ULEB128:it.bcs.uleb128(),Bool:it.bcs.bool(),String:it.bcs.string(),Address:q,AppId:Ca,Argument:rt,CallArg:ma,CompressedSignature:va,GasData:ba,Intent:Ia,IntentMessage:Ba,IntentScope:Pa,IntentVersion:wa,MultiSig:mo,MultiSigPkMap:ka,MultiSigPublicKey:Ma,ObjectArg:Aa,ObjectDigest:Ge,ProgrammableMoveCall:la,ProgrammableTransaction:ga,PublicKey:Ra,SenderSignedData:lo,SenderSignedTransaction:Oa,SharedObjectRef:ua,StructTag:ha,SuiObjectRef:Me,Command:pa,TransactionData:Sa,TransactionDataV1:Ta,TransactionExpiration:ya,TransactionKind:fa,TypeTag:Hr,TransactionEffects:ho,PasskeyAuthenticator:po}});function EA(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=EA(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function Jo(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 Jo(n)?n:i.object(n)}function Ye(i,n,r){if(Jo(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:[Ye(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 jA(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]=jA(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((Dg,Lo)=>{"use strict";pe();var Ha=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}},UA=new Ha;Lo.exports=UA});var es=_i((jg,qo)=>{"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}},GA=new qa;qo.exports=GA});var rs=_i((Vg,tc)=>{"use strict";pe();var ns=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 ns;tc.exports=_A});var ym={};$c(ym,{AddressStatus:()=>Rr,AllbridgeCoreSdk:()=>ys,AmountFormat:()=>zn,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>Zn,CCTPDoesNotSupportedError:()=>ge,ChainSymbol:()=>De,ChainType:()=>ee,ErrorCode:()=>bs,ExtraGasMaxLimitExceededError:()=>$n,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>bt,InvalidAmountError:()=>ht,InvalidGasFeePaymentOptionError:()=>hn,InvalidMessengerOptionError:()=>Vn,InvalidTxError:()=>qt,JupiterError:()=>de,Messenger:()=>Ne,MethodNotSupportedError:()=>ue,NodeRpcUrlNotInitializedError:()=>Jn,OFTDoesNotSupportedError:()=>fe,SdkError:()=>w,SdkRootError:()=>ne,SolanaAutoTxFee:()=>Er,TimeoutError:()=>Tn,TxTooLargeError:()=>Ln,VerifyTxError:()=>bn,mainnet:()=>_n,nodeRpcUrlsDefault:()=>Lc,nodeUrlsDefault:()=>Jc});module.exports=Zc(ym);var _n={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},Jc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Lc={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 uc=require("tronweb"),Ac=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)}},bt=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)}},Vn=class extends ne{constructor(n){super("InvalidMessengerOptionError",n)}},ue=class extends ne{constructor(n){super("MethodNotSupportedError",n)}},bn=class extends ne{constructor(n){super("VerifyTxError",n)}},qt=class extends ne{constructor(n){super("InvalidTxError",n)}},$n=class extends ne{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},Zn=class extends ne{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},Tn=class extends ne{constructor(n){super("TimeoutError",n)}},Jn=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)}},Ln=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")}},bs=(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))(bs||{});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 Xc={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Yc={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"}},U=(()=>{let i={...Yc};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 Xc[n]}}})();var Rr=(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))(Rr||{});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 Vi=require("big.js");async function me(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function Y(i){if((0,Vi.Big)(i).lte(0))throw new ht("Amount must be greater than zero")}function K(i,n,r){let a=(0,Vi.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new Zn(i,o.length,r)}async function kr(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new Tn(n)),r)})])}async function $i(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 kr(i(),n,a)}catch{if(++s>=r)throw new Tn(n)}}async function Ts(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 Zs=require("big.js");var Kc={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"}]},Ss=Kc;var Hc={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"}]},Ps=Hc;var zc={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"}]},ws=zc;var Fr=ce(require("@project-serum/anchor")),Qi=require("@solana/web3.js");var ye=ce(require("@project-serum/anchor")),he=require("@solana/web3.js");async function qe(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 Cs(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function Xn(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 Is(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 Bs(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 Zi(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function Ji(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function vs(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function Li(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 Rs(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function ks(i,n){let[r]=await he.PublicKey.findProgramAddress([ye.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Ms(i,n){let[r]=he.PublicKey.findProgramAddressSync([ye.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function Os(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 xs=require("@project-serum/anchor"),Mr=require("@solana/web3.js");function $t(i,n){let r=new Mr.Connection(i,"confirmed"),a=new Mr.PublicKey(n);return new xs.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Gs=require("@solana/web3.js"),_s=require("@stellar/stellar-sdk"),ve=require("big.js"),Ki=ce(require("randombytes")),Yi=require("tronweb");var C=require("big.js"),Or=ce(require("bn.js"));function Xi(i,n){return(0,C.Big)(100).minus((0,C.Big)(100).times(n).div(i)).toNumber()}function tn(i,n){return Je(i,n,3).round(0,C.Big.roundDown)}function We(i,n){return Je(i,3,n)}function Je(i,n,r){let a=(0,C.Big)(r).minus(n).toNumber();return(0,C.Big)(i).times(Yn(a))}function Yn(i){return(0,C.Big)(10).pow(i)}function G(i,n){return(0,C.Big)(i).times(Yn(n))}function D(i,n){let r=(0,C.Big)(i);return r.eq(0)?(0,C.Big)(0):(0,C.Big)(r).div(Yn(n))}function we(i){return D((0,C.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Tt(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 Kn(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 Fs(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 Ds(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 bt;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 Ns(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 bt;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 Ws(i,n,r,a){let s=new Or.default(i),o=new Or.default(r),c=new Or.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Es(i){return(0,C.Big)(i).gt(0)?`${Number((0,C.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function js(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=Us(i);break}case"SOLANA":{a=new Gs.PublicKey(i).toBuffer();break}case"TRX":{a=Qc(i);break}case"SRB":{a=new _s.Address(i).toBuffer();break}case"SUI":{a=Us(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 et(i){return i.replace(/^0x/i,"")}function Vs(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function Us(i){let r=Vs(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function Qc(i){let n=Hn(i),r=Vs(n);return qc(r,32)}function Hn(i){let n=Yi.utils.crypto.decodeBase58Address(i);return n?Yi.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function qc(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function xr(){return(0,Ki.default)(32)}function Pt(){let i=(0,Ki.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 tt(i,n,r){let a={};a.fromChainId=n.sourceToken.allbridgeChainId,a.fromChainSymbol=n.sourceToken.chainSymbol;let s=U.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 Hi(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,U.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 zi(o,n.destinationToken,a.messenger,r),p,T;switch(a.gasFeePaymentMethod){case"native":p=U.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,U.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,ve.Big.roundDown);break}case"int":{a.extraGas=A;let b=D(a.extraGas,U.getChainDecimalsByType(o.chainType)),S=T.mul(b);a.extraGasDest=G(S,U.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,ve.Big.roundDown);break}}tu(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"&&eu(a.amount,o.decimals,a.fee,a.extraGas),a}function eu(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 Hi(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,U.getChainDecimalsByType(i.chainType)).toFixed()},adminFeeShareWithExtras:s.adminFeeShareWithExtras};if(s.sourceNativeTokenPrice){let c=Je(new ve.Big(s.fee).mul(s.sourceNativeTokenPrice),U.getChainDecimalsByType(i.chainType),i.decimals).toFixed(0,ve.Big.roundUp);o.stablecoin={int:c,float:D(c,i.decimals).toFixed()}}return o}function tu(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 $n(`Extra gas ${i} in int format, exceeded limit ${s} for '${n}' payment method`)}async function zi(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,U.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,ve.Big)(u).div(o.exchangeRate).toFixed(U.getChainDecimalsByType(i.chainType),ve.Big.roundDown),m=G(A,U.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,U.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:D(n.txCostAmount.transfer,U.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:o.exchangeRate,sourceNativeTokenPrice:o.sourceNativeTokenPrice}}function $s(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Dr(i,n,r,a){let s,o=new Qi.PublicKey(n),c=new Qi.PublicKey(r),u=await qe(o,c),A=$t(a,n);Fr.setProvider(A);let m=await Fr.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 Qn=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 tt(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"+xr().toString("hex"),B,F,O=T;switch(S&&(O=(0,Zs.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 Dr(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(Ss.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Ps.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(ws.abi,r)}};var Nr=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=qn(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),$s(n)?Wr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Wr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var re=require("@project-serum/anchor"),X=require("@solana/web3.js"),Le=require("big.js");var er={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 Js={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 Ls=require("@project-serum/anchor"),Xs=ce(require("big.js")),tr=require("web3");async function wn(i,n){return await Ls.Spl.token(n).account.token.fetch(i)}async function Ys(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,Xs.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 Tt(i,{decimals:s,feeShare:o},c)}function Ks(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=tr.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=tr.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),p=Buffer.from(d.replace("0x",""),"hex");p[0]=a,p[1]=s;let T=tr.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=tr.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 je=require("@solana/web3.js"),Hs=require("big.js");var qi=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new qi.AddressLookupTableAccount({key:r.accountKey,state:qi.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new w("Cannot get AccountInfo");return a.data}))})))}var Er="AUTO";async function Cn(i,n,r){let a=new je.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await Qs(i.instructions,s,n,a)}async function zs(i,n,r){let a=new je.Connection(r,"confirmed"),s=await nn(i,a),o=je.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:s});if(i.serialize().length>1232)throw new Ln;await Qs(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function Qs(i,n,r,a){if(n>0){let s=nu(n,i);if(r?.solana){let o=r.solana;if(o===Er)await ea(i,a);else if("pricePerUnitInMicroLamports"in o)await ea(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,Hs.Big)(o.extraFeeInLamports).div(s).mul(Yn(6)).toFixed(0);await ea(i,a,c)}}}}function nu(i,n){let r=n.findIndex(o=>o.programId.equals(je.ComputeBudgetProgram.programId)&&je.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),a=Number((i*1.3).toFixed(0)),s=je.ComputeBudgetProgram.setComputeUnitLimit({units:a});return r>=0?n[r]=s:n.push(s),a.toString()}async function ea(i,n,r){let a=i.findIndex(c=>c.programId.equals(je.ComputeBudgetProgram.programId)&&je.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await ru(n)),o=je.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function ru(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var qs=require("@solana/spl-token"),rn=require("@solana/web3.js"),In=ce(require("axios"));var jr=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=${qs.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 ta=1e6,eo=1.1,Ur=class extends Ee{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new jr(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(er,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 qe(O,oe),He=new X.PublicKey(F),Be=new X.PublicKey(v),Ze=await Pn(Be,H.programId),ze=new X.PublicKey(B),Fe=await qe(He,Be),ft=[re.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ta})];try{await wn(Fe,J)}catch{let Ec=await re.Spl.associatedToken(J).methods.create().accounts({mint:Be,owner:He,associatedAccount:Fe}).instruction();ft.push(Ec)}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:Ze,receiveMint:Be,receivePool:ze,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 tt(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 zs(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,Le.Big)(o):(0,Le.Big)(r.fee);c&&(A=A.plus(c)),s||(A=A.mul(eo));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,Le.Big)(r.amount).minus((0,Le.Big)(d).mul(eo)).toFixed(0)}else p=(0,Le.Big)(r.amount).minus(A).toFixed(0);if((0,Le.Big)(p).lte(0))throw new Qt(`Amount not enough to pay fee, ${D((0,Le.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,Le.Big)(a.fee).div(s).mul((0,Le.Big)(10).pow(U.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),c;return a.extraGas&&(c=(0,Le.Big)(a.extraGas).div(s).mul((0,Le.Big)(10).pow(U.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(er,F,J),Z=Array.from(xr()),xe=new X.PublicKey(p),oe=await Ys(a,H,xe),pt=await Cs(Z,H.programId),gt=await Sn(H.programId),Rt=await qe(new X.PublicKey(S),new X.PublicKey(b)),He=await Pn(new X.PublicKey(b),H.programId),Be=await Zi(I,H.programId),Ze=await Bs(I,Buffer.from(v),H.programId),ze=await Vt(H.programId),Fe=await H.account.config.fetch(ze),ft=await Xn(I,Fe.gasOracleProgramId),yt=await Xn(O,Fe.gasOracleProgramId),Qe=Ks({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=He,L.chainBridgeAccount=Be,L.otherBridgeTokenAccount=Ze,L.userAccount=new X.PublicKey(S),L.destinationChainId=I,L.mint=new X.PublicKey(b),L.config=ze,L.configAccountInfo=Fe,L.gasPrice=ft,L.thisGasPrice=yt,L.message=Qe,T&&(L.extraGasInstruction=this.getExtraGasInstruction(T,L.userAccount,ze)),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 Ji(v,oe),gt=await Vt(oe),Rt=await vs(Z,oe),He=[];xe&&He.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:ta})]).postInstructions(He).transaction(),Ze=$t(this.solanaRpcUrl,I.toString()).connection;return Be.recentBlockhash=(await Ze.getLatestBlockhash()).blockhash,Be.feePayer=I,await this.convertToVersionedTransaction(Be,Ze)}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)),He=await Ji(v,O.wormholeMessengerProgramId),Be=await Vt(O.wormholeMessengerProgramId),Ze=X.Keypair.generate(),ze=$t(this.solanaRpcUrl,I.toString()),Fe=await ze.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:He,wormholeProgram:oe,bridge:pt,message:Ze.publicKey,wormholeMessenger:O.wormholeMessengerProgramId,sequence:Rt,feeCollector:gt,wormholeMessengerConfig:Be,clock:re.web3.SYSVAR_CLOCK_PUBKEY},Br=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:v,recipient:c,receiveToken:u}).accounts(L).preInstructions([re.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ta}),yt]).postInstructions(Qe).signers([Ze]).transaction();return Br.recentBlockhash=(await ze.connection.getLatestBlockhash()).blockhash,Br.feePayer=I,{transaction:await this.convertToVersionedTransaction(Br,ze.connection),messageAccount:Ze}}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(Js,p,v),F=new X.PublicKey(c),O=await Rs(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 qe(J,F),Z.bridgeAuthority=await Is(O,B.programId),Z.bridgeTokenAccount=await ks(F,B.programId),Z.chainBridgeAccount=await Zi(u,B.programId),Z.userAccount=J,Z.destinationChainId=u,Z.mint=F,Z.gasPrice=await Xn(u,H.gasOracleProgramId),Z.thisGasPrice=await Xn(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:He,localToken:Be,remoteTokenMessengerKey:Ze,authorityPda:ze}=Os(J,I,xe,oe),Fe=[];F&&Fe.push(F);let ft=X.Keypair.generate(),yt=Ms(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:He,localToken:Be,remoteTokenMessengerKey:Ze,authorityPda:ze,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 Gr=require("@stellar/stellar-sdk"),to=require("big.js");var t=require("@stellar/stellar-sdk"),iu=t.contract.Spec,au=t.contract.Client;var nr=class extends au{constructor(r){super(new iu(["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 _r=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 tt(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,to.Big)(b).plus(T).toFixed());let S=this.getContract(nr,s,o),I;return p==="stablecoin"?I=await S.swap_and_bridge({sender:o,token:Gr.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:Gr.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(nr,s,o).swap({sender:o,amount:BigInt(a),token:Gr.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 no="1.18.0",ro="1.40.0";var su={"-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"},Vr=class extends Error{},Bn=class extends Vr{constructor(n,r){super(n),this.code=r,this.type=su[r]??"ServerError"}},$r=class extends Vr{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var io=i=>{throw TypeError(i)},ra=(i,n,r)=>n.has(i)||io("Cannot "+r),ie=(i,n,r)=>(ra(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?io("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),vn=(i,n,r,a)=>(ra(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),ao=(i,n,r)=>(ra(i,n,"access private method"),r),ou=(i,n,r,a)=>({set _(s){vn(i,n,s,r)},get _(){return ie(i,n,a)}}),sn,rr,Mt,on,ir,Rn,Zr,so,oo;function cu(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var uu={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Jr=class{constructor(n,r={}){if(an(this,Zr),an(this,sn,0),an(this,rr,0),an(this,Mt,null),an(this,on,null),an(this,ir,new Set),an(this,Rn,new Map),this.endpoint=n,this.options={...uu,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=cu(this.endpoint))}async makeRequest(n,r){let a=await ao(this,Zr,so).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 na(n);return ie(this,ir).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;rr=new WeakMap;Mt=new WeakMap;on=new WeakMap;ir=new WeakMap;Rn=new WeakMap;Zr=new WeakSet;so=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,rr,0),i(ie(this,Mt))}),ie(this,Mt).addEventListener("close",()=>{ou(this,rr)._++,ie(this,rr)<=this.options.maxReconnects&&setTimeout(()=>{ao(this,Zr,oo).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,ir).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),ie(this,on))};oo=async function(){return ie(this,Mt)?.close(),vn(this,on,null),Promise.allSettled([...ie(this,ir)].map(i=>i.subscribe(this)))};var na=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 co=i=>{throw TypeError(i)},sa=(i,n,r)=>n.has(i)||co("Cannot "+r),Xe=(i,n,r)=>(sa(i,n,"read from private field"),r?r.call(i):n.get(i)),Lr=(i,n,r)=>n.has(i)?co("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),ia=(i,n,r,a)=>(sa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Au=(i,n,r)=>(sa(i,n,"access private method"),r),ar,nt,sr,aa,uo,Xr=class{constructor(n){Lr(this,aa),Lr(this,ar,0),Lr(this,nt),Lr(this,sr),ia(this,nt,n)}fetch(n,r){let a=Xe(this,nt).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){ia(this,ar,Xe(this,ar)+1);let r=await this.fetch(Xe(this,nt).rpc?.url??Xe(this,nt).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":no,"Client-Target-Api-Version":ro,"Client-Request-Method":n.method,...Xe(this,nt).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Xe(this,ar),method:n.method,params:n.params})});if(!r.ok)throw new $r(`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 Au(this,aa,uo).call(this).subscribe(n);return async()=>!!await r()}};ar=new WeakMap;nt=new WeakMap;sr=new WeakMap;aa=new WeakSet;uo=function(){if(!Xe(this,sr)){let i=Xe(this,nt).WebSocketConstructor??WebSocket;if(!i)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");ia(this,sr,new Jr(Xe(this,nt).websocket?.url??Xe(this,nt).url,{WebSocketConstructor:i,...Xe(this,nt).websocket}))}return Xe(this,sr)};var Wt=require("@mysten/bcs");le();ke();var _=require("@mysten/bcs");var Fu=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,Du=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function To(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!Fu.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!Du.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 Nu=BigInt(1e9),Da="0x1",zr="0x2";var Qr=Re("0x6");var Na=`${zr}::sui::SUI`,Wu=Re("0x5");ke();var Eu="object",ju="ID",Uu="ascii",Gu="String",_u="string",Vu="String",$u="option",Zu="Option";function So(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 qr(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=qr(i.vector);return n?h.vector(n):null}if("datatype"in i){let n=x(i.datatype.package);if(n===x(Da)){if(i.datatype.module===Uu&&i.datatype.type===Gu)return h.String;if(i.datatype.module===_u&&i.datatype.type===Vu)return h.String;if(i.datatype.module===$u&&i.datatype.type===Zu){let r=qr(i.datatype.typeParameters[0]);return r?h.vector(r):null}}if(n===x(zr)&&i.datatype.module===Eu&&i.datatype.type===ju)return h.Address}return null}function Po(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:ur(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:ur(i.MutableReference)}:{ref:null,body:ur(i)}}function ur(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:ur(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(ur)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var wo=require("@mysten/bcs");ke();function Ju(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,wo.toBase64)(i):i.toBase64()}}}var Oe={Pure:Ju,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 Ua=require("@mysten/bcs"),st=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)(Ue)),Ce=cn,Jt=(0,g.string)(),Te=(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")),at=(0,g.object)({objectId:cn,version:Te,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]}))),Lu=(0,g.object)({budget:(0,g.nullable)(Te),price:(0,g.nullable)(Te),owner:(0,g.nullable)(cn),payment:(0,g.nullable)((0,g.array)(at))}),Ip=(0,g.object)({address:(0,g.string)(),module:(0,g.string)(),name:(0,g.string)(),typeParams:(0,g.array)((0,g.string)())}),Wa=(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)(()=>Wa)}),(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)(()=>Wa))})}),(0,g.object)({typeParameter:(0,g.pipe)((0,g.number)(),(0,g.integer)())})]),Xu=(0,g.object)({ref:(0,g.nullable)((0,g.union)([(0,g.literal)("&"),(0,g.literal)("&mut")])),body:Wa}),Yu=(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)(Xu)))}),Ku=(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)())}),Hu=Lt({MoveCall:Yu,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:Ku}),Co=Lt({ImmOrOwnedObject:at,SharedObject:(0,g.object)({objectId:Ce,initialSharedVersion:Te,mutable:(0,g.boolean)()}),Receiving:at}),zu=Lt({Object:Co,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)(Te)),digest:(0,g.optional)((0,g.nullable)((0,g.string)())),initialSharedVersion:(0,g.optional)((0,g.nullable)(Te))})}),Ea=Lt({Object:Co,Pure:(0,g.object)({bytes:Jt})}),ja=Lt({None:(0,g.literal)(!0),Epoch:Te}),On=(0,g.object)({version:(0,g.literal)(2),sender:(0,g.nullish)(cn),expiration:(0,g.nullish)(ja),gasData:Lu,inputs:(0,g.array)(zu),commands:(0,g.array)(Hu)});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,st.parse)(z,r)),address:(0,st.parse)(z,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,st.parse)(z,i),amounts:n.map(r=>(0,st.parse)(z,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,st.parse)(z,i),sources:n.map(r=>(0,st.parse)(z,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,Ua.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,Ua.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Re(s)),package:r,ticket:(0,st.parse)(z,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,st.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,st.parse)(z,o)):(0,st.parse)(z,s)])),data:r}}}};var xn=require("@mysten/bcs"),Ct=require("valibot");ke();var Xt=require("@mysten/bcs"),l=require("valibot");le();var Ga=(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)()])}),Qu=Lt({ImmOrOwned:Ga,Shared:(0,l.object)({objectId:Ce,initialSharedVersion:Te,mutable:(0,l.boolean)()}),Receiving:Ga}),Io=Lt({Object:Qu,Pure:(0,l.array)((0,l.pipe)((0,l.number)(),(0,l.integer)()))}),vo=(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")})]),qu=(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))})]),Bo=(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)(()=>eA)}),(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))})]),eA=(0,l.object)({address:(0,l.string)(),module:(0,l.string)(),name:(0,l.string)(),typeParams:(0,l.array)(_a)}),tA=(0,l.object)({budget:(0,l.optional)(Bo),price:(0,l.optional)(Bo),payment:(0,l.optional)((0,l.array)(Ga)),owner:(0,l.optional)((0,l.string)())}),nA=[vo,(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)([...nA]),rA=(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)}),iA=(0,l.object)({kind:(0,l.literal)("TransferObjects"),objects:(0,l.array)(Dt),address:Dt}),aA=(0,l.object)({kind:(0,l.literal)("SplitCoins"),coin:Dt,amounts:(0,l.array)(Dt)}),sA=(0,l.object)({kind:(0,l.literal)("MergeCoins"),destination:Dt,sources:(0,l.array)(Dt)}),oA=(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)}),cA=(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)())}),uA=(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}),AA=[rA,iA,aA,sA,cA,uA,oA],mA=(0,l.union)([...AA]),xp=(0,l.object)({version:(0,l.literal)(1),sender:(0,l.optional)((0,l.string)()),expiration:(0,l.nullish)(qu),gasConfig:tA,inputs:(0,l.array)(vo),transactions:(0,l.array)(mA)});function Va(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 Ro(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)(Io,n.value)){let r=(0,l.parse)(Io,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 Ar(i){return(0,P.union)(Object.entries(i).map(([n,r])=>(0,P.object)({[n]:r})))}var ot=Ar({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)())])}),dA=(0,P.object)({budget:(0,P.nullable)(Te),price:(0,P.nullable)(Te),owner:(0,P.nullable)(cn),payment:(0,P.nullable)((0,P.array)(at))}),lA=(0,P.object)({package:Ce,module:(0,P.string)(),function:(0,P.string)(),typeArguments:(0,P.array)((0,P.string)()),arguments:(0,P.array)(ot)}),pA=(0,P.object)({name:(0,P.string)(),inputs:(0,P.record)((0,P.string)(),(0,P.union)([ot,(0,P.array)(ot)])),data:(0,P.record)((0,P.string)(),(0,P.unknown)())}),gA=Ar({MoveCall:lA,TransferObjects:(0,P.object)({objects:(0,P.array)(ot),address:ot}),SplitCoins:(0,P.object)({coin:ot,amounts:(0,P.array)(ot)}),MergeCoins:(0,P.object)({destination:ot,sources:(0,P.array)(ot)}),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)(ot)}),Upgrade:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Ce),package:Ce,ticket:ot}),$Intent:pA}),fA=Ar({ImmOrOwnedObject:at,SharedObject:(0,P.object)({objectId:Ce,initialSharedVersion:Te,mutable:(0,P.boolean)()}),Receiving:at}),yA=Ar({Object:fA,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)(Te)),digest:(0,P.optional)((0,P.nullable)((0,P.string)())),initialSharedVersion:(0,P.optional)((0,P.nullable)(Te))})}),hA=Ar({None:(0,P.literal)(!0),Epoch:Te}),ko=(0,P.object)({version:(0,P.literal)(2),sender:(0,P.nullish)(cn),expiration:(0,P.nullish)(hA),gasData:dA,inputs:(0,P.array)(yA),commands:(0,P.array)(gA)});var Oo=require("valibot");le();var bA=50,TA=1000n,SA=5e10;async function xo(i,n,r){return await BA(i,n),await IA(i,n),n.onlyTransactionKind||(await PA(i,n),await wA(i,n),await CA(i,n)),await vA(i),await r()}async function PA(i,n){i.gasConfig.price||(i.gasConfig.price=String(await un(n).getReferenceGasPrice()))}async function wA(i,n){if(i.gasConfig.budget)return;let r=await un(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(SA),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=TA*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 CA(i,n){if(!i.gasConfig.payment){let a=(await un(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:Na})).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,Oo.parse)(at,s))}}async function IA(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?OA(a,bA):[],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:RA(i,d)}):kA(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 BA(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=>{Mo(A,h.U64,i)});break;case"TransferObjects":Mo(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=>Po(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&&So(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=qr(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 vA(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 Mo(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 RA(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 kA(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=MA(s.MoveCall._argumentTypes[o])||r}}),r}function MA(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 OA(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Fo(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 Do=require("@mysten/bcs");le();function No(i){function n(r,a){if(typeof r=="string")return i(mr(r).serialize(a));if(r instanceof Uint8Array||(0,Do.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(mr(r)).serialize(a)),n.option=(r,a)=>i(h.option(mr(r)).serialize(a)),n}function mr(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(mr(a)):h.option(mr(a))}throw new Error(`Invalid Pure type name: ${i}`)}var Uo=require("@mysten/bcs"),ei=require("valibot");le();ke();var Wo=require("@noble/hashes/blake2b");function Eo(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,Wo.blake2b)(a,{dkLen:32})}function jo(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,ei.parse)(On,n)):new i((0,ei.parse)(On,Ro(n)))}static getDigestFromBytes(n){let r=Eo("TransactionData",n);return(0,Uo.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:jo(A),expiration:u||{None:!0},gasData:{payment:m.payment,owner:jo(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,ei.parse)(On,this)}};ke();function $a(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 Vo=i=>{throw TypeError(i)},Xa=(i,n,r)=>n.has(i)||Vo("Cannot "+r),E=(i,n,r)=>(Xa(i,n,"read from private field"),r?r.call(i):n.get(i)),dr=(i,n,r)=>n.has(i)?Vo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),An=(i,n,r,a)=>(Xa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Nt=(i,n,r)=>(Xa(i,n,"access private method"),r),pr,gr,mn,V,ct,ti,Ya,Ja,Ka;function Go(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 $o=Symbol.for("@mysten/transaction");function ni(i){return!!i&&typeof i=="object"&&i[$o]===!0}var _o={buildPlugins:new Map,serializationPlugins:new Map},Za=Symbol.for("@mysten/transaction/registry");function lr(){try{let i=globalThis;return i[Za]||(i[Za]=_o),i[Za]}catch{return _o}}var xA=class La{constructor(){dr(this,ct),dr(this,pr),dr(this,gr),dr(this,mn,new Map),dr(this,V),this.object=Fo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Ct.is)(z,r))return r;let a=$a(r),s=E(this,V).inputs.find(o=>a===$a(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=lr();An(this,V,new Yt),An(this,gr,[...n.buildPlugins.values()]),An(this,pr,[...n.serializationPlugins.values()])}static fromKind(n){let r=new La;return An(r,V,Yt.fromKindBytes(typeof n=="string"?(0,xn.fromBase64)(n):n)),r}static from(n){let r=new La;return ni(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){lr().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){lr().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){lr().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){lr().buildPlugins.delete(n)}addSerializationPlugin(n){E(this,pr).push(n)}addBuildPlugin(n){E(this,gr).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)(ja,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)(at,r))}get blockData(){return Va(E(this,V).snapshot())}getData(){return E(this,V).snapshot()}get[$o](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:No(n=>(0,xn.isSerializedBcs)(n)?E(this,V).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):E(this,V).addInput("pure",(0,Ct.is)(Ea,n)?(0,Ct.parse)(Ea,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 Go(r-1)}splitCoins(n,r){let a=_e.SplitCoins(typeof n=="string"?this.object(n):Nt(this,ct,Ya).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Nt(this,ct,ti).call(this,o))),s=E(this,V).commands.push(a);return Go(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,ct,ti).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,ct,ti).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(Va(E(this,V).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Ct.parse)(ko,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,ct,Ja).call(this,n),E(this,V).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Nt(this,ct,Ja).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,pr)];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,ct,Ka).call(this,a,n)}};pr=new WeakMap;gr=new WeakMap;mn=new WeakMap;V=new WeakMap;ct=new WeakSet;ti=function(i){return(0,xn.isSerializedBcs)(i)?this.pure(i):Nt(this,ct,Ya).call(this,i)};Ya=function(i){return typeof i=="function"?(0,Ct.parse)(z,i(this)):(0,Ct.parse)(z,i)};Ja=async function(i){if(!i.onlyTransactionKind&&!E(this,V).sender)throw new Error("Missing transaction sender");await Nt(this,ct,Ka).call(this,[...E(this,gr),xo],i)};Ka=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 ut=xA;var Kt=require("valibot");le();ke();var ri="CoinWithBalance",Zo=cr("0x2::sui::SUI");function te({type:i=Zo,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(ri,DA);let s=i==="gas"?i:cr(i);return a.add(_e.Intent({name:ri,inputs:{},data:{type:s===Zo&&r?"gas":s,balance:BigInt(n)}}))}}var FA=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function DA(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===ri){let{type:d,balance:p}=(0,Kt.parse)(FA,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 NA({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!==ri)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 NA({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 WA=Symbol.for("@mysten/SuiClient");var Et=class{get[WA](){return!0}constructor(n){this.transport=n.transport??new Xr({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!Ue(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||!Ue(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||!Ue(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||!Ue(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||!Ue(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(!Kr(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(!Kr(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||!Ue(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(ni(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=>To(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 ui=require("big.js");var as=ce(Ht());var jt=ce(Ht());pe();function Xo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[k(i,r.bridge),k(i,r.coin),Ye(i,r.receiveAmountMin,"u64")]})}function Yo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),k(i,r.coin)]})}function Ko(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),Ye(i,r.amountLp,"u64")]})}function Ho(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit)]})}function zo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[k(i,r)]})}function za(i,n,r){return i.moveCall({target:`${jt.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),Ye(i,r.destinationChainId,"u8"),k(i,r.receiveToken),Ye(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}function Qo(i,n){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function Qa(i,n,r){return i.moveCall({target:`${jt.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),Ye(i,r.destinationChainId,"u8"),k(i,r.receiveToken),Ye(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}var ic=ce(es());var ec=ce(es());pe();function ts(i,n,r){return i.moveCall({target:`${ec.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),Ye(i,r.destinationChainId,"u8"),k(i,r.recipient),k(i,r.recipientWalletAddress)]})}var ac=ce(rs());var rc=ce(rs());le();pe();le();pe();var is=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(fr(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=>j(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(fr(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 is.r(i)}function ae(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var VA=h.bytes(32).transform({input:i=>(0,_.fromHEX)(i),output:i=>(0,_.toHEX)(i)});function fr(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 VA;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 j(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 ii="0x1";pe();le();function ai(i){return i=R(i),i===`${ii}::string::String`}var si=class i{__StructClass=!0;static get $typeName(){return`${ii}::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:j(Fn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!ai(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(!ai(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"||!ai(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"||!ai(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 oi(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:j("address",n.bytes)})}static fromFieldsWithTypes(n){if(!oi(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(!oi(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"||!oi(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"||!oi(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function ci(i){return i=R(i),i===`${zt}::object::UID`}var Ke=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:j(ln.reified(),n.id)})}static fromFieldsWithTypes(n){if(!ci(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(!ci(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"||!ci(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"||!ci(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:`${rc.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Ye(i,n,`${si.$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 Ai=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,as.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 ut;m.setSender(o);let d={bridge:a.bridgeObjectAddress,coin:te({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(A)},p=Xo(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 tt(this.chainType,r,this.api),{messenger:s}=a,o=r.sourceToken.suiAddresses;if(!o)throw new w("SUI token must contain 'suiAddresses'");switch((0,as.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin),(0,ac.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,ui.Big)(b).plus(T).toFixed());let S=new ut;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,et(A)),receiveToken:mt(S,et(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.allbridgeMessengerObjectAddress,amount:te({balance:BigInt(s),type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,et(A)),receiveToken:mt(S,et(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 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,ui.Big)(b).plus(T).toFixed());let S=new ut;if(S.setSender(o),p==="stablecoin"){let I=BigInt(s)-BigInt(b),v={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Qr,amount:te({balance:I,type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,et(A)),receiveToken:mt(S,et(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(b),type:c}),feeSuiCoin:te({balance:BigInt(0),useGasCoin:!1})};za(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:Qr,amount:te({balance:BigInt(s),type:c}),destinationChainId:u,nonce:Pt(),recipient:mt(S,et(A)),receiveToken:mt(S,et(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:te({balance:BigInt(0),type:c}),feeSuiCoin:I};za(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,ic.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let b=d;T&&(b=(0,ui.Big)(b).plus(T).toFixed());let S=new ut;S.setSender(c);let I=mt(S,et(m)),v;if(r.destinationToken.chainType==="SOLANA"){let B=await Dr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));v=mt(S,et(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})};ts(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};ts(S,u,F)}return await S.toJSON({client:this.client})}};var cc=require("big.js");var sc=ce(require("bn.js"));function mi(i){return"0x"+new sc.default(i).toString("hex")}function oc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function di(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 $A(i,s),{txId:s}}async function $A(i,n,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new bn("Transaction not found");let s=await i.trx.getUnconfirmedTransactionInfo(n);if(!s?.receipt){await oc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new bn(`Transaction status is ${s.receipt.result}`)}}var yr=class extends Ee{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await tt(this.chainType,r,this.api),s=await this.buildRawTransactionSendFromParams(r,a);return await di(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 tt(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,cc.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 li=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new Nr(n,r,a,s)}rawTxBuilder;async getAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=qn(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=qn(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},a)}async approve(n,r){let a=qn(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),Wr(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).send(r)}};function qn(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 Wr(i,n,r,a,s){switch(U.getChainProperty(i).chainType){case"EVM":{if(s)return new Qn(s,n,r);{let o=r.getNodeRpcUrl(i);return new Qn(new Ac.Web3(o),n,r)}}case"TRX":{if(s)return new yr(s,n);{let o=r.getNodeRpcUrl(i);return new yr(new uc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new Ur(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 _r(r,a,n);case"SUI":return new Ai(r,n)}}var bc=require("big.js");var ZA=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),mc="__cache__",ss=function(i){return typeof i!="string"?mc+JSON.stringify(i):mc+i},os=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=ss(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[ss(n)];return r&&r.data}remove(n){let r=ss(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)ZA(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Ut=os;var Tc=require("tronweb"),jn=require("web3");var vt=require("big.js");function dc(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)(js(n,m.toFixed(),d.toFixed())).minus(u).toFixed()}function lc(i){let n=G(i,3);return(0,vt.Big)(n).round().toFixed()}var Gt=require("web3");var JA={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"}]},hr=JA;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=Ws(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?D(a,r).toFixed():a}};var Ve=class{};var br=class extends Ve{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let s;try{s=await kr(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await $i(()=>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 kr(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await $i(()=>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(hr.abi,r)}};var pi=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 gi=class extends Ve{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 Li(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(er,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 qe(c,p),b=await Pn(p,r.programId),S=await Li(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 Dh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),LA=e.contract.Spec,XA=e.contract.Client;var fi=class extends XA{constructor(r){super(new LA(["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 cs=require("@stellar/stellar-sdk"),pc=cs.rpc.Api;function Nn(i){let{simulation:n,options:r}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");if(pc.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 pc.isSimulationError(n)}var yi=class extends Ve{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 fi(s)}};var En=ce(Ht());pe();pe();le();function hi(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:j("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!hi(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(!hi(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"||!hi(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"||!hi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var ms=ce(Ht());pe();var us=ce(Ht());le();function bi(i){return i=R(i),i.startsWith(`${us.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${us.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(n,r){this.$fullTypeName=$(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:j("u128",r.acc_reward_per_share_p),adminFeeShareBp:j("u64",r.admin_fee_share_bp),adminFee:j(Pe.reified(n),r.admin_fee),rewards:j(Pe.reified(n),r.rewards),lpSupply:j("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!bi(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(!bi(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"||!bi(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"||!bi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};pe();var As=ce(Ht());le();function Ti(i){return i=R(i),i.startsWith(`${As.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${As.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:j("u64",r.token_balance),vusdBalance:j("u64",r.vusd_balance),d:j("u64",r.d),a:j("u64",r.a),balanceRatioMinBp:j("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!Ti(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(!Ti(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"||!Ti(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"||!Ti(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};le();function Si(i){return i=R(i),i.startsWith(`${ms.PKG_V1}::pool::Pool<`)}var Pi=class i{__StructClass=!0;static get $typeName(){return`${ms.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:Ke.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:j(Ke.reified(),r.id),state:j(gn.reified(n),r.state),rewards:j(pn.reified(n),r.rewards),feeShareBp:j("u64",r.fee_share_bp),canDeposit:j("bool",r.can_deposit),canWithdraw:j("bool",r.can_withdraw),decimals:j("u8",r.decimals),balance:j(Pe.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Si(r.type))throw new Error("not a Pool type");return It(r,[n]),i.reified(n).new({id:N(Ke.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(Ke.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(!Si(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"||!Si(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"||!Si(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};pe();var ds=ce(Ht());le();function wi(i){return i=R(i),i.startsWith(`${ds.PKG_V1}::user_deposit::UserDeposit<`)}var Ci=class i{__StructClass=!0;static get $typeName(){return`${ds.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;lpAmount;rewardDebt;constructor(n,r){this.$fullTypeName=$(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:Ke.bcs,lp_amount:h.u64(),reward_debt:h.u64()})}static fromFields(n,r){return i.reified(n).new({id:j(Ke.reified(),r.id),lpAmount:j("u64",r.lp_amount),rewardDebt:j("u64",r.reward_debt)})}static fromFieldsWithTypes(n,r){if(!wi(r.type))throw new Error("not a UserDeposit type");return It(r,[n]),i.reified(n).new({id:N(Ke.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(Ke.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(!wi(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"||!wi(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"||!wi(s.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return i.fromSuiObjectData(r,s.data)}};function fc(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 gc(r,a,c,i);o+=BigInt(u.balance),c.push(u)}return o>=s?gc(r,a,c,i):[]}function gc(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 YA="0x0000000000000000000000000000000000000000000000000000000000000000";async function yc(i,n,r){let a=await i.devInspectTransactionBlock({sender:YA,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():fr(r).parse(Uint8Array.from(o))}var Ii=class extends Ve{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:Ci.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 ut;zo(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await yc(this.client,o,Pi.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 ut;c.setSender(r.accountAddress);let{depositObj:u,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=fc([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=Yo(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:Qo(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 ut;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=Ko(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 ut;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=Ho(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 Tr=require("web3"),hc=require("web3-eth-abi");var Sr=class extends Ve{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=Hn(s.poolAddress),c=Hn(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 Tr.Web3.utils.toBigInt(T.result).toString()};return new Ie({lpAmount:Tr.Web3.utils.toBigInt(d(2)).toString(),rewardDebt:Tr.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=Hn(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 Tr.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(hr.abi,r)}getFunctionAbi(r,...a){let s=hr.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,hc.encodeFunctionCall)(s,a)}};var Bi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new pi(n,r,this.params,s);let o=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Ut({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=dc(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=lc(n),u=We(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",d=(0,bc.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(U.getChainProperty(i).chainType){case"EVM":{if(s)return new br(s,n);{let o=r.getNodeRpcUrl(i),c=new jn.Web3(o);return c.defaultReturnFormat={number:jn.FMT_NUMBER.STR,bytes:jn.FMT_BYTES.HEX},new br(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new Sr(s,n,c);{let u=new Tc.TronWeb({fullHost:o});return new Sr(u,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new gi(o,n)}case"SRB":return new yi(r,a,n);case"SUI":return new Ii(r.getNodeRpcUrl(i),n)}}var se=require("big.js");function wc(i,n,r){let a=KA(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=HA(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Cc(i,n,r){let a=zA(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=QA(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function KA(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:Sc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Sc(tn(s,r),a)}}function Sc(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 HA(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 zA(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:Pc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Pc(tn(i,r),a)}}function Pc(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 QA(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 Ic(i,n,r,a,s){let o=Tt(i,n,r),c=We(o,n.decimals),u=Kn(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 Un=require("@solana/web3.js");var vi=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 Un.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=Un.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 Un.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var Q=require("@stellar/stellar-sdk");var xI=require("@stellar/stellar-sdk"),qA=xI.contract.Spec,em=xI.contract.Client;var Pr=class extends em{constructor(r){super(new qA(["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 tm=100,nm=180,Ri=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(Pr,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:tm.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(d).setTimeout(nm).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(Pr,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 Ts(()=>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 ki=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new Ri(n,r),this.sol=new vi(n,r)}srb;sol};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),zn=(r=>(r.INT="int",r.FLOAT="float",r))(zn||{});var Ae=require("big.js");var Oc=ce(require("axios"));var Bc="3.23.0-beta.2";function vc(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=om(a,s);return o&&(n[a]=o),n},{})}function Rc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=Gn({chainSymbol:s,poolAddress:o.poolAddress}),u=we(o.poolInfo);n[c]={...o.poolInfo,imbalance:u}}}return n}function rm(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function im(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function am(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=sm(a),n),{})}function sm(i){return Object.entries(i).reduce((n,[r,a])=>{let s=im(r);return s&&(n[s]=a),n},{})}function om(i,n){let r=U.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,oftBridgeAddress:n.oftBridgeAddress,transferTime:am(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>rm(a,s))}}function Gn(i){return i.chainSymbol+"_"+i.poolAddress}function kc(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 Mc(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[Gn({chainSymbol:s,poolAddress:o})]=c}return n}var Mi=class{api;constructor(n){this.api=Oc.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Bc},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:vc(n),poolInfoMap:Rc(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 Vn("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 Mc(a)}};var ls=20*1e3,cm=55*1e3,Oi=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new Ut({defaultTtl:cm}),this.receivedTransactionCache=new Ut({defaultTtl:ls}),this.pendingInfoCache=new Ut({defaultTtl:ls}),this.gasBalanceCache=new Ut({defaultTtl:ls})}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 xi=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 Fi=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:xc(o.tokens,n,this.isStaging)})}return a}async tokens(n){return xc(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 xc(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(um)}function um(i){let{flags:n,...r}=i;return r}var Am=55*1e3,Di=class{constructor(n){this.client=n;this.poolInfoCache=new ps}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[Gn(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(kc(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(Gn(n),r)}},ps=class{cache;constructor(){this.cache=new Ut({defaultTtl:Am})}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=Gn(n);return this.cache.get(r)}};var Dc=require("big.js"),Nc=require("tronweb"),Wc=require("web3");var mm={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"}]},Ni=mm;var gs=require("big.js"),$e=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,gs.Big)(r).gte((0,gs.Big)(n.amount))}};var dm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",lm="0xdac17f958d2ee523a2206206994597c13d831ec7",pm=1e5,wr=class extends $e{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()===lm}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=this.getERC20Contract(a).methods.approve(s,c==null?dm:mi(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=pm: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(Ni.abi,r)}};var Fc=require("@project-serum/anchor"),fn=require("@solana/web3.js");var Wi=class extends $e{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 Fc.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 qe(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 fs=require("@stellar/stellar-sdk");var Ei=class extends $e{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 fs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof fs.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,U.getChainDecimalsByType(U.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new fs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(u=>u.asset_type==="native");return c?.balance?G(c.balance,U.getChainDecimalsByType(U.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ue}buildRawTransactionApprove(){throw new ue}};var ji=class extends $e{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 gm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Cr=class extends $e{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 di(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=c==null?gm:mi(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(Ni.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 Ui=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,U.getChainDecimalsByType(U.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch(U.getChainProperty(n).chainType){case"EVM":{if(a)return new wr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new wr(new Wc.Web3(s),this.api)}}case"TRX":{if(a)return new Cr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Nc.TronWeb({fullHost:s});return o.setAddress(r),new Cr(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Wi(s,this.api)}case"SRB":return new Ei(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new ji(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,Dc.Big)(n.amount).toFixed()}}};var Ir=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new Jn(n)}},Gi=class{api;tokenService;params;bridge;pool;constructor(n,r=_n){U.addChainsProperties(r.additionalChainsProperties);let a=new Mi(r),s=new Oi(a),o=new xi(s),c=new Di(o);this.api=new Fi(c,r),this.tokenService=new Ui(this.api,n,r),this.bridge=new li(this.api,n,r,this.tokenService),this.pool=new Bi(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=Tt(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=Fs(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:Je(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=Tt(a,r,await me(this.api,r)),o=We(s,r.decimals);return Xi(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=Tt(s,r,await me(this.api,r)),c=Kn(o,a,await me(this.api,a)),u=We(o,a.decimals);return Xi(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=Tt(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=Je(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=Je(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=Je(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=Ns(c,a,o),A=Ds(u,r,s);if((0,Ae.Big)(A).lte(0))throw new bt;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=Je(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=Je(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=Je(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return Hi(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 Es(n)}async getExtraGasMaxLimits(n,r,a){return await zi(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=Tt(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=Kn(n,r,a);if((0,Ae.Big)(s).lt(0))throw new bt;return{int:s,float:D(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return wc(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=Cc(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 bt;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,Ic(o,a,await me(this.api,a),s,await me(this.api,s))}};function fm(i){return"solanaRpcUrl"in i}var ys=class{params;bridge;pool;utils;service;constructor(n,r=_n){let a;fm(n)?a=new Ir({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new Ir(n),this.service=new Gi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new ki(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.0-beta.3";function kc(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=am(a,s);return o&&(n[a]=o),n},{})}function Mc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=jn({chainSymbol:s,poolAddress:o.poolAddress}),u=we(o.poolInfo);n[c]={...o.poolInfo,imbalance:u}}}return n}function tm(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function nm(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function rm(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=im(a),n),{})}function im(i){return Object.entries(i).reduce((n,[r,a])=>{let s=nm(r);return s&&(n[s]=a),n},{})}function am(i,n){let r=j.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,oftBridgeAddress:n.oftBridgeAddress,transferTime:rm(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>tm(a,s))}}function jn(i){return i.chainSymbol+"_"+i.poolAddress}function Oc(i){let n=[];for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens)n.push({chainSymbol:s,poolAddress:o.poolAddress})}return n}function xc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=we(c),n[jn({chainSymbol:s,poolAddress:o})]=c}return n}var Gn=class{api;constructor(n){this.api=Fc.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Rc},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:kc(n),poolInfoMap:Mc(n)}}async getPendingInfo(){let{data:n}=await this.api.get("/pending-info");return n}async getGasBalance(n,r){let{data:a}=await this.api.get(`/check/${n}/${r}`);return a}async getTransferStatus(n,r){let{data:a}=await this.api.get(`/chain/${n}/${r}`);return a}async getReceiveTransactionCost(n){if(n.messenger===5&&!n.sourceToken)throw new Yn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",n,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(n){let r=n instanceof Array?n:[n],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return xc(a)}};var gs=20*1e3,sm=55*1e3,_n=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new jt({defaultTtl:sm}),this.receivedTransactionCache=new jt({defaultTtl:gs}),this.pendingInfoCache=new jt({defaultTtl:gs}),this.gasBalanceCache=new jt({defaultTtl:gs})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let n="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(n);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(n,a),a}async getGasBalance(n,r){let a=`GAS_BALANCE_${n}_${r}`,s=this.gasBalanceCache.get(a);if(s)return s;let o=this.apiClient.getGasBalance(n,r);return this.gasBalanceCache.put(a,o),o}async getPendingInfo(){let n="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(n);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(n,a),a}async getReceiveTransactionCost(n){let r=`RECEIVE_TX_COST_${n.sourceChainId}_${n.destinationChainId}_${n.messenger}${n.sourceToken?"_"+n.sourceToken:""}`,a=this.receivedTransactionCache.get(r);if(a)return a;let s=await this.apiClient.getReceiveTransactionCost(n);return this.receivedTransactionCache.put(r,s),s}async getTransferStatus(n,r){return this.apiClient.getTransferStatus(n,r)}async getPoolInfoMap(n){return this.apiClient.getPoolInfoMap(n)}};var Vn=class{constructor(n){this.apiClient=n}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let n=await this.getChainDetailsMap();return Object.values(n).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(n,r){return this.apiClient.getGasBalance(n,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(n,r){return await this.apiClient.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.apiClient.getReceiveTransactionCost(n)}async getPoolInfoMap(n){return await this.apiClient.getPoolInfoMap(n)}};var $n=class{constructor(n,r){this.client=n;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(n){let r=await this.client.getChainDetailsMap(),a={};for(let s in r){let o=r[s];o&&(a[s]={...o,tokens:Dc(o.tokens,n,this.isStaging)})}return a}async tokens(n){return Dc(await this.client.tokens(),n,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getTransferStatus(n,r){return await this.client.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.client.getReceiveTransactionCost(n)}cachePut(n,r){return this.client.cachePut(n,r)}getPoolInfoByKey(n){return this.client.getPoolInfoByKey(n)}refreshPoolInfo(n){return this.client.refreshPoolInfo(n)}};function Dc(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(om)}function om(i){let{flags:n,...r}=i;return r}var cm=55*1e3,Zn=class{constructor(n){this.client=n;this.poolInfoCache=new fs}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(n,r){return this.client.getTransferStatus(n,r)}getReceiveTransactionCost(n){return this.client.getReceiveTransactionCost(n)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getPoolInfoByKey(n){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(n);if(r)return r;{let a=await this.client.getPoolInfoMap(n);this.poolInfoCache.putAll(a);let s=a[jn(n)];if(s)return s;throw new w("Cannot find pool info for "+n.poolAddress+" on chain "+n.chainSymbol)}}async refreshPoolInfo(n){let r;if(n)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(n);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(Oc(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(jn(n),r)}},fs=class{cache;constructor(){this.cache=new jt({defaultTtl:cm})}putAll(n){for(let[r,a]of Object.entries(n))this.cache.put(r,a)}putAllIfNotExists(n){for(let[r,a]of Object.entries(n))this.cache.get(r)||this.cache.put(r,a)}put(n,r){this.cache.put(n,r)}get(n){let r=jn(n);return this.cache.get(r)}};var Wc=require("big.js"),Ec=require("tronweb"),Uc=require("web3");var um={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Fi=um;var ys=require("big.js"),Ze=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,ys.Big)(r).gte((0,ys.Big)(n.amount))}};var Am="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",mm="0xdac17f958d2ee523a2206206994597c13d831ec7",dm=1e5,Rr=class extends Ze{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,s=r.owner,o=r.spender;return this.getAllowanceByTokenAddress(a,s,o)}getAllowanceByTokenAddress(r,a,s){return this.getERC20Contract(r).methods.allowance(a,s).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let o=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(o,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===mm}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=this.getERC20Contract(a).methods.approve(s,c==null?Am:yi(c));return Promise.resolve({from:o,to:a,value:"0",data:A.encodeABI()})}async sendRawTransaction(r,a){let s=r,o={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?s.gas=dm:s.gas=await this.web3.eth.estimateGas(r);let{transactionHash:c}=await this.web3.eth.sendTransaction({...s,...o});return{txId:c.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Fi.abi,r)}};var Nc=require("@project-serum/anchor"),fn=require("@solana/web3.js");var Di=class extends Ze{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ue}buildRawTransactionApprove(r){throw new ue}buildAnchorProvider(r){let a=new fn.Connection(this.solanaRpcUrl,"confirmed"),s=new fn.PublicKey(r);return new Nc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ue}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await et(new fn.PublicKey(a),new fn.PublicKey(s.tokenAddress));return(await wn(o,this.buildAnchorProvider(a))).amount.toString()}catch(o){if(o instanceof Error)return o.message.startsWith("Account does not exist"),"0";throw o}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new fn.PublicKey(r.account))).toString()}};var hs=require("@stellar/stellar-sdk");var Ni=class extends Ze{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ue}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new hs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof hs.NotFoundError)return"0";throw m}let A=c.balances.find(m=>(m.asset_type==="credit_alphanum4"||m.asset_type==="credit_alphanum12")&&m.asset_code==a&&m.asset_issuer==s);return A?.balance?G(A.balance,j.getChainDecimalsByType(j.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new hs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(u=>u.asset_type==="native");return c?.balance?G(c.balance,j.getChainDecimalsByType(j.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ue}buildRawTransactionApprove(){throw new ue}};var Wi=class extends Ze{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Et({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new ue}buildRawTransactionApprove(r){throw new ue}getAllowance(r){throw new ue}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await Bt(s=>this.suiClient.getCoins({owner:r.account,cursor:s}));return a.length===0?"0":a.reduce((s,o)=>s+BigInt(o.balance),BigInt(0)).toString()}};var lm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",kr=class extends Ze{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:s}=r;return(await(await this.getContract(a)).methods.allowance(s,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await hi(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=c==null?lm:yi(c),A=[{type:"address",value:s},{type:"uint256",value:u}];return this.buildRawTransaction(a,"approve(address,uint256)",A,"0",o)}getContract(r){return this.tronWeb.contract(Fi.abi,r)}async buildRawTransaction(r,a,s,o,c){let u=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!u?.result?.result)throw new w("Unknown error: "+JSON.stringify(u,null,2));return u.transaction}};var Jn=class{constructor(n,r,a){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.owner,r).getAllowance(n);return D(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return Y(n.amount),K("amount",n.amount,n.token.decimals),this.getChainTokenService(n.token.chainSymbol,n.owner,r).checkAllowance(this.prepareCheckAllowanceParams(n))}async approve(n,r){return r.amount&&(Y(r.amount),K("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,n).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(n,r){return n.amount&&(Y(n.amount),K("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,r).buildRawTransactionApprove(this.prepareApproveParams(n))}async getTokenBalance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.account,r).getTokenBalance(n);return n.token.decimals?D(a,n.token.decimals).toFixed():a}async getNativeTokenBalance(n,r){let a=await this.getChainTokenService(n.chainSymbol,n.account,r).getNativeTokenBalance(n);return{int:a,float:D(a,j.getChainDecimalsByType(j.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch(j.getChainProperty(n).chainType){case"EVM":{if(a)return new Rr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Rr(new Uc.Web3(s),this.api)}}case"TRX":{if(a)return new kr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Ec.TronWeb({fullHost:s});return o.setAddress(r),new kr(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Di(s,this.api)}case"SRB":return new Ni(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Wi(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:G(n.amount,n.token.decimals)}}prepareApproveParams(n){return{tokenAddress:n.token.tokenAddress,owner:n.owner,spender:n.spender,chainSymbol:n.token.chainSymbol,amount:n.amount==null?void 0:(0,Wc.Big)(n.amount).toFixed()}}};var Ei=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r;let a=new Gn(r),s=new _n(a),o=new Vn(s),c=new Zn(o);this.api=new $n(c,r),this.tokenService=new Jn(this.api,n,r)}api;tokenService;buildRawTransactionApprove(n,r){return this.tokenService.buildRawTransactionApprove(n,r)}checkAllowance(n,r){return this.tokenService.checkAllowance(n,r)}getAllowance(n,r){return this.tokenService.getAllowance(n,r)}};var Ln=require("@solana/web3.js");var Ui=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async addMemoToTx(n,r){if(r.length>28)throw new w("InvalidArgumentException memo cannot be more than 28 characters");let a=new Ln.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=Ln.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s}),c=o.instructions[o.instructions.length-1];if(!c?.keys)throw new w("Last instruction or its keys are invalid.");c.keys.push({pubkey:new Ln.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var Q=require("@stellar/stellar-sdk");var KI=require("@stellar/stellar-sdk"),pm=KI.contract.Spec,gm=KI.contract.Client;var Mr=class extends gm{constructor(r){super(new pm(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var fm=100,ym=180,ji=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new Q.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=await this.getContract(Mr,n.tokenAddress).name();if(Wn(o))throw new w;let c=Nn(o);if(!c)throw new w;let[u,A]=c.split(":");if(u===void 0||A===void 0)throw new w("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let m=new Q.Asset(u,A),d=Q.Operation.changeTrust({asset:m,limit:n.limit});return new Q.TransactionBuilder(a,{fee:fm.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(d).setTimeout(ym).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(Mr,r).name();if(Wn(s))throw new w;let o=Nn(s);if(!o)throw new w;let[c,u]=o.split(":"),A=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new Q.Horizon.Server(A).loadAccount(n)).balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==c&&T.asset_issuer==u)}async submitTransactionStellar(n){let r=new Q.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=Q.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new Q.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=Q.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(Q.rpc.Api.isSimulationRestore(c))return new Q.TransactionBuilder(s,{fee:(+Q.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(Q.Operation.restoreFootprint({})).setTimeout(Q.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new Q.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=Q.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new Q.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Ps(()=>a.getTransaction(n),c=>c.status===Q.rpc.Api.GetTransactionStatus.NOT_FOUND,r);if(s.length===0)throw new w("No transaction responses found.");let o=s[s.length-1];if(!o)throw new w("Unexpected error: last response is undefined.");return o}getContract(n,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(a)}};var Gi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}keyMap={SplitCoins:"amounts",MoveCall:"arguments",MergeCoins:"sources",TransferObjects:"objects",MakeMoveVec:"elements",Upgrade:"ticket"};offset(n,r,a){return n.Input!==void 0?(n.Input=n.Input+r,n):n.NestedResult!==void 0?(n.NestedResult=[n.NestedResult[0]+a,n.NestedResult[1]],n):(n.Result!==void 0&&(n.Result=n.Result+a),n)}async merge(n,r){let a=JSON.parse(n),s=a.inputs.length,o=a.commands.length,c=JSON.parse(r);a.inputs=a.inputs.concat(c.inputs);for(let A of c.commands){let m=Object.keys(A)[0],d=this.keyMap[m];if(!d)continue;let p=A[m][d];Array.isArray(p)&&(A[m][d]=p.map(T=>this.offset(T,s,o)),a.commands.push(A))}return Ve.from(JSON.stringify(a)).toJSON()}};var _i=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new ji(n,r),this.sol=new Ui(n,r),this.sui=new Gi(n,r),this.evm=new Ei(n,r)}srb;sol;sui;evm};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),rr=(r=>(r.INT="int",r.FLOAT="float",r))(rr||{});var Ae=require("big.js");var Or=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new zn(n)}},Vi=class{api;tokenService;params;bridge;pool;constructor(n,r=Xn){j.addChainsProperties(r.additionalChainsProperties);let a=new Gn(r),s=new _n(a),o=new Vn(s),c=new Zn(o);this.api=new $n(c,r),this.tokenService=new Jn(this.api,n,r),this.bridge=new Ti(this.api,n,r,this.tokenService),this.pool=new xi(this.api,n,r,this.tokenService),this.params=r}async chainDetailsMap(n){return this.api.getChainDetailsMap(n)}async tokens(n){return this.api.tokens(n)}async tokensByChain(n,r){let s=(await this.api.getChainDetailsMap(r))[n];return s?s.tokens:[]}async getTransferStatus(n,r){return this.api.getTransferStatus(n,r)}async getGasBalance(n,r){return this.api.getGasBalance(n,r)}async checkAddress(){return new Promise(n=>{n({status:"OK",gasBalance:null})})}async getPendingStatusInfo(n,r,a,s){Y(n);let o;r=="float"?(K("amount",n,a.decimals),o=G(n,a.decimals).toFixed()):o=n;let c=bt(o,a,await me(this.api,a)),u=await me(this.api,s),A=this.getAmountFromVUsdFormatted(c,s,u),m,d=await this.api.getPendingInfo();for(let p in d[s.chainSymbol]){let T=d[s.chainSymbol];if(!T)throw new w("Cannot find pending info for "+s.chainSymbol);m=T[p]}if(m){let p=Ns(m.totalSentAmount,u),T=this.getAmountFromVUsdFormatted(c,s,p),b;return(0,Ae.Big)(T.int).gt(A.int)?b={min:A,max:T}:b={min:T,max:A},{pendingTxs:m.pendingTxs,pendingAmount:{int:Le(m.totalSentAmount,3,s.decimals).toFixed(0),float:D(m.totalSentAmount,3).toFixed()},estimatedAmount:b}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:A,max:A}}}async getTokenBalance(n,r){return this.tokenService.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.tokenService.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){Y(n),K("amountFloat",n,r.decimals);let a=G(n,r.decimals);if(a.eq(0))return 0;let s=bt(a,r,await me(this.api,r)),o=We(s,r.decimals);return Ki(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){Y(n),K("amountFloat",n,r.decimals);let s=G(n,r.decimals);if(s.eq(0))return 0;let o=bt(s,r,await me(this.api,r)),c=tr(o,a,await me(this.api,a)),u=We(o,a.decimals);return Ki(u,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return Y(n),K("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,Ae.Big)(n).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(n,r,a,s),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToSendAndGasFeeOptions(n,r,a,s){return Y(n),K("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,Ae.Big)(n).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToBeReceived(n,r,a,s){return this.getAmountToBeReceivedCompute(n,r,a,s,async()=>await me(this.api,r),async()=>await me(this.api,a))}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){return this.getAmountToBeReceivedCompute(n,r,a,s,async()=>await this.pool.getPoolInfoFromChain(r,o),async()=>await this.pool.getPoolInfoFromChain(a,c))}async getAmountToBeReceivedCompute(n,r,a,s=1,o,c){switch(s){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(n,r,a,await o(),await c());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(n,r,a,s);case 5:return this.getAmountToBeReceivedComputeOft(n,r,a)}}getAmountToBeReceivedComputeWithPools(n,r,a,s,o){Y(n),K("amountToSendFloat",n,r.decimals);let c=G(n,r.decimals),u=bt(c,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}getAmountToBeReceivedComputeCctp(n,r,a,s){Y(n),K("amountToSendFloat",n,r.decimals);let o=G(n,r.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new ge("Such route does not support CCTP protocol");let c=o.mul((0,Ae.Big)(1).minus(r.cctpFeeShare)).round(0,Ae.Big.roundUp),u=Le(c,r.decimals,a.decimals).round(0);return D(u,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new ge("Such route does not support CCTP V2 protocol");let c=o.mul((0,Ae.Big)(1).minus(r.cctpV2FeeShare)).round(0,Ae.Big.roundUp),u=Le(c,r.decimals,a.decimals).round(0);return D(u,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(n,r,a){Y(n),K("amountToSendFloat",n,r.decimals);let s=G(n,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new fe("Such route does not support OFT protocol");let{adminFeeShareWithExtras:o}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!o)throw new fe("Such route does not support OFT protocol");let c=s.mul((0,Ae.Big)(1).minus(o)).round(0,Ae.Big.roundUp),u=Le(c,r.decimals,a.decimals).round(0);return D(u,a.decimals).toFixed()}async getAmountToSend(n,r,a,s){return this.getAmountToSendCompute(n,r,a,s,()=>me(this.api,r),()=>me(this.api,a))}async getAmountToSendFromChain(n,r,a,s,o,c){return this.getAmountToSendCompute(n,r,a,s,()=>this.pool.getPoolInfoFromChain(r,o),()=>this.pool.getPoolInfoFromChain(a,c))}async getAmountToSendCompute(n,r,a,s=1,o,c){switch(s){case 1:case 2:return this.getAmountToSendComputeWithPools(n,r,a,await o(),await c());case 3:case 4:return this.getAmountToSendComputeCctp(n,r,a,s);case 5:return this.getAmountToSendComputeOft(n,r,a)}}getAmountToSendComputeWithPools(n,r,a,s,o){Y(n),K("amountToBeReceivedFloat",n,a.decimals);let c=G(n,a.decimals),u=Es(c,a,o),A=Ws(u,r,s);if((0,Ae.Big)(A).lte(0))throw new Tt;return D(A,r.decimals).toFixed()}getAmountToSendComputeCctp(n,r,a,s){Y(n),K("amountToBeReceivedFloat",n,a.decimals);let o=G(n,a.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new ge("Such route does not support CCTP protocol");let c=o.div((0,Ae.Big)(1).minus(r.cctpFeeShare)).round(0,Ae.Big.roundDown),u=Le(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new ge("Such route does not support CCTP V2 protocol");let c=o.div((0,Ae.Big)(1).minus(r.cctpV2FeeShare)).round(0,Ae.Big.roundDown),u=Le(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}}}async getAmountToSendComputeOft(n,r,a){Y(n),K("amountToBeReceivedFloat",n,a.decimals);let s=G(n,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new fe("Such route does not support OFT protocol");let{adminFeeShareWithExtras:o}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!o)throw new fe("Such route does not support OFT protocol");let c=s.div((0,Ae.Big)(1).minus(o)).round(0,Ae.Big.roundDown),u=Le(c,a.decimals,r.decimals).round(0);return D(u,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return Qi(n,r.allbridgeChainId,a,this.api)}getAverageTransferTime(n,r,a){return n.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(n){return await this.api.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}async refreshPoolInfo(n){if(n){let a=(n instanceof Array?n:[n]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(n){return js(n)}async getExtraGasMaxLimits(n,r,a){return await qi(n,r,a,this.api)}async getVUsdFromAmount(n,r,a){Y(n);let s;r=="float"?(K("amount",n,a.decimals),s=G(n,a.decimals).toFixed()):s=n;let o=bt(s,a,await me(this.api,a));return{int:o,float:D(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await me(this.api,r))}getAmountFromVUsdFormatted(n,r,a){Y(n);let s=tr(n,r,a);if((0,Ae.Big)(s).lt(0))throw new Tt;return{int:s,float:D(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return Ic(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await me(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await me(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Bc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await me(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await me(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,Ae.Big)(o).lt(0))throw new Tt;return s}async getSendAmountDetails(n,r,a,s){Y(n);let o;return r=="float"?(K("amount",n,a.decimals),o=G(n,a.decimals).toFixed()):o=n,vc(o,a,await me(this.api,a),s,await me(this.api,s))}};function hm(i){return"solanaRpcUrl"in i}var Ts=class{params;bridge;pool;utils;service;constructor(n,r=Xn){let a;hm(n)?a=new Or({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new Or(n),this.service=new Vi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new _i(a,r),this.params=r}async chainDetailsMap(n="swap"){return this.service.chainDetailsMap(n)}async tokens(n="swap"){return this.service.tokens(n)}async tokensByChain(n,r="swap"){return this.service.tokensByChain(n,r)}async getTransferStatus(n,r){return this.service.getTransferStatus(n,r)}async getGasBalance(n,r){return this.service.getGasBalance(n,r)}async checkAddress(n,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(n,r,a,s){return this.service.getPendingStatusInfo(n,r,a,s)}async getTokenBalance(n,r){return this.service.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.service.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){return this.service.calculateFeePercentOnSourceChain(n,r)}async calculateFeePercentOnDestinationChain(n,r,a){return this.service.calculateFeePercentOnDestinationChain(n,r,a)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(n,r,a,s)}async getAmountToSendAndGasFeeOptions(n,r,a,s){return this.service.getAmountToSendAndGasFeeOptions(n,r,a,s)}async getAmountToBeReceived(n,r,a,s=1){return this.service.getAmountToBeReceived(n,r,a,s)}async getAmountToBeReceivedFromChain(n,r,a,s=1,o,c){return this.service.getAmountToBeReceivedFromChain(n,r,a,s,o,c)}getAmountToBeReceivedFromPools(n,r,a,s,o,c=1){switch(c){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(n,r,a,s,o);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(n,r,a,c)}}async getAmountToSend(n,r,a,s=1){return this.service.getAmountToSend(n,r,a,s)}async getAmountToSendFromChain(n,r,a,s=1,o,c){return this.service.getAmountToSendFromChain(n,r,a,s,o,c)}getAmountToSendFromPools(n,r,a,s,o,c=1){switch(c){case 1:case 2:return this.service.getAmountToSendComputeWithPools(n,r,a,s,o);case 3:case 4:return this.service.getAmountToSendComputeCctp(n,r,a,c)}}async getGasFeeOptions(n,r,a){return this.service.getGasFeeOptions(n,r,a)}getAverageTransferTime(n,r,a){return this.service.getAverageTransferTime(n,r,a)}async getPoolInfoByToken(n){return this.service.getPoolInfoByToken(n)}async refreshPoolInfo(n){return this.service.refreshPoolInfo(n)}aprInPercents(n){return this.service.aprInPercents(n)}async getExtraGasMaxLimits(n,r,a=1){return this.service.getExtraGasMaxLimits(n,r,a)}async getVUsdFromAmount(n,r,a){return this.service.getVUsdFromAmount(n,r,a)}async getAmountFromVUsd(n,r){return this.service.getAmountFromVUsd(n,r)}async swapAndBridgeFeeCalculation(n,r,a){return this.service.swapAndBridgeFeeCalculation(n,r,a)}async swapAndBridgeFeeCalculationReverse(n,r,a){return this.service.swapAndBridgeFeeCalculationReverse(n,r,a)}async getSendAmountDetails(n,r,a,s){return this.service.getSendAmountDetails(n,r,a,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,OFTDoesNotSupportedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|