@allbridge/bridge-core-sdk 3.27.0 → 3.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Qc=Object.create;var _r=Object.defineProperty;var qc=Object.getOwnPropertyDescriptor;var eu=Object.getOwnPropertyNames;var tu=Object.getPrototypeOf,nu=Object.prototype.hasOwnProperty;var hn=(i,n)=>()=>(i&&(n=i(i=0)),n);var qi=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),ru=(i,n)=>{for(var r in n)_r(i,r,{get:n[r],enumerable:!0})},Ms=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of eu(n))!nu.call(i,s)&&s!==r&&_r(i,s,{get:()=>n[s],enumerable:!(a=qc(n,s))||a.enumerable});return i};var Ae=(i,n,r)=>(r=i!=null?Qc(tu(i)):{},Ms(n||!i||!i.__esModule?_r(r,"default",{value:i,enumerable:!0}):r,i)),iu=i=>Ms(_r({},"__esModule",{value:!0}),i);function ui(i){try{return(0,ci.fromBase58)(i).length===Iu}catch{return!1}}function je(i){return Bu(i)&&Ru(i)===hr}function Mn(i){return je(i)}function vu(i){return i.includes("::")?Ta(i):i}function Ta(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,ci.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>vu(c.trim())):[];return{address:N(n),module:r,name:s,typeParams:o}}function Tr(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?Ta(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:Tr(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function N(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(hr*2,"0")}`}function Re(i,n=!1){return N(i,n)}function Bu(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function Ru(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var ci,Iu,hr,ke=hn(()=>{ci=require("@mysten/bcs"),Iu=32;hr=32});var Po,ku,Mu,Ot,ba=hn(()=>{Po=require("@mysten/bcs");ke();ku=/^vector<(.+)>$/,Mu=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,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(ku);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(Mu);if(s)return{struct:{address:r?N(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,Po.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 Ou(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function xu(i){return f.bcs.enum("Option",{None:null,Some:i})}function Ua(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ea,value:i})}var f,te,Ge,Me,Sa,wa,Pa,Ca,Ai,rt,Ia,va,Ba,Ra,ka,Ma,Oa,xa,Fa,Da,Na,Wa,Ea,ja,Ga,_a,Va,Co,Fu,$a,Io,vo,Za=hn(()=>{f=require("@mysten/bcs");ke();ba();te=f.bcs.bytes(hr).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!je(N(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(N(i)):i,output:i=>N((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:te,version:f.bcs.u64(),digest:Ge}),Sa=f.bcs.struct("SharedObjectRef",{objectId:te,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),wa=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Me,SharedObject:Sa,Receiving:Me}),Pa=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:wa}),Ca=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>Ca),struct:f.bcs.lazy(()=>Ma),u16:null,u32:null,u256:null}),Ai=Ca.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()])}),Ia=f.bcs.struct("ProgrammableMoveCall",{package:te,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(Ai),arguments:f.bcs.vector(rt)}),va=f.bcs.enum("Command",{MoveCall:Ia,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(te)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:xu(Ai).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(te),package:te,ticket:rt})}),Ba=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(Pa),commands:f.bcs.vector(va)}),Ra=f.bcs.enum("TransactionKind",{ProgrammableTransaction:Ba,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),ka=f.bcs.enum("TransactionExpiration",{None:null,Epoch:Ou()}),Ma=f.bcs.struct("StructTag",{address:te,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(Ca)}),Oa=f.bcs.struct("GasData",{payment:f.bcs.vector(Me),owner:te,price:f.bcs.u64(),budget:f.bcs.u64()}),xa=f.bcs.struct("TransactionDataV1",{kind:Ra,sender:te,gasData:Oa,expiration:ka}),Fa=f.bcs.enum("TransactionData",{V1:xa}),Da=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Na=f.bcs.enum("IntentVersion",{V0:null}),Wa=f.bcs.enum("AppId",{Sui:null}),Ea=f.bcs.struct("Intent",{scope:Da,version:Na,appId:Wa});ja=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())}),Ga=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())}),_a=f.bcs.struct("MultiSigPkMap",{pubKey:Ga,weight:f.bcs.u8()}),Va=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(_a),threshold:f.bcs.u16()}),Co=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(ja),bitmap:f.bcs.u16(),multisig_pk:Va}),Fu=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))}),$a=f.bcs.struct("SenderSignedTransaction",{intentMessage:Ua(Fa),txSignatures:f.bcs.vector(Fu)}),Io=f.bcs.vector($a,{name:"SenderSignedData"}),vo=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,Du,Nu,Bo,Wu,Eu,Uu,Ro,ko,On,ju,Ja,Gu,_u,Vu,$u,Zu,Ju,Mo,Oo=hn(()=>{y=require("@mysten/bcs");Za();Du=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:te}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:te}),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:te,ticketId:te})}),Nu=y.bcs.struct("ModuleId",{address:te,name:y.bcs.string()}),Bo=y.bcs.struct("MoveLocation",{module:Nu,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),Wu=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}),Eu=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),Uu=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:te}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(Bo),MoveAbort:y.bcs.tuple([Bo,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:Wu}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:Eu}),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:Du}),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(te)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:te,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),Ro=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:Uu,command:y.bcs.option(y.bcs.u64())})}),ko=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),On=y.bcs.enum("Owner",{AddressOwner:te,ObjectOwner:te,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),ju=y.bcs.struct("TransactionEffectsV1",{status:Ro,executedEpoch:y.bcs.u64(),gasUsed:ko,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([te,y.bcs.u64()])),sharedObjects:y.bcs.vector(Me),transactionDigest:Ge,created:y.bcs.vector(y.bcs.tuple([Me,On])),mutated:y.bcs.vector(y.bcs.tuple([Me,On])),unwrapped:y.bcs.vector(y.bcs.tuple([Me,On])),deleted:y.bcs.vector(Me),unwrappedThenDeleted:y.bcs.vector(Me),wrapped:y.bcs.vector(Me),gasObject:y.bcs.tuple([Me,On]),eventsDigest:y.bcs.option(Ge),dependencies:y.bcs.vector(Ge)}),Ja=y.bcs.tuple([y.bcs.u64(),Ge]),Gu=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Ja,On])}),_u=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([Ge,On]),PackageWrite:Ja}),Vu=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),$u=y.bcs.struct("EffectsObjectChange",{inputState:Gu,outputState:_u,idOperation:Vu}),Zu=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Ja,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),Ju=y.bcs.struct("TransactionEffectsV2",{status:Ro,executedEpoch:y.bcs.u64(),gasUsed:ko,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([te,$u])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([te,Zu])),auxDataDigest:y.bcs.option(Ge)}),Mo=y.bcs.enum("TransactionEffects",{V1:ju,V2:Ju})});var it,Yu,h,pe=hn(()=>{it=require("@mysten/bcs");Za();Oo();ba();Yu=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:te,AppId:Wa,Argument:rt,CallArg:Pa,CompressedSignature:ja,GasData:Oa,Intent:Ea,IntentMessage:Ua,IntentScope:Da,IntentVersion:Na,MultiSig:Co,MultiSigPkMap:_a,MultiSigPublicKey:Va,ObjectArg:wa,ObjectDigest:Ge,ProgrammableMoveCall:Ia,ProgrammableTransaction:Ba,PublicKey:Ga,SenderSignedData:Io,SenderSignedTransaction:$a,SharedObjectRef:Sa,StructTag:Ma,SuiObjectRef:Me,Command:va,TransactionData:Fa,TransactionDataV1:xa,TransactionExpiration:ka,TransactionKind:Ra,TypeTag:Ai,TransactionEffects:Mo,PasskeyAuthenticator:vo}});function zA(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=zA(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function rc(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function F(i,n){return rc(n)?n:i.object(n)}function Xe(i,n,r){if(rc(n))return F(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:[Xe(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 QA(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 M(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<${M(r[0])}>`;default:{let a=n.split("::");a[0]=QA(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>M(o)).join(",")}>`:s}}}function L(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var ge=hn(()=>{"use strict";pe()});var Ht=qi((Kg,ic)=>{"use strict";ge();var cs=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return M(i.$PACKAGE_ID)}get PUBLISHED_AT(){return M(i.$PUBLISHED_AT)}get PKG_V1(){return M(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}},qA=new cs;ic.exports=qA});var ds=qi((qg,mc)=>{"use strict";ge();var ms=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return M(i.$PACKAGE_ID)}get PUBLISHED_AT(){return M(i.$PUBLISHED_AT)}get PKG_V1(){return M(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}},em=new ms;mc.exports=em});var gs=qi((rf,lc)=>{"use strict";ge();var ps=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return M(i.$PACKAGE_ID)}get PUBLISHED_AT(){return M(i.$PUBLISHED_AT)}get PKG_V1(){return M(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}},tm=new ps;lc.exports=tm});var xm={};ru(xm,{AddressStatus:()=>Vr,AllbridgeCoreSdk:()=>ks,AmountFormat:()=>cr,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>er,CCTPDoesNotSupportedError:()=>fe,ChainSymbol:()=>De,ChainType:()=>Q,ErrorCode:()=>Os,ExtraGasMaxLimitExceededError:()=>qn,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>ht,InvalidAmountError:()=>yt,InvalidGasFeePaymentOptionError:()=>Tn,InvalidMessengerOptionError:()=>Qn,InvalidTxError:()=>qt,JupiterError:()=>le,Messenger:()=>Ne,MethodNotSupportedError:()=>ie,NodeRpcUrlNotInitializedError:()=>tr,OFTDoesNotSupportedError:()=>ye,SdkError:()=>w,SdkRootError:()=>re,SolanaAutoTxFee:()=>zr,TimeoutError:()=>Sn,TxTooLargeError:()=>rr,VerifyTxError:()=>bn,YieldDoesNotSupportedError:()=>nr,assertYieldIsSupported:()=>Fc,isYieldSupported:()=>Nr,mainnet:()=>zn,nodeRpcUrlsDefault:()=>su,nodeUrlsDefault:()=>au});module.exports=iu(xm);var zn={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},au={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},su={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 Sc=require("tronweb"),wc=require("web3");var re=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},w=class extends re{constructor(n){super("SdkError",n)}},yt=class extends re{constructor(n){super("InvalidAmountError",n)}},Qt=class extends re{constructor(n){super("AmountNotEnoughError",n)}},ht=class extends re{constructor(n){super("InsufficientPoolLiquidityError",n)}},le=class extends re{constructor(n){super("JupiterError",n)}},Tn=class extends re{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},Qn=class extends re{constructor(n){super("InvalidMessengerOptionError",n)}},ie=class extends re{constructor(n){super("MethodNotSupportedError",n)}},bn=class extends re{constructor(n){super("VerifyTxError",n)}},qt=class extends re{constructor(n){super("InvalidTxError",n)}},qn=class extends re{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},er=class extends re{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},Sn=class extends re{constructor(n){super("TimeoutError",n)}},tr=class extends re{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},fe=class extends re{constructor(n){super("CCTPDoesNotSupportedError",n)}},ye=class extends re{constructor(n){super("OFTDoesNotSupportedError",n)}},nr=class extends re{constructor(n){super("YieldDoesNotSupportedError",n)}},rr=class extends re{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Os=(v=>(v.SDK_ERROR="SdkError",v.INVALID_AMOUNT_ERROR="InvalidAmountError",v.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",v.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",v.JUPITER_ERROR="JupiterError",v.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",v.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",v.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",v.VERIFY_TX_ERROR="VerifyTxError",v.INVALID_TX_ERROR="InvalidTxError",v.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",v.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",v.TIMEOUT_ERROR="TimeoutError",v.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",v.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",v.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",v.YIELD_DOES_NOT_SUPPORTED_ERROR="YieldDoesNotSupportedError",v.TX_TOO_LARGE="TxTooLargeError",v))(Os||{});var De=(I=>(I.BSC="BSC",I.ETH="ETH",I.BAS="BAS",I.SOL="SOL",I.TRX="TRX",I.POL="POL",I.ARB="ARB",I.CEL="CEL",I.AVA="AVA",I.SRB="SRB",I.STLR="STLR",I.OPT="OPT",I.SUI="SUI",I.SNC="SNC",I.UNI="UNI",I.LIN="LIN",I))(De||{}),Q=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(Q||{});var ou={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},cu={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"},UNI:{chainSymbol:"UNI",chainId:"0x82",name:"Unichain",chainType:"EVM"},LIN:{chainSymbol:"LIN",chainId:"0xe708",name:"Linea",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"}},E=(()=>{let i={...cu};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 ou[n]}}})();var Vr=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(Vr||{});var 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 ea=require("big.js");async function de(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function U(i){if((0,ea.Big)(i).lte(0))throw new yt("Amount must be greater than zero")}function _(i,n,r){let a=(0,ea.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new er(i,o.length,r)}async function $r(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new Sn(n)),r)})])}async function ta(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 $r(i(),n,a)}catch{if(++s>=r)throw new Sn(n)}}async function xs(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 no=require("big.js");var uu={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"}]},Fs=uu;var Au={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Ds=Au;var mu={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"}]},Ns=mu;var Lr=Ae(require("@project-serum/anchor")),Aa=require("@solana/web3.js");var he=Ae(require("@project-serum/anchor")),Te=require("@solana/web3.js");async function qe(i,n){return he.utils.token.associatedAddress({mint:n,owner:i})}async function Vt(i){let[n]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("config")],i);return n}async function Ws(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function ir(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function wn(i){let n=await Vt(i),[r]=await Te.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function Es(i,n){let[r]=await Te.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function Pn(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function Us(i,n,r){let[a]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function na(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function ra(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function js(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function ia(i,n,r){let[a]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Gs(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function _s(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Vs(i,n){let[r]=Te.PublicKey.findProgramAddressSync([he.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function $s(i,n,r,a){let s=en("message_transmitter",r),o=en("token_messenger",a),c=en("__event_authority",a),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(he.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(he.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 Te.PublicKey.findProgramAddressSync(a,n)[0]}var Zs=require("@project-serum/anchor"),Zr=require("@solana/web3.js");function $t(i,n){let r=new Zr.Connection(i,"confirmed"),a=new Zr.PublicKey(n);return new Zs.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Qs=require("@solana/web3.js"),qs=require("@stellar/stellar-sdk"),Be=require("big.js"),oa=Ae(require("randombytes")),sa=require("tronweb");var B=require("big.js"),Jr=Ae(require("bn.js"));function aa(i,n){return(0,B.Big)(100).minus((0,B.Big)(100).times(n).div(i)).toNumber()}function tn(i,n){return Je(i,n,3).round(0,B.Big.roundDown)}function We(i,n){return Je(i,3,n)}function Je(i,n,r){let a=(0,B.Big)(r).minus(n).toNumber();return(0,B.Big)(i).times(ar(a))}function ar(i){return(0,B.Big)(10).pow(i)}function x(i,n){return(0,B.Big)(i).times(ar(n))}function O(i,n){let r=(0,B.Big)(i);return r.eq(0)?(0,B.Big)(0):(0,B.Big)(r).div(ar(n))}function Pe(i){return O((0,B.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Tt(i,{feeShare:n,decimals:r},a){let s=(0,B.Big)(i);if(s.lte(0))return"0";let o=s.times(n),c=s.minus(o),u=tn(c,r),A=(0,B.Big)(a.tokenBalance).plus(u),m=bt(A,a.aValue,a.dValue);return(0,B.Big)(a.vUsdBalance).minus(m).round(0,B.Big.roundDown).toFixed()}function sr(i,{feeShare:n,decimals:r},a){let s=(0,B.Big)(i);if(s.lte(0))return(0,B.Big)(0).toFixed();let o=s.plus(a.vUsdBalance),c=bt(o,a.aValue,a.dValue),u=We((0,B.Big)(a.tokenBalance).minus(c),r),A=(0,B.Big)(u).times(n);return(0,B.Big)(u).minus(A).round(0,B.Big.roundDown).toFixed()}function Js(i,n){let r=(0,B.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=bt(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function Ys(i,{feeShare:n,decimals:r},a){if((0,B.Big)(i).lte(0))return(0,B.Big)(0);let s=(0,B.Big)(a.vUsdBalance).minus(i);if(s.lte(0))throw new ht;let o=bt(s,a.aValue,a.dValue),c=(0,B.Big)(o).minus(a.tokenBalance),u=We(c,r),A=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),m=(0,B.Big)(u).times(A).round(0,B.Big.roundUp);return(0,B.Big)(u).plus(m).round(0,B.Big.roundDown)}function Ls(i,{feeShare:n,decimals:r},a){if((0,B.Big)(i).lte(0))return(0,B.Big)(0);let s=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),o=(0,B.Big)(i).times(s).round(0,B.Big.roundUp),c=(0,B.Big)(i).plus(o),u=tn(c,r),A=(0,B.Big)(a.tokenBalance).minus(u);if(A.lte(0))throw new ht;let m=bt(A,a.aValue,a.dValue);return(0,B.Big)(m).minus(a.vUsdBalance).round(0,B.Big.roundDown)}function bt(i,n,r){let a=(0,B.Big)(4).times(n).times((0,B.Big)(r).minus(i)).minus(r),s=(0,B.Big)(r).pow(3),o=a.pow(2),c=(0,B.Big)(i).times((0,B.Big)(i).times(o).plus((0,B.Big)(4).times(n).times(s))).sqrt().round(0,B.Big.roundDown),u=(0,B.Big)(8).times(n).times(i),A=a.times(i).plus(c).div(u).round(0,B.Big.roundDown);return A.eq(0)?(0,B.Big)(0):A.plus(1)}function Xs(i,n,r,a){let s=new Jr.default(i),o=new Jr.default(r),c=new Jr.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Ks(i){return(0,B.Big)(i).gt(0)?`${Number((0,B.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Hs(i,n,r){let a=(0,B.Big)(n).times(r),s=(0,B.Big)(n).plus(r),o=(0,B.Big)(8).times(i).times(a).times(s),c=a.times((0,B.Big)(16).times(i).minus(4)).div(3),u=o.times(o),A=c.times(c).times(c),m=u.plus(A),d=(0,B.Big)(m).sqrt(),p=(0,B.Big)(Math.cbrt(+o.plus(d).toFixed())),T=(0,B.Big)(Math.cbrt(+o.minus(d).toFixed()));return p.plus(T).toFixed()}function kt(i,n,r){let a;switch(n){case"EVM":{a=zs(i);break}case"SOLANA":{a=new Qs.PublicKey(i).toBuffer();break}case"TRX":{a=du(i);break}case"SRB":{a=new qs.Address(i).toBuffer();break}case"SUI":{a=zs(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 eo(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function zs(i){let r=eo(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function du(i){let n=or(i),r=eo(n);return lu(r,32)}function or(i){let n=sa.utils.crypto.decodeBase58Address(i);return n?sa.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function lu(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Yr(){return(0,oa.default)(32)}function St(){let i=(0,oa.default)(32).readBigInt64BE();return i<0?i*-1n:i}function wt(i,n){let r={},a=n.sourceToken;if(r.amount=x(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?x(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=E.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 fe("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress;break;case 4:if(!o.cctpV2Address||!n.destinationToken.cctpV2Address)throw new fe("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 ye("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=x(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:u}=n;if(!c){let p=(await ca(n.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!p)throw new Tn;c=p.int,u="int"}if(u=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=x(c,E.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=x(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:A,extraGasFormat:m}=n;if(A&&+A>0){let d=await ua(o,n.destinationToken,a.messenger,r),p,T;switch(a.gasFeePaymentMethod){case"native":p=E.getChainDecimalsByType(o.chainType),T=(0,Be.Big)(d.exchangeRate);break;case"stablecoin":p=o.decimals,T=(0,Be.Big)(d.exchangeRate).div(d.sourceNativeTokenPrice);break}switch(m??"int"){case"float":{a.extraGas=x(A,p).toFixed(0);let b=T.mul(A);a.extraGasDest=x(b,E.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,Be.Big.roundDown);break}case"int":{a.extraGas=A;let b=O(a.extraGas,E.getChainDecimalsByType(o.chainType)),P=T.mul(b);a.extraGasDest=x(P,E.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,Be.Big.roundDown);break}}gu(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"&&pu(a.amount,o.decimals,a.fee,a.extraGas),a}function pu(i,n,r,a){let s=(0,Be.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new Qt(`Amount not enough to pay fee, ${O((0,Be.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function ca(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:O(s.fee,E.getChainDecimalsByType(i.chainType)).toFixed()},adminFeeShareWithExtras:s.adminFeeShareWithExtras};if(s.sourceNativeTokenPrice){let c=Je(new Be.Big(s.fee).mul(s.sourceNativeTokenPrice),E.getChainDecimalsByType(i.chainType),i.decimals).toFixed(0,Be.Big.roundUp);o.stablecoin={int:c,float:O(c,i.decimals).toFixed()}}return o}function gu(i,n,r){let a=r.extraGasMax[n];if(!a)throw new Tn(`Impossible to pay extra gas by '${n}' payment method`);let s=a.int;if((0,Be.Big)(i).gt(s))throw new qn(`Extra gas ${i} in int format, exceeded limit ${s} for '${n}' payment method`)}async function ua(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=O(c,E.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,Be.Big)(u).div(o.exchangeRate).toFixed(E.getChainDecimalsByType(i.chainType),Be.Big.roundDown),m=x(A,E.getChainDecimalsByType(i.chainType)).toFixed(0);if(s.native={int:m,float:A},o.sourceNativeTokenPrice){let d=(0,Be.Big)(A).mul(o.sourceNativeTokenPrice).toFixed(i.decimals,Be.Big.roundDown);s.stablecoin={int:x(d,i.decimals).toFixed(0),float:d}}return{extraGasMax:s,destinationChain:{gasAmountMax:{int:c,float:u},swap:{int:n.txCostAmount.swap,float:O(n.txCostAmount.swap,E.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:O(n.txCostAmount.transfer,E.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:o.exchangeRate,sourceNativeTokenPrice:o.sourceNativeTokenPrice}}function to(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Xr(i,n,r,a){let s,o=new Aa.PublicKey(n),c=new Aa.PublicKey(r),u=await qe(o,c),A=$t(a,n);Lr.setProvider(A);let m=await Lr.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 ur=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:P,extraGasDest:C}=a,I="0x"+Yr().toString("hex"),R,v,k=T;switch(P&&(k=(0,no.Big)(k).plus(P).toFixed()),p){case 3:case 4:{let W=await this.buildRawTransactionCctpSend(r,a,k);R=W.sendMethod,v=W.value;break}case 5:{let W=this.buildRawTransactionOftSend(r,a,k,C);R=W.sendMethod,v=W.value;break}case 1:case 2:{let W=this.getBridgeContract(o);b==="stablecoin"?(R=W.methods.swapAndBridge(u,s,m,A,d,I,p,k),v="0"):(R=W.methods.swapAndBridge(u,s,m,A,d,I,p,0),v=k)}break}return Promise.resolve({from:c,to:o,value:v,data:R.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 Xr(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(Fs.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Ds.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Ns.abi,r)}};var Kr=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 U(n.amount),_("amount",n.amount,n.sourceToken.decimals),to(n)?Hr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Hr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var ae=require("@project-serum/anchor"),K=require("@solana/web3.js"),Ye=require("big.js");var mr={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 ro={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 io=require("@project-serum/anchor"),ao=Ae(require("big.js")),dr=require("web3");async function Cn(i,n){return await io.Spl.token(n).account.token.fetch(i)}async function so(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,ao.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 oo(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=dr.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=dr.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),p=Buffer.from(d.replace("0x",""),"hex");p[0]=a,p[1]=s;let T=dr.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=dr.Web3.utils.keccak256(Buffer.from(T.replace("0x",""),"hex")),P=Buffer.from(b.replace("0x",""),"hex");return P[0]=p[0],P[1]=p[1],P}var Ue=require("@solana/web3.js"),co=require("big.js");var ma=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new ma.AddressLookupTableAccount({key:r.accountKey,state:ma.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new w("Cannot get AccountInfo");return a.data}))})))}var zr="AUTO";async function In(i,n,r){let a=new Ue.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await Ao(i.instructions,s,n,a)}async function uo(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 rr;await Ao(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function Ao(i,n,r,a){if(n>0){let s=fu(n,i);if(r?.solana){let o=r.solana;if(o===zr)await da(i,a);else if("pricePerUnitInMicroLamports"in o)await da(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,co.Big)(o.extraFeeInLamports).div(s).mul(ar(6)).toFixed(0);await da(i,a,c)}}}}function fu(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 da(i,n,r){let a=i.findIndex(c=>c.programId.equals(Ue.ComputeBudgetProgram.programId)&&Ue.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await yu(n)),o=Ue.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function yu(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var mo=require("@solana/spl-token"),rn=require("@solana/web3.js"),vn=Ae(require("axios"));var Qr=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=${mo.NATIVE_MINT.toString()}&amount=${a}&swapMode=${p}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(T+=`&maxAccounts=${this.maxAccounts}`),o=await vn.default.get(T,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(p){throw p instanceof vn.AxiosError&&p.response&&p.response.data&&p.response.data.error?new le(p.response.data.error):new le("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new le("Cannot get inAmount");let u;try{u=await vn.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 vn.AxiosError&&p.response&&p.response.data&&p.response.data.error?new le(p.response.data.error):new le("Cannot get swap transaction")}let A;if(u?.data?.swapTransaction)A=u.data.swapTransaction;else throw new le("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 le(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new le("Some error occurred during creation final swap and bridge transaction")}}};var la=1e6,lo=1.1,qr=class extends Ee{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new Qr(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,P=A,C=m,I=d,R=s,v=p,k=new K.PublicKey(b),W=$t(this.solanaRpcUrl,k.toString()),z=new ae.Program(mr,P,W),Z=await wn(z.programId),xe=await Vt(z.programId),ue=new K.PublicKey(C),lt=await Pn(ue,z.programId),pt=new K.PublicKey(a),Rt=await qe(k,ue),He=new K.PublicKey(v),ve=new K.PublicKey(I),Ze=await Pn(ve,z.programId),ze=new K.PublicKey(R),Fe=await qe(He,ve),gt=[ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:la})];try{await Cn(Fe,W)}catch{let zc=await ae.Spl.associatedToken(W).methods.create().accounts({mint:ve,owner:He,associatedAccount:Fe}).instruction();gt.push(zc)}let ft=await z.methods.swap(new ae.BN(u),new ae.BN(T||0)).accounts({payer:k,config:xe,bridgeAuthority:Z,user:k,sendBridgeToken:lt,sendMint:ue,sendPool:pt,sendUserToken:Rt,receiveBridgeToken:Ze,receiveMint:ve,receivePool:ze,receiveUserToken:Fe}).preInstructions(gt).transaction(),Qe=W.connection;return ft.recentBlockhash=(await Qe.getLatestBlockhash()).blockhash,ft.feePayer=k,await In(ft,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(ft,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 re?d:d instanceof Error&&d.message?new le(`Some error occurred during creation Jupiter swap transaction. ${d.message}`):new le("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 ye("Messenger OFT is not supported yet.")}if(o){if(!c)throw new le("Swap tx is absent");u=await this.jupiterService.amendJupiterWithSdkTx(c,u)}return await uo(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,Ye.Big)(o):(0,Ye.Big)(r.fee);c&&(A=A.plus(c)),s||(A=A.mul(lo));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 le("Cannot get inAmount");p=(0,Ye.Big)(r.amount).minus((0,Ye.Big)(d).mul(lo)).toFixed(0)}else p=(0,Ye.Big)(r.amount).minus(A).toFixed(0);if((0,Ye.Big)(p).lte(0))throw new Qt(`Amount not enough to pay fee, ${O((0,Ye.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,Ye.Big)(a.fee).div(s).mul((0,Ye.Big)(10).pow(E.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),c;return a.extraGas&&(c=(0,Ye.Big)(a.extraGas).div(s).mul((0,Ye.Big)(10).pow(E.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 ae.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,P=c,C=A,I=d,R=m,v=s,k=o,W=$t(this.solanaRpcUrl,P),z=new ae.Program(mr,v,W),Z=Array.from(Yr()),xe=new K.PublicKey(p),ue=await so(a,z,xe),lt=await Ws(Z,z.programId),pt=await wn(z.programId),Rt=await qe(new K.PublicKey(P),new K.PublicKey(b)),He=await Pn(new K.PublicKey(b),z.programId),ve=await na(C,z.programId),Ze=await Us(C,Buffer.from(I),z.programId),ze=await Vt(z.programId),Fe=await z.account.config.fetch(ze),gt=await ir(C,Fe.gasOracleProgramId),ft=await ir(k,Fe.gasOracleProgramId),Qe=oo({amount:ue,recipient:Buffer.from(R),nonce:Buffer.from(Z),receiveToken:Buffer.from(I),destinationChainId:C,sourceChainId:k,chainBridge:(await wn(z.programId)).toBuffer()}),X={};return X.bridge=z,X.amount=new ae.BN(a),X.vusdAmount=new ae.BN(ue),X.nonce=Z,X.recipient=Array.from(R),X.receiveToken=Array.from(I),X.poolAccount=xe,X.lockAccount=lt,X.bridgeAuthority=pt,X.userToken=Rt,X.bridgeTokenAccount=He,X.chainBridgeAccount=ve,X.otherBridgeTokenAccount=Ze,X.userAccount=new K.PublicKey(P),X.destinationChainId=C,X.mint=new K.PublicKey(b),X.config=ze,X.configAccountInfo=Fe,X.gasPrice=gt,X.thisGasPrice=ft,X.message=Qe,T&&(X.extraGasInstruction=this.getExtraGasInstruction(T,X.userAccount,ze)),X}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:P,userAccount:C,destinationChainId:I,mint:R,config:v,configAccountInfo:k,gasPrice:W,thisGasPrice:z,message:Z,extraGasInstruction:xe}=r,ue=k.allbridgeMessengerProgramId,lt=await ra(I,ue),pt=await Vt(ue),Rt=await js(Z,ue),He=[];xe&&He.push(xe);let ve=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:I,recipient:c,receiveToken:u}).accounts({mint:R,user:C,config:v,lock:m,pool:A,gasPrice:W,thisGasPrice:z,bridgeAuthority:d,userToken:p,bridgeToken:T,chainBridge:b,messenger:ue,messengerGasUsage:lt,messengerConfig:pt,sentMessageAccount:Rt,otherBridgeToken:P}).preInstructions([ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:la})]).postInstructions(He).transaction(),Ze=$t(this.solanaRpcUrl,C.toString()).connection;return ve.recentBlockhash=(await Ze.getLatestBlockhash()).blockhash,ve.feePayer=C,await this.convertToVersionedTransaction(ve,Ze)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new K.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new w("Cannot find allbridgeLookupTableAccount");let o=new ae.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new ae.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:P,userAccount:C,destinationChainId:I,mint:R,config:v,configAccountInfo:k,gasPrice:W,thisGasPrice:z,message:Z,extraGasInstruction:xe}=r,ue=this.params.wormholeMessengerProgramId,[lt]=K.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new K.PublicKey(ue)),[pt]=K.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new K.PublicKey(ue)),[Rt]=K.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),d.toBuffer()],new K.PublicKey(ue)),He=await ra(I,k.wormholeMessengerProgramId),ve=await Vt(k.wormholeMessengerProgramId),Ze=K.Keypair.generate(),ze=$t(this.solanaRpcUrl,C.toString()),Fe=await ze.connection.getAccountInfo(lt);if(Fe==null)throw new w("Cannot fetch wormhole bridge account info");let gt=new ae.BN(Fe.data.slice(16,24),"le").toString(),ft=K.SystemProgram.transfer({fromPubkey:C,toPubkey:pt,lamports:+gt}),Qe=[];xe&&Qe.push(xe);let X={mint:R,user:C,config:v,lock:m,pool:A,gasPrice:W,thisGasPrice:z,bridgeAuthority:d,userToken:p,bridgeToken:T,chainBridge:b,otherBridgeToken:P,messengerGasUsage:He,wormholeProgram:ue,bridge:lt,message:Ze.publicKey,wormholeMessenger:k.wormholeMessengerProgramId,sequence:Rt,feeCollector:pt,wormholeMessengerConfig:ve,clock:ae.web3.SYSVAR_CLOCK_PUBKEY},Gr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:I,recipient:c,receiveToken:u}).accounts(X).preInstructions([ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:la}),ft]).postInstructions(Qe).signers([Ze]).transaction();return Gr.recentBlockhash=(await ze.connection.getLatestBlockhash()).blockhash,Gr.feePayer=C,{transaction:await this.convertToVersionedTransaction(Gr,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 fe("Such route does not support CCTP protocol");let T=4,b=o,P=m,C=A,I=$t(this.solanaRpcUrl,b),R=new ae.Program(ro,p,I),v=new K.PublicKey(c),k=await Gs(v,R.programId),W=new K.PublicKey(b),z=await R.account.cctpBridge.fetch(k),Z={};return Z.cctpBridge=R,Z.cctpBridgeAccount=k,Z.cctpAddressAccount=new K.PublicKey(p),Z.amount=new ae.BN(s),Z.recipient=Array.from(C),Z.receiveToken=Array.from(P),Z.userToken=await qe(W,v),Z.bridgeAuthority=await Es(k,R.programId),Z.bridgeTokenAccount=await _s(v,R.programId),Z.chainBridgeAccount=await na(u,R.programId),Z.userAccount=W,Z.destinationChainId=u,Z.mint=v,Z.gasPrice=await ir(u,z.gasOracleProgramId),Z.thisGasPrice=await ir(T,z.gasOracleProgramId),Z.provider=I,d&&(Z.extraGasInstruction=this.getExtraGasInstruction(d,Z.userAccount,k)),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:P,mint:C,gasPrice:I,thisGasPrice:R,extraGasInstruction:v,provider:k}=a,W=this.params.cctpParams.cctpDomains[r],z=this.params.cctpParams.cctpTransmitterProgramId,Z=this.params.cctpParams.cctpTokenMessengerMinter;if(W==null||!z||!Z)throw new w("CCTP is not configured");let xe=new K.PublicKey(z),ue=new K.PublicKey(Z),{messageTransmitterAccount:lt,tokenMessenger:pt,tokenMessengerEventAuthority:Rt,tokenMinter:He,localToken:ve,remoteTokenMessengerKey:Ze,authorityPda:ze}=$s(W,C,xe,ue),Fe=[];v&&Fe.push(v);let gt=K.Keypair.generate(),ft=Vs(s.programId,gt.publicKey),Qe=await s.methods.bridge({amount:c,destinationChainId:P,recipient:u,receiveToken:A}).accounts({mint:C,user:b,cctpBridge:o,messageSentEventData:gt.publicKey,lock:ft,cctpMessenger:ue,messageTransmitterProgram:xe,messageTransmitterAccount:lt,tokenMessenger:pt,tokenMinter:He,localToken:ve,remoteTokenMessengerKey:Ze,authorityPda:ze,eventAuthority:Rt,bridgeToken:p,gasPrice:I,thisGasPrice:R,chainBridge:T,userToken:d,bridgeAuthority:m}).preInstructions([ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Fe).transaction(),X=k.connection;return Qe.recentBlockhash=(await X.getLatestBlockhash()).blockhash,Qe.feePayer=b,{transaction:await this.convertToVersionedTransaction(Qe,X),messageSentEventDataKeypair:gt}}send(r){throw new ie}};var ei=require("@stellar/stellar-sdk"),po=require("big.js");var t=require("@stellar/stellar-sdk"),hu=t.contract.Spec,Tu=t.contract.Client;var lr=class extends Tu{constructor(r){super(new hu(["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 ti=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,po.Big)(b).plus(T).toFixed());let P=this.getContract(lr,s,o),C;return p==="stablecoin"?C=await P.swap_and_bridge({sender:o,token:ei.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(A),destination_chain_id:+u,receive_token:Buffer.from(m),nonce:St(),gas_amount:BigInt(0),fee_token_amount:BigInt(b)}):C=await P.swap_and_bridge({sender:o,token:ei.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(A),destination_chain_id:+u,receive_token:Buffer.from(m),nonce:St(),gas_amount:BigInt(b),fee_token_amount:BigInt(0)}),C.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(lr,s,o).swap({sender:o,amount:BigInt(a),token:ei.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(A),recipient:u,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ie}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var go="1.18.0",fo="1.40.0";var bu={"-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"},ni=class extends Error{},Bn=class extends ni{constructor(n,r){super(n),this.code=r,this.type=bu[r]??"ServerError"}},ri=class extends ni{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var yo=i=>{throw TypeError(i)},ga=(i,n,r)=>n.has(i)||yo("Cannot "+r),se=(i,n,r)=>(ga(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?yo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),Rn=(i,n,r,a)=>(ga(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),ho=(i,n,r)=>(ga(i,n,"access private method"),r),Su=(i,n,r,a)=>({set _(s){Rn(i,n,s,r)},get _(){return se(i,n,a)}}),sn,pr,Mt,on,gr,kn,ii,To,bo;function wu(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var Pu={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},ai=class{constructor(n,r={}){if(an(this,ii),an(this,sn,0),an(this,pr,0),an(this,Mt,null),an(this,on,null),an(this,gr,new Set),an(this,kn,new Map),this.endpoint=n,this.options={...Pu,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=wu(this.endpoint))}async makeRequest(n,r){let a=await ho(this,ii,To).call(this);return new Promise((s,o)=>{Rn(this,sn,se(this,sn)+1),se(this,kn).set(se(this,sn),{resolve:s,reject:o,timeout:setTimeout(()=>{se(this,kn).delete(se(this,sn)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:se(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 pa(n);return se(this,gr).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;pr=new WeakMap;Mt=new WeakMap;on=new WeakMap;gr=new WeakMap;kn=new WeakMap;ii=new WeakSet;To=function(){return se(this,on)?se(this,on):(Rn(this,on,new Promise(i=>{se(this,Mt)?.close(),Rn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),se(this,Mt).addEventListener("open",()=>{Rn(this,pr,0),i(se(this,Mt))}),se(this,Mt).addEventListener("close",()=>{Su(this,pr)._++,se(this,pr)<=this.options.maxReconnects&&setTimeout(()=>{ho(this,ii,bo).call(this)},this.options.reconnectTimeout)}),se(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&&se(this,kn).has(r.id)){let{resolve:a,timeout:s}=se(this,kn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;se(this,gr).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),se(this,on))};bo=async function(){return se(this,Mt)?.close(),Rn(this,on,null),Promise.allSettled([...se(this,gr)].map(i=>i.subscribe(this)))};var pa=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 So=i=>{throw TypeError(i)},ha=(i,n,r)=>n.has(i)||So("Cannot "+r),Le=(i,n,r)=>(ha(i,n,"read from private field"),r?r.call(i):n.get(i)),si=(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),fa=(i,n,r,a)=>(ha(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Cu=(i,n,r)=>(ha(i,n,"access private method"),r),fr,nt,yr,ya,wo,oi=class{constructor(n){si(this,ya),si(this,fr,0),si(this,nt),si(this,yr),fa(this,nt,n)}fetch(n,r){let a=Le(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){fa(this,fr,Le(this,fr)+1);let r=await this.fetch(Le(this,nt).rpc?.url??Le(this,nt).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":go,"Client-Target-Api-Version":fo,"Client-Request-Method":n.method,...Le(this,nt).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Le(this,fr),method:n.method,params:n.params})});if(!r.ok)throw new ri(`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 Cu(this,ya,wo).call(this).subscribe(n);return async()=>!!await r()}};fr=new WeakMap;nt=new WeakMap;yr=new WeakMap;ya=new WeakSet;wo=function(){if(!Le(this,yr)){let i=Le(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.");fa(this,yr,new ai(Le(this,nt).websocket?.url??Le(this,nt).url,{WebSocketConstructor:i,...Le(this,nt).websocket}))}return Le(this,yr)};var Wt=require("@mysten/bcs");pe();ke();var J=require("@mysten/bcs");var Lu=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,Xu=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function xo(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!Lu.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!Xu.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 Ku=BigInt(1e9),Ya="0x1",mi="0x2";var di=Re("0x6");var La=`${mi}::sui::SUI`,Hu=Re("0x5");ke();var zu="object",Qu="ID",qu="ascii",eA="String",tA="string",nA="String",rA="option",iA="Option";function Fo(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&N(n.package)===N("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function li(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=li(i.vector);return n?h.vector(n):null}if("datatype"in i){let n=N(i.datatype.package);if(n===N(Ya)){if(i.datatype.module===qu&&i.datatype.type===eA)return h.String;if(i.datatype.module===tA&&i.datatype.type===nA)return h.String;if(i.datatype.module===rA&&i.datatype.type===iA){let r=li(i.datatype.typeParameters[0]);return r?h.vector(r):null}}if(n===N(mi)&&i.datatype.module===zu&&i.datatype.type===Qu)return h.Address}return null}function Do(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:br(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:br(i.MutableReference)}:{ref:null,body:br(i)}}function br(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:br(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(br)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var No=require("@mysten/bcs");ke();function aA(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,No.toBase64)(i):i.toBase64()}}}var Oe={Pure:aA,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:N(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:N(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:N(i)}}}}};var za=require("@mysten/bcs"),st=require("valibot");ke();var g=require("valibot");ke();function Yt(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=>N(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")),at=(0,g.object)({objectId:cn,version:be,digest:(0,g.string)()}),q=(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]}))),sA=(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)(at))}),Gp=(0,g.object)({address:(0,g.string)(),module:(0,g.string)(),name:(0,g.string)(),typeParams:(0,g.array)((0,g.string)())}),Xa=(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)(()=>Xa)}),(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)(()=>Xa))})}),(0,g.object)({typeParameter:(0,g.pipe)((0,g.number)(),(0,g.integer)())})]),oA=(0,g.object)({ref:(0,g.nullable)((0,g.union)([(0,g.literal)("&"),(0,g.literal)("&mut")])),body:Xa}),cA=(0,g.object)({package:Ce,module:(0,g.string)(),function:(0,g.string)(),typeArguments:(0,g.array)((0,g.string)()),arguments:(0,g.array)(q),_argumentTypes:(0,g.optional)((0,g.nullable)((0,g.array)(oA)))}),uA=(0,g.object)({name:(0,g.string)(),inputs:(0,g.record)((0,g.string)(),(0,g.union)([q,(0,g.array)(q)])),data:(0,g.record)((0,g.string)(),(0,g.unknown)())}),AA=Yt({MoveCall:cA,TransferObjects:(0,g.object)({objects:(0,g.array)(q),address:q}),SplitCoins:(0,g.object)({coin:q,amounts:(0,g.array)(q)}),MergeCoins:(0,g.object)({destination:q,sources:(0,g.array)(q)}),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)(q)}),Upgrade:(0,g.object)({modules:(0,g.array)(Jt),dependencies:(0,g.array)(Ce),package:Ce,ticket:q}),$Intent:uA}),Wo=Yt({ImmOrOwnedObject:at,SharedObject:(0,g.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,g.boolean)()}),Receiving:at}),mA=Yt({Object:Wo,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))})}),Ka=Yt({Object:Wo,Pure:(0,g.object)({bytes:Jt})}),Ha=Yt({None:(0,g.literal)(!0),Epoch:be}),xn=(0,g.object)({version:(0,g.literal)(2),sender:(0,g.nullish)(cn),expiration:(0,g.nullish)(Ha),gasData:sA,inputs:(0,g.array)(mA),commands:(0,g.array)(AA)});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)(q,r)),address:(0,st.parse)(q,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,st.parse)(q,i),amounts:n.map(r=>(0,st.parse)(q,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,st.parse)(q,i),sources:n.map(r=>(0,st.parse)(q,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,za.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,za.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Re(s)),package:r,ticket:(0,st.parse)(q,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,st.parse)(q,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)(q,o)):(0,st.parse)(q,s)])),data:r}}}};var Fn=require("@mysten/bcs"),Pt=require("valibot");ke();var Lt=require("@mysten/bcs"),l=require("valibot");pe();var Qa=(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)()])}),dA=Yt({ImmOrOwned:Qa,Shared:(0,l.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,l.boolean)()}),Receiving:Qa}),Eo=Yt({Object:dA,Pure:(0,l.array)((0,l.pipe)((0,l.number)(),(0,l.integer)()))}),jo=(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")})]),lA=(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))})]),Uo=(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}})),qa=(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)(()=>qa)}),(0,l.object)({struct:(0,l.lazy)(()=>pA)}),(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))})]),pA=(0,l.object)({address:(0,l.string)(),module:(0,l.string)(),name:(0,l.string)(),typeParams:(0,l.array)(qa)}),gA=(0,l.object)({budget:(0,l.optional)(Uo),price:(0,l.optional)(Uo),payment:(0,l.optional)((0,l.array)(Qa)),owner:(0,l.optional)((0,l.string)())}),fA=[jo,(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)([...fA]),yA=(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)}),hA=(0,l.object)({kind:(0,l.literal)("TransferObjects"),objects:(0,l.array)(Dt),address:Dt}),TA=(0,l.object)({kind:(0,l.literal)("SplitCoins"),coin:Dt,amounts:(0,l.array)(Dt)}),bA=(0,l.object)({kind:(0,l.literal)("MergeCoins"),destination:Dt,sources:(0,l.array)(Dt)}),SA=(0,l.object)({kind:(0,l.literal)("MakeMoveVec"),type:(0,l.union)([(0,l.object)({Some:qa}),(0,l.object)({None:(0,l.nullable)((0,l.literal)(!0))})]),objects:(0,l.array)(Dt)}),wA=(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)())}),PA=(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}),CA=[yA,hA,TA,bA,wA,PA,SA],IA=(0,l.union)([...CA]),Lp=(0,l.object)({version:(0,l.literal)(1),sender:(0,l.optional)((0,l.string)()),expiration:(0,l.nullish)(lA),gasConfig:gA,inputs:(0,l.array)(jo),transactions:(0,l.array)(IA)});function es(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Lt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some: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,Lt.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,Lt.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 Go(i){return(0,l.parse)(xn,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,l.is)(Eo,n.value)){let r=(0,l.parse)(Eo,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Lt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?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,Lt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Lt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var S=require("valibot");function Sr(i){return(0,S.union)(Object.entries(i).map(([n,r])=>(0,S.object)({[n]:r})))}var ot=Sr({GasCoin:(0,S.literal)(!0),Input:(0,S.pipe)((0,S.number)(),(0,S.integer)()),Result:(0,S.pipe)((0,S.number)(),(0,S.integer)()),NestedResult:(0,S.tuple)([(0,S.pipe)((0,S.number)(),(0,S.integer)()),(0,S.pipe)((0,S.number)(),(0,S.integer)())])}),vA=(0,S.object)({budget:(0,S.nullable)(be),price:(0,S.nullable)(be),owner:(0,S.nullable)(cn),payment:(0,S.nullable)((0,S.array)(at))}),BA=(0,S.object)({package:Ce,module:(0,S.string)(),function:(0,S.string)(),typeArguments:(0,S.array)((0,S.string)()),arguments:(0,S.array)(ot)}),RA=(0,S.object)({name:(0,S.string)(),inputs:(0,S.record)((0,S.string)(),(0,S.union)([ot,(0,S.array)(ot)])),data:(0,S.record)((0,S.string)(),(0,S.unknown)())}),kA=Sr({MoveCall:BA,TransferObjects:(0,S.object)({objects:(0,S.array)(ot),address:ot}),SplitCoins:(0,S.object)({coin:ot,amounts:(0,S.array)(ot)}),MergeCoins:(0,S.object)({destination:ot,sources:(0,S.array)(ot)}),Publish:(0,S.object)({modules:(0,S.array)(Jt),dependencies:(0,S.array)(Ce)}),MakeMoveVec:(0,S.object)({type:(0,S.nullable)((0,S.string)()),elements:(0,S.array)(ot)}),Upgrade:(0,S.object)({modules:(0,S.array)(Jt),dependencies:(0,S.array)(Ce),package:Ce,ticket:ot}),$Intent:RA}),MA=Sr({ImmOrOwnedObject:at,SharedObject:(0,S.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,S.boolean)()}),Receiving:at}),OA=Sr({Object:MA,Pure:(0,S.object)({bytes:Jt}),UnresolvedPure:(0,S.object)({value:(0,S.unknown)()}),UnresolvedObject:(0,S.object)({objectId:Ce,version:(0,S.optional)((0,S.nullable)(be)),digest:(0,S.optional)((0,S.nullable)((0,S.string)())),initialSharedVersion:(0,S.optional)((0,S.nullable)(be))})}),xA=Sr({None:(0,S.literal)(!0),Epoch:be}),_o=(0,S.object)({version:(0,S.literal)(2),sender:(0,S.nullish)(cn),expiration:(0,S.nullish)(xA),gasData:vA,inputs:(0,S.array)(OA),commands:(0,S.array)(kA)});var $o=require("valibot");pe();var FA=50,DA=1000n,NA=5e10;async function Zo(i,n,r){return await GA(i,n),await jA(i,n),n.onlyTransactionKind||(await WA(i,n),await EA(i,n),await UA(i,n)),await _A(i),await r()}async function WA(i,n){i.gasConfig.price||(i.gasConfig.price=String(await un(n).getReferenceGasPrice()))}async function EA(i,n){if(i.gasConfig.budget)return;let r=await un(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(NA),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=DA*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 UA(i,n){if(!i.gasConfig.payment){let a=(await un(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:La})).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,$o.parse)(at,s))}}async function jA(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?JA(a,FA):[],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=N(p.UnresolvedObject.objectId),P=m.get(b);p.UnresolvedObject.initialSharedVersion??P?.initialSharedVersion?T=Oe.SharedObjectRef({objectId:b,initialSharedVersion:p.UnresolvedObject.initialSharedVersion||P?.initialSharedVersion,mutable:VA(i,d)}):$A(i,d)&&(T=Oe.ReceivingRef({objectId:b,digest:p.UnresolvedObject.digest??P?.digest,version:p.UnresolvedObject.version??P?.version})),i.inputs[i.inputs.indexOf(p)]=T??Oe.ObjectRef({objectId:b,digest:p.UnresolvedObject.digest??P?.digest,version:p.UnresolvedObject.version??P?.version})}}async function GA(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=>{Vo(A,h.U64,i)});break;case"TransferObjects":Vo(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=>Do(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&&Fo(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 P=r[b.Input];if(!P.UnresolvedPure&&!P.UnresolvedObject)return;let C=P.UnresolvedPure?.value??P.UnresolvedObject?.objectId,I=li(p.body);if(I){b.type="pure",r[r.indexOf(P)]=Oe.Pure(I.serialize(C));return}if(typeof C!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(C,null,2)}`);b.type="object";let R=P.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:C}}:P;r[b.Input]=R})}})}function _A(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 Vo(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 VA(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 $A(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=ZA(s.MoveCall._argumentTypes[o])||r}}),r}function ZA(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 JA(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Jo(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 Yo=require("@mysten/bcs");pe();function Lo(i){function n(r,a){if(typeof r=="string")return i(wr(r).serialize(a));if(r instanceof Uint8Array||(0,Yo.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(wr(r)).serialize(a)),n.option=(r,a)=>i(h.option(wr(r)).serialize(a)),n}function wr(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(wr(a)):h.option(wr(a))}throw new Error(`Invalid Pure type name: ${i}`)}var zo=require("@mysten/bcs"),pi=require("valibot");pe();ke();var Xo=require("@noble/hashes/blake2b");function Ko(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,Xo.blake2b)(a,{dkLen:32})}function Ho(i){return N(i).replace("0x","")}var Xt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=h.TransactionKind.parse(n).ProgrammableTransaction;if(!a)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:a.inputs,commands:a.commands})}static fromBytes(n){let a=h.TransactionData.parse(n)?.V1,s=a.kind.ProgrammableTransaction;if(!a||!s)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:a.sender,expiration:a.expiration,gasData:a.gasData,inputs:s.inputs,commands:s.commands})}static restore(n){return n.version===2?new i((0,pi.parse)(xn,n)):new i((0,pi.parse)(xn,Go(n)))}static getDigestFromBytes(n){let r=Ko("TransactionData",n);return(0,zo.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:Ho(A),expiration:u||{None:!0},gasData:{payment:m.payment,owner:Ho(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,pi.parse)(xn,this)}};ke();function ts(i){if(typeof i=="string")return N(i);if(i.Object)return i.Object.ImmOrOwnedObject?N(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?N(i.Object.Receiving.objectId):N(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return N(i.UnresolvedObject.objectId)}var ec=i=>{throw TypeError(i)},as=(i,n,r)=>n.has(i)||ec("Cannot "+r),V=(i,n,r)=>(as(i,n,"read from private field"),r?r.call(i):n.get(i)),Pr=(i,n,r)=>n.has(i)?ec("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),An=(i,n,r,a)=>(as(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Nt=(i,n,r)=>(as(i,n,"access private method"),r),Ir,vr,mn,Y,ct,gi,ss,rs,os;function Qo(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 tc=Symbol.for("@mysten/transaction");function fi(i){return!!i&&typeof i=="object"&&i[tc]===!0}var qo={buildPlugins:new Map,serializationPlugins:new Map},ns=Symbol.for("@mysten/transaction/registry");function Cr(){try{let i=globalThis;return i[ns]||(i[ns]=qo),i[ns]}catch{return qo}}var YA=class is{constructor(){Pr(this,ct),Pr(this,Ir),Pr(this,vr),Pr(this,mn,new Map),Pr(this,Y),this.object=Jo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Pt.is)(q,r))return r;let a=ts(r),s=V(this,Y).inputs.find(o=>a===ts(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:V(this,Y).inputs.indexOf(s),type:"object"}:V(this,Y).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:N(r)}}:r)});let n=Cr();An(this,Y,new Xt),An(this,vr,[...n.buildPlugins.values()]),An(this,Ir,[...n.serializationPlugins.values()])}static fromKind(n){let r=new is;return An(r,Y,Xt.fromKindBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)),r}static from(n){let r=new is;return fi(n)?An(r,Y,new Xt(n.getData())):typeof n!="string"||!n.startsWith("{")?An(r,Y,Xt.fromBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)):An(r,Y,Xt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){Cr().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){Cr().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){Cr().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){Cr().buildPlugins.delete(n)}addSerializationPlugin(n){V(this,Ir).push(n)}addBuildPlugin(n){V(this,vr).push(n)}addIntentResolver(n,r){if(V(this,mn).has(n)&&V(this,mn).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);V(this,mn).set(n,r)}setSender(n){V(this,Y).sender=n}setSenderIfNotSet(n){V(this,Y).sender||(V(this,Y).sender=n)}setExpiration(n){V(this,Y).expiration=n?(0,Pt.parse)(Ha,n):null}setGasPrice(n){V(this,Y).gasConfig.price=String(n)}setGasBudget(n){V(this,Y).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){V(this,Y).gasData.budget==null&&(V(this,Y).gasConfig.budget=String(n))}setGasOwner(n){V(this,Y).gasConfig.owner=n}setGasPayment(n){V(this,Y).gasConfig.payment=n.map(r=>(0,Pt.parse)(at,r))}get blockData(){return es(V(this,Y).snapshot())}getData(){return V(this,Y).snapshot()}get[tc](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Lo(n=>(0,Fn.isSerializedBcs)(n)?V(this,Y).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):V(this,Y).addInput("pure",(0,Pt.is)(Ka,n)?(0,Pt.parse)(Ka,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=V(this,Y).commands.push(n);return Qo(r-1)}splitCoins(n,r){let a=_e.SplitCoins(typeof n=="string"?this.object(n):Nt(this,ct,ss).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Nt(this,ct,gi).call(this,o))),s=V(this,Y).commands.push(a);return Qo(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,gi).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,gi).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(es(V(this,Y).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Pt.parse)(_o,V(this,Y).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,rs).call(this,n),V(this,Y).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Nt(this,ct,rs).call(this,n),V(this,Y).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of V(this,Y).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...V(this,Ir)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!V(this,mn).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(V(this,mn).get(s))}await Nt(this,ct,os).call(this,a,n)}};Ir=new WeakMap;vr=new WeakMap;mn=new WeakMap;Y=new WeakMap;ct=new WeakSet;gi=function(i){return(0,Fn.isSerializedBcs)(i)?this.pure(i):Nt(this,ct,ss).call(this,i)};ss=function(i){return typeof i=="function"?(0,Pt.parse)(q,i(this)):(0,Pt.parse)(q,i)};rs=async function(i){if(!i.onlyTransactionKind&&!V(this,Y).sender)throw new Error("Missing transaction sender");await Nt(this,ct,os).call(this,[...V(this,vr),Zo],i)};os=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(V(this,Y),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 Ct=YA;var Kt=require("valibot");pe();ke();var yi="CoinWithBalance",nc=Tr("0x2::sui::SUI");function ne({type:i=nc,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(yi,XA);let s=i==="gas"?i:Tr(i);return a.add(_e.Intent({name:yi,inputs:{},data:{type:s===nc&&r?"gas":s,balance:BigInt(n)}}))}}var LA=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function XA(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===yi){let{type:d,balance:p}=(0,Kt.parse)(LA,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 KA({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!==yi)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[P,...C]=c.get(p).map(I=>i.addInput("object",Oe.ObjectRef({objectId:I.coinObjectId,digest:I.digest,version:I.version})));C.length>0&&b.push(_e.MergeCoins(P,C)),A.set(p,P)}b.push(_e.SplitCoins(A.get(p),[i.addInput("pure",Oe.Pure(h.u64().serialize(T)))])),i.replaceCommand(m,b),i.mapArguments(P=>P.$kind==="Result"&&P.Result===m?{$kind:"NestedResult",NestedResult:[m+b.length-1,0]}:P)}return r()}async function KA({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,P)=>Number(BigInt(P.balance)-BigInt(b.balance)));for(let b of T){if(s.has(b.coinObjectId))continue;let P=BigInt(b.balance);if(c.push(b),o-=P,o<=0)return c}if(d)return u(p);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}ke();var HA=Symbol.for("@mysten/SuiClient");var Et=class{get[HA](){return!0}constructor(n){this.transport=n.transport??new oi({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!je(N(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(N(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(N(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(N(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(N(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||!Mn(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||!Mn(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(!ui(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(!ui(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(N(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||!Mn(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(fi(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||!Mn(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=>xo(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 Pi=require("big.js");var ys=Ae(Ht());var Ut=Ae(Ht());ge();function ac(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[F(i,r.bridge),F(i,r.coin),Xe(i,r.receiveAmountMin,"u64")]})}function sc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.userDeposit),F(i,r.coin)]})}function oc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.userDeposit),Xe(i,r.amountLp,"u64")]})}function cc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.userDeposit)]})}function uc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[F(i,r)]})}function us(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.messenger),F(i,r.wormholeState),F(i,r.theClock),F(i,r.gasOracle),F(i,r.amount),F(i,r.recipient),Xe(i,r.destinationChainId,"u8"),F(i,r.receiveToken),Xe(i,r.nonce,"u256"),F(i,r.feeSuiCoin),F(i,r.feeTokenCoin)]})}function Ac(i,n){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function As(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.messenger),F(i,r.gasOracle),F(i,r.amount),F(i,r.recipient),Xe(i,r.destinationChainId,"u8"),F(i,r.receiveToken),Xe(i,r.nonce,"u256"),F(i,r.feeSuiCoin),F(i,r.feeTokenCoin)]})}var fc=Ae(ds());var dc=Ae(ds());ge();function ls(i,n,r){return i.moveCall({target:`${dc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[F(i,r.cctpBridge),F(i,r.gasOracle),F(i,r.tokenMessengerMinterState),F(i,r.messageTransmitterState),F(i,r.treasury),F(i,r.denyList),F(i,r.amount),F(i,r.feeSuiCoin),F(i,r.feeTokenCoin),Xe(i,r.destinationChainId,"u8"),F(i,r.recipient),F(i,r.recipientWalletAddress)]})}var yc=Ae(gs());var gc=Ae(gs());pe();ge();pe();ge();var fs=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=L(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:L(i.$typeName,D(n)),typeArgs:[D(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(Br(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([D(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=>$(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>j(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(Br(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=>G(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 Dn(i){return fs.r(i)}function oe(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var nm=h.bytes(32).transform({input:i=>(0,J.fromHEX)(i),output:i=>(0,J.toHEX)(i)});function Br(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 nm;default:return i.bcs}}function D(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 $(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 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 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:j(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function ut(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(M(n[a])!==M(D(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${D(r[a])}, got ${n[a]}))`)}function It(i,n){let{typeArgs:r}=Se(i.type);ut(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 G(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:G(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}ge();var hi="0x1";ge();pe();function Ti(i){return i=M(i),i===`${hi}::string::String`}var bi=class i{__StructClass=!0;static get $typeName(){return`${hi}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=L(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:L(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 oe(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:$(Dn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!Ti(n.type))throw new Error("not a String type");return i.reified().new({bytes:j(Dn("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:G(Dn("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(!Ti(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"||!Ti(n.bcs.type))throw new Error("object at is not a String object");return i.fromBcs((0,J.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"||!Ti(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};ge();ge();var zt="0x2";pe();function Si(i){return i=M(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=L(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:L(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 oe(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("ID",{bytes:h.bytes(32).transform({input:n=>(0,J.fromHEX)(n),output:n=>(0,J.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:$("address",n.bytes)})}static fromFieldsWithTypes(n){if(!Si(n.type))throw new Error("not a ID type");return i.reified().new({bytes:j("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:G("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(!Si(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"||!Si(n.bcs.type))throw new Error("object at is not a ID object");return i.fromBcs((0,J.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"||!Si(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function wi(i){return i=M(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=L(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:L(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 oe(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:$(ln.reified(),n.id)})}static fromFieldsWithTypes(n){if(!wi(n.type))throw new Error("not a UID type");return i.reified().new({id:j(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:G(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(!wi(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"||!wi(n.bcs.type))throw new Error("object at is not a UID object");return i.fromBcs((0,J.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"||!wi(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function At(i,n){return i.moveCall({target:`${gc.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Xe(i,n,`${bi.$typeName}`)]})}async function vt(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?vt(i,a.nextCursor,s):s}var Nn=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,ys.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 Ct;m.setSender(o);let d={bridge:a.bridgeObjectAddress,coin:ne({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(A)},p=ac(m,[c,u],d),T=await vt(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 buildRawTransactionSendFromCustomTx(r,a,s){let o=Ct.from(r);return this.buildRawTransactionSendFromTx(s,o,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new Ct)}async buildRawTransactionSendFromTx(r,a,s){let o=await tt(this.chainType,r,this.api),{messenger:c}=o,u=r.sourceToken.suiAddresses;if(!u)throw new w("SUI token must contain 'suiAddresses'");switch((0,ys.setAddress)(u.bridgeAddress,u.bridgeAddressOrigin),(0,yc.setAddress)(u.utilsAddress),c){case 1:return this.buildRawTransactionAllbridgeSend(o,u,a,s);case 2:return this.buildRawTransactionWormholeSend(o,u,a,s);case 3:case 4:return this.buildRawTransactionCctpSend(r,o,u,a,s);case 5:throw new ye("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a,s,o){let{amount:c,fromAccountAddress:u,fromTokenAddress:A,toChainId:m,toAccountAddress:d,toTokenAddress:p,fee:T,gasFeePaymentMethod:b,extraGas:P}=r,C=T;if(P&&(C=(0,Pi.Big)(C).plus(P).toFixed()),s.setSender(u),b==="stablecoin"){let I=BigInt(c)-BigInt(C),R,v;if(o){let[W]=s.splitCoins(o,[C]);R=o,v=W}else R=ne({balance:I,type:A}),v=ne({balance:BigInt(C),type:A});let k={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:R,destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:v,feeSuiCoin:ne({balance:BigInt(0),useGasCoin:!1})};As(s,A,k)}else{let I=C==="0"?ne({balance:BigInt(C),useGasCoin:!1}):ne({balance:BigInt(C)}),R={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:o??ne({balance:BigInt(c),type:A}),destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ne({balance:BigInt(0),type:A}),feeSuiCoin:I};As(s,A,R)}return await s.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a,s,o){let{amount:c,fromAccountAddress:u,fromTokenAddress:A,toChainId:m,toAccountAddress:d,toTokenAddress:p,fee:T,gasFeePaymentMethod:b,extraGas:P}=r,C=T;if(P&&(C=(0,Pi.Big)(C).plus(P).toFixed()),s.setSender(u),b==="stablecoin"){let I=BigInt(c)-BigInt(C),R,v;if(o){let[W]=s.splitCoins(o,[C]);R=o,v=W}else R=ne({balance:I,type:A}),v=ne({balance:BigInt(C),type:A});let k={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:di,amount:R,destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:v,feeSuiCoin:ne({balance:BigInt(0),useGasCoin:!1})};us(s,A,k)}else{let I=C==="0"?ne({balance:BigInt(C),useGasCoin:!1}):ne({balance:BigInt(C)}),R={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:di,amount:o??ne({balance:BigInt(c),type:A}),destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ne({balance:BigInt(0),type:A}),feeSuiCoin:I};us(s,A,R)}return await s.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s,o,c){let{amount:u,fromAccountAddress:A,fromTokenAddress:m,toChainId:d,toAccountAddress:p,fee:T,gasFeePaymentMethod:b,extraGas:P}=a;(0,fc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let C=T;P&&(C=(0,Pi.Big)(C).plus(P).toFixed()),o.setSender(A);let I=At(o,et(p)),R;if(r.destinationToken.chainType==="SOLANA"){let v=await Xr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));R=At(o,et(v))}else R=I;if(b==="stablecoin"){let v=BigInt(u)-BigInt(C),k,W;if(c){let[Z]=o.splitCoins(c,[C]);k=c,W=Z}else k=ne({balance:v,type:m}),W=ne({balance:BigInt(C),type:m});let z={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:k,destinationChainId:d,recipient:R,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:W,feeSuiCoin:ne({balance:BigInt(0),useGasCoin:!1})};ls(o,m,z)}else{let v=C==="0"?ne({balance:BigInt(C),useGasCoin:!1}):ne({balance:BigInt(C)}),k={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:c??ne({balance:BigInt(u),type:m}),destinationChainId:d,recipient:R,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ne({balance:BigInt(0),type:m}),feeSuiCoin:v};ls(o,m,k)}return await o.toJSON({client:this.client})}};var bc=require("big.js");var hc=Ae(require("bn.js"));function Ci(i){return"0x"+new hc.default(i).toString("hex")}function Tc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function Ii(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 rm(i,s),{txId:s}}async function rm(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 Tc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new bn(`Transaction status is ${s.receipt.result}`)}}var Rr=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 Ii(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:P,extraGasDest:C}=a,I=T;P&&(I=(0,bc.Big)(I).plus(P).toFixed());let R=St().toString(),v,k,W;switch(p){case 3:case 4:b==="stablecoin"?(v=[{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:I}],k="0"):(v=[{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:0}],k=I),W="bridge(uint256,bytes32,uint256,uint256)";break;case 5:b==="stablecoin"?(v=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:I},{type:"uint256",value:C??"0"},{type:"uint256",value:"10"}],k="0"):(v=[{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:C??"0"},{type:"uint256",value:"10"}],k=I),W="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:b==="stablecoin"?(v=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"bytes32",value:d},{type:"uint256",value:R},{type:"uint8",value:p},{type:"uint256",value:I}],k="0"):(v=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"bytes32",value:d},{type:"uint256",value:R},{type:"uint8",value:p},{type:"uint256",value:0}],k=I),W="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(o,W,v,k,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 vi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new Kr(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 U(r.amount),_("amount",r.amount,r.sourceToken.decimals),Hr(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 fe("Such route does not support CCTP protocol");case 4:if(i.cctpV2Address)return i.cctpV2Address;throw new fe("Such route does not support CCTP V2 protocol");case 5:if(i.oftBridgeAddress)return i.oftBridgeAddress;throw new ye("Such route does not support OFT protocol");case 1:case 2:return i.bridgeAddress}}function Hr(i,n,r,a,s){switch(E.getChainProperty(i).chainType){case"EVM":{if(s)return new ur(s,n,r);{let o=r.getNodeRpcUrl(i);return new ur(new wc.Web3(o),n,r)}}case"TRX":{if(s)return new Rr(s,n);{let o=r.getNodeRpcUrl(i);return new Rr(new Sc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new qr(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 ti(r,a,n);case"SUI":return new Nn(r,n)}}var Oc=require("big.js");var im=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),Pc="__cache__",hs=function(i){return typeof i!="string"?Pc+JSON.stringify(i):Pc+i},Ts=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=hs(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[hs(n)];return r&&r.data}remove(n){let r=hs(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)im(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},jt=Ts;var xc=require("tronweb"),Gn=require("web3");var Bt=require("big.js");function Cc(i,n,r,a,s){let o=x(i,3),c=(0,Bt.Big)(o),u=(0,Bt.Big)(r),A=(0,Bt.Big)(a).plus(s),m,d;if(u.eq(0)||A.eq(0)){let T=c.div(2);m=(0,Bt.Big)(a).plus(T),d=(0,Bt.Big)(s).plus(T)}else m=(0,Bt.Big)(a).plus(c.mul(a).div(A)),d=(0,Bt.Big)(s).plus(c.mul(s).div(A));return(0,Bt.Big)(Hs(n,m.toFixed(),d.toFixed())).minus(u).toFixed()}function Ic(i){let n=x(i,3);return(0,Bt.Big)(n).round().toFixed()}var Gt=require("web3");var am={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"}]},kr=am;var Ie=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return O(this.lpAmount,3).toFixed()}earned(n,r){let a=Xs(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?O(a,r).toFixed():a}};var Ve=class{};var Mr=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 $r(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await ta(()=>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 $r(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await ta(()=>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,P,C,I]=await a.execute();if(p&&T&&b&&P&&C&&I&&!p.error&&!T.error&&!b.error&&!P.error&&!C.error&&!I.error){let R=Gt.Web3.utils.toBigInt(b.result).toString(),v=Gt.Web3.utils.toBigInt(P.result).toString(),k=Pe({tokenBalance:R,vUsdBalance:v});return{aValue:Gt.Web3.utils.toBigInt(p.result).toString(),dValue:Gt.Web3.utils.toBigInt(T.result).toString(),tokenBalance:R,vUsdBalance:v,totalLpAmount:Gt.Web3.utils.toBigInt(C.result).toString(),accRewardPerShareP:Gt.Web3.utils.toBigInt(I.result).toString(),p:this.P,imbalance:k}}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=Pe({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(kr.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 U(n.amount),_("amount",n.amount,n.token.decimals),n.amount=x(n.amount,n.token.decimals).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return U(n.amount),_("amount",n.amount,n.token.decimals),n.amount=x(n.amount,3).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(n)}async claimRewards(n,r){return Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(n)}};var dt=require("@project-serum/anchor"),mt=require("@solana/web3.js");var Ri=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 mt.PublicKey(a.poolAddress),u=await o.account.pool.fetch(c);try{let A=await ia(new mt.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=Pe({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 dt.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new mt.PublicKey(r.accountAddress),await In(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 dt.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new mt.PublicKey(r.accountAddress),await In(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 mt.PublicKey(r.accountAddress),await In(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 dt.Program(mr,r,a)}buildAnchorProvider(r){let a=new mt.Connection(this.solanaRpcUrl,"confirmed"),s=new mt.PublicKey(r);return new dt.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new mt.PublicKey(s),u=await Vt(r.programId),A=await wn(r.programId),m=new mt.PublicKey(a),p=(await r.account.pool.fetch(m)).mint,T=await qe(c,p),b=await Pn(p,r.programId),P=await ia(c,p,r.programId),C=[dt.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await Cn(T,o)}catch{let k=await dt.Spl.associatedToken(o).methods.create().accounts({mint:p,owner:c,associatedAccount:T}).instruction();C.push(k)}try{await r.account.userDeposit.fetch(P)}catch{let v=await r.methods.initDepositAccount().accounts({mint:p,user:c,userDeposit:P}).instruction();C.push(v)}return{accounts:{mint:p,user:c,config:u,pool:m,bridgeAuthority:A,userDeposit:P,userToken:T,bridgeToken:b},preInstructions:C}}};var Kh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),sm=e.contract.Spec,om=e.contract.Client;var ki=class extends om{constructor(r){super(new sm(["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 bs=require("@stellar/stellar-sdk"),vc=bs.rpc.Api;function En(i){let{simulation:n,options:r}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");if(vc.isSimulationSuccess(n))return n.result==null?void 0:r.parseResultXdr(n.result.retval);throw new Error(n.error)}function Un(i){let{simulation:n}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");return vc.isSimulationError(n)}var Mi=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(Un(o))throw new w;let c=En(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(Un(s))throw new w;let o=En(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:Pe({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 ki(s)}};var jn=Ae(Ht());ge();ge();pe();function Oi(i){return i=M(i),i.startsWith(`${zt}::balance::Balance<`)}var we=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=L(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:$("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!Oi(r.type))throw new Error("not a Balance type");return It(r,[n]),i.reified(n).new({value:j("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:G("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Oi(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"||!Oi(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!Oi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var Ps=Ae(Ht());ge();var Ss=Ae(Ht());pe();function xi(i){return i=M(i),i.startsWith(`${Ss.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${Ss.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:we.bcs,rewards:we.bcs,lp_supply:h.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:$("u128",r.acc_reward_per_share_p),adminFeeShareBp:$("u64",r.admin_fee_share_bp),adminFee:$(we.reified(n),r.admin_fee),rewards:$(we.reified(n),r.rewards),lpSupply:$("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!xi(r.type))throw new Error("not a PoolRewards type");return It(r,[n]),i.reified(n).new({accRewardPerShareP:j("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:j("u64",r.fields.admin_fee_share_bp),adminFee:j(we.reified(n),r.fields.admin_fee),rewards:j(we.reified(n),r.fields.rewards),lpSupply:j("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:G("u128",r.accRewardPerShareP),adminFeeShareBp:G("u64",r.adminFeeShareBp),adminFee:G(we.reified(n),r.adminFee),rewards:G(we.reified(n),r.rewards),lpSupply:G("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!xi(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"||!xi(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!xi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};ge();var ws=Ae(Ht());pe();function Fi(i){return i=M(i),i.startsWith(`${ws.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${ws.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:$("u64",r.token_balance),vusdBalance:$("u64",r.vusd_balance),d:$("u64",r.d),a:$("u64",r.a),balanceRatioMinBp:$("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!Fi(r.type))throw new Error("not a PoolState type");return It(r,[n]),i.reified(n).new({tokenBalance:j("u64",r.fields.token_balance),vusdBalance:j("u64",r.fields.vusd_balance),d:j("u64",r.fields.d),a:j("u64",r.fields.a),balanceRatioMinBp:j("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:G("u64",r.tokenBalance),vusdBalance:G("u64",r.vusdBalance),d:G("u64",r.d),a:G("u64",r.a),balanceRatioMinBp:G("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Fi(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"||!Fi(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!Fi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};pe();function Di(i){return i=M(i),i.startsWith(`${Ps.PKG_V1}::pool::Pool<`)}var Ni=class i{__StructClass=!0;static get $typeName(){return`${Ps.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:we.bcs})}static fromFields(n,r){return i.reified(n).new({id:$(Ke.reified(),r.id),state:$(gn.reified(n),r.state),rewards:$(pn.reified(n),r.rewards),feeShareBp:$("u64",r.fee_share_bp),canDeposit:$("bool",r.can_deposit),canWithdraw:$("bool",r.can_withdraw),decimals:$("u8",r.decimals),balance:$(we.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Di(r.type))throw new Error("not a Pool type");return It(r,[n]),i.reified(n).new({id:j(Ke.reified(),r.fields.id),state:j(gn.reified(n),r.fields.state),rewards:j(pn.reified(n),r.fields.rewards),feeShareBp:j("u64",r.fields.fee_share_bp),canDeposit:j("bool",r.fields.can_deposit),canWithdraw:j("bool",r.fields.can_withdraw),decimals:j("u8",r.fields.decimals),balance:j(we.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:G(Ke.reified(),r.id),state:G(gn.reified(n),r.state),rewards:G(pn.reified(n),r.rewards),feeShareBp:G("u64",r.feeShareBp),canDeposit:G("bool",r.canDeposit),canWithdraw:G("bool",r.canWithdraw),decimals:G("u8",r.decimals),balance:G(we.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Di(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"||!Di(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!Di(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};ge();var Cs=Ae(Ht());pe();function Wi(i){return i=M(i),i.startsWith(`${Cs.PKG_V1}::user_deposit::UserDeposit<`)}var Ei=class i{__StructClass=!0;static get $typeName(){return`${Cs.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:$(Ke.reified(),r.id),lpAmount:$("u64",r.lp_amount),rewardDebt:$("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:j(Ke.reified(),r.fields.id),lpAmount:j("u64",r.fields.lp_amount),rewardDebt:j("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:G(Ke.reified(),r.id),lpAmount:G("u64",r.lpAmount),rewardDebt:G("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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 Rc(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 Bc(r,a,c,i);o+=BigInt(u.balance),c.push(u)}return o>=s?Bc(r,a,c,i):[]}function Bc(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 cm="0x0000000000000000000000000000000000000000000000000000000000000000";async function kc(i,n,r){let a=await i.devInspectTransactionBlock({sender:cm,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():Br(r).parse(Uint8Array.from(o))}var Ui=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,jn.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 vt(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:Ei.phantom(oe(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=48,o=new Ct;uc(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await kc(this.client,o,Ni.reified(oe(r.originTokenAddress))),u=c.state.tokenBalance,A=c.state.vusdBalance,m=Pe({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,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=await vt(p=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:p}));if(s.length===0||!s[0])throw new yt("No coins to deposit");let o=s[0],c=new Ct;c.setSender(r.accountAddress);let{depositObj:u,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=Rc([r.amount],s,c);if(!m)throw new yt("No coins to deposit");if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let d=sc(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=oe(a).phantomType;return{depositObj:Ac(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new w("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=oe(r.token.originTokenAddress).phantomType,o=new Ct;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(u)throw new yt("No deposit found");let A=oc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await vt(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,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=oe(r.token.originTokenAddress).phantomType,o=new Ct;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(u)throw new yt("No deposit found");let A=cc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await vt(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 Or=require("web3"),Mc=require("web3-eth-abi");var xr=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=or(s.poolAddress),c=or(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 Or.Web3.utils.toBigInt(T.result).toString()};return new Ie({lpAmount:Or.Web3.utils.toBigInt(d(2)).toString(),rewardDebt:Or.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=or(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(P=>P.id===T);if(!b||!b.result)throw new Error(`Missing or invalid result for id ${T}`);return Or.Web3.utils.toBigInt(b.result).toString()},m=A(3),d=A(4),p=Pe({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=Pe({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(kr.abi,r)}getFunctionAbi(r,...a){let s=kr.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,Mc.encodeFunctionCall)(s,a)}};var ji=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){U(n),_("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:u,dValue:A}=s,m=Cc(n,u,A,c,o);return O(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){U(n),_("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=Ic(n),u=We(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",d=(0,Oc.Big)(u).plus(m).toFixed();return O(d,a.decimals).toFixed()}async getUserBalanceInfo(n,r,a){return Wn(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 Wn(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 Wn(i,n,r,a,s){switch(E.getChainProperty(i).chainType){case"EVM":{if(s)return new Mr(s,n);{let o=r.getNodeRpcUrl(i),c=new Gn.Web3(o);return c.defaultReturnFormat={number:Gn.FMT_NUMBER.STR,bytes:Gn.FMT_BYTES.HEX},new Mr(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new xr(s,n,c);{let u=new xc.TronWeb({fullHost:o});return new xr(u,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new Ri(o,n)}case"SRB":return new Mi(r,a,n);case"SUI":return new Ui(r.getNodeRpcUrl(i),n)}}var Dc=require("tronweb"),Vn=require("web3");var um={abi:[{inputs:[{internalType:"string",name:"tokenName_",type:"string"},{internalType:"string",name:"tokenSymbol_",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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"lpAmount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"token",type:"address"}],name:"DepositedRewards",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[4]",name:"values",type:"uint256[4]"}],name:"MultiTransfer",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:"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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"NUM_TOKENS",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:"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"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"minVirtualAmount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getEstimatedAmountOnDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getRewardsAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"virtualAmount",type:"uint256"}],name:"getWithdrawProportionAmount",outputs:[{internalType:"uint256[4]",name:"",type:"uint256[4]"}],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:"uint256",name:"",type:"uint256"}],name:"pools",outputs:[{internalType:"contract IPool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"contract IPool",name:"pool",type:"address"}],name:"setPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subDepositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subTotalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransfer",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"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"virtualAmount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],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:"uint256",name:"virtualAmount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Gi=um;var fn=class{};var Fr=class extends fn{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";async balanceOf(r){let a=(await this.getYieldContract(r.token.yieldAddress).methods.balanceOf(r.owner).call()).toString();return O(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=x(r.amount,r.token.decimals).toFixed(),s=(await this.getYieldContract(r.token.yieldAddress).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return O(s,3).toFixed()}async getWithdrawProportionAmount(r){let a=x(r.amount,3).toFixed();return await this.getYieldContract(r.cydToken.yieldAddress).methods.getWithdrawProportionAmount(r.owner,a).call()}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.deposit(r.amount,r.token.yieldId,r.minVirtualAmount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.withdraw(r.amount).encodeABI()})}buildTxParams(r){return{from:r.owner,to:r.yieldAddress,value:"0"}}getYieldContract(r){return new this.web3.eth.Contract(Gi.abi,r)}};var _i=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){return this.tokenService.buildRawTransactionApprove({...n,spender:n.token.yieldAddress},r)}async deposit(n,r){return U(n.amount),_("amount",n.amount,n.token.decimals),U(n.minVirtualAmount),_("minVirtualAmount",n.minVirtualAmount,3),n.amount=x(n.amount,n.token.decimals).toFixed(),n.minVirtualAmount=x(n.minVirtualAmount,3).toFixed(),_n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return U(n.amount),_("amount",n.amount,3),n.amount=x(n.amount,3).toFixed(),_n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).buildRawTransactionWithdraw(n)}};var Dr=class extends fn{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async balanceOf(r){let a=(await(await this.getContract(r.token.yieldAddress)).methods.balanceOf(r.owner).call()).toString();return O(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=x(r.amount,r.token.decimals).toFixed(),s=(await(await this.getContract(r.token.yieldAddress)).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return O(s,3).toFixed()}async getWithdrawProportionAmount(r){let a=x(r.amount,3).toFixed();return(await(await this.getContract(r.cydToken.yieldAddress)).methods.getWithdrawProportionAmount(r.owner,a).call()).toString().split(",")}async buildRawTransactionDeposit(r){let{amount:a,owner:s,token:o,minVirtualAmount:c}=r,u=[{type:"uint256",value:a},{type:"uint256",value:o.yieldId},{type:"uint256",value:c}];return this.buildRawTransaction(r.token.yieldAddress,"deposit(uint256,uint256,uint256)",u,"0",s)}async buildRawTransactionWithdraw(r){let{amount:a,owner:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.yieldAddress,"withdraw(uint256)",o,"0",s)}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(Gi.abi,r)}};function Fc(i){if(!Nr(i))throw new nr("Token does not support Yield")}function Nr(i){return!!i.yieldAddress&&i.yieldId!==void 0}var Vi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new _i(n,r,a,s)}rawTxBuilder;async getCYDTokens(){let n=[],r=await this.api.getChainDetailsMap("pool");return Object.values(r).forEach(a=>{if(a.yieldAddress){let s=a.tokens.find(c=>c.tokenAddress===a.yieldAddress),o=a.tokens.filter(Nr);if(o.length>0){let c=s??{allbridgeChainId:a.allbridgeChainId,apr:"",apr30d:"",apr7d:"",bridgeAddress:a.bridgeAddress,chainId:a.chainId,chainName:a.name,chainSymbol:a.chainSymbol,chainType:a.chainType,confirmations:a.confirmations,decimals:3,feeShare:"",lpRate:"",name:"Core Yield",poolAddress:"",symbol:"CYD",tokenAddress:a.yieldAddress,transferTime:{},txCostAmount:{maxAmount:"0",swap:"0",transfer:"0"},yieldAddress:a.yieldAddress};n.push({...c,yieldAddress:a.yieldAddress,tokens:o})}}}),n}async getAllowance(n,r){return await this.tokenService.getAllowance({...n,spender:n.token.yieldAddress},r)}async checkAllowance(n,r){return this.tokenService.checkAllowance({...n,spender:n.token.yieldAddress},r)}async balanceOf(n,r){return _n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).balanceOf(n)}async getEstimatedAmountOnDeposit(n,r){return U(n.amount),_("amount",n.amount,n.token.decimals),_n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.token.yieldAddress,r).getEstimatedAmountOnDeposit(n)}async getWithdrawAmounts(n,r){U(n.amount),_("amount",n.amount,3);let a=await _n(n.cydToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).getWithdrawProportionAmount(n);return n.cydToken.tokens.filter(s=>a[s.yieldId]!==void 0).map(s=>({amount:O(a[s.yieldId],s.decimals).toFixed(),token:s}))}};function _n(i,n,r,a,s){switch(E.getChainProperty(i).chainType){case"EVM":{if(s)return new Fr(s,n);{let o=r.getNodeRpcUrl(i),c=new Vn.Web3(o);return c.defaultReturnFormat={number:Vn.FMT_NUMBER.STR,bytes:Vn.FMT_BYTES.HEX},new Fr(c,n)}}case"TRX":{if(s)return new Dr(s,n);{let o=r.getNodeRpcUrl(i),c=new Dc.TronWeb({fullHost:o});return c.setAddress(a),new Dr(c,n)}}case"SOLANA":throw new ie;case"SRB":throw new ie;case"SUI":throw new ie}}var ce=require("big.js");function Ec(i,n,r){let a=Am(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=mm(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Uc(i,n,r){let a=dm(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=lm(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Am(i,{feeShare:n,decimals:r},a){let s=(0,ce.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Nc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Nc(tn(s,r),a)}}function Nc(i,n){if(i.eq(0))return"0";let r=(0,ce.Big)(n.tokenBalance).plus(i),a=bt(r.toFixed(),n.aValue,n.dValue);return(0,ce.Big)(n.vUsdBalance).minus(a).round().toFixed()}function mm(i,{feeShare:n,decimals:r},a){if((0,ce.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,ce.Big)(i).plus(a.vUsdBalance),c=bt(o,a.aValue,a.dValue),u=We((0,ce.Big)(a.tokenBalance).minus(c),r),A=(0,ce.Big)(u).times(n),m=(0,ce.Big)(u).minus(A).round();return{bridgeFeeInTokenPrecision:A.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:u.toFixed()}}function dm(i,{feeShare:n,decimals:r},a){let s=(0,ce.Big)(n).div((0,ce.Big)(1).minus(n)),o=(0,ce.Big)(i).times(s),c=(0,ce.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Wc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Wc(tn(i,r),a)}}function Wc(i,n){let r=(0,ce.Big)(n.tokenBalance).minus(i),a=bt(r.toFixed(),n.aValue,n.dValue);return(0,ce.Big)(a).minus(n.vUsdBalance).round().toFixed()}function lm(i,{feeShare:n,decimals:r},a){if((0,ce.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,ce.Big)(a.vUsdBalance).minus(i),o=bt(s.toFixed(),a.aValue,a.dValue),c=(0,ce.Big)(o).minus(a.tokenBalance),u=We(c.toFixed(),r),A=(0,ce.Big)(n).div((0,ce.Big)(1).minus(n)),m=(0,ce.Big)(u).times(A),d=(0,ce.Big)(u).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:d.round().toFixed(),amountExcludingCommissionInTokenPrecision:u.toFixed()}}var _t=require("big.js");function jc(i,n,r,a,s){let o=Tt(i,n,r),c=We(o,n.decimals),u=sr(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:O(A,n.decimals).neg().round(n.decimals,_t.Big.roundUp).toFixed(),swap:O((0,_t.Big)(i).minus(c).minus(A),n.decimals).neg().round(n.decimals,_t.Big.roundUp).toFixed()},destLPSwap:{fee:O(m,a.decimals).neg().round(a.decimals,_t.Big.roundUp).toFixed(),swap:O(We(o,a.decimals).minus(u).minus(m),a.decimals).neg().round(a.decimals,_t.Big.roundUp).toFixed()}}}var Jc=Ae(require("axios"));var Gc="3.27.0";function _c(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=hm(a,s);return o&&(n[a]=o),n},{})}function Vc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=$n({chainSymbol:s,poolAddress:o.poolAddress}),u=Pe(o.poolInfo);n[c]={...o.poolInfo,imbalance:u}}}return n}function pm(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function gm(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function fm(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=ym(a),n),{})}function ym(i){return Object.entries(i).reduce((n,[r,a])=>{let s=gm(r);return s&&a!=null&&(n[s]=a),n},{})}function hm(i,n){let r=E.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,oftBridgeAddress:n.oftBridgeAddress,yieldAddress:n.yieldAddress,transferTime:fm(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>pm(a,s))}}function $n(i){return i.chainSymbol+"_"+i.poolAddress}function $c(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 Zc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=Pe(c),n[$n({chainSymbol:s,poolAddress:o})]=c}return n}var Zn=class{api;constructor(n){this.api=Jc.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Gc},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:_c(n),poolInfoMap:Vc(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 Qn("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 Zc(a)}};var Is=20*1e3,Tm=55*1e3,Jn=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new jt({defaultTtl:Tm}),this.receivedTransactionCache=new jt({defaultTtl:Is}),this.pendingInfoCache=new jt({defaultTtl:Is}),this.gasBalanceCache=new jt({defaultTtl:Is})}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 Yn=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 Ln=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:Yc(o.tokens,n,this.isStaging)})}return a}async tokens(n){return Yc(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 Yc(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(bm)}function bm(i){let{flags:n,...r}=i;return r}var Sm=55*1e3,Xn=class{constructor(n){this.client=n;this.poolInfoCache=new vs}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[$n(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($c(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put($n(n),r)}},vs=class{cache;constructor(){this.cache=new jt({defaultTtl:Sm})}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=$n(n);return this.cache.get(r)}};var Xc=require("big.js"),Kc=require("tronweb"),Hc=require("web3");var wm={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"}]},$i=wm;var Bs=require("big.js"),$e=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,Bs.Big)(r).gte((0,Bs.Big)(n.amount))}};var Pm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Cm="0xdac17f958d2ee523a2206206994597c13d831ec7",Im=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()===Cm}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=this.getERC20Contract(a).methods.approve(s,c==null?Pm:Ci(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=Im: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($i.abi,r)}};var Lc=require("@project-serum/anchor"),yn=require("@solana/web3.js");var Zi=class extends $e{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ie}buildRawTransactionApprove(r){throw new ie}buildAnchorProvider(r){let a=new yn.Connection(this.solanaRpcUrl,"confirmed"),s=new yn.PublicKey(r);return new Lc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ie}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await qe(new yn.PublicKey(a),new yn.PublicKey(s.tokenAddress));return(await Cn(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 yn.PublicKey(r.account))).toString()}};var Rs=require("@stellar/stellar-sdk");var Ji=class extends $e{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ie}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new Rs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof Rs.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?x(A.balance,E.getChainDecimalsByType(E.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new Rs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(u=>u.asset_type==="native");return c?.balance?x(c.balance,E.getChainDecimalsByType(E.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ie}buildRawTransactionApprove(){throw new ie}};var Yi=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 ie}buildRawTransactionApprove(r){throw new ie}getAllowance(r){throw new ie}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 vt(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 vm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Er=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 Ii(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=c==null?vm:Ci(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($i.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 Kn=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 O(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return U(n.amount),_("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&&(U(r.amount),_("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&&(U(n.amount),_("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?O(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:O(a,E.getChainDecimalsByType(E.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch(E.getChainProperty(n).chainType){case"EVM":{if(a)return new Wr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Wr(new Hc.Web3(s),this.api)}}case"TRX":{if(a)return new Er(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Kc.TronWeb({fullHost:s});return o.setAddress(r),new Er(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Zi(s,this.api)}case"SRB":return new Ji(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Yi(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:x(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,Xc.Big)(n.amount).toFixed()}}};var Li=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r;let a=new Zn(r),s=new Jn(a),o=new Yn(s),c=new Xn(o);this.api=new Ln(c,r),this.tokenService=new Kn(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 Hn=require("@solana/web3.js");var Xi=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 Hn.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=Hn.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 Hn.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var ee=require("@stellar/stellar-sdk");var mB=require("@stellar/stellar-sdk"),Bm=mB.contract.Spec,Rm=mB.contract.Client;var Ur=class extends Rm{constructor(r){super(new Bm(["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 km=100,Mm=180,Ki=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new ee.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=await this.getContract(Ur,n.tokenAddress).name();if(Un(o))throw new w;let c=En(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 ee.Asset(u,A),d=ee.Operation.changeTrust({asset:m,limit:n.limit});return new ee.TransactionBuilder(a,{fee:km.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(d).setTimeout(Mm).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(Ur,r).name();if(Un(s))throw new w;let o=En(s);if(!o)throw new w;let[c,u]=o.split(":"),A=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ee.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 ee.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=ee.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new ee.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=ee.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(ee.rpc.Api.isSimulationRestore(c))return new ee.TransactionBuilder(s,{fee:(+ee.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(ee.Operation.restoreFootprint({})).setTimeout(ee.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new ee.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=ee.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new ee.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await xs(()=>a.getTransaction(n),c=>c.status===ee.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 Hi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.api=r}_suiBridgeService;async buildSendTxFromCustomTx(n,r,a){return this.suiBridgeService.buildRawTransactionSendFromCustomTx(n,r,a)}get suiBridgeService(){return this._suiBridgeService||(this._suiBridgeService=new Nn(this.nodeRpcUrlsConfig,this.api)),this._suiBridgeService}};var zi=class{constructor(n){this.service=n;this.srb=new Ki(n.nodeRpcUrlsConfig,n.params),this.sol=new Xi(n.nodeRpcUrlsConfig,n.params),this.sui=new Hi(n.nodeRpcUrlsConfig,n.api),this.evm=new Li(n.nodeRpcUrlsConfig,n.params)}srb;sol;sui;evm};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),cr=(r=>(r.INT="int",r.FLOAT="float",r))(cr||{});var me=require("big.js");var jr=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new tr(n)}},Qi=class{constructor(n,r=zn){this.nodeRpcUrlsConfig=n;E.addChainsProperties(r.additionalChainsProperties);let a=new Zn(r),s=new Jn(a),o=new Yn(s),c=new Xn(o);this.api=new Ln(c,r),this.tokenService=new Kn(this.api,n,r),this.bridge=new vi(this.api,n,r,this.tokenService),this.pool=new ji(this.api,n,r,this.tokenService),this.yield=new Vi(this.api,n,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;yield;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){U(n);let o;r=="float"?(_("amount",n,a.decimals),o=x(n,a.decimals).toFixed()):o=n;let c=Tt(o,a,await de(this.api,a)),u=await de(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=Js(m.totalSentAmount,u),T=this.getAmountFromVUsdFormatted(c,s,p),b;return(0,me.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:O(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){U(n),_("amountFloat",n,r.decimals);let a=x(n,r.decimals);if(a.eq(0))return 0;let s=Tt(a,r,await de(this.api,r)),o=We(s,r.decimals);return aa(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){U(n),_("amountFloat",n,r.decimals);let s=x(n,r.decimals);if(s.eq(0))return 0;let o=Tt(s,r,await de(this.api,r)),c=sr(o,a,await de(this.api,a)),u=We(o,a.decimals);return aa(u,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return U(n),_("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,me.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 U(n),_("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,me.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 de(this.api,r),async()=>await de(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){U(n),_("amountToSendFloat",n,r.decimals);let c=x(n,r.decimals),u=Tt(c,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}getAmountToBeReceivedComputeCctp(n,r,a,s){U(n),_("amountToSendFloat",n,r.decimals);let o=x(n,r.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new fe("Such route does not support CCTP protocol");let c=o.mul((0,me.Big)(1).minus(r.cctpFeeShare)).round(0,me.Big.roundUp),u=Je(c,r.decimals,a.decimals).round(0);return O(u,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new fe("Such route does not support CCTP V2 protocol");let c=o.mul((0,me.Big)(1).minus(r.cctpV2FeeShare)).round(0,me.Big.roundUp),u=Je(c,r.decimals,a.decimals).round(0);return O(u,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(n,r,a){U(n),_("amountToSendFloat",n,r.decimals);let s=x(n,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new ye("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 ye("Such route does not support OFT protocol");let c=s.mul((0,me.Big)(1).minus(o)).round(0,me.Big.roundUp),u=Je(c,r.decimals,a.decimals).round(0);return O(u,a.decimals).toFixed()}async getAmountToSend(n,r,a,s){return this.getAmountToSendCompute(n,r,a,s,()=>de(this.api,r),()=>de(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){U(n),_("amountToBeReceivedFloat",n,a.decimals);let c=x(n,a.decimals),u=Ls(c,a,o),A=Ys(u,r,s);if((0,me.Big)(A).lte(0))throw new ht;return O(A,r.decimals).toFixed()}getAmountToSendComputeCctp(n,r,a,s){U(n),_("amountToBeReceivedFloat",n,a.decimals);let o=x(n,a.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new fe("Such route does not support CCTP protocol");let c=o.div((0,me.Big)(1).minus(r.cctpFeeShare)).round(0,me.Big.roundDown),u=Je(c,a.decimals,r.decimals).round(0);return O(u,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new fe("Such route does not support CCTP V2 protocol");let c=o.div((0,me.Big)(1).minus(r.cctpV2FeeShare)).round(0,me.Big.roundDown),u=Je(c,a.decimals,r.decimals).round(0);return O(u,r.decimals).toFixed()}}}async getAmountToSendComputeOft(n,r,a){U(n),_("amountToBeReceivedFloat",n,a.decimals);let s=x(n,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new ye("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 ye("Such route does not support OFT protocol");let c=s.div((0,me.Big)(1).minus(o)).round(0,me.Big.roundDown),u=Je(c,a.decimals,r.decimals).round(0);return O(u,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return ca(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 Ks(n)}async getExtraGasMaxLimits(n,r,a){return await ua(n,r,a,this.api)}async getVUsdFromAmount(n,r,a){U(n);let s;r=="float"?(_("amount",n,a.decimals),s=x(n,a.decimals).toFixed()):s=n;let o=Tt(s,a,await de(this.api,a));return{int:o,float:O(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await de(this.api,r))}getAmountFromVUsdFormatted(n,r,a){U(n);let s=sr(n,r,a);if((0,me.Big)(s).lt(0))throw new ht;return{int:s,float:O(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return Ec(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await de(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await de(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Uc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await de(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await de(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,me.Big)(o).lt(0))throw new ht;return s}async getSendAmountDetails(n,r,a,s){U(n);let o;return r=="float"?(_("amount",n,a.decimals),o=x(n,a.decimals).toFixed()):o=n,jc(o,a,await de(this.api,a),s,await de(this.api,s))}};function Om(i){return"solanaRpcUrl"in i}var ks=class{params;bridge;pool;yield;utils;service;constructor(n,r=zn){let a;Om(n)?a=new jr({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new jr(n),this.service=new Qi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.yield=this.service.yield,this.utils=new zi(this.service),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,YieldDoesNotSupportedError,assertYieldIsSupported,isYieldSupported,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
1
+ "use strict";var Qc=Object.create;var _r=Object.defineProperty;var qc=Object.getOwnPropertyDescriptor;var eu=Object.getOwnPropertyNames;var tu=Object.getPrototypeOf,nu=Object.prototype.hasOwnProperty;var hn=(i,n)=>()=>(i&&(n=i(i=0)),n);var qi=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),ru=(i,n)=>{for(var r in n)_r(i,r,{get:n[r],enumerable:!0})},Ms=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of eu(n))!nu.call(i,s)&&s!==r&&_r(i,s,{get:()=>n[s],enumerable:!(a=qc(n,s))||a.enumerable});return i};var Ae=(i,n,r)=>(r=i!=null?Qc(tu(i)):{},Ms(n||!i||!i.__esModule?_r(r,"default",{value:i,enumerable:!0}):r,i)),iu=i=>Ms(_r({},"__esModule",{value:!0}),i);function ui(i){try{return(0,ci.fromBase58)(i).length===Iu}catch{return!1}}function je(i){return Bu(i)&&Ru(i)===hr}function Mn(i){return je(i)}function vu(i){return i.includes("::")?Ta(i):i}function Ta(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,ci.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>vu(c.trim())):[];return{address:N(n),module:r,name:s,typeParams:o}}function Tr(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?Ta(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:Tr(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function N(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(hr*2,"0")}`}function Re(i,n=!1){return N(i,n)}function Bu(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function Ru(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var ci,Iu,hr,ke=hn(()=>{ci=require("@mysten/bcs"),Iu=32;hr=32});var Po,ku,Mu,Ot,ba=hn(()=>{Po=require("@mysten/bcs");ke();ku=/^vector<(.+)>$/,Mu=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,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(ku);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(Mu);if(s)return{struct:{address:r?N(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,Po.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 Ou(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function xu(i){return f.bcs.enum("Option",{None:null,Some:i})}function Ua(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ea,value:i})}var f,te,Ge,Me,Sa,wa,Pa,Ca,Ai,rt,Ia,va,Ba,Ra,ka,Ma,Oa,xa,Fa,Da,Na,Wa,Ea,ja,Ga,_a,Va,Co,Fu,$a,Io,vo,Za=hn(()=>{f=require("@mysten/bcs");ke();ba();te=f.bcs.bytes(hr).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!je(N(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(N(i)):i,output:i=>N((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:te,version:f.bcs.u64(),digest:Ge}),Sa=f.bcs.struct("SharedObjectRef",{objectId:te,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),wa=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Me,SharedObject:Sa,Receiving:Me}),Pa=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:wa}),Ca=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>Ca),struct:f.bcs.lazy(()=>Ma),u16:null,u32:null,u256:null}),Ai=Ca.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()])}),Ia=f.bcs.struct("ProgrammableMoveCall",{package:te,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(Ai),arguments:f.bcs.vector(rt)}),va=f.bcs.enum("Command",{MoveCall:Ia,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(te)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:xu(Ai).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(te),package:te,ticket:rt})}),Ba=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(Pa),commands:f.bcs.vector(va)}),Ra=f.bcs.enum("TransactionKind",{ProgrammableTransaction:Ba,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),ka=f.bcs.enum("TransactionExpiration",{None:null,Epoch:Ou()}),Ma=f.bcs.struct("StructTag",{address:te,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(Ca)}),Oa=f.bcs.struct("GasData",{payment:f.bcs.vector(Me),owner:te,price:f.bcs.u64(),budget:f.bcs.u64()}),xa=f.bcs.struct("TransactionDataV1",{kind:Ra,sender:te,gasData:Oa,expiration:ka}),Fa=f.bcs.enum("TransactionData",{V1:xa}),Da=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Na=f.bcs.enum("IntentVersion",{V0:null}),Wa=f.bcs.enum("AppId",{Sui:null}),Ea=f.bcs.struct("Intent",{scope:Da,version:Na,appId:Wa});ja=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())}),Ga=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())}),_a=f.bcs.struct("MultiSigPkMap",{pubKey:Ga,weight:f.bcs.u8()}),Va=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(_a),threshold:f.bcs.u16()}),Co=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(ja),bitmap:f.bcs.u16(),multisig_pk:Va}),Fu=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))}),$a=f.bcs.struct("SenderSignedTransaction",{intentMessage:Ua(Fa),txSignatures:f.bcs.vector(Fu)}),Io=f.bcs.vector($a,{name:"SenderSignedData"}),vo=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,Du,Nu,Bo,Wu,Eu,Uu,Ro,ko,On,ju,Ja,Gu,_u,Vu,$u,Zu,Ju,Mo,Oo=hn(()=>{y=require("@mysten/bcs");Za();Du=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:te}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:te}),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:te,ticketId:te})}),Nu=y.bcs.struct("ModuleId",{address:te,name:y.bcs.string()}),Bo=y.bcs.struct("MoveLocation",{module:Nu,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),Wu=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}),Eu=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),Uu=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:te}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(Bo),MoveAbort:y.bcs.tuple([Bo,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:Wu}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:Eu}),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:Du}),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(te)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:te,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),Ro=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:Uu,command:y.bcs.option(y.bcs.u64())})}),ko=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),On=y.bcs.enum("Owner",{AddressOwner:te,ObjectOwner:te,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),ju=y.bcs.struct("TransactionEffectsV1",{status:Ro,executedEpoch:y.bcs.u64(),gasUsed:ko,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([te,y.bcs.u64()])),sharedObjects:y.bcs.vector(Me),transactionDigest:Ge,created:y.bcs.vector(y.bcs.tuple([Me,On])),mutated:y.bcs.vector(y.bcs.tuple([Me,On])),unwrapped:y.bcs.vector(y.bcs.tuple([Me,On])),deleted:y.bcs.vector(Me),unwrappedThenDeleted:y.bcs.vector(Me),wrapped:y.bcs.vector(Me),gasObject:y.bcs.tuple([Me,On]),eventsDigest:y.bcs.option(Ge),dependencies:y.bcs.vector(Ge)}),Ja=y.bcs.tuple([y.bcs.u64(),Ge]),Gu=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Ja,On])}),_u=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([Ge,On]),PackageWrite:Ja}),Vu=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),$u=y.bcs.struct("EffectsObjectChange",{inputState:Gu,outputState:_u,idOperation:Vu}),Zu=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Ja,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),Ju=y.bcs.struct("TransactionEffectsV2",{status:Ro,executedEpoch:y.bcs.u64(),gasUsed:ko,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([te,$u])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([te,Zu])),auxDataDigest:y.bcs.option(Ge)}),Mo=y.bcs.enum("TransactionEffects",{V1:ju,V2:Ju})});var it,Yu,h,pe=hn(()=>{it=require("@mysten/bcs");Za();Oo();ba();Yu=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:te,AppId:Wa,Argument:rt,CallArg:Pa,CompressedSignature:ja,GasData:Oa,Intent:Ea,IntentMessage:Ua,IntentScope:Da,IntentVersion:Na,MultiSig:Co,MultiSigPkMap:_a,MultiSigPublicKey:Va,ObjectArg:wa,ObjectDigest:Ge,ProgrammableMoveCall:Ia,ProgrammableTransaction:Ba,PublicKey:Ga,SenderSignedData:Io,SenderSignedTransaction:$a,SharedObjectRef:Sa,StructTag:Ma,SuiObjectRef:Me,Command:va,TransactionData:Fa,TransactionDataV1:xa,TransactionExpiration:ka,TransactionKind:Ra,TypeTag:Ai,TransactionEffects:Mo,PasskeyAuthenticator:vo}});function zA(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=zA(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function rc(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function F(i,n){return rc(n)?n:i.object(n)}function Xe(i,n,r){if(rc(n))return F(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:[Xe(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 QA(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 M(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<${M(r[0])}>`;default:{let a=n.split("::");a[0]=QA(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>M(o)).join(",")}>`:s}}}function L(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var ge=hn(()=>{"use strict";pe()});var Ht=qi((Kg,ic)=>{"use strict";ge();var cs=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return M(i.$PACKAGE_ID)}get PUBLISHED_AT(){return M(i.$PUBLISHED_AT)}get PKG_V1(){return M(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}},qA=new cs;ic.exports=qA});var ds=qi((qg,mc)=>{"use strict";ge();var ms=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return M(i.$PACKAGE_ID)}get PUBLISHED_AT(){return M(i.$PUBLISHED_AT)}get PKG_V1(){return M(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}},em=new ms;mc.exports=em});var gs=qi((rf,lc)=>{"use strict";ge();var ps=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return M(i.$PACKAGE_ID)}get PUBLISHED_AT(){return M(i.$PUBLISHED_AT)}get PKG_V1(){return M(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}},tm=new ps;lc.exports=tm});var xm={};ru(xm,{AddressStatus:()=>Vr,AllbridgeCoreSdk:()=>ks,AmountFormat:()=>cr,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>er,CCTPDoesNotSupportedError:()=>fe,ChainSymbol:()=>De,ChainType:()=>Q,ErrorCode:()=>Os,ExtraGasMaxLimitExceededError:()=>qn,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>ht,InvalidAmountError:()=>yt,InvalidGasFeePaymentOptionError:()=>Tn,InvalidMessengerOptionError:()=>Qn,InvalidTxError:()=>qt,JupiterError:()=>le,Messenger:()=>Ne,MethodNotSupportedError:()=>ie,NodeRpcUrlNotInitializedError:()=>tr,OFTDoesNotSupportedError:()=>ye,SdkError:()=>w,SdkRootError:()=>re,SolanaAutoTxFee:()=>zr,TimeoutError:()=>Sn,TxTooLargeError:()=>rr,VerifyTxError:()=>bn,YieldDoesNotSupportedError:()=>nr,assertYieldIsSupported:()=>Fc,isYieldSupported:()=>Nr,mainnet:()=>zn,nodeRpcUrlsDefault:()=>su,nodeUrlsDefault:()=>au});module.exports=iu(xm);var zn={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},au={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},su={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 Sc=require("tronweb"),wc=require("web3");var re=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},w=class extends re{constructor(n){super("SdkError",n)}},yt=class extends re{constructor(n){super("InvalidAmountError",n)}},Qt=class extends re{constructor(n){super("AmountNotEnoughError",n)}},ht=class extends re{constructor(n){super("InsufficientPoolLiquidityError",n)}},le=class extends re{constructor(n){super("JupiterError",n)}},Tn=class extends re{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},Qn=class extends re{constructor(n){super("InvalidMessengerOptionError",n)}},ie=class extends re{constructor(n){super("MethodNotSupportedError",n)}},bn=class extends re{constructor(n){super("VerifyTxError",n)}},qt=class extends re{constructor(n){super("InvalidTxError",n)}},qn=class extends re{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},er=class extends re{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},Sn=class extends re{constructor(n){super("TimeoutError",n)}},tr=class extends re{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},fe=class extends re{constructor(n){super("CCTPDoesNotSupportedError",n)}},ye=class extends re{constructor(n){super("OFTDoesNotSupportedError",n)}},nr=class extends re{constructor(n){super("YieldDoesNotSupportedError",n)}},rr=class extends re{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Os=(v=>(v.SDK_ERROR="SdkError",v.INVALID_AMOUNT_ERROR="InvalidAmountError",v.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",v.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",v.JUPITER_ERROR="JupiterError",v.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",v.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",v.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",v.VERIFY_TX_ERROR="VerifyTxError",v.INVALID_TX_ERROR="InvalidTxError",v.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",v.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",v.TIMEOUT_ERROR="TimeoutError",v.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",v.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",v.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",v.YIELD_DOES_NOT_SUPPORTED_ERROR="YieldDoesNotSupportedError",v.TX_TOO_LARGE="TxTooLargeError",v))(Os||{});var De=(I=>(I.BSC="BSC",I.ETH="ETH",I.BAS="BAS",I.SOL="SOL",I.TRX="TRX",I.POL="POL",I.ARB="ARB",I.CEL="CEL",I.AVA="AVA",I.SRB="SRB",I.STLR="STLR",I.OPT="OPT",I.SUI="SUI",I.SNC="SNC",I.UNI="UNI",I.LIN="LIN",I))(De||{}),Q=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(Q||{});var ou={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},cu={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"},UNI:{chainSymbol:"UNI",chainId:"0x82",name:"Unichain",chainType:"EVM"},LIN:{chainSymbol:"LIN",chainId:"0xe708",name:"Linea",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"}},E=(()=>{let i={...cu};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 ou[n]}}})();var Vr=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(Vr||{});var 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 ea=require("big.js");async function de(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function U(i){if((0,ea.Big)(i).lte(0))throw new yt("Amount must be greater than zero")}function _(i,n,r){let a=(0,ea.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new er(i,o.length,r)}async function $r(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new Sn(n)),r)})])}async function ta(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 $r(i(),n,a)}catch{if(++s>=r)throw new Sn(n)}}async function xs(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 no=require("big.js");var uu={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"}]},Fs=uu;var Au={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Ds=Au;var mu={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"}]},Ns=mu;var Lr=Ae(require("@project-serum/anchor")),Aa=require("@solana/web3.js");var he=Ae(require("@project-serum/anchor")),Te=require("@solana/web3.js");async function qe(i,n){return he.utils.token.associatedAddress({mint:n,owner:i})}async function Vt(i){let[n]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("config")],i);return n}async function Ws(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function ir(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function wn(i){let n=await Vt(i),[r]=await Te.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function Es(i,n){let[r]=await Te.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function Pn(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function Us(i,n,r){let[a]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function na(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function ra(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function js(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function ia(i,n,r){let[a]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Gs(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function _s(i,n){let[r]=await Te.PublicKey.findProgramAddress([he.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Vs(i,n){let[r]=Te.PublicKey.findProgramAddressSync([he.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function $s(i,n,r,a){let s=en("message_transmitter",r),o=en("token_messenger",a),c=en("__event_authority",a),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(he.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(he.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 Te.PublicKey.findProgramAddressSync(a,n)[0]}var Zs=require("@project-serum/anchor"),Zr=require("@solana/web3.js");function $t(i,n){let r=new Zr.Connection(i,"confirmed"),a=new Zr.PublicKey(n);return new Zs.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Qs=require("@solana/web3.js"),qs=require("@stellar/stellar-sdk"),Be=require("big.js"),oa=Ae(require("randombytes")),sa=require("tronweb");var B=require("big.js"),Jr=Ae(require("bn.js"));function aa(i,n){return(0,B.Big)(100).minus((0,B.Big)(100).times(n).div(i)).toNumber()}function tn(i,n){return Je(i,n,3).round(0,B.Big.roundDown)}function We(i,n){return Je(i,3,n)}function Je(i,n,r){let a=(0,B.Big)(r).minus(n).toNumber();return(0,B.Big)(i).times(ar(a))}function ar(i){return(0,B.Big)(10).pow(i)}function x(i,n){return(0,B.Big)(i).times(ar(n))}function O(i,n){let r=(0,B.Big)(i);return r.eq(0)?(0,B.Big)(0):(0,B.Big)(r).div(ar(n))}function Pe(i){return O((0,B.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Tt(i,{feeShare:n,decimals:r},a){let s=(0,B.Big)(i);if(s.lte(0))return"0";let o=s.times(n),c=s.minus(o),u=tn(c,r),A=(0,B.Big)(a.tokenBalance).plus(u),m=bt(A,a.aValue,a.dValue);return(0,B.Big)(a.vUsdBalance).minus(m).round(0,B.Big.roundDown).toFixed()}function sr(i,{feeShare:n,decimals:r},a){let s=(0,B.Big)(i);if(s.lte(0))return(0,B.Big)(0).toFixed();let o=s.plus(a.vUsdBalance),c=bt(o,a.aValue,a.dValue),u=We((0,B.Big)(a.tokenBalance).minus(c),r),A=(0,B.Big)(u).times(n);return(0,B.Big)(u).minus(A).round(0,B.Big.roundDown).toFixed()}function Js(i,n){let r=(0,B.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=bt(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function Ys(i,{feeShare:n,decimals:r},a){if((0,B.Big)(i).lte(0))return(0,B.Big)(0);let s=(0,B.Big)(a.vUsdBalance).minus(i);if(s.lte(0))throw new ht;let o=bt(s,a.aValue,a.dValue),c=(0,B.Big)(o).minus(a.tokenBalance),u=We(c,r),A=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),m=(0,B.Big)(u).times(A).round(0,B.Big.roundUp);return(0,B.Big)(u).plus(m).round(0,B.Big.roundDown)}function Ls(i,{feeShare:n,decimals:r},a){if((0,B.Big)(i).lte(0))return(0,B.Big)(0);let s=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),o=(0,B.Big)(i).times(s).round(0,B.Big.roundUp),c=(0,B.Big)(i).plus(o),u=tn(c,r),A=(0,B.Big)(a.tokenBalance).minus(u);if(A.lte(0))throw new ht;let m=bt(A,a.aValue,a.dValue);return(0,B.Big)(m).minus(a.vUsdBalance).round(0,B.Big.roundDown)}function bt(i,n,r){let a=(0,B.Big)(4).times(n).times((0,B.Big)(r).minus(i)).minus(r),s=(0,B.Big)(r).pow(3),o=a.pow(2),c=(0,B.Big)(i).times((0,B.Big)(i).times(o).plus((0,B.Big)(4).times(n).times(s))).sqrt().round(0,B.Big.roundDown),u=(0,B.Big)(8).times(n).times(i),A=a.times(i).plus(c).div(u).round(0,B.Big.roundDown);return A.eq(0)?(0,B.Big)(0):A.plus(1)}function Xs(i,n,r,a){let s=new Jr.default(i),o=new Jr.default(r),c=new Jr.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Ks(i){return(0,B.Big)(i).gt(0)?`${Number((0,B.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Hs(i,n,r){let a=(0,B.Big)(n).times(r),s=(0,B.Big)(n).plus(r),o=(0,B.Big)(8).times(i).times(a).times(s),c=a.times((0,B.Big)(16).times(i).minus(4)).div(3),u=o.times(o),A=c.times(c).times(c),m=u.plus(A),d=(0,B.Big)(m).sqrt(),p=(0,B.Big)(Math.cbrt(+o.plus(d).toFixed())),T=(0,B.Big)(Math.cbrt(+o.minus(d).toFixed()));return p.plus(T).toFixed()}function kt(i,n,r){let a;switch(n){case"EVM":{a=zs(i);break}case"SOLANA":{a=new Qs.PublicKey(i).toBuffer();break}case"TRX":{a=du(i);break}case"SRB":{a=new qs.Address(i).toBuffer();break}case"SUI":{a=zs(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 eo(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function zs(i){let r=eo(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function du(i){let n=or(i),r=eo(n);return lu(r,32)}function or(i){let n=sa.utils.crypto.decodeBase58Address(i);return n?sa.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function lu(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Yr(){return(0,oa.default)(32)}function St(){let i=(0,oa.default)(32).readBigInt64BE();return i<0?i*-1n:i}function wt(i,n){let r={},a=n.sourceToken;if(r.amount=x(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?x(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=E.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 fe("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress;break;case 4:if(!o.cctpV2Address||!n.destinationToken.cctpV2Address)throw new fe("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 ye("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=x(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:u}=n;if(!c){let p=(await ca(n.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!p)throw new Tn;c=p.int,u="int"}if(u=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=x(c,E.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=x(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:A,extraGasFormat:m}=n;if(A&&+A>0){let d=await ua(o,n.destinationToken,a.messenger,r),p,T;switch(a.gasFeePaymentMethod){case"native":p=E.getChainDecimalsByType(o.chainType),T=(0,Be.Big)(d.exchangeRate);break;case"stablecoin":p=o.decimals,T=(0,Be.Big)(d.exchangeRate).div(d.sourceNativeTokenPrice);break}switch(m??"int"){case"float":{a.extraGas=x(A,p).toFixed(0);let b=T.mul(A);a.extraGasDest=x(b,E.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,Be.Big.roundDown);break}case"int":{a.extraGas=A;let b=O(a.extraGas,E.getChainDecimalsByType(o.chainType)),P=T.mul(b);a.extraGasDest=x(P,E.getChainDecimalsByType(n.destinationToken.chainType)).toFixed(0,Be.Big.roundDown);break}}gu(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"&&pu(a.amount,o.decimals,a.fee,a.extraGas),a}function pu(i,n,r,a){let s=(0,Be.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new Qt(`Amount not enough to pay fee, ${O((0,Be.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function ca(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:O(s.fee,E.getChainDecimalsByType(i.chainType)).toFixed()},adminFeeShareWithExtras:s.adminFeeShareWithExtras};if(s.sourceNativeTokenPrice){let c=Je(new Be.Big(s.fee).mul(s.sourceNativeTokenPrice),E.getChainDecimalsByType(i.chainType),i.decimals).toFixed(0,Be.Big.roundUp);o.stablecoin={int:c,float:O(c,i.decimals).toFixed()}}return o}function gu(i,n,r){let a=r.extraGasMax[n];if(!a)throw new Tn(`Impossible to pay extra gas by '${n}' payment method`);let s=a.int;if((0,Be.Big)(i).gt(s))throw new qn(`Extra gas ${i} in int format, exceeded limit ${s} for '${n}' payment method`)}async function ua(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=O(c,E.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,Be.Big)(u).div(o.exchangeRate).toFixed(E.getChainDecimalsByType(i.chainType),Be.Big.roundDown),m=x(A,E.getChainDecimalsByType(i.chainType)).toFixed(0);if(s.native={int:m,float:A},o.sourceNativeTokenPrice){let d=(0,Be.Big)(A).mul(o.sourceNativeTokenPrice).toFixed(i.decimals,Be.Big.roundDown);s.stablecoin={int:x(d,i.decimals).toFixed(0),float:d}}return{extraGasMax:s,destinationChain:{gasAmountMax:{int:c,float:u},swap:{int:n.txCostAmount.swap,float:O(n.txCostAmount.swap,E.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:O(n.txCostAmount.transfer,E.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:o.exchangeRate,sourceNativeTokenPrice:o.sourceNativeTokenPrice}}function to(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Xr(i,n,r,a){let s,o=new Aa.PublicKey(n),c=new Aa.PublicKey(r),u=await qe(o,c),A=$t(a,n);Lr.setProvider(A);let m=await Lr.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 ur=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:P,extraGasDest:C}=a,I="0x"+Yr().toString("hex"),R,v,k=T;switch(P&&(k=(0,no.Big)(k).plus(P).toFixed()),p){case 3:case 4:{let W=await this.buildRawTransactionCctpSend(r,a,k);R=W.sendMethod,v=W.value;break}case 5:{let W=this.buildRawTransactionOftSend(r,a,k,C);R=W.sendMethod,v=W.value;break}case 1:case 2:{let W=this.getBridgeContract(o);b==="stablecoin"?(R=W.methods.swapAndBridge(u,s,m,A,d,I,p,k),v="0"):(R=W.methods.swapAndBridge(u,s,m,A,d,I,p,0),v=k)}break}return Promise.resolve({from:c,to:o,value:v,data:R.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 Xr(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(Fs.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Ds.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Ns.abi,r)}};var Kr=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 U(n.amount),_("amount",n.amount,n.sourceToken.decimals),to(n)?Hr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Hr(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var ae=require("@project-serum/anchor"),K=require("@solana/web3.js"),Ye=require("big.js");var mr={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 ro={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 io=require("@project-serum/anchor"),ao=Ae(require("big.js")),dr=require("web3");async function Cn(i,n){return await io.Spl.token(n).account.token.fetch(i)}async function so(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,ao.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 oo(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=dr.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=dr.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),p=Buffer.from(d.replace("0x",""),"hex");p[0]=a,p[1]=s;let T=dr.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=dr.Web3.utils.keccak256(Buffer.from(T.replace("0x",""),"hex")),P=Buffer.from(b.replace("0x",""),"hex");return P[0]=p[0],P[1]=p[1],P}var Ue=require("@solana/web3.js"),co=require("big.js");var ma=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new ma.AddressLookupTableAccount({key:r.accountKey,state:ma.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new w("Cannot get AccountInfo");return a.data}))})))}var zr="AUTO";async function In(i,n,r){let a=new Ue.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await Ao(i.instructions,s,n,a)}async function uo(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 rr;await Ao(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function Ao(i,n,r,a){if(n>0){let s=fu(n,i);if(r?.solana){let o=r.solana;if(o===zr)await da(i,a);else if("pricePerUnitInMicroLamports"in o)await da(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,co.Big)(o.extraFeeInLamports).div(s).mul(ar(6)).toFixed(0);await da(i,a,c)}}}}function fu(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 da(i,n,r){let a=i.findIndex(c=>c.programId.equals(Ue.ComputeBudgetProgram.programId)&&Ue.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await yu(n)),o=Ue.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function yu(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var mo=require("@solana/spl-token"),rn=require("@solana/web3.js"),vn=Ae(require("axios"));var Qr=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=${mo.NATIVE_MINT.toString()}&amount=${a}&swapMode=${p}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(T+=`&maxAccounts=${this.maxAccounts}`),o=await vn.default.get(T,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(p){throw p instanceof vn.AxiosError&&p.response&&p.response.data&&p.response.data.error?new le(p.response.data.error):new le("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new le("Cannot get inAmount");let u;try{u=await vn.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 vn.AxiosError&&p.response&&p.response.data&&p.response.data.error?new le(p.response.data.error):new le("Cannot get swap transaction")}let A;if(u?.data?.swapTransaction)A=u.data.swapTransaction;else throw new le("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 le(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new le("Some error occurred during creation final swap and bridge transaction")}}};var la=1e6,lo=1.1,qr=class extends Ee{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new Qr(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,P=A,C=m,I=d,R=s,v=p,k=new K.PublicKey(b),W=$t(this.solanaRpcUrl,k.toString()),z=new ae.Program(mr,P,W),Z=await wn(z.programId),xe=await Vt(z.programId),ue=new K.PublicKey(C),lt=await Pn(ue,z.programId),pt=new K.PublicKey(a),Rt=await qe(k,ue),He=new K.PublicKey(v),ve=new K.PublicKey(I),Ze=await Pn(ve,z.programId),ze=new K.PublicKey(R),Fe=await qe(He,ve),gt=[ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:la})];try{await Cn(Fe,W)}catch{let zc=await ae.Spl.associatedToken(W).methods.create().accounts({mint:ve,owner:He,associatedAccount:Fe}).instruction();gt.push(zc)}let ft=await z.methods.swap(new ae.BN(u),new ae.BN(T||0)).accounts({payer:k,config:xe,bridgeAuthority:Z,user:k,sendBridgeToken:lt,sendMint:ue,sendPool:pt,sendUserToken:Rt,receiveBridgeToken:Ze,receiveMint:ve,receivePool:ze,receiveUserToken:Fe}).preInstructions(gt).transaction(),Qe=W.connection;return ft.recentBlockhash=(await Qe.getLatestBlockhash()).blockhash,ft.feePayer=k,await In(ft,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(ft,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 re?d:d instanceof Error&&d.message?new le(`Some error occurred during creation Jupiter swap transaction. ${d.message}`):new le("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 ye("Messenger OFT is not supported yet.")}if(o){if(!c)throw new le("Swap tx is absent");u=await this.jupiterService.amendJupiterWithSdkTx(c,u)}return await uo(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,Ye.Big)(o):(0,Ye.Big)(r.fee);c&&(A=A.plus(c)),s||(A=A.mul(lo));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 le("Cannot get inAmount");p=(0,Ye.Big)(r.amount).minus((0,Ye.Big)(d).mul(lo)).toFixed(0)}else p=(0,Ye.Big)(r.amount).minus(A).toFixed(0);if((0,Ye.Big)(p).lte(0))throw new Qt(`Amount not enough to pay fee, ${O((0,Ye.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,Ye.Big)(a.fee).div(s).mul((0,Ye.Big)(10).pow(E.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),c;return a.extraGas&&(c=(0,Ye.Big)(a.extraGas).div(s).mul((0,Ye.Big)(10).pow(E.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 ae.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,P=c,C=A,I=d,R=m,v=s,k=o,W=$t(this.solanaRpcUrl,P),z=new ae.Program(mr,v,W),Z=Array.from(Yr()),xe=new K.PublicKey(p),ue=await so(a,z,xe),lt=await Ws(Z,z.programId),pt=await wn(z.programId),Rt=await qe(new K.PublicKey(P),new K.PublicKey(b)),He=await Pn(new K.PublicKey(b),z.programId),ve=await na(C,z.programId),Ze=await Us(C,Buffer.from(I),z.programId),ze=await Vt(z.programId),Fe=await z.account.config.fetch(ze),gt=await ir(C,Fe.gasOracleProgramId),ft=await ir(k,Fe.gasOracleProgramId),Qe=oo({amount:ue,recipient:Buffer.from(R),nonce:Buffer.from(Z),receiveToken:Buffer.from(I),destinationChainId:C,sourceChainId:k,chainBridge:(await wn(z.programId)).toBuffer()}),X={};return X.bridge=z,X.amount=new ae.BN(a),X.vusdAmount=new ae.BN(ue),X.nonce=Z,X.recipient=Array.from(R),X.receiveToken=Array.from(I),X.poolAccount=xe,X.lockAccount=lt,X.bridgeAuthority=pt,X.userToken=Rt,X.bridgeTokenAccount=He,X.chainBridgeAccount=ve,X.otherBridgeTokenAccount=Ze,X.userAccount=new K.PublicKey(P),X.destinationChainId=C,X.mint=new K.PublicKey(b),X.config=ze,X.configAccountInfo=Fe,X.gasPrice=gt,X.thisGasPrice=ft,X.message=Qe,T&&(X.extraGasInstruction=this.getExtraGasInstruction(T,X.userAccount,ze)),X}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:P,userAccount:C,destinationChainId:I,mint:R,config:v,configAccountInfo:k,gasPrice:W,thisGasPrice:z,message:Z,extraGasInstruction:xe}=r,ue=k.allbridgeMessengerProgramId,lt=await ra(I,ue),pt=await Vt(ue),Rt=await js(Z,ue),He=[];xe&&He.push(xe);let ve=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:I,recipient:c,receiveToken:u}).accounts({mint:R,user:C,config:v,lock:m,pool:A,gasPrice:W,thisGasPrice:z,bridgeAuthority:d,userToken:p,bridgeToken:T,chainBridge:b,messenger:ue,messengerGasUsage:lt,messengerConfig:pt,sentMessageAccount:Rt,otherBridgeToken:P}).preInstructions([ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:la})]).postInstructions(He).transaction(),Ze=$t(this.solanaRpcUrl,C.toString()).connection;return ve.recentBlockhash=(await Ze.getLatestBlockhash()).blockhash,ve.feePayer=C,await this.convertToVersionedTransaction(ve,Ze)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new K.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new w("Cannot find allbridgeLookupTableAccount");let o=new ae.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new ae.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:P,userAccount:C,destinationChainId:I,mint:R,config:v,configAccountInfo:k,gasPrice:W,thisGasPrice:z,message:Z,extraGasInstruction:xe}=r,ue=this.params.wormholeMessengerProgramId,[lt]=K.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new K.PublicKey(ue)),[pt]=K.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new K.PublicKey(ue)),[Rt]=K.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),d.toBuffer()],new K.PublicKey(ue)),He=await ra(I,k.wormholeMessengerProgramId),ve=await Vt(k.wormholeMessengerProgramId),Ze=K.Keypair.generate(),ze=$t(this.solanaRpcUrl,C.toString()),Fe=await ze.connection.getAccountInfo(lt);if(Fe==null)throw new w("Cannot fetch wormhole bridge account info");let gt=new ae.BN(Fe.data.slice(16,24),"le").toString(),ft=K.SystemProgram.transfer({fromPubkey:C,toPubkey:pt,lamports:+gt}),Qe=[];xe&&Qe.push(xe);let X={mint:R,user:C,config:v,lock:m,pool:A,gasPrice:W,thisGasPrice:z,bridgeAuthority:d,userToken:p,bridgeToken:T,chainBridge:b,otherBridgeToken:P,messengerGasUsage:He,wormholeProgram:ue,bridge:lt,message:Ze.publicKey,wormholeMessenger:k.wormholeMessengerProgramId,sequence:Rt,feeCollector:pt,wormholeMessengerConfig:ve,clock:ae.web3.SYSVAR_CLOCK_PUBKEY},Gr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:I,recipient:c,receiveToken:u}).accounts(X).preInstructions([ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:la}),ft]).postInstructions(Qe).signers([Ze]).transaction();return Gr.recentBlockhash=(await ze.connection.getLatestBlockhash()).blockhash,Gr.feePayer=C,{transaction:await this.convertToVersionedTransaction(Gr,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 fe("Such route does not support CCTP protocol");let T=4,b=o,P=m,C=A,I=$t(this.solanaRpcUrl,b),R=new ae.Program(ro,p,I),v=new K.PublicKey(c),k=await Gs(v,R.programId),W=new K.PublicKey(b),z=await R.account.cctpBridge.fetch(k),Z={};return Z.cctpBridge=R,Z.cctpBridgeAccount=k,Z.cctpAddressAccount=new K.PublicKey(p),Z.amount=new ae.BN(s),Z.recipient=Array.from(C),Z.receiveToken=Array.from(P),Z.userToken=await qe(W,v),Z.bridgeAuthority=await Es(k,R.programId),Z.bridgeTokenAccount=await _s(v,R.programId),Z.chainBridgeAccount=await na(u,R.programId),Z.userAccount=W,Z.destinationChainId=u,Z.mint=v,Z.gasPrice=await ir(u,z.gasOracleProgramId),Z.thisGasPrice=await ir(T,z.gasOracleProgramId),Z.provider=I,d&&(Z.extraGasInstruction=this.getExtraGasInstruction(d,Z.userAccount,k)),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:P,mint:C,gasPrice:I,thisGasPrice:R,extraGasInstruction:v,provider:k}=a,W=this.params.cctpParams.cctpDomains[r],z=this.params.cctpParams.cctpTransmitterProgramId,Z=this.params.cctpParams.cctpTokenMessengerMinter;if(W==null||!z||!Z)throw new w("CCTP is not configured");let xe=new K.PublicKey(z),ue=new K.PublicKey(Z),{messageTransmitterAccount:lt,tokenMessenger:pt,tokenMessengerEventAuthority:Rt,tokenMinter:He,localToken:ve,remoteTokenMessengerKey:Ze,authorityPda:ze}=$s(W,C,xe,ue),Fe=[];v&&Fe.push(v);let gt=K.Keypair.generate(),ft=Vs(s.programId,gt.publicKey),Qe=await s.methods.bridge({amount:c,destinationChainId:P,recipient:u,receiveToken:A}).accounts({mint:C,user:b,cctpBridge:o,messageSentEventData:gt.publicKey,lock:ft,cctpMessenger:ue,messageTransmitterProgram:xe,messageTransmitterAccount:lt,tokenMessenger:pt,tokenMinter:He,localToken:ve,remoteTokenMessengerKey:Ze,authorityPda:ze,eventAuthority:Rt,bridgeToken:p,gasPrice:I,thisGasPrice:R,chainBridge:T,userToken:d,bridgeAuthority:m}).preInstructions([ae.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Fe).transaction(),X=k.connection;return Qe.recentBlockhash=(await X.getLatestBlockhash()).blockhash,Qe.feePayer=b,{transaction:await this.convertToVersionedTransaction(Qe,X),messageSentEventDataKeypair:gt}}send(r){throw new ie}};var ei=require("@stellar/stellar-sdk"),po=require("big.js");var t=require("@stellar/stellar-sdk"),hu=t.contract.Spec,Tu=t.contract.Client;var lr=class extends Tu{constructor(r){super(new hu(["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 ti=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,po.Big)(b).plus(T).toFixed());let P=this.getContract(lr,s,o),C;return p==="stablecoin"?C=await P.swap_and_bridge({sender:o,token:ei.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(A),destination_chain_id:+u,receive_token:Buffer.from(m),nonce:St(),gas_amount:BigInt(0),fee_token_amount:BigInt(b)}):C=await P.swap_and_bridge({sender:o,token:ei.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(A),destination_chain_id:+u,receive_token:Buffer.from(m),nonce:St(),gas_amount:BigInt(b),fee_token_amount:BigInt(0)}),C.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(lr,s,o).swap({sender:o,amount:BigInt(a),token:ei.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(A),recipient:u,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ie}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var go="1.18.0",fo="1.40.0";var bu={"-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"},ni=class extends Error{},Bn=class extends ni{constructor(n,r){super(n),this.code=r,this.type=bu[r]??"ServerError"}},ri=class extends ni{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var yo=i=>{throw TypeError(i)},ga=(i,n,r)=>n.has(i)||yo("Cannot "+r),se=(i,n,r)=>(ga(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?yo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),Rn=(i,n,r,a)=>(ga(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),ho=(i,n,r)=>(ga(i,n,"access private method"),r),Su=(i,n,r,a)=>({set _(s){Rn(i,n,s,r)},get _(){return se(i,n,a)}}),sn,pr,Mt,on,gr,kn,ii,To,bo;function wu(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var Pu={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},ai=class{constructor(n,r={}){if(an(this,ii),an(this,sn,0),an(this,pr,0),an(this,Mt,null),an(this,on,null),an(this,gr,new Set),an(this,kn,new Map),this.endpoint=n,this.options={...Pu,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=wu(this.endpoint))}async makeRequest(n,r){let a=await ho(this,ii,To).call(this);return new Promise((s,o)=>{Rn(this,sn,se(this,sn)+1),se(this,kn).set(se(this,sn),{resolve:s,reject:o,timeout:setTimeout(()=>{se(this,kn).delete(se(this,sn)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:se(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 pa(n);return se(this,gr).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;pr=new WeakMap;Mt=new WeakMap;on=new WeakMap;gr=new WeakMap;kn=new WeakMap;ii=new WeakSet;To=function(){return se(this,on)?se(this,on):(Rn(this,on,new Promise(i=>{se(this,Mt)?.close(),Rn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),se(this,Mt).addEventListener("open",()=>{Rn(this,pr,0),i(se(this,Mt))}),se(this,Mt).addEventListener("close",()=>{Su(this,pr)._++,se(this,pr)<=this.options.maxReconnects&&setTimeout(()=>{ho(this,ii,bo).call(this)},this.options.reconnectTimeout)}),se(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&&se(this,kn).has(r.id)){let{resolve:a,timeout:s}=se(this,kn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;se(this,gr).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),se(this,on))};bo=async function(){return se(this,Mt)?.close(),Rn(this,on,null),Promise.allSettled([...se(this,gr)].map(i=>i.subscribe(this)))};var pa=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 So=i=>{throw TypeError(i)},ha=(i,n,r)=>n.has(i)||So("Cannot "+r),Le=(i,n,r)=>(ha(i,n,"read from private field"),r?r.call(i):n.get(i)),si=(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),fa=(i,n,r,a)=>(ha(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Cu=(i,n,r)=>(ha(i,n,"access private method"),r),fr,nt,yr,ya,wo,oi=class{constructor(n){si(this,ya),si(this,fr,0),si(this,nt),si(this,yr),fa(this,nt,n)}fetch(n,r){let a=Le(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){fa(this,fr,Le(this,fr)+1);let r=await this.fetch(Le(this,nt).rpc?.url??Le(this,nt).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":go,"Client-Target-Api-Version":fo,"Client-Request-Method":n.method,...Le(this,nt).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Le(this,fr),method:n.method,params:n.params})});if(!r.ok)throw new ri(`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 Cu(this,ya,wo).call(this).subscribe(n);return async()=>!!await r()}};fr=new WeakMap;nt=new WeakMap;yr=new WeakMap;ya=new WeakSet;wo=function(){if(!Le(this,yr)){let i=Le(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.");fa(this,yr,new ai(Le(this,nt).websocket?.url??Le(this,nt).url,{WebSocketConstructor:i,...Le(this,nt).websocket}))}return Le(this,yr)};var Wt=require("@mysten/bcs");pe();ke();var J=require("@mysten/bcs");var Lu=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,Xu=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function xo(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!Lu.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!Xu.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 Ku=BigInt(1e9),Ya="0x1",mi="0x2";var di=Re("0x6");var La=`${mi}::sui::SUI`,Hu=Re("0x5");ke();var zu="object",Qu="ID",qu="ascii",eA="String",tA="string",nA="String",rA="option",iA="Option";function Fo(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&N(n.package)===N("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function li(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=li(i.vector);return n?h.vector(n):null}if("datatype"in i){let n=N(i.datatype.package);if(n===N(Ya)){if(i.datatype.module===qu&&i.datatype.type===eA)return h.String;if(i.datatype.module===tA&&i.datatype.type===nA)return h.String;if(i.datatype.module===rA&&i.datatype.type===iA){let r=li(i.datatype.typeParameters[0]);return r?h.vector(r):null}}if(n===N(mi)&&i.datatype.module===zu&&i.datatype.type===Qu)return h.Address}return null}function Do(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:br(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:br(i.MutableReference)}:{ref:null,body:br(i)}}function br(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:br(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(br)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var No=require("@mysten/bcs");ke();function aA(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,No.toBase64)(i):i.toBase64()}}}var Oe={Pure:aA,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:N(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:N(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:N(i)}}}}};var za=require("@mysten/bcs"),st=require("valibot");ke();var g=require("valibot");ke();function Yt(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=>N(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")),at=(0,g.object)({objectId:cn,version:be,digest:(0,g.string)()}),q=(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]}))),sA=(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)(at))}),Gp=(0,g.object)({address:(0,g.string)(),module:(0,g.string)(),name:(0,g.string)(),typeParams:(0,g.array)((0,g.string)())}),Xa=(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)(()=>Xa)}),(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)(()=>Xa))})}),(0,g.object)({typeParameter:(0,g.pipe)((0,g.number)(),(0,g.integer)())})]),oA=(0,g.object)({ref:(0,g.nullable)((0,g.union)([(0,g.literal)("&"),(0,g.literal)("&mut")])),body:Xa}),cA=(0,g.object)({package:Ce,module:(0,g.string)(),function:(0,g.string)(),typeArguments:(0,g.array)((0,g.string)()),arguments:(0,g.array)(q),_argumentTypes:(0,g.optional)((0,g.nullable)((0,g.array)(oA)))}),uA=(0,g.object)({name:(0,g.string)(),inputs:(0,g.record)((0,g.string)(),(0,g.union)([q,(0,g.array)(q)])),data:(0,g.record)((0,g.string)(),(0,g.unknown)())}),AA=Yt({MoveCall:cA,TransferObjects:(0,g.object)({objects:(0,g.array)(q),address:q}),SplitCoins:(0,g.object)({coin:q,amounts:(0,g.array)(q)}),MergeCoins:(0,g.object)({destination:q,sources:(0,g.array)(q)}),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)(q)}),Upgrade:(0,g.object)({modules:(0,g.array)(Jt),dependencies:(0,g.array)(Ce),package:Ce,ticket:q}),$Intent:uA}),Wo=Yt({ImmOrOwnedObject:at,SharedObject:(0,g.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,g.boolean)()}),Receiving:at}),mA=Yt({Object:Wo,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))})}),Ka=Yt({Object:Wo,Pure:(0,g.object)({bytes:Jt})}),Ha=Yt({None:(0,g.literal)(!0),Epoch:be}),xn=(0,g.object)({version:(0,g.literal)(2),sender:(0,g.nullish)(cn),expiration:(0,g.nullish)(Ha),gasData:sA,inputs:(0,g.array)(mA),commands:(0,g.array)(AA)});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)(q,r)),address:(0,st.parse)(q,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,st.parse)(q,i),amounts:n.map(r=>(0,st.parse)(q,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,st.parse)(q,i),sources:n.map(r=>(0,st.parse)(q,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,za.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,za.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Re(s)),package:r,ticket:(0,st.parse)(q,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,st.parse)(q,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)(q,o)):(0,st.parse)(q,s)])),data:r}}}};var Fn=require("@mysten/bcs"),Pt=require("valibot");ke();var Lt=require("@mysten/bcs"),l=require("valibot");pe();var Qa=(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)()])}),dA=Yt({ImmOrOwned:Qa,Shared:(0,l.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,l.boolean)()}),Receiving:Qa}),Eo=Yt({Object:dA,Pure:(0,l.array)((0,l.pipe)((0,l.number)(),(0,l.integer)()))}),jo=(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")})]),lA=(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))})]),Uo=(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}})),qa=(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)(()=>qa)}),(0,l.object)({struct:(0,l.lazy)(()=>pA)}),(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))})]),pA=(0,l.object)({address:(0,l.string)(),module:(0,l.string)(),name:(0,l.string)(),typeParams:(0,l.array)(qa)}),gA=(0,l.object)({budget:(0,l.optional)(Uo),price:(0,l.optional)(Uo),payment:(0,l.optional)((0,l.array)(Qa)),owner:(0,l.optional)((0,l.string)())}),fA=[jo,(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)([...fA]),yA=(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)}),hA=(0,l.object)({kind:(0,l.literal)("TransferObjects"),objects:(0,l.array)(Dt),address:Dt}),TA=(0,l.object)({kind:(0,l.literal)("SplitCoins"),coin:Dt,amounts:(0,l.array)(Dt)}),bA=(0,l.object)({kind:(0,l.literal)("MergeCoins"),destination:Dt,sources:(0,l.array)(Dt)}),SA=(0,l.object)({kind:(0,l.literal)("MakeMoveVec"),type:(0,l.union)([(0,l.object)({Some:qa}),(0,l.object)({None:(0,l.nullable)((0,l.literal)(!0))})]),objects:(0,l.array)(Dt)}),wA=(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)())}),PA=(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}),CA=[yA,hA,TA,bA,wA,PA,SA],IA=(0,l.union)([...CA]),Lp=(0,l.object)({version:(0,l.literal)(1),sender:(0,l.optional)((0,l.string)()),expiration:(0,l.nullish)(lA),gasConfig:gA,inputs:(0,l.array)(jo),transactions:(0,l.array)(IA)});function es(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Lt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some: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,Lt.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,Lt.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 Go(i){return(0,l.parse)(xn,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,l.is)(Eo,n.value)){let r=(0,l.parse)(Eo,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Lt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?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,Lt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Lt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var S=require("valibot");function Sr(i){return(0,S.union)(Object.entries(i).map(([n,r])=>(0,S.object)({[n]:r})))}var ot=Sr({GasCoin:(0,S.literal)(!0),Input:(0,S.pipe)((0,S.number)(),(0,S.integer)()),Result:(0,S.pipe)((0,S.number)(),(0,S.integer)()),NestedResult:(0,S.tuple)([(0,S.pipe)((0,S.number)(),(0,S.integer)()),(0,S.pipe)((0,S.number)(),(0,S.integer)())])}),vA=(0,S.object)({budget:(0,S.nullable)(be),price:(0,S.nullable)(be),owner:(0,S.nullable)(cn),payment:(0,S.nullable)((0,S.array)(at))}),BA=(0,S.object)({package:Ce,module:(0,S.string)(),function:(0,S.string)(),typeArguments:(0,S.array)((0,S.string)()),arguments:(0,S.array)(ot)}),RA=(0,S.object)({name:(0,S.string)(),inputs:(0,S.record)((0,S.string)(),(0,S.union)([ot,(0,S.array)(ot)])),data:(0,S.record)((0,S.string)(),(0,S.unknown)())}),kA=Sr({MoveCall:BA,TransferObjects:(0,S.object)({objects:(0,S.array)(ot),address:ot}),SplitCoins:(0,S.object)({coin:ot,amounts:(0,S.array)(ot)}),MergeCoins:(0,S.object)({destination:ot,sources:(0,S.array)(ot)}),Publish:(0,S.object)({modules:(0,S.array)(Jt),dependencies:(0,S.array)(Ce)}),MakeMoveVec:(0,S.object)({type:(0,S.nullable)((0,S.string)()),elements:(0,S.array)(ot)}),Upgrade:(0,S.object)({modules:(0,S.array)(Jt),dependencies:(0,S.array)(Ce),package:Ce,ticket:ot}),$Intent:RA}),MA=Sr({ImmOrOwnedObject:at,SharedObject:(0,S.object)({objectId:Ce,initialSharedVersion:be,mutable:(0,S.boolean)()}),Receiving:at}),OA=Sr({Object:MA,Pure:(0,S.object)({bytes:Jt}),UnresolvedPure:(0,S.object)({value:(0,S.unknown)()}),UnresolvedObject:(0,S.object)({objectId:Ce,version:(0,S.optional)((0,S.nullable)(be)),digest:(0,S.optional)((0,S.nullable)((0,S.string)())),initialSharedVersion:(0,S.optional)((0,S.nullable)(be))})}),xA=Sr({None:(0,S.literal)(!0),Epoch:be}),_o=(0,S.object)({version:(0,S.literal)(2),sender:(0,S.nullish)(cn),expiration:(0,S.nullish)(xA),gasData:vA,inputs:(0,S.array)(OA),commands:(0,S.array)(kA)});var $o=require("valibot");pe();var FA=50,DA=1000n,NA=5e10;async function Zo(i,n,r){return await GA(i,n),await jA(i,n),n.onlyTransactionKind||(await WA(i,n),await EA(i,n),await UA(i,n)),await _A(i),await r()}async function WA(i,n){i.gasConfig.price||(i.gasConfig.price=String(await un(n).getReferenceGasPrice()))}async function EA(i,n){if(i.gasConfig.budget)return;let r=await un(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(NA),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=DA*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 UA(i,n){if(!i.gasConfig.payment){let a=(await un(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:La})).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,$o.parse)(at,s))}}async function jA(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?JA(a,FA):[],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=N(p.UnresolvedObject.objectId),P=m.get(b);p.UnresolvedObject.initialSharedVersion??P?.initialSharedVersion?T=Oe.SharedObjectRef({objectId:b,initialSharedVersion:p.UnresolvedObject.initialSharedVersion||P?.initialSharedVersion,mutable:VA(i,d)}):$A(i,d)&&(T=Oe.ReceivingRef({objectId:b,digest:p.UnresolvedObject.digest??P?.digest,version:p.UnresolvedObject.version??P?.version})),i.inputs[i.inputs.indexOf(p)]=T??Oe.ObjectRef({objectId:b,digest:p.UnresolvedObject.digest??P?.digest,version:p.UnresolvedObject.version??P?.version})}}async function GA(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=>{Vo(A,h.U64,i)});break;case"TransferObjects":Vo(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=>Do(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&&Fo(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 P=r[b.Input];if(!P.UnresolvedPure&&!P.UnresolvedObject)return;let C=P.UnresolvedPure?.value??P.UnresolvedObject?.objectId,I=li(p.body);if(I){b.type="pure",r[r.indexOf(P)]=Oe.Pure(I.serialize(C));return}if(typeof C!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(C,null,2)}`);b.type="object";let R=P.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:C}}:P;r[b.Input]=R})}})}function _A(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 Vo(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 VA(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 $A(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=ZA(s.MoveCall._argumentTypes[o])||r}}),r}function ZA(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 JA(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Jo(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 Yo=require("@mysten/bcs");pe();function Lo(i){function n(r,a){if(typeof r=="string")return i(wr(r).serialize(a));if(r instanceof Uint8Array||(0,Yo.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(wr(r)).serialize(a)),n.option=(r,a)=>i(h.option(wr(r)).serialize(a)),n}function wr(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(wr(a)):h.option(wr(a))}throw new Error(`Invalid Pure type name: ${i}`)}var zo=require("@mysten/bcs"),pi=require("valibot");pe();ke();var Xo=require("@noble/hashes/blake2b");function Ko(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,Xo.blake2b)(a,{dkLen:32})}function Ho(i){return N(i).replace("0x","")}var Xt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=h.TransactionKind.parse(n).ProgrammableTransaction;if(!a)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:a.inputs,commands:a.commands})}static fromBytes(n){let a=h.TransactionData.parse(n)?.V1,s=a.kind.ProgrammableTransaction;if(!a||!s)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:a.sender,expiration:a.expiration,gasData:a.gasData,inputs:s.inputs,commands:s.commands})}static restore(n){return n.version===2?new i((0,pi.parse)(xn,n)):new i((0,pi.parse)(xn,Go(n)))}static getDigestFromBytes(n){let r=Ko("TransactionData",n);return(0,zo.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:Ho(A),expiration:u||{None:!0},gasData:{payment:m.payment,owner:Ho(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,pi.parse)(xn,this)}};ke();function ts(i){if(typeof i=="string")return N(i);if(i.Object)return i.Object.ImmOrOwnedObject?N(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?N(i.Object.Receiving.objectId):N(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return N(i.UnresolvedObject.objectId)}var ec=i=>{throw TypeError(i)},as=(i,n,r)=>n.has(i)||ec("Cannot "+r),V=(i,n,r)=>(as(i,n,"read from private field"),r?r.call(i):n.get(i)),Pr=(i,n,r)=>n.has(i)?ec("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),An=(i,n,r,a)=>(as(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Nt=(i,n,r)=>(as(i,n,"access private method"),r),Ir,vr,mn,Y,ct,gi,ss,rs,os;function Qo(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 tc=Symbol.for("@mysten/transaction");function fi(i){return!!i&&typeof i=="object"&&i[tc]===!0}var qo={buildPlugins:new Map,serializationPlugins:new Map},ns=Symbol.for("@mysten/transaction/registry");function Cr(){try{let i=globalThis;return i[ns]||(i[ns]=qo),i[ns]}catch{return qo}}var YA=class is{constructor(){Pr(this,ct),Pr(this,Ir),Pr(this,vr),Pr(this,mn,new Map),Pr(this,Y),this.object=Jo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Pt.is)(q,r))return r;let a=ts(r),s=V(this,Y).inputs.find(o=>a===ts(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:V(this,Y).inputs.indexOf(s),type:"object"}:V(this,Y).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:N(r)}}:r)});let n=Cr();An(this,Y,new Xt),An(this,vr,[...n.buildPlugins.values()]),An(this,Ir,[...n.serializationPlugins.values()])}static fromKind(n){let r=new is;return An(r,Y,Xt.fromKindBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)),r}static from(n){let r=new is;return fi(n)?An(r,Y,new Xt(n.getData())):typeof n!="string"||!n.startsWith("{")?An(r,Y,Xt.fromBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)):An(r,Y,Xt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){Cr().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){Cr().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){Cr().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){Cr().buildPlugins.delete(n)}addSerializationPlugin(n){V(this,Ir).push(n)}addBuildPlugin(n){V(this,vr).push(n)}addIntentResolver(n,r){if(V(this,mn).has(n)&&V(this,mn).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);V(this,mn).set(n,r)}setSender(n){V(this,Y).sender=n}setSenderIfNotSet(n){V(this,Y).sender||(V(this,Y).sender=n)}setExpiration(n){V(this,Y).expiration=n?(0,Pt.parse)(Ha,n):null}setGasPrice(n){V(this,Y).gasConfig.price=String(n)}setGasBudget(n){V(this,Y).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){V(this,Y).gasData.budget==null&&(V(this,Y).gasConfig.budget=String(n))}setGasOwner(n){V(this,Y).gasConfig.owner=n}setGasPayment(n){V(this,Y).gasConfig.payment=n.map(r=>(0,Pt.parse)(at,r))}get blockData(){return es(V(this,Y).snapshot())}getData(){return V(this,Y).snapshot()}get[tc](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Lo(n=>(0,Fn.isSerializedBcs)(n)?V(this,Y).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):V(this,Y).addInput("pure",(0,Pt.is)(Ka,n)?(0,Pt.parse)(Ka,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=V(this,Y).commands.push(n);return Qo(r-1)}splitCoins(n,r){let a=_e.SplitCoins(typeof n=="string"?this.object(n):Nt(this,ct,ss).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Nt(this,ct,gi).call(this,o))),s=V(this,Y).commands.push(a);return Qo(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,gi).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,gi).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(es(V(this,Y).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Pt.parse)(_o,V(this,Y).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,rs).call(this,n),V(this,Y).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Nt(this,ct,rs).call(this,n),V(this,Y).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of V(this,Y).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...V(this,Ir)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!V(this,mn).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(V(this,mn).get(s))}await Nt(this,ct,os).call(this,a,n)}};Ir=new WeakMap;vr=new WeakMap;mn=new WeakMap;Y=new WeakMap;ct=new WeakSet;gi=function(i){return(0,Fn.isSerializedBcs)(i)?this.pure(i):Nt(this,ct,ss).call(this,i)};ss=function(i){return typeof i=="function"?(0,Pt.parse)(q,i(this)):(0,Pt.parse)(q,i)};rs=async function(i){if(!i.onlyTransactionKind&&!V(this,Y).sender)throw new Error("Missing transaction sender");await Nt(this,ct,os).call(this,[...V(this,vr),Zo],i)};os=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(V(this,Y),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 Ct=YA;var Kt=require("valibot");pe();ke();var yi="CoinWithBalance",nc=Tr("0x2::sui::SUI");function ne({type:i=nc,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(yi,XA);let s=i==="gas"?i:Tr(i);return a.add(_e.Intent({name:yi,inputs:{},data:{type:s===nc&&r?"gas":s,balance:BigInt(n)}}))}}var LA=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function XA(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===yi){let{type:d,balance:p}=(0,Kt.parse)(LA,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 KA({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!==yi)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[P,...C]=c.get(p).map(I=>i.addInput("object",Oe.ObjectRef({objectId:I.coinObjectId,digest:I.digest,version:I.version})));C.length>0&&b.push(_e.MergeCoins(P,C)),A.set(p,P)}b.push(_e.SplitCoins(A.get(p),[i.addInput("pure",Oe.Pure(h.u64().serialize(T)))])),i.replaceCommand(m,b),i.mapArguments(P=>P.$kind==="Result"&&P.Result===m?{$kind:"NestedResult",NestedResult:[m+b.length-1,0]}:P)}return r()}async function KA({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,P)=>Number(BigInt(P.balance)-BigInt(b.balance)));for(let b of T){if(s.has(b.coinObjectId))continue;let P=BigInt(b.balance);if(c.push(b),o-=P,o<=0)return c}if(d)return u(p);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}ke();var HA=Symbol.for("@mysten/SuiClient");var Et=class{get[HA](){return!0}constructor(n){this.transport=n.transport??new oi({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!je(N(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(N(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(N(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(N(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(N(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||!Mn(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||!Mn(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(!ui(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(!ui(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(N(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||!Mn(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(fi(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||!Mn(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=>xo(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 Pi=require("big.js");var ys=Ae(Ht());var Ut=Ae(Ht());ge();function ac(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[F(i,r.bridge),F(i,r.coin),Xe(i,r.receiveAmountMin,"u64")]})}function sc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.userDeposit),F(i,r.coin)]})}function oc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.userDeposit),Xe(i,r.amountLp,"u64")]})}function cc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.userDeposit)]})}function uc(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[F(i,r)]})}function us(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.messenger),F(i,r.wormholeState),F(i,r.theClock),F(i,r.gasOracle),F(i,r.amount),F(i,r.recipient),Xe(i,r.destinationChainId,"u8"),F(i,r.receiveToken),Xe(i,r.nonce,"u256"),F(i,r.feeSuiCoin),F(i,r.feeTokenCoin)]})}function Ac(i,n){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function As(i,n,r){return i.moveCall({target:`${Ut.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[F(i,r.bridge),F(i,r.messenger),F(i,r.gasOracle),F(i,r.amount),F(i,r.recipient),Xe(i,r.destinationChainId,"u8"),F(i,r.receiveToken),Xe(i,r.nonce,"u256"),F(i,r.feeSuiCoin),F(i,r.feeTokenCoin)]})}var fc=Ae(ds());var dc=Ae(ds());ge();function ls(i,n,r){return i.moveCall({target:`${dc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[F(i,r.cctpBridge),F(i,r.gasOracle),F(i,r.tokenMessengerMinterState),F(i,r.messageTransmitterState),F(i,r.treasury),F(i,r.denyList),F(i,r.amount),F(i,r.feeSuiCoin),F(i,r.feeTokenCoin),Xe(i,r.destinationChainId,"u8"),F(i,r.recipient),F(i,r.recipientWalletAddress)]})}var yc=Ae(gs());var gc=Ae(gs());pe();ge();pe();ge();var fs=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=L(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:L(i.$typeName,D(n)),typeArgs:[D(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(Br(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([D(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=>$(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>j(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(Br(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=>G(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 Dn(i){return fs.r(i)}function oe(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var nm=h.bytes(32).transform({input:i=>(0,J.fromHEX)(i),output:i=>(0,J.toHEX)(i)});function Br(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 nm;default:return i.bcs}}function D(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 $(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 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 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:j(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function ut(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(M(n[a])!==M(D(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${D(r[a])}, got ${n[a]}))`)}function It(i,n){let{typeArgs:r}=Se(i.type);ut(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 G(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:G(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}ge();var hi="0x1";ge();pe();function Ti(i){return i=M(i),i===`${hi}::string::String`}var bi=class i{__StructClass=!0;static get $typeName(){return`${hi}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=L(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:L(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 oe(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:$(Dn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!Ti(n.type))throw new Error("not a String type");return i.reified().new({bytes:j(Dn("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:G(Dn("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(!Ti(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"||!Ti(n.bcs.type))throw new Error("object at is not a String object");return i.fromBcs((0,J.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"||!Ti(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};ge();ge();var zt="0x2";pe();function Si(i){return i=M(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=L(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:L(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 oe(i.reified())}static get p(){return i.phantom()}static get bcs(){return h.struct("ID",{bytes:h.bytes(32).transform({input:n=>(0,J.fromHEX)(n),output:n=>(0,J.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:$("address",n.bytes)})}static fromFieldsWithTypes(n){if(!Si(n.type))throw new Error("not a ID type");return i.reified().new({bytes:j("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:G("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(!Si(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"||!Si(n.bcs.type))throw new Error("object at is not a ID object");return i.fromBcs((0,J.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"||!Si(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function wi(i){return i=M(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=L(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:L(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 oe(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:$(ln.reified(),n.id)})}static fromFieldsWithTypes(n){if(!wi(n.type))throw new Error("not a UID type");return i.reified().new({id:j(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:G(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(!wi(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"||!wi(n.bcs.type))throw new Error("object at is not a UID object");return i.fromBcs((0,J.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"||!wi(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function At(i,n){return i.moveCall({target:`${gc.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Xe(i,n,`${bi.$typeName}`)]})}async function vt(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?vt(i,a.nextCursor,s):s}var Nn=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,ys.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 Ct;m.setSender(o);let d={bridge:a.bridgeObjectAddress,coin:ne({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(A)},p=ac(m,[c,u],d),T=await vt(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 buildRawTransactionSendFromCustomTx(r,a,s){let o=Ct.from(r);return this.buildRawTransactionSendFromTx(s,o,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new Ct)}async buildRawTransactionSendFromTx(r,a,s){let o=await tt(this.chainType,r,this.api),{messenger:c}=o,u=r.sourceToken.suiAddresses;if(!u)throw new w("SUI token must contain 'suiAddresses'");switch((0,ys.setAddress)(u.bridgeAddress,u.bridgeAddressOrigin),(0,yc.setAddress)(u.utilsAddress),c){case 1:return this.buildRawTransactionAllbridgeSend(o,u,a,s);case 2:return this.buildRawTransactionWormholeSend(o,u,a,s);case 3:case 4:return this.buildRawTransactionCctpSend(r,o,u,a,s);case 5:throw new ye("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a,s,o){let{amount:c,fromAccountAddress:u,fromTokenAddress:A,toChainId:m,toAccountAddress:d,toTokenAddress:p,fee:T,gasFeePaymentMethod:b,extraGas:P}=r,C=T;if(P&&(C=(0,Pi.Big)(C).plus(P).toFixed()),s.setSender(u),b==="stablecoin"){let I=BigInt(c)-BigInt(C),R,v;if(o){let[W]=s.splitCoins(o,[C]);R=o,v=W}else R=ne({balance:I,type:A}),v=ne({balance:BigInt(C),type:A});let k={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:R,destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:v,feeSuiCoin:ne({balance:BigInt(0),useGasCoin:!1})};As(s,A,k)}else{let I=C==="0"?ne({balance:BigInt(C),useGasCoin:!1}):ne({balance:BigInt(C)}),R={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:o??ne({balance:BigInt(c),type:A}),destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ne({balance:BigInt(0),type:A}),feeSuiCoin:I};As(s,A,R)}return await s.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a,s,o){let{amount:c,fromAccountAddress:u,fromTokenAddress:A,toChainId:m,toAccountAddress:d,toTokenAddress:p,fee:T,gasFeePaymentMethod:b,extraGas:P}=r,C=T;if(P&&(C=(0,Pi.Big)(C).plus(P).toFixed()),s.setSender(u),b==="stablecoin"){let I=BigInt(c)-BigInt(C),R,v;if(o){let[W]=s.splitCoins(o,[C]);R=o,v=W}else R=ne({balance:I,type:A}),v=ne({balance:BigInt(C),type:A});let k={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:di,amount:R,destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:v,feeSuiCoin:ne({balance:BigInt(0),useGasCoin:!1})};us(s,A,k)}else{let I=C==="0"?ne({balance:BigInt(C),useGasCoin:!1}):ne({balance:BigInt(C)}),R={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:di,amount:o??ne({balance:BigInt(c),type:A}),destinationChainId:m,nonce:St(),recipient:At(s,et(d)),receiveToken:At(s,et(p)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ne({balance:BigInt(0),type:A}),feeSuiCoin:I};us(s,A,R)}return await s.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s,o,c){let{amount:u,fromAccountAddress:A,fromTokenAddress:m,toChainId:d,toAccountAddress:p,fee:T,gasFeePaymentMethod:b,extraGas:P}=a;(0,fc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let C=T;P&&(C=(0,Pi.Big)(C).plus(P).toFixed()),o.setSender(A);let I=At(o,et(p)),R;if(r.destinationToken.chainType==="SOLANA"){let v=await Xr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));R=At(o,et(v))}else R=I;if(b==="stablecoin"){let v=BigInt(u)-BigInt(C),k,W;if(c){let[Z]=o.splitCoins(c,[C]);k=c,W=Z}else k=ne({balance:v,type:m}),W=ne({balance:BigInt(C),type:m});let z={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:k,destinationChainId:d,recipient:R,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:W,feeSuiCoin:ne({balance:BigInt(0),useGasCoin:!1})};ls(o,m,z)}else{let v=C==="0"?ne({balance:BigInt(C),useGasCoin:!1}):ne({balance:BigInt(C)}),k={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:c??ne({balance:BigInt(u),type:m}),destinationChainId:d,recipient:R,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ne({balance:BigInt(0),type:m}),feeSuiCoin:v};ls(o,m,k)}return await o.toJSON({client:this.client})}};var bc=require("big.js");var hc=Ae(require("bn.js"));function Ci(i){return"0x"+new hc.default(i).toString("hex")}function Tc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function Ii(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 rm(i,s),{txId:s}}async function rm(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 Tc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new bn(`Transaction status is ${s.receipt.result}`)}}var Rr=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 Ii(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:P,extraGasDest:C}=a,I=T;P&&(I=(0,bc.Big)(I).plus(P).toFixed());let R=St().toString(),v,k,W;switch(p){case 3:case 4:b==="stablecoin"?(v=[{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:I}],k="0"):(v=[{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:0}],k=I),W="bridge(uint256,bytes32,uint256,uint256)";break;case 5:b==="stablecoin"?(v=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"uint256",value:I},{type:"uint256",value:C??"0"},{type:"uint256",value:"10"}],k="0"):(v=[{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:C??"0"},{type:"uint256",value:"10"}],k=I),W="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:b==="stablecoin"?(v=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"bytes32",value:d},{type:"uint256",value:R},{type:"uint8",value:p},{type:"uint256",value:I}],k="0"):(v=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:m},{type:"uint256",value:A},{type:"bytes32",value:d},{type:"uint256",value:R},{type:"uint8",value:p},{type:"uint256",value:0}],k=I),W="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(o,W,v,k,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 vi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new Kr(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 U(r.amount),_("amount",r.amount,r.sourceToken.decimals),Hr(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 fe("Such route does not support CCTP protocol");case 4:if(i.cctpV2Address)return i.cctpV2Address;throw new fe("Such route does not support CCTP V2 protocol");case 5:if(i.oftBridgeAddress)return i.oftBridgeAddress;throw new ye("Such route does not support OFT protocol");case 1:case 2:return i.bridgeAddress}}function Hr(i,n,r,a,s){switch(E.getChainProperty(i).chainType){case"EVM":{if(s)return new ur(s,n,r);{let o=r.getNodeRpcUrl(i);return new ur(new wc.Web3(o),n,r)}}case"TRX":{if(s)return new Rr(s,n);{let o=r.getNodeRpcUrl(i);return new Rr(new Sc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new qr(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 ti(r,a,n);case"SUI":return new Nn(r,n)}}var Oc=require("big.js");var im=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),Pc="__cache__",hs=function(i){return typeof i!="string"?Pc+JSON.stringify(i):Pc+i},Ts=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=hs(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[hs(n)];return r&&r.data}remove(n){let r=hs(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)im(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},jt=Ts;var xc=require("tronweb"),Gn=require("web3");var Bt=require("big.js");function Cc(i,n,r,a,s){let o=x(i,3),c=(0,Bt.Big)(o),u=(0,Bt.Big)(r),A=(0,Bt.Big)(a).plus(s),m,d;if(u.eq(0)||A.eq(0)){let T=c.div(2);m=(0,Bt.Big)(a).plus(T),d=(0,Bt.Big)(s).plus(T)}else m=(0,Bt.Big)(a).plus(c.mul(a).div(A)),d=(0,Bt.Big)(s).plus(c.mul(s).div(A));return(0,Bt.Big)(Hs(n,m.toFixed(),d.toFixed())).minus(u).toFixed()}function Ic(i){let n=x(i,3);return(0,Bt.Big)(n).round().toFixed()}var Gt=require("web3");var am={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"}]},kr=am;var Ie=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return O(this.lpAmount,3).toFixed()}earned(n,r){let a=Xs(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?O(a,r).toFixed():a}};var Ve=class{};var Mr=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 $r(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await ta(()=>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 $r(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await ta(()=>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,P,C,I]=await a.execute();if(p&&T&&b&&P&&C&&I&&!p.error&&!T.error&&!b.error&&!P.error&&!C.error&&!I.error){let R=Gt.Web3.utils.toBigInt(b.result).toString(),v=Gt.Web3.utils.toBigInt(P.result).toString(),k=Pe({tokenBalance:R,vUsdBalance:v});return{aValue:Gt.Web3.utils.toBigInt(p.result).toString(),dValue:Gt.Web3.utils.toBigInt(T.result).toString(),tokenBalance:R,vUsdBalance:v,totalLpAmount:Gt.Web3.utils.toBigInt(C.result).toString(),accRewardPerShareP:Gt.Web3.utils.toBigInt(I.result).toString(),p:this.P,imbalance:k}}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=Pe({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(kr.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 U(n.amount),_("amount",n.amount,n.token.decimals),n.amount=x(n.amount,n.token.decimals).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return U(n.amount),_("amount",n.amount,n.token.decimals),n.amount=x(n.amount,3).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(n)}async claimRewards(n,r){return Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(n)}};var dt=require("@project-serum/anchor"),mt=require("@solana/web3.js");var Ri=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 mt.PublicKey(a.poolAddress),u=await o.account.pool.fetch(c);try{let A=await ia(new mt.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=Pe({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 dt.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new mt.PublicKey(r.accountAddress),await In(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 dt.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new mt.PublicKey(r.accountAddress),await In(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 mt.PublicKey(r.accountAddress),await In(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 dt.Program(mr,r,a)}buildAnchorProvider(r){let a=new mt.Connection(this.solanaRpcUrl,"confirmed"),s=new mt.PublicKey(r);return new dt.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new mt.PublicKey(s),u=await Vt(r.programId),A=await wn(r.programId),m=new mt.PublicKey(a),p=(await r.account.pool.fetch(m)).mint,T=await qe(c,p),b=await Pn(p,r.programId),P=await ia(c,p,r.programId),C=[dt.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await Cn(T,o)}catch{let k=await dt.Spl.associatedToken(o).methods.create().accounts({mint:p,owner:c,associatedAccount:T}).instruction();C.push(k)}try{await r.account.userDeposit.fetch(P)}catch{let v=await r.methods.initDepositAccount().accounts({mint:p,user:c,userDeposit:P}).instruction();C.push(v)}return{accounts:{mint:p,user:c,config:u,pool:m,bridgeAuthority:A,userDeposit:P,userToken:T,bridgeToken:b},preInstructions:C}}};var Kh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),sm=e.contract.Spec,om=e.contract.Client;var ki=class extends om{constructor(r){super(new sm(["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 bs=require("@stellar/stellar-sdk"),vc=bs.rpc.Api;function En(i){let{simulation:n,options:r}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");if(vc.isSimulationSuccess(n))return n.result==null?void 0:r.parseResultXdr(n.result.retval);throw new Error(n.error)}function Un(i){let{simulation:n}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");return vc.isSimulationError(n)}var Mi=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(Un(o))throw new w;let c=En(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(Un(s))throw new w;let o=En(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:Pe({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 ki(s)}};var jn=Ae(Ht());ge();ge();pe();function Oi(i){return i=M(i),i.startsWith(`${zt}::balance::Balance<`)}var we=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=L(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:$("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!Oi(r.type))throw new Error("not a Balance type");return It(r,[n]),i.reified(n).new({value:j("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:G("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Oi(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"||!Oi(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!Oi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var Ps=Ae(Ht());ge();var Ss=Ae(Ht());pe();function xi(i){return i=M(i),i.startsWith(`${Ss.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${Ss.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:we.bcs,rewards:we.bcs,lp_supply:h.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:$("u128",r.acc_reward_per_share_p),adminFeeShareBp:$("u64",r.admin_fee_share_bp),adminFee:$(we.reified(n),r.admin_fee),rewards:$(we.reified(n),r.rewards),lpSupply:$("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!xi(r.type))throw new Error("not a PoolRewards type");return It(r,[n]),i.reified(n).new({accRewardPerShareP:j("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:j("u64",r.fields.admin_fee_share_bp),adminFee:j(we.reified(n),r.fields.admin_fee),rewards:j(we.reified(n),r.fields.rewards),lpSupply:j("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:G("u128",r.accRewardPerShareP),adminFeeShareBp:G("u64",r.adminFeeShareBp),adminFee:G(we.reified(n),r.adminFee),rewards:G(we.reified(n),r.rewards),lpSupply:G("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!xi(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"||!xi(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!xi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};ge();var ws=Ae(Ht());pe();function Fi(i){return i=M(i),i.startsWith(`${ws.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${ws.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:$("u64",r.token_balance),vusdBalance:$("u64",r.vusd_balance),d:$("u64",r.d),a:$("u64",r.a),balanceRatioMinBp:$("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!Fi(r.type))throw new Error("not a PoolState type");return It(r,[n]),i.reified(n).new({tokenBalance:j("u64",r.fields.token_balance),vusdBalance:j("u64",r.fields.vusd_balance),d:j("u64",r.fields.d),a:j("u64",r.fields.a),balanceRatioMinBp:j("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:G("u64",r.tokenBalance),vusdBalance:G("u64",r.vusdBalance),d:G("u64",r.d),a:G("u64",r.a),balanceRatioMinBp:G("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Fi(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"||!Fi(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!Fi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};pe();function Di(i){return i=M(i),i.startsWith(`${Ps.PKG_V1}::pool::Pool<`)}var Ni=class i{__StructClass=!0;static get $typeName(){return`${Ps.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:we.bcs})}static fromFields(n,r){return i.reified(n).new({id:$(Ke.reified(),r.id),state:$(gn.reified(n),r.state),rewards:$(pn.reified(n),r.rewards),feeShareBp:$("u64",r.fee_share_bp),canDeposit:$("bool",r.can_deposit),canWithdraw:$("bool",r.can_withdraw),decimals:$("u8",r.decimals),balance:$(we.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Di(r.type))throw new Error("not a Pool type");return It(r,[n]),i.reified(n).new({id:j(Ke.reified(),r.fields.id),state:j(gn.reified(n),r.fields.state),rewards:j(pn.reified(n),r.fields.rewards),feeShareBp:j("u64",r.fields.fee_share_bp),canDeposit:j("bool",r.fields.can_deposit),canWithdraw:j("bool",r.fields.can_withdraw),decimals:j("u8",r.fields.decimals),balance:j(we.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:G(Ke.reified(),r.id),state:G(gn.reified(n),r.state),rewards:G(pn.reified(n),r.rewards),feeShareBp:G("u64",r.feeShareBp),canDeposit:G("bool",r.canDeposit),canWithdraw:G("bool",r.canWithdraw),decimals:G("u8",r.decimals),balance:G(we.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Di(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"||!Di(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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"||!Di(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};ge();var Cs=Ae(Ht());pe();function Wi(i){return i=M(i),i.startsWith(`${Cs.PKG_V1}::user_deposit::UserDeposit<`)}var Ei=class i{__StructClass=!0;static get $typeName(){return`${Cs.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=L(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:L(i.$typeName,D(n)),typeArgs:[D(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([D(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return oe(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:$(Ke.reified(),r.id),lpAmount:$("u64",r.lp_amount),rewardDebt:$("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:j(Ke.reified(),r.fields.id),lpAmount:j("u64",r.fields.lp_amount),rewardDebt:j("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:G(Ke.reified(),r.id),lpAmount:G("u64",r.lpAmount),rewardDebt:G("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return ut(L(i.$typeName,D(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=M(a[0]),o=M(D(n));if(s!==M(D(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,J.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 Rc(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 Bc(r,a,c,i);o+=BigInt(u.balance),c.push(u)}return o>=s?Bc(r,a,c,i):[]}function Bc(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 cm="0x0000000000000000000000000000000000000000000000000000000000000000";async function kc(i,n,r){let a=await i.devInspectTransactionBlock({sender:cm,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():Br(r).parse(Uint8Array.from(o))}var Ui=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,jn.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 vt(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:Ei.phantom(oe(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=48,o=new Ct;uc(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await kc(this.client,o,Ni.reified(oe(r.originTokenAddress))),u=c.state.tokenBalance,A=c.state.vusdBalance,m=Pe({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,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=await vt(p=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:p}));if(s.length===0||!s[0])throw new yt("No coins to deposit");let o=s[0],c=new Ct;c.setSender(r.accountAddress);let{depositObj:u,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=Rc([r.amount],s,c);if(!m)throw new yt("No coins to deposit");if(!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let d=sc(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=oe(a).phantomType;return{depositObj:Ac(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new w("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new w("SUI token must contain 'suiAddresses'");if((0,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=oe(r.token.originTokenAddress).phantomType,o=new Ct;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(u)throw new yt("No deposit found");let A=oc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await vt(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,jn.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new w("SUI token must contain 'originTokenAddress'");let s=oe(r.token.originTokenAddress).phantomType,o=new Ct;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(u)throw new yt("No deposit found");let A=cc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await vt(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 Or=require("web3"),Mc=require("web3-eth-abi");var xr=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=or(s.poolAddress),c=or(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 Or.Web3.utils.toBigInt(T.result).toString()};return new Ie({lpAmount:Or.Web3.utils.toBigInt(d(2)).toString(),rewardDebt:Or.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=or(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(P=>P.id===T);if(!b||!b.result)throw new Error(`Missing or invalid result for id ${T}`);return Or.Web3.utils.toBigInt(b.result).toString()},m=A(3),d=A(4),p=Pe({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=Pe({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(kr.abi,r)}getFunctionAbi(r,...a){let s=kr.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,Mc.encodeFunctionCall)(s,a)}};var ji=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){U(n),_("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:u,dValue:A}=s,m=Cc(n,u,A,c,o);return O(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){U(n),_("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=Ic(n),u=We(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",d=(0,Oc.Big)(u).plus(m).toFixed();return O(d,a.decimals).toFixed()}async getUserBalanceInfo(n,r,a){return Wn(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 Wn(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 Wn(i,n,r,a,s){switch(E.getChainProperty(i).chainType){case"EVM":{if(s)return new Mr(s,n);{let o=r.getNodeRpcUrl(i),c=new Gn.Web3(o);return c.defaultReturnFormat={number:Gn.FMT_NUMBER.STR,bytes:Gn.FMT_BYTES.HEX},new Mr(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new xr(s,n,c);{let u=new xc.TronWeb({fullHost:o});return new xr(u,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new Ri(o,n)}case"SRB":return new Mi(r,a,n);case"SUI":return new Ui(r.getNodeRpcUrl(i),n)}}var Dc=require("tronweb"),Vn=require("web3");var um={abi:[{inputs:[{internalType:"string",name:"tokenName_",type:"string"},{internalType:"string",name:"tokenSymbol_",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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"lpAmount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"token",type:"address"}],name:"DepositedRewards",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[4]",name:"values",type:"uint256[4]"}],name:"MultiTransfer",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:"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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"NUM_TOKENS",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:"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"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"minVirtualAmount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getEstimatedAmountOnDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getRewardsAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"virtualAmount",type:"uint256"}],name:"getWithdrawProportionAmount",outputs:[{internalType:"uint256[4]",name:"",type:"uint256[4]"}],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:"uint256",name:"",type:"uint256"}],name:"pools",outputs:[{internalType:"contract IPool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"contract IPool",name:"pool",type:"address"}],name:"setPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subDepositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subTotalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransfer",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"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"virtualAmount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],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:"uint256",name:"virtualAmount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Gi=um;var fn=class{};var Fr=class extends fn{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";async balanceOf(r){let a=(await this.getYieldContract(r.token.yieldAddress).methods.balanceOf(r.owner).call()).toString();return O(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=x(r.amount,r.token.decimals).toFixed(),s=(await this.getYieldContract(r.token.yieldAddress).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return O(s,3).toFixed()}async getWithdrawProportionAmount(r){let a=x(r.amount,3).toFixed();return await this.getYieldContract(r.cydToken.yieldAddress).methods.getWithdrawProportionAmount(r.owner,a).call()}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.deposit(r.amount,r.token.yieldId,r.minVirtualAmount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.withdraw(r.amount).encodeABI()})}buildTxParams(r){return{from:r.owner,to:r.yieldAddress,value:"0"}}getYieldContract(r){return new this.web3.eth.Contract(Gi.abi,r)}};var _i=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){return this.tokenService.buildRawTransactionApprove({...n,spender:n.token.yieldAddress},r)}async deposit(n,r){return U(n.amount),_("amount",n.amount,n.token.decimals),U(n.minVirtualAmount),_("minVirtualAmount",n.minVirtualAmount,3),n.amount=x(n.amount,n.token.decimals).toFixed(),n.minVirtualAmount=x(n.minVirtualAmount,3).toFixed(),_n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return U(n.amount),_("amount",n.amount,3),n.amount=x(n.amount,3).toFixed(),_n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).buildRawTransactionWithdraw(n)}};var Dr=class extends fn{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async balanceOf(r){let a=(await(await this.getContract(r.token.yieldAddress)).methods.balanceOf(r.owner).call()).toString();return O(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=x(r.amount,r.token.decimals).toFixed(),s=(await(await this.getContract(r.token.yieldAddress)).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return O(s,3).toFixed()}async getWithdrawProportionAmount(r){let a=x(r.amount,3).toFixed();return(await(await this.getContract(r.cydToken.yieldAddress)).methods.getWithdrawProportionAmount(r.owner,a).call()).toString().split(",")}async buildRawTransactionDeposit(r){let{amount:a,owner:s,token:o,minVirtualAmount:c}=r,u=[{type:"uint256",value:a},{type:"uint256",value:o.yieldId},{type:"uint256",value:c}];return this.buildRawTransaction(r.token.yieldAddress,"deposit(uint256,uint256,uint256)",u,"0",s)}async buildRawTransactionWithdraw(r){let{amount:a,owner:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.yieldAddress,"withdraw(uint256)",o,"0",s)}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(Gi.abi,r)}};function Fc(i){if(!Nr(i))throw new nr("Token does not support Yield")}function Nr(i){return!!i.yieldAddress&&i.yieldId!==void 0}var Vi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new _i(n,r,a,s)}rawTxBuilder;async getCYDTokens(){let n=[],r=await this.api.getChainDetailsMap("pool");return Object.values(r).forEach(a=>{if(a.yieldAddress){let s=a.tokens.find(c=>c.tokenAddress===a.yieldAddress),o=a.tokens.filter(Nr);if(o.length>0){let c=s??{allbridgeChainId:a.allbridgeChainId,apr:"",apr30d:"",apr7d:"",bridgeAddress:a.bridgeAddress,chainId:a.chainId,chainName:a.name,chainSymbol:a.chainSymbol,chainType:a.chainType,confirmations:a.confirmations,decimals:3,feeShare:"",lpRate:"",name:"Core Yield",poolAddress:"",symbol:"CYD",tokenAddress:a.yieldAddress,transferTime:{},txCostAmount:{maxAmount:"0",swap:"0",transfer:"0"},yieldAddress:a.yieldAddress};n.push({...c,yieldAddress:a.yieldAddress,tokens:o})}}}),n}async getAllowance(n,r){return await this.tokenService.getAllowance({...n,spender:n.token.yieldAddress},r)}async checkAllowance(n,r){return this.tokenService.checkAllowance({...n,spender:n.token.yieldAddress},r)}async balanceOf(n,r){return _n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).balanceOf(n)}async getEstimatedAmountOnDeposit(n,r){return U(n.amount),_("amount",n.amount,n.token.decimals),_n(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.token.yieldAddress,r).getEstimatedAmountOnDeposit(n)}async getWithdrawAmounts(n,r){U(n.amount),_("amount",n.amount,3);let a=await _n(n.cydToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,n.owner,r).getWithdrawProportionAmount(n);return n.cydToken.tokens.filter(s=>a[s.yieldId]!==void 0).map(s=>({amount:O(a[s.yieldId],s.decimals).toFixed(),token:s}))}};function _n(i,n,r,a,s){switch(E.getChainProperty(i).chainType){case"EVM":{if(s)return new Fr(s,n);{let o=r.getNodeRpcUrl(i),c=new Vn.Web3(o);return c.defaultReturnFormat={number:Vn.FMT_NUMBER.STR,bytes:Vn.FMT_BYTES.HEX},new Fr(c,n)}}case"TRX":{if(s)return new Dr(s,n);{let o=r.getNodeRpcUrl(i),c=new Dc.TronWeb({fullHost:o});return c.setAddress(a),new Dr(c,n)}}case"SOLANA":throw new ie;case"SRB":throw new ie;case"SUI":throw new ie}}var ce=require("big.js");function Ec(i,n,r){let a=Am(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=mm(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Uc(i,n,r){let a=dm(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=lm(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Am(i,{feeShare:n,decimals:r},a){let s=(0,ce.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Nc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Nc(tn(s,r),a)}}function Nc(i,n){if(i.eq(0))return"0";let r=(0,ce.Big)(n.tokenBalance).plus(i),a=bt(r.toFixed(),n.aValue,n.dValue);return(0,ce.Big)(n.vUsdBalance).minus(a).round().toFixed()}function mm(i,{feeShare:n,decimals:r},a){if((0,ce.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,ce.Big)(i).plus(a.vUsdBalance),c=bt(o,a.aValue,a.dValue),u=We((0,ce.Big)(a.tokenBalance).minus(c),r),A=(0,ce.Big)(u).times(n),m=(0,ce.Big)(u).minus(A).round();return{bridgeFeeInTokenPrecision:A.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:u.toFixed()}}function dm(i,{feeShare:n,decimals:r},a){let s=(0,ce.Big)(n).div((0,ce.Big)(1).minus(n)),o=(0,ce.Big)(i).times(s),c=(0,ce.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Wc(tn(c,r),a),amountExcludingCommissionInSystemPrecision:Wc(tn(i,r),a)}}function Wc(i,n){let r=(0,ce.Big)(n.tokenBalance).minus(i),a=bt(r.toFixed(),n.aValue,n.dValue);return(0,ce.Big)(a).minus(n.vUsdBalance).round().toFixed()}function lm(i,{feeShare:n,decimals:r},a){if((0,ce.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,ce.Big)(a.vUsdBalance).minus(i),o=bt(s.toFixed(),a.aValue,a.dValue),c=(0,ce.Big)(o).minus(a.tokenBalance),u=We(c.toFixed(),r),A=(0,ce.Big)(n).div((0,ce.Big)(1).minus(n)),m=(0,ce.Big)(u).times(A),d=(0,ce.Big)(u).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:d.round().toFixed(),amountExcludingCommissionInTokenPrecision:u.toFixed()}}var _t=require("big.js");function jc(i,n,r,a,s){let o=Tt(i,n,r),c=We(o,n.decimals),u=sr(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:O(A,n.decimals).neg().round(n.decimals,_t.Big.roundUp).toFixed(),swap:O((0,_t.Big)(i).minus(c).minus(A),n.decimals).neg().round(n.decimals,_t.Big.roundUp).toFixed()},destLPSwap:{fee:O(m,a.decimals).neg().round(a.decimals,_t.Big.roundUp).toFixed(),swap:O(We(o,a.decimals).minus(u).minus(m),a.decimals).neg().round(a.decimals,_t.Big.roundUp).toFixed()}}}var Jc=Ae(require("axios"));var Gc="3.27.1";function _c(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=hm(a,s);return o&&(n[a]=o),n},{})}function Vc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=$n({chainSymbol:s,poolAddress:o.poolAddress}),u=Pe(o.poolInfo);n[c]={...o.poolInfo,imbalance:u}}}return n}function pm(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function gm(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function fm(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=ym(a),n),{})}function ym(i){return Object.entries(i).reduce((n,[r,a])=>{let s=gm(r);return s&&a!=null&&(n[s]=a),n},{})}function hm(i,n){let r=E.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,oftBridgeAddress:n.oftBridgeAddress,yieldAddress:n.yieldAddress,transferTime:fm(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>pm(a,s))}}function $n(i){return i.chainSymbol+"_"+i.poolAddress}function $c(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 Zc(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=Pe(c),n[$n({chainSymbol:s,poolAddress:o})]=c}return n}var Zn=class{api;constructor(n){this.api=Jc.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Gc},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:_c(n),poolInfoMap:Vc(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 Qn("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 Zc(a)}};var Is=20*1e3,Tm=55*1e3,Jn=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new jt({defaultTtl:Tm}),this.receivedTransactionCache=new jt({defaultTtl:Is}),this.pendingInfoCache=new jt({defaultTtl:Is}),this.gasBalanceCache=new jt({defaultTtl:Is})}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 Yn=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 Ln=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:Yc(o.tokens,n,this.isStaging)})}return a}async tokens(n){return Yc(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 Yc(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(bm)}function bm(i){let{flags:n,...r}=i;return r}var Sm=55*1e3,Xn=class{constructor(n){this.client=n;this.poolInfoCache=new vs}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[$n(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($c(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put($n(n),r)}},vs=class{cache;constructor(){this.cache=new jt({defaultTtl:Sm})}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=$n(n);return this.cache.get(r)}};var Xc=require("big.js"),Kc=require("tronweb"),Hc=require("web3");var wm={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"}]},$i=wm;var Bs=require("big.js"),$e=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,Bs.Big)(r).gte((0,Bs.Big)(n.amount))}};var Pm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Cm="0xdac17f958d2ee523a2206206994597c13d831ec7",Im=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()===Cm}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=this.getERC20Contract(a).methods.approve(s,c==null?Pm:Ci(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=Im: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($i.abi,r)}};var Lc=require("@project-serum/anchor"),yn=require("@solana/web3.js");var Zi=class extends $e{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ie}buildRawTransactionApprove(r){throw new ie}buildAnchorProvider(r){let a=new yn.Connection(this.solanaRpcUrl,"confirmed"),s=new yn.PublicKey(r);return new Lc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ie}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await qe(new yn.PublicKey(a),new yn.PublicKey(s.tokenAddress));return(await Cn(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 yn.PublicKey(r.account))).toString()}};var Rs=require("@stellar/stellar-sdk");var Ji=class extends $e{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ie}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new w("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new Rs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof Rs.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?x(A.balance,E.getChainDecimalsByType(E.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new Rs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(u=>u.asset_type==="native");return c?.balance?x(c.balance,E.getChainDecimalsByType(E.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ie}buildRawTransactionApprove(){throw new ie}};var Yi=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 ie}buildRawTransactionApprove(r){throw new ie}getAllowance(r){throw new ie}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 vt(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 vm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Er=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 Ii(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=c==null?vm:Ci(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($i.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 Kn=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 O(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return U(n.amount),_("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&&(U(r.amount),_("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&&(U(n.amount),_("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?O(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:O(a,E.getChainDecimalsByType(E.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch(E.getChainProperty(n).chainType){case"EVM":{if(a)return new Wr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Wr(new Hc.Web3(s),this.api)}}case"TRX":{if(a)return new Er(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Kc.TronWeb({fullHost:s});return o.setAddress(r),new Er(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Zi(s,this.api)}case"SRB":return new Ji(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Yi(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:x(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,Xc.Big)(n.amount).toFixed()}}};var Li=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r;let a=new Zn(r),s=new Jn(a),o=new Yn(s),c=new Xn(o);this.api=new Ln(c,r),this.tokenService=new Kn(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 Hn=require("@solana/web3.js");var Xi=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 Hn.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=Hn.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 Hn.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var ee=require("@stellar/stellar-sdk");var mB=require("@stellar/stellar-sdk"),Bm=mB.contract.Spec,Rm=mB.contract.Client;var Ur=class extends Rm{constructor(r){super(new Bm(["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 km=100,Mm=180,Ki=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new ee.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=await this.getContract(Ur,n.tokenAddress).name();if(Un(o))throw new w;let c=En(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 ee.Asset(u,A),d=ee.Operation.changeTrust({asset:m,limit:n.limit});return new ee.TransactionBuilder(a,{fee:km.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(d).setTimeout(Mm).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(Ur,r).name();if(Un(s))throw new w;let o=En(s);if(!o)throw new w;let[c,u]=o.split(":"),A=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ee.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 ee.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=ee.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new ee.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=ee.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(ee.rpc.Api.isSimulationRestore(c))return new ee.TransactionBuilder(s,{fee:(+ee.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(ee.Operation.restoreFootprint({})).setTimeout(ee.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new ee.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=ee.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new ee.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await xs(()=>a.getTransaction(n),c=>c.status===ee.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 Hi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.api=r}_suiBridgeService;async buildSendTxFromCustomTx(n,r,a){return this.suiBridgeService.buildRawTransactionSendFromCustomTx(n,r,a)}get suiBridgeService(){return this._suiBridgeService||(this._suiBridgeService=new Nn(this.nodeRpcUrlsConfig,this.api)),this._suiBridgeService}};var zi=class{constructor(n){this.service=n;this.srb=new Ki(n.nodeRpcUrlsConfig,n.params),this.sol=new Xi(n.nodeRpcUrlsConfig,n.params),this.sui=new Hi(n.nodeRpcUrlsConfig,n.api),this.evm=new Li(n.nodeRpcUrlsConfig,n.params)}srb;sol;sui;evm};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),cr=(r=>(r.INT="int",r.FLOAT="float",r))(cr||{});var me=require("big.js");var jr=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new tr(n)}},Qi=class{constructor(n,r=zn){this.nodeRpcUrlsConfig=n;E.addChainsProperties(r.additionalChainsProperties);let a=new Zn(r),s=new Jn(a),o=new Yn(s),c=new Xn(o);this.api=new Ln(c,r),this.tokenService=new Kn(this.api,n,r),this.bridge=new vi(this.api,n,r,this.tokenService),this.pool=new ji(this.api,n,r,this.tokenService),this.yield=new Vi(this.api,n,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;yield;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){U(n);let o;r=="float"?(_("amount",n,a.decimals),o=x(n,a.decimals).toFixed()):o=n;let c=Tt(o,a,await de(this.api,a)),u=await de(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=Js(m.totalSentAmount,u),T=this.getAmountFromVUsdFormatted(c,s,p),b;return(0,me.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:O(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){U(n),_("amountFloat",n,r.decimals);let a=x(n,r.decimals);if(a.eq(0))return 0;let s=Tt(a,r,await de(this.api,r)),o=We(s,r.decimals);return aa(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){U(n),_("amountFloat",n,r.decimals);let s=x(n,r.decimals);if(s.eq(0))return 0;let o=Tt(s,r,await de(this.api,r)),c=sr(o,a,await de(this.api,a)),u=We(o,a.decimals);return aa(u,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return U(n),_("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,me.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 U(n),_("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,me.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 de(this.api,r),async()=>await de(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){U(n),_("amountToSendFloat",n,r.decimals);let c=x(n,r.decimals),u=Tt(c,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}getAmountToBeReceivedComputeCctp(n,r,a,s){U(n),_("amountToSendFloat",n,r.decimals);let o=x(n,r.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new fe("Such route does not support CCTP protocol");let c=o.mul((0,me.Big)(1).minus(r.cctpFeeShare)).round(0,me.Big.roundUp),u=Je(c,r.decimals,a.decimals).round(0);return O(u,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new fe("Such route does not support CCTP V2 protocol");let c=o.mul((0,me.Big)(1).minus(r.cctpV2FeeShare)).round(0,me.Big.roundUp),u=Je(c,r.decimals,a.decimals).round(0);return O(u,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(n,r,a){U(n),_("amountToSendFloat",n,r.decimals);let s=x(n,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new ye("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 ye("Such route does not support OFT protocol");let c=s.mul((0,me.Big)(1).minus(o)).round(0,me.Big.roundUp),u=Je(c,r.decimals,a.decimals).round(0);return O(u,a.decimals).toFixed()}async getAmountToSend(n,r,a,s){return this.getAmountToSendCompute(n,r,a,s,()=>de(this.api,r),()=>de(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){U(n),_("amountToBeReceivedFloat",n,a.decimals);let c=x(n,a.decimals),u=Ls(c,a,o),A=Ys(u,r,s);if((0,me.Big)(A).lte(0))throw new ht;return O(A,r.decimals).toFixed()}getAmountToSendComputeCctp(n,r,a,s){U(n),_("amountToBeReceivedFloat",n,a.decimals);let o=x(n,a.decimals);switch(s){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new fe("Such route does not support CCTP protocol");let c=o.div((0,me.Big)(1).minus(r.cctpFeeShare)).round(0,me.Big.roundDown),u=Je(c,a.decimals,r.decimals).round(0);return O(u,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new fe("Such route does not support CCTP V2 protocol");let c=o.div((0,me.Big)(1).minus(r.cctpV2FeeShare)).round(0,me.Big.roundDown),u=Je(c,a.decimals,r.decimals).round(0);return O(u,r.decimals).toFixed()}}}async getAmountToSendComputeOft(n,r,a){U(n),_("amountToBeReceivedFloat",n,a.decimals);let s=x(n,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new ye("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 ye("Such route does not support OFT protocol");let c=s.div((0,me.Big)(1).minus(o)).round(0,me.Big.roundDown),u=Je(c,a.decimals,r.decimals).round(0);return O(u,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return ca(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 Ks(n)}async getExtraGasMaxLimits(n,r,a){return await ua(n,r,a,this.api)}async getVUsdFromAmount(n,r,a){U(n);let s;r=="float"?(_("amount",n,a.decimals),s=x(n,a.decimals).toFixed()):s=n;let o=Tt(s,a,await de(this.api,a));return{int:o,float:O(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await de(this.api,r))}getAmountFromVUsdFormatted(n,r,a){U(n);let s=sr(n,r,a);if((0,me.Big)(s).lt(0))throw new ht;return{int:s,float:O(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return Ec(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await de(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await de(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Uc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await de(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await de(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,me.Big)(o).lt(0))throw new ht;return s}async getSendAmountDetails(n,r,a,s){U(n);let o;return r=="float"?(_("amount",n,a.decimals),o=x(n,a.decimals).toFixed()):o=n,jc(o,a,await de(this.api,a),s,await de(this.api,s))}};function Om(i){return"solanaRpcUrl"in i}var ks=class{params;bridge;pool;yield;utils;service;constructor(n,r=zn){let a;Om(n)?a=new jr({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new jr(n),this.service=new Qi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.yield=this.service.yield,this.utils=new zi(this.service),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,YieldDoesNotSupportedError,assertYieldIsSupported,isYieldSupported,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
2
2
  //# sourceMappingURL=index.js.map