@allbridge/bridge-core-sdk 3.21.0 → 3.21.1-alpha.2

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 xc=Object.create;var Pr=Object.defineProperty;var Oc=Object.getOwnPropertyDescriptor;var Fc=Object.getOwnPropertyNames;var Nc=Object.getPrototypeOf,Dc=Object.prototype.hasOwnProperty;var yn=(i,n)=>()=>(i&&(n=i(i=0)),n);var Ui=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),Wc=(i,n)=>{for(var r in n)Pr(i,r,{get:n[r],enumerable:!0})},ps=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Fc(n))!Dc.call(i,s)&&s!==r&&Pr(i,s,{get:()=>n[s],enumerable:!(a=Oc(n,s))||a.enumerable});return i};var oe=(i,n,r)=>(r=i!=null?xc(Nc(i)):{},ps(n||!i||!i.__esModule?Pr(r,"default",{value:i,enumerable:!0}):r,i)),Uc=i=>ps(Pr({},"__esModule",{value:!0}),i);function zr(i){try{return(0,Kr.fromBase58)(i).length===lA}catch{return!1}}function Ne(i){return pA(i)&&gA(i)===ir}function Mn(i){return Ne(i)}function dA(i){return i.includes("::")?ca(i):i}function ca(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,Kr.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>dA(c.trim())):[];return{address:x(n),module:r,name:s,typeParams:o}}function ar(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?ca(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:ar(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function x(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(ir*2,"0")}`}function Ce(i,n=!1){return x(i,n)}function pA(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function gA(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var Kr,lA,ir,Ie=yn(()=>{Kr=require("@mysten/bcs"),lA=32;ir=32});var po,fA,yA,xt,Aa=yn(()=>{po=require("@mysten/bcs");Ie();fA=/^vector<(.+)>$/,yA=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,xt=class i{static parseFromStr(n,r=!1){if(n==="address")return{address:null};if(n==="bool")return{bool:null};if(n==="u8")return{u8:null};if(n==="u16")return{u16:null};if(n==="u32")return{u32:null};if(n==="u64")return{u64:null};if(n==="u128")return{u128:null};if(n==="u256")return{u256:null};if(n==="signer")return{signer:null};let a=n.match(fA);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(yA);if(s)return{struct:{address:r?x(s[1]):s[1],module:s[2],name:s[3],typeParams:s[5]===void 0?[]:i.parseStructTypeArgs(s[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${n}`)}static parseStructTypeArgs(n,r=!1){return(0,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 hA(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function bA(i){return f.bcs.enum("Option",{None:null,Some:i})}function va(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ba,value:i})}var f,H,De,Be,ua,ma,la,da,Hr,qe,pa,ga,fa,ya,ha,ba,Ta,Sa,Pa,wa,Ca,Ia,Ba,Ra,ka,Ma,xa,go,TA,Oa,fo,yo,Fa=yn(()=>{f=require("@mysten/bcs");Ie();Aa();H=f.bcs.bytes(ir).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!Ne(x(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(x(i)):i,output:i=>x((0,f.toHex)(i))}),De=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")}}),Be=f.bcs.struct("SuiObjectRef",{objectId:H,version:f.bcs.u64(),digest:De}),ua=f.bcs.struct("SharedObjectRef",{objectId:H,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),ma=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Be,SharedObject:ua,Receiving:Be}),la=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:ma}),da=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>da),struct:f.bcs.lazy(()=>ba),u16:null,u32:null,u256:null}),Hr=da.transform({input:i=>typeof i=="string"?xt.parseFromStr(i,!0):i,output:i=>xt.tagToString(i)}),qe=f.bcs.enum("Argument",{GasCoin:null,Input:f.bcs.u16(),Result:f.bcs.u16(),NestedResult:f.bcs.tuple([f.bcs.u16(),f.bcs.u16()])}),pa=f.bcs.struct("ProgrammableMoveCall",{package:H,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(Hr),arguments:f.bcs.vector(qe)}),ga=f.bcs.enum("Command",{MoveCall:pa,TransferObjects:f.bcs.struct("TransferObjects",{objects:f.bcs.vector(qe),address:qe}),SplitCoins:f.bcs.struct("SplitCoins",{coin:qe,amounts:f.bcs.vector(qe)}),MergeCoins:f.bcs.struct("MergeCoins",{destination:qe,sources:f.bcs.vector(qe)}),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(H)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:bA(Hr).transform({input:i=>i===null?{None:!0}:{Some:i},output:i=>i.Some??null}),elements:f.bcs.vector(qe)}),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(H),package:H,ticket:qe})}),fa=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(la),commands:f.bcs.vector(ga)}),ya=f.bcs.enum("TransactionKind",{ProgrammableTransaction:fa,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),ha=f.bcs.enum("TransactionExpiration",{None:null,Epoch:hA()}),ba=f.bcs.struct("StructTag",{address:H,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(da)}),Ta=f.bcs.struct("GasData",{payment:f.bcs.vector(Be),owner:H,price:f.bcs.u64(),budget:f.bcs.u64()}),Sa=f.bcs.struct("TransactionDataV1",{kind:ya,sender:H,gasData:Ta,expiration:ha}),Pa=f.bcs.enum("TransactionData",{V1:Sa}),wa=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Ca=f.bcs.enum("IntentVersion",{V0:null}),Ia=f.bcs.enum("AppId",{Sui:null}),Ba=f.bcs.struct("Intent",{scope:wa,version:Ca,appId:Ia});Ra=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())}),ka=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())}),Ma=f.bcs.struct("MultiSigPkMap",{pubKey:ka,weight:f.bcs.u8()}),xa=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(Ma),threshold:f.bcs.u16()}),go=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(Ra),bitmap:f.bcs.u16(),multisig_pk:xa}),TA=f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))}),Oa=f.bcs.struct("SenderSignedTransaction",{intentMessage:va(Pa),txSignatures:f.bcs.vector(TA)}),fo=f.bcs.vector(Oa,{name:"SenderSignedData"}),yo=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,SA,PA,ho,wA,CA,IA,bo,To,xn,BA,Na,vA,RA,kA,MA,xA,OA,So,Po=yn(()=>{y=require("@mysten/bcs");Fa();SA=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:H}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:H}),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:H,ticketId:H})}),PA=y.bcs.struct("ModuleId",{address:H,name:y.bcs.string()}),ho=y.bcs.struct("MoveLocation",{module:PA,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),wA=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}),CA=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),IA=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:H}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(ho),MoveAbort:y.bcs.tuple([ho,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:wA}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:CA}),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:SA}),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(H)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:H,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),bo=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:IA,command:y.bcs.option(y.bcs.u64())})}),To=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),xn=y.bcs.enum("Owner",{AddressOwner:H,ObjectOwner:H,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),BA=y.bcs.struct("TransactionEffectsV1",{status:bo,executedEpoch:y.bcs.u64(),gasUsed:To,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([H,y.bcs.u64()])),sharedObjects:y.bcs.vector(Be),transactionDigest:De,created:y.bcs.vector(y.bcs.tuple([Be,xn])),mutated:y.bcs.vector(y.bcs.tuple([Be,xn])),unwrapped:y.bcs.vector(y.bcs.tuple([Be,xn])),deleted:y.bcs.vector(Be),unwrappedThenDeleted:y.bcs.vector(Be),wrapped:y.bcs.vector(Be),gasObject:y.bcs.tuple([Be,xn]),eventsDigest:y.bcs.option(De),dependencies:y.bcs.vector(De)}),Na=y.bcs.tuple([y.bcs.u64(),De]),vA=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Na,xn])}),RA=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([De,xn]),PackageWrite:Na}),kA=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),MA=y.bcs.struct("EffectsObjectChange",{inputState:vA,outputState:RA,idOperation:kA}),xA=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Na,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),OA=y.bcs.struct("TransactionEffectsV2",{status:bo,executedEpoch:y.bcs.u64(),gasUsed:To,transactionDigest:De,gasObjectIndex:y.bcs.option(y.bcs.u32()),eventsDigest:y.bcs.option(De),dependencies:y.bcs.vector(De),lamportVersion:y.bcs.u64(),changedObjects:y.bcs.vector(y.bcs.tuple([H,MA])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([H,xA])),auxDataDigest:y.bcs.option(De)}),So=y.bcs.enum("TransactionEffects",{V1:BA,V2:OA})});var et,FA,b,le=yn(()=>{et=require("@mysten/bcs");Fa();Po();Aa();FA=require("@mysten/bcs"),b={...et.bcs,U8:et.bcs.u8(),U16:et.bcs.u16(),U32:et.bcs.u32(),U64:et.bcs.u64(),U128:et.bcs.u128(),U256:et.bcs.u256(),ULEB128:et.bcs.uleb128(),Bool:et.bcs.bool(),String:et.bcs.string(),Address:H,AppId:Ia,Argument:qe,CallArg:la,CompressedSignature:Ra,GasData:Ta,Intent:Ba,IntentMessage:va,IntentScope:wa,IntentVersion:Ca,MultiSig:go,MultiSigPkMap:Ma,MultiSigPublicKey:xa,ObjectArg:ma,ObjectDigest:De,ProgrammableMoveCall:pa,ProgrammableTransaction:fa,PublicKey:ka,SenderSignedData:fo,SenderSignedTransaction:Oa,SharedObjectRef:ua,StructTag:ba,SuiObjectRef:Be,Command:ga,TransactionData:Pa,TransactionDataV1:Sa,TransactionExpiration:ha,TransactionKind:ya,TypeTag:Hr,TransactionEffects:So,PasskeyAuthenticator:yo}});function ju(i,n=["<",">"]){let[r,a]=n,s=[],o="",c=0;for(let A=0;A<i.length;A++){let u=i[A];if(u===r&&c++,u===a&&c--,c===0&&u===","){s.push(o.trim()),o="";continue}o+=u}return s.push(o.trim()),s}function he(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=ju(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function Yo(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function k(i,n){return Yo(n)?n:i.object(n)}function $e(i,n,r){if(Yo(n))return k(i,n);function a(m){let{typeName:l,typeArgs:g}=he(m);switch(l){case"bool":return b.Bool;case"u8":return b.U8;case"u16":return b.U16;case"u32":return b.U32;case"u64":return b.U64;case"u128":return b.U128;case"u256":return b.U256;case"address":return b.Address;case"0x1::string::String":case"0x1::ascii::String":return b.String;case"0x2::object::ID":return b.Address;case"0x1::option::Option":return b.option(a(g[0]));case"vector":return b.vector(a(g[0]));default:throw new Error(`invalid primitive type ${m}`)}}function s(m){for(let l of m){if(typeof l>"u"||l===null)return!0;if(Array.isArray(l))return s(l)}return!1}function o(m){for(let l of m){if(!Array.isArray(l)){if(l===null)continue;switch(typeof l){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return o(l)}return!0}function c(m){for(let l of m){if(!Array.isArray(l))switch(typeof l){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return c(l)}return!1}let{typeName:A,typeArgs:u}=he(r);switch(A){case"0x1::option::Option":if(n===null)return i.pure.option("bool",null);if(o([n]))return i.pure(a(r).serialize(n));if(c([n]))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.moveCall({target:"0x1::option::some",typeArguments:[u[0]],arguments:[$e(i,n,u[0])]});case"vector":if(!Array.isArray(n))throw new Error("expected an array for vector type");if(n.length===0)return i.pure(b.vector(b.Bool).serialize([]));if(s(n))throw new Error("the provided array contains undefined or null values");if(o(n))return i.pure(a(r).serialize(n));if(c(n))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.makeMoveVec({type:u[0],elements:n});default:return i.pure(a(r).serialize(n))}}function Eu(i){let n=i.split("0x").join("");for(let r=0;r<n.length;r++)if(n[r]!=="0")return`0x${n.substring(r)}`;return"0x0"}function v(i){let{typeName:n,typeArgs:r}=he(i);switch(n){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return n;case"vector":return`vector<${v(r[0])}>`;default:{let a=n.split("::");a[0]=Eu(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>v(o)).join(",")}>`:s}}}function _(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var de=yn(()=>{"use strict";le()});var zt=Ui((Yg,Ko)=>{"use strict";de();var Ha=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Gu=new Ha;Ko.exports=Gu});var ts=Ui((Qg,nc)=>{"use strict";de();var es=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},_u=new es;nc.exports=_u});var is=Ui((nf,ic)=>{"use strict";de();var rs=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Vu=new rs;ic.exports=Vu});var Am={};Wc(Am,{AddressStatus:()=>Cr,AllbridgeCoreSdk:()=>ds,AmountFormat:()=>Yn,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>Vn,CCTPDoesNotSupportedError:()=>Ge,ChainSymbol:()=>Me,ChainType:()=>Q,ErrorCode:()=>gs,ExtraGasMaxLimitExceededError:()=>_n,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>ft,InvalidAmountError:()=>gt,InvalidGasFeePaymentOptionError:()=>hn,InvalidMessengerOptionError:()=>ji,InvalidTxError:()=>qt,JupiterError:()=>me,Messenger:()=>Ye,MethodNotSupportedError:()=>ce,NodeRpcUrlNotInitializedError:()=>$n,SdkError:()=>C,SdkRootError:()=>ae,SolanaAutoTxFee:()=>jr,TimeoutError:()=>Tn,TxTooLargeError:()=>Zn,VerifyTxError:()=>bn,mainnet:()=>Gn,nodeRpcUrlsDefault:()=>Ec,nodeUrlsDefault:()=>jc});module.exports=Uc(Am);var Gn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},jc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Ec={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 ut=require("big.js");var ae=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},C=class extends ae{constructor(n){super("SdkError",n)}},gt=class extends ae{constructor(n){super("InvalidAmountError",n)}},Qt=class extends ae{constructor(n){super("AmountNotEnoughError",n)}},ft=class extends ae{constructor(n){super("InsufficientPoolLiquidityError",n)}},me=class extends ae{constructor(n){super("JupiterError",n)}},hn=class extends ae{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},ji=class extends ae{constructor(n){super("InvalidMessengerOptionError",n)}},ce=class extends ae{constructor(n){super("MethodNotSupportedError",n)}},bn=class extends ae{constructor(n){super("VerifyTxError",n)}},qt=class extends ae{constructor(n){super("InvalidTxError",n)}},_n=class extends ae{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},Vn=class extends ae{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},Tn=class extends ae{constructor(n){super("TimeoutError",n)}},$n=class extends ae{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},Ge=class extends ae{constructor(n){super("CCTPDoesNotSupportedError",n)}},Zn=class extends ae{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},gs=(w=>(w.SDK_ERROR="SdkError",w.INVALID_AMOUNT_ERROR="InvalidAmountError",w.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",w.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",w.JUPITER_ERROR="JupiterError",w.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",w.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",w.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",w.VERIFY_TX_ERROR="VerifyTxError",w.INVALID_TX_ERROR="InvalidTxError",w.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",w.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",w.TIMEOUT_ERROR="TimeoutError",w.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",w.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",w.TX_TOO_LARGE="TxTooLargeError",w))(gs||{});var Me=(h=>(h.BSC="BSC",h.ETH="ETH",h.BAS="BAS",h.SOL="SOL",h.TRX="TRX",h.POL="POL",h.ARB="ARB",h.CEL="CEL",h.AVA="AVA",h.SRB="SRB",h.STLR="STLR",h.OPT="OPT",h.SUI="SUI",h))(Me||{}),Q=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(Q||{});var Gc={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},_c={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"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},$=(()=>{let i={..._c};return{addChainsProperties(n){i={...i,...n}},getChainProperty(n){let r=i[n];if(!r)throw new C(`Cannot find chain properties for ${n}`);return r},getChainsProperties(){return i},getChainDecimalsByType(n){return Gc[n]}}})();var vs=oe(require("axios"));var fs="3.21.0";var B=require("big.js"),wr=oe(require("bn.js"));function Ei(i,n){return(0,B.Big)(100).minus((0,B.Big)(100).times(n).div(i)).toNumber()}function en(i,n){return _t(i,n,3).round(0,B.Big.roundDown)}function xe(i,n){return _t(i,3,n)}function _t(i,n,r){let a=(0,B.Big)(r).minus(n).toNumber();return(0,B.Big)(i).times(Jn(a))}function Jn(i){return(0,B.Big)(10).pow(i)}function L(i,n){return(0,B.Big)(i).times(Jn(n))}function G(i,n){let r=(0,B.Big)(i);return r.eq(0)?(0,B.Big)(0):(0,B.Big)(r).div(Jn(n))}function Te(i){return G((0,B.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function yt(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),A=en(c,r),u=(0,B.Big)(a.tokenBalance).plus(A),m=ht(u,a.aValue,a.dValue);return(0,B.Big)(a.vUsdBalance).minus(m).round(0,B.Big.roundDown).toFixed()}function Ln(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=ht(o,a.aValue,a.dValue),A=xe((0,B.Big)(a.tokenBalance).minus(c),r),u=(0,B.Big)(A).times(n);return(0,B.Big)(A).minus(u).round(0,B.Big.roundDown).toFixed()}function ys(i,n){let r=(0,B.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=ht(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function hs(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 ft;let o=ht(s,a.aValue,a.dValue),c=(0,B.Big)(o).minus(a.tokenBalance),A=xe(c,r),u=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),m=(0,B.Big)(A).times(u).round(0,B.Big.roundUp);return(0,B.Big)(A).plus(m).round(0,B.Big.roundDown)}function bs(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),A=en(c,r),u=(0,B.Big)(a.tokenBalance).minus(A);if(u.lte(0))throw new ft;let m=ht(u,a.aValue,a.dValue);return(0,B.Big)(m).minus(a.vUsdBalance).round(0,B.Big.roundDown)}function ht(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),A=(0,B.Big)(8).times(n).times(i),u=a.times(i).plus(c).div(A).round(0,B.Big.roundDown);return u.eq(0)?(0,B.Big)(0):u.plus(1)}function Ts(i,n,r,a){let s=new wr.default(i),o=new wr.default(r),c=new wr.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Ss(i){return(0,B.Big)(i).gt(0)?`${Number((0,B.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Ps(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),A=o.times(o),u=c.times(c).times(c),m=A.plus(u),l=(0,B.Big)(m).sqrt(),g=(0,B.Big)(Math.cbrt(+o.plus(l).toFixed())),S=(0,B.Big)(Math.cbrt(+o.minus(l).toFixed()));return g.plus(S).toFixed()}var Cr=(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))(Cr||{});var Ye=(a=>(a[a.ALLBRIDGE=1]="ALLBRIDGE",a[a.WORMHOLE=2]="WORMHOLE",a[a.CCTP=3]="CCTP",a))(Ye||{});function ws(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=Lc(a,s);return o&&(n[a]=o),n},{})}function Cs(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=Sn({chainSymbol:s,poolAddress:o.poolAddress}),A=Te(o.poolInfo);n[c]={...o.poolInfo,imbalance:A}}}return n}function Vc(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function $c(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function Zc(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=Jc(a),n),{})}function Jc(i){return Object.entries(i).reduce((n,[r,a])=>{let s=$c(r);return s&&(n[s]=a),n},{})}function Lc(i,n){let r=$.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,transferTime:Zc(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>Vc(a,s))}}function Sn(i){return i.chainSymbol+"_"+i.poolAddress}function Is(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 Bs(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=Te(c),n[Sn({chainSymbol:s,poolAddress:o})]=c}return n}var Ir=class{api;constructor(n){this.api=vs.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+fs},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:ws(n),poolInfoMap:Cs(n)}}async getPendingInfo(){let{data:n}=await this.api.get("/pending-info");return n}async getGasBalance(n,r){let{data:a}=await this.api.get(`/check/${n}/${r}`);return a}async getTransferStatus(n,r){let{data:a}=await this.api.get(`/chain/${n}/${r}`);return a}async getReceiveTransactionCost(n){let{data:r}=await this.api.post("/receive-fee",n,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice}}async getPoolInfoMap(n){let r=n instanceof Array?n:[n],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return Bs(a)}};var Xc=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),Rs="__cache__",Gi=function(i){return typeof i!="string"?Rs+JSON.stringify(i):Rs+i},_i=class{constructor(n={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=n.defaultTtl||60*1e3}put(n,r,a){let s=(a?a.ttl:void 0)||this.defaultTtl,o=(a?a.callback:void 0)||function(){},c=Gi(n),A=this.cache[c];A&&clearTimeout(A.handle);let u=setTimeout(()=>this.remove(n),s);this.cache[c]={handle:u,data:r,callback:o}}get(n){let r=this.cache[Gi(n)];return r&&r.data}remove(n){let r=Gi(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)Xc(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Rt=_i;var Vi=20*1e3,Yc=55*1e3,Br=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new Rt({defaultTtl:Yc}),this.receivedTransactionCache=new Rt({defaultTtl:Vi}),this.pendingInfoCache=new Rt({defaultTtl:Vi}),this.gasBalanceCache=new Rt({defaultTtl:Vi})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let n="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(n);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(n,a),a}async getGasBalance(n,r){let a=`GAS_BALANCE_${n}_${r}`,s=this.gasBalanceCache.get(a);if(s)return s;let o=this.apiClient.getGasBalance(n,r);return this.gasBalanceCache.put(a,o),o}async getPendingInfo(){let n="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(n);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(n,a),a}async getReceiveTransactionCost(n){let r=`RECEIVE_TX_COST_${n.sourceChainId}_${n.destinationChainId}_${n.messenger}`,a=this.receivedTransactionCache.get(r);if(a)return a;let s=await this.apiClient.getReceiveTransactionCost(n);return this.receivedTransactionCache.put(r,s),s}async getTransferStatus(n,r){return this.apiClient.getTransferStatus(n,r)}async getPoolInfoMap(n){return this.apiClient.getPoolInfoMap(n)}};var vr=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 Rr=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:ks(o.tokens,n,this.isStaging)})}return a}async tokens(n){return ks(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 ks(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(Kc)}function Kc(i){let{flags:n,...r}=i;return r}var zc=55*1e3,kr=class{constructor(n){this.client=n;this.poolInfoCache=new $i}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[Sn(n)];if(s)return s;throw new C("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(Is(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(Sn(n),r)}},$i=class{cache;constructor(){this.cache=new Rt({defaultTtl:zc})}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=Sn(n);return this.cache.get(r)}};var lc=require("tronweb"),dc=require("web3");var Zi=require("big.js");async function ue(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function z(i){if((0,Zi.Big)(i).lte(0))throw new gt("Amount must be greater than zero")}function q(i,n,r){let a=(0,Zi.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new Vn(i,o.length,r)}async function Mr(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new Tn(n)),r)})])}async function Ji(i,n,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let s=0;for(;;)try{return await Mr(i(),n,a)}catch{if(++s>=r)throw new Tn(n)}}async function Ms(i,n,r,a=1.5,s=!1){let o=[],c=0,A=await i();if(o.push(A),!n(A))return o;let u=new Date(Date.now()+r*1e3).valueOf(),m=1e3,l=m;for(;Date.now()<u;){let g=o[o.length-1];if(g===void 0||!n(g))break;c++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${l}ms so far, of total ${r*1e3}ms)`),await new Promise(h=>setTimeout(h,m)),m=m*a,new Date(Date.now()+m).valueOf()>u&&(m=u-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),l=m+l;let S=await i(g);o.push(S),s&&n(S)&&console.info(`${c}. Called ${i.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var Xs=require("big.js");var Hc={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"}]},xs=Hc;var Qc={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Os=Qc;var Nr=oe(require("@project-serum/anchor")),qi=require("@solana/web3.js");var ge=oe(require("@project-serum/anchor")),fe=require("@solana/web3.js");async function Ke(i,n){return ge.utils.token.associatedAddress({mint:n,owner:i})}async function Vt(i){let[n]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("config")],i);return n}async function Fs(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function Xn(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function Pn(i){let n=await Vt(i),[r]=await fe.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function Ns(i,n){let[r]=await fe.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function wn(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function Ds(i,n,r){let[a]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function Li(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function Xi(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function Ws(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function Yi(i,n,r){let[a]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Us(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function js(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Es(i,n){let[r]=fe.PublicKey.findProgramAddressSync([ge.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function Gs(i,n,r,a){let s=tn("message_transmitter",r),o=tn("token_messenger",a),c=tn("__event_authority",a),A=tn("token_minter",a),u=tn("local_token",a,[n]),m=tn("remote_token_messenger",a,[i.toString()]),l=tn("sender_authority",a);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:c,tokenMinter:A,localToken:u,remoteTokenMessengerKey:m,authorityPda:l}}function tn(i,n,r=[]){let a=[Buffer.from(ge.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(ge.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 fe.PublicKey.findProgramAddressSync(a,n)[0]}var _s=require("@project-serum/anchor"),xr=require("@solana/web3.js");function $t(i,n){let r=new xr.Connection(i,"confirmed"),a=new xr.PublicKey(n);return new _s.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var $s=require("@solana/web3.js"),Zs=require("@stellar/stellar-sdk"),bt=require("big.js"),zi=oe(require("randombytes")),Ki=require("tronweb");function kt(i,n,r){let a;switch(n){case"EVM":{a=Vs(i);break}case"SOLANA":{a=new $s.PublicKey(i).toBuffer();break}case"TRX":{a=qc(i);break}case"SRB":{a=new Zs.Address(i).toBuffer();break}case"SUI":{a=Vs(i);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(i){return i.replace(/^0x/i,"")}function Js(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function Vs(i){let r=Js(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function qc(i){let n=Or(i),r=Js(n);return eA(r,32)}function Or(i){let n=Ki.utils.crypto.decodeBase58Address(i);return n?Ki.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function eA(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Fr(){return(0,zi.default)(32)}function Tt(){let i=(0,zi.default)(32).readBigInt64BE();return i<0?i*-1n:i}function St(i,n){let r={},a=n.sourceToken;if(r.amount=L(n.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=n.fromAccountAddress,i==="SUI"){if(!a.originTokenAddress)throw new C("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 C("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=n.destinationToken.originTokenAddress}else r.toTokenAddress=kt(n.destinationToken.tokenAddress,i,i);return r.minimumReceiveAmount=n.minimumReceiveAmount?L(n.minimumReceiveAmount,n.destinationToken.decimals).toFixed():"0",r}async function He(i,n,r){let a={};a.fromChainId=n.sourceToken.allbridgeChainId,a.fromChainSymbol=n.sourceToken.chainSymbol;let s=$.getChainProperty(n.destinationToken.chainSymbol).chainType;if(i==="SUI"){if(!n.sourceToken.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=n.sourceToken.originTokenAddress}else a.fromTokenAddress=n.sourceToken.tokenAddress;a.toChainId=n.destinationToken.allbridgeChainId,a.toTokenAddress=n.destinationToken.tokenAddress,n.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let o=n.sourceToken;if(n.messenger===3){if(!o.cctpAddress||!n.destinationToken.cctpAddress)throw new Ge("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress}else a.contractAddress=o.bridgeAddress;a.messenger=n.messenger,a.fromAccountAddress=n.fromAccountAddress,a.amount=L(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:A}=n;if(!c){let g=(await Hi(a.fromChainId,n.sourceToken.chainType,a.toChainId,o.decimals,a.messenger,r))[a.gasFeePaymentMethod];if(!g)throw new hn;c=g.int,A="int"}if(A=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=L(c,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=L(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:u,extraGasFormat:m}=n;if(u&&+u>0){if(m=="float")switch(a.gasFeePaymentMethod){case"native":a.extraGas=L(u,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.extraGas=L(u,o.decimals).toFixed(0);break}else a.extraGas=u;await nA(a.extraGas,a.gasFeePaymentMethod,o,n.destinationToken,r)}return i!=="SUI"&&(a.fromTokenAddress=kt(a.fromTokenAddress,i,i)),a.toAccountAddress=kt(n.toAccountAddress,s,i),a.toTokenAddress=kt(a.toTokenAddress,s,i),a.gasFeePaymentMethod=="stablecoin"&&tA(a.amount,o.decimals,a.fee,a.extraGas),a}function tA(i,n,r,a){let s=(0,bt.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new Qt(`Amount not enough to pay fee, ${G((0,bt.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function Hi(i,n,r,a,s,o){let c=await o.getReceiveTransactionCost({sourceChainId:i,destinationChainId:r,messenger:s}),A={native:{int:c.fee,float:G(c.fee,$.getChainDecimalsByType(n)).toFixed()}};if(c.sourceNativeTokenPrice){let u=_t(new bt.Big(c.fee).mul(c.sourceNativeTokenPrice),$.getChainDecimalsByType(n),a).toFixed(0,bt.Big.roundUp);A.stablecoin={int:u,float:G(u,a).toFixed()}}return A}async function nA(i,n,r,a,s){let c=(await Qi(r,a,s)).extraGasMax[n];if(!c)throw new hn(`Impossible to pay extra gas by '${n}' payment method`);let A=c.int;if((0,bt.Big)(i).gt(A))throw new _n(`Extra gas ${i} in int format, exceeded limit ${A} for '${n}' payment method`)}async function Qi(i,n,r){let a={},s=await r.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:n.allbridgeChainId,messenger:1}),o=n.txCostAmount.maxAmount,c=G(o,$.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,bt.Big)(c).div(s.exchangeRate).toFixed($.getChainDecimalsByType(i.chainType),bt.Big.roundDown),u=L(A,$.getChainDecimalsByType(i.chainType)).toFixed(0);if(a.native={int:u,float:A},s.sourceNativeTokenPrice){let m=(0,bt.Big)(A).mul(s.sourceNativeTokenPrice).toFixed(i.decimals,bt.Big.roundDown);a.stablecoin={int:L(m,i.decimals).toFixed(0),float:m}}return{extraGasMax:a,destinationChain:{gasAmountMax:{int:o,float:c},swap:{int:n.txCostAmount.swap,float:G(n.txCostAmount.swap,$.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:G(n.txCostAmount.transfer,$.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Ls(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Dr(i,n,r,a){let s,o=new qi.PublicKey(n),c=new qi.PublicKey(r),A=await Ke(o,c),u=$t(a,n);Nr.setProvider(u);let m=await Nr.Spl.token(u).account.token.fetchNullable(A);if(m?.authority.equals(o))s=kt(A.toBase58(),"SOLANA",i);else{let l=await u.connection.getTokenAccountsByOwner(o,{mint:c});if(l.value.length===0&&!m)s=kt(A.toBase58(),"SOLANA",i);else if(l.value.length>0){let g=l.value[0];if(!g?.pubkey)throw new C("First token account or its public key is undefined");s=kt(g.pubkey.toBase58(),"SOLANA",i)}else throw new C("Associated account has wrong owner")}return s}var Oe=class{};var Kn=class extends Oe{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=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,g=this.getBridgeContract(s).methods.swap(a,c,u,A,m);return Promise.resolve({from:o,to:s,data:g.encodeABI()})}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),{amount:s,contractAddress:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,messenger:g,fee:S,gasFeePaymentMethod:h,extraGas:T}=a,I="0x"+Fr().toString("hex"),w,R,O=S;if(T&&(O=(0,Xs.Big)(O).plus(T).toFixed()),g===3){let U=await this.buildRawTransactionCctpSend(r,a,O);w=U.sendMethod,R=U.value}else{let U=this.getBridgeContract(o);h==="stablecoin"?(w=U.methods.swapAndBridge(A,s,m,u,l,I,g,O),R="0"):(w=U.methods.swapAndBridge(A,s,m,u,l,I,g,0),R=O)}return Promise.resolve({from:c,to:o,value:R,data:w.encodeABI()})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,contractAddress:c,toChainId:A,toAccountAddress:u,gasFeePaymentMethod:m}=a,l=this.getCctpBridgeContract(c),g,S;if(r.destinationToken.chainType==="SOLANA"){let h=await Dr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));m==="stablecoin"?(g=l.methods.bridgeWithWalletAddress(o,h,u,A,s),S="0"):(g=l.methods.bridgeWithWalletAddress(o,h,u,A,0),S=s)}else m==="stablecoin"?(g=l.methods.bridge(o,u,A,s),S="0"):(g=l.methods.bridge(o,u,A,0),S=s);return{sendMethod:g,value:S}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...r,gas:a,...s});return{txId:o.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(xs.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Os.abi,r)}};var Wr=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},a)}async send(n,r){return z(n.amount),q("amount",n.amount,n.sourceToken.decimals),Ls(n)?Ur(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Ur(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var te=require("@project-serum/anchor"),J=require("@solana/web3.js"),_e=require("big.js");var Hn={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 Ys={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 Ks=require("@project-serum/anchor"),zs=oe(require("big.js")),Qn=require("web3");async function Cn(i,n){return await Ks.Spl.token(n).account.token.fetch(i)}async function Hs(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,zs.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 yt(i,{decimals:s,feeShare:o},c)}function Qs(i){let n=i.amount,r="0x"+i.recipient.toString("hex"),a=i.sourceChainId,s=i.destinationChainId,o="0x"+i.receiveToken.toString("hex"),c="0x"+i.nonce.toString("hex"),A=1,u="0x"+i.chainBridge.toString("hex"),m=Qn.Web3.utils.encodePacked({t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:o},{t:"uint256",v:c},{t:"uint8",v:A});if(!m)throw new C("message cannot be undefined");let l=Qn.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),g=Buffer.from(l.replace("0x",""),"hex");g[0]=a,g[1]=s;let S=Qn.Web3.utils.encodePacked({t:"bytes32",v:"0x"+g.toString("hex")},{t:"bytes32",v:u});if(!S)throw new qt("messageWithSigner cannot be undefined");let h=Qn.Web3.utils.keccak256(Buffer.from(S.replace("0x",""),"hex")),T=Buffer.from(h.replace("0x",""),"hex");return T[0]=g[0],T[1]=g[1],T}var Fe=require("@solana/web3.js"),qs=require("big.js");var ea=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new ea.AddressLookupTableAccount({key:r.accountKey,state:ea.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new C("Cannot get AccountInfo");return a.data}))})))}var jr="AUTO";async function In(i,n,r){let a=new Fe.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await to(i.instructions,s,n,a)}async function eo(i,n,r){let a=new Fe.Connection(r,"confirmed"),s=await nn(i,a),o=Fe.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:s});if(i.serialize().length>1232)throw new Zn;await to(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function to(i,n,r,a){if(n>0){let s=rA(n,i);if(r?.solana){let o=r.solana;if(o===jr)await ta(i,a);else if("pricePerUnitInMicroLamports"in o)await ta(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,qs.Big)(o.extraFeeInLamports).div(s).mul(Jn(6)).toFixed(0);await ta(i,a,c)}}}}function rA(i,n){let r=n.findIndex(o=>o.programId.equals(Fe.ComputeBudgetProgram.programId)&&Fe.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),a=Number((i*1.3).toFixed(0)),s=Fe.ComputeBudgetProgram.setComputeUnitLimit({units:a});return r>=0?n[r]=s:n.push(s),a.toString()}async function ta(i,n,r){let a=i.findIndex(c=>c.programId.equals(Fe.ComputeBudgetProgram.programId)&&Fe.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await iA(n)),o=Fe.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function iA(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var no=require("@solana/spl-token"),rn=require("@solana/web3.js"),Bn=oe(require("axios"));var Er=class{connection;jupiterUrl;maxAccounts;constructor(n,r,a){this.connection=new rn.Connection(n),this.jupiterUrl=r.replace(/\/$/,""),this.maxAccounts=a}async getJupiterSwapTx(n,r,a,s){let o;try{let g=s?"ExactOut":"ExactIn",S=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${no.NATIVE_MINT.toString()}&amount=${a}&swapMode=${g}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(S+=`&maxAccounts=${this.maxAccounts}`),o=await Bn.default.get(S)}catch(g){throw g instanceof Bn.AxiosError&&g.response&&g.response.data&&g.response.data.error?new me(g.response.data.error):new me("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new me("Cannot get inAmount");let A;try{A=await Bn.default.post(`${this.jupiterUrl}/swap`,{quoteResponse:o.data,userPublicKey:n,wrapAndUnwrapSol:!0})}catch(g){throw g instanceof Bn.AxiosError&&g.response&&g.response.data&&g.response.data.error?new me(g.response.data.error):new me("Cannot get swap transaction")}let u;if(A?.data?.swapTransaction)u=A.data.swapTransaction;else throw new me("Cannot get swap transaction");let m=Buffer.from(u,"base64"),l=rn.VersionedTransaction.deserialize(m);return s?{tx:l,amountIn:c}:{tx:l}}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 A=r.signatures[0];if(!A)throw new C("Signature is undefined");n.signatures.push(A)}return n}catch(a){throw a instanceof Error&&a.message?new me(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new me("Some error occurred during creation final swap and bridge transaction")}}};var na=1e6,ro=1.1,Gr=class extends Oe{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new Er(r,a.jupiterUrl,a.jupiterMaxAccounts)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,s,o){let{fromAccountAddress:c,amount:A,contractAddress:u,fromTokenAddress:m,toTokenAddress:l,toAccountAddress:g,minimumReceiveAmount:S}=r,h=c,T=u,I=m,w=l,R=s,O=g,U=new J.PublicKey(h),Ae=$t(this.solanaRpcUrl,U.toString()),X=new te.Program(Hn,T,Ae),V=await Pn(X.programId),Re=await Vt(X.programId),se=new J.PublicKey(I),mt=await wn(se,X.programId),lt=new J.PublicKey(a),vt=await Ke(U,se),Je=new J.PublicKey(O),we=new J.PublicKey(w),Ee=await wn(we,X.programId),Le=new J.PublicKey(R),ke=await Ke(Je,we),dt=[te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:na})];try{await Cn(ke,Ae)}catch{let Mc=await te.Spl.associatedToken(Ae).methods.create().accounts({mint:we,owner:Je,associatedAccount:ke}).instruction();dt.push(Mc)}let pt=await X.methods.swap(new te.BN(A),new te.BN(S||0)).accounts({payer:U,config:Re,bridgeAuthority:V,user:U,sendBridgeToken:mt,sendMint:se,sendPool:lt,sendUserToken:vt,receiveBridgeToken:Ee,receiveMint:we,receivePool:Le,receiveUserToken:ke}).preInstructions(dt).transaction(),Xe=Ae.connection;return pt.recentBlockhash=(await Xe.getLatestBlockhash()).blockhash,pt.feePayer=U,await In(pt,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(pt,Xe)}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),s=this.addPoolAddress(r,a),o=s.gasFeePaymentMethod=="stablecoin",c;if(o)try{let{tx:m,solTxSendUpdatedParams:l}=await this.processJup(s,r,!0);c=m,s={...s,...l}}catch{try{let{tx:l,solTxSendUpdatedParams:g}=await this.processJup(s,r,!1);c=l,s={...s,...g}}catch(l){throw l instanceof ae?l:l instanceof Error&&l.message?new me(`Some error occurred during creation Jupiter swap transaction. ${l.message}`):new me("Some error occurred during creation Jupiter swap transaction")}}let A,u;switch(a.messenger){case 1:{let m=await this.prepareSwapAndBridgeData(s);A=await this.buildSwapAndBridgeAllbridgeTransaction(m);break}case 2:{let m=await this.prepareSwapAndBridgeData(s),{transaction:l,messageAccount:g}=await this.buildSwapAndBridgeWormholeTransaction(m);A=l,u=g;break}case 3:{let m=await this.prepareSwapAndBridgeCctpData(s),{transaction:l,messageSentEventDataKeypair:g}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,m);A=l,u=g;break}}if(o){if(!c)throw new me("Swap tx is absent");A=await this.jupiterService.amendJupiterWithSdkTx(c,A)}return await eo(A,r.txFeeParams,this.solanaRpcUrl),u&&A.sign([u]),A}async processJup(r,a,s){let{fee:o,extraGas:c,gasFeePaymentMethod:A}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken.decimals,r),u=s?(0,_e.Big)(o):(0,_e.Big)(r.fee);c&&(u=u.plus(c)),s||(u=u.mul(ro));let{tx:m,amountIn:l}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,u.toFixed(0),s),g;if(s){if(!l)throw new me("Cannot get inAmount");g=(0,_e.Big)(r.amount).minus((0,_e.Big)(l).mul(ro)).toFixed(0)}else g=(0,_e.Big)(r.amount).minus(u).toFixed(0);if((0,_e.Big)(g).lte(0))throw new Qt(`Amount not enough to pay fee, ${G((0,_e.Big)(g).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:m,solTxSendUpdatedParams:{amount:g,fee:o,extraGas:c,gasFeePaymentMethod:A}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger})).sourceNativeTokenPrice,o=(0,_e.Big)(a.fee).div(s).mul((0,_e.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0),c;return a.extraGas&&(c=(0,_e.Big)(a.extraGas).div(s).mul((0,_e.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0)),{fee:o,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,s){return te.web3.SystemProgram.transfer({fromPubkey:a,toPubkey:s,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:s,fromChainId:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,poolAddress:g,extraGas:S}=r,h=A,T=c,I=u,w=l,R=m,O=s,U=o,Ae=$t(this.solanaRpcUrl,T),X=new te.Program(Hn,O,Ae),V=Array.from(Fr()),Re=new J.PublicKey(g),se=await Hs(a,X,Re),mt=await Fs(V,X.programId),lt=await Pn(X.programId),vt=await Ke(new J.PublicKey(T),new J.PublicKey(h)),Je=await wn(new J.PublicKey(h),X.programId),we=await Li(I,X.programId),Ee=await Ds(I,Buffer.from(w),X.programId),Le=await Vt(X.programId),ke=await X.account.config.fetch(Le),dt=await Xn(I,ke.gasOracleProgramId),pt=await Xn(U,ke.gasOracleProgramId),Xe=Qs({amount:se,recipient:Buffer.from(R),nonce:Buffer.from(V),receiveToken:Buffer.from(w),destinationChainId:I,sourceChainId:U,chainBridge:(await Pn(X.programId)).toBuffer()}),Z={};return Z.bridge=X,Z.amount=new te.BN(a),Z.vusdAmount=new te.BN(se),Z.nonce=V,Z.recipient=Array.from(R),Z.receiveToken=Array.from(w),Z.poolAccount=Re,Z.lockAccount=mt,Z.bridgeAuthority=lt,Z.userToken=vt,Z.bridgeTokenAccount=Je,Z.chainBridgeAccount=we,Z.otherBridgeTokenAccount=Ee,Z.userAccount=new J.PublicKey(T),Z.destinationChainId=I,Z.mint=new J.PublicKey(h),Z.config=Le,Z.configAccountInfo=ke,Z.gasPrice=dt,Z.thisGasPrice=pt,Z.message=Xe,S&&(Z.extraGasInstruction=this.getExtraGasInstruction(S,Z.userAccount,Le)),Z}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:S,chainBridgeAccount:h,otherBridgeTokenAccount:T,userAccount:I,destinationChainId:w,mint:R,config:O,configAccountInfo:U,gasPrice:Ae,thisGasPrice:X,message:V,extraGasInstruction:Re}=r,se=U.allbridgeMessengerProgramId,mt=await Xi(w,se),lt=await Vt(se),vt=await Ws(V,se),Je=[];Re&&Je.push(Re);let we=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:w,recipient:c,receiveToken:A}).accounts({mint:R,user:I,config:O,lock:m,pool:u,gasPrice:Ae,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:S,chainBridge:h,messenger:se,messengerGasUsage:mt,messengerConfig:lt,sentMessageAccount:vt,otherBridgeToken:T}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:na})]).postInstructions(Je).transaction(),Ee=$t(this.solanaRpcUrl,I.toString()).connection;return we.recentBlockhash=(await Ee.getLatestBlockhash()).blockhash,we.feePayer=I,await this.convertToVersionedTransaction(we,Ee)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new J.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new C("Cannot find allbridgeLookupTableAccount");let o=new te.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new te.web3.VersionedTransaction(o)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:S,chainBridgeAccount:h,otherBridgeTokenAccount:T,userAccount:I,destinationChainId:w,mint:R,config:O,configAccountInfo:U,gasPrice:Ae,thisGasPrice:X,message:V,extraGasInstruction:Re}=r,se=this.params.wormholeMessengerProgramId,[mt]=J.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new J.PublicKey(se)),[lt]=J.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new J.PublicKey(se)),[vt]=J.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),l.toBuffer()],new J.PublicKey(se)),Je=await Xi(w,U.wormholeMessengerProgramId),we=await Vt(U.wormholeMessengerProgramId),Ee=J.Keypair.generate(),Le=$t(this.solanaRpcUrl,I.toString()),ke=await Le.connection.getAccountInfo(mt);if(ke==null)throw new C("Cannot fetch wormhole bridge account info");let dt=new te.BN(ke.data.slice(16,24),"le").toString(),pt=J.SystemProgram.transfer({fromPubkey:I,toPubkey:lt,lamports:+dt}),Xe=[];Re&&Xe.push(Re);let Z={mint:R,user:I,config:O,lock:m,pool:u,gasPrice:Ae,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:S,chainBridge:h,otherBridgeToken:T,messengerGasUsage:Je,wormholeProgram:se,bridge:mt,message:Ee.publicKey,wormholeMessenger:U.wormholeMessengerProgramId,sequence:vt,feeCollector:lt,wormholeMessengerConfig:we,clock:te.web3.SYSVAR_CLOCK_PUBKEY},Sr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:w,recipient:c,receiveToken:A}).accounts(Z).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:na}),pt]).postInstructions(Xe).signers([Ee]).transaction();return Sr.recentBlockhash=(await Le.connection.getLatestBlockhash()).blockhash,Sr.feePayer=I,{transaction:await this.convertToVersionedTransaction(Sr,Le.connection),messageAccount:Ee}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,extraGas:l}=r,g=a;if(!g)throw new Ge("Such route does not support CCTP protocol");let S=4,h=o,T=m,I=u,w=$t(this.solanaRpcUrl,h),R=new te.Program(Ys,g,w),O=new J.PublicKey(c),U=await Us(O,R.programId),Ae=new J.PublicKey(h),X=await R.account.cctpBridge.fetch(U),V={};return V.cctpBridge=R,V.cctpBridgeAccount=U,V.cctpAddressAccount=new J.PublicKey(g),V.amount=new te.BN(s),V.recipient=Array.from(I),V.receiveToken=Array.from(T),V.userToken=await Ke(Ae,O),V.bridgeAuthority=await Ns(U,R.programId),V.bridgeTokenAccount=await js(O,R.programId),V.chainBridgeAccount=await Li(A,R.programId),V.userAccount=Ae,V.destinationChainId=A,V.mint=O,V.gasPrice=await Xn(A,X.gasOracleProgramId),V.thisGasPrice=await Xn(S,X.gasOracleProgramId),V.provider=w,l&&(V.extraGasInstruction=this.getExtraGasInstruction(l,V.userAccount,U)),V}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:s,cctpBridgeAccount:o,amount:c,recipient:A,receiveToken:u,bridgeAuthority:m,userToken:l,bridgeTokenAccount:g,chainBridgeAccount:S,userAccount:h,destinationChainId:T,mint:I,gasPrice:w,thisGasPrice:R,extraGasInstruction:O,provider:U}=a,Ae=this.params.cctpParams.cctpDomains[r],X=this.params.cctpParams.cctpTransmitterProgramId,V=this.params.cctpParams.cctpTokenMessengerMinter;if(Ae==null||!X||!V)throw new C("CCTP is not configured");let Re=new J.PublicKey(X),se=new J.PublicKey(V),{messageTransmitterAccount:mt,tokenMessenger:lt,tokenMessengerEventAuthority:vt,tokenMinter:Je,localToken:we,remoteTokenMessengerKey:Ee,authorityPda:Le}=Gs(Ae,I,Re,se),ke=[];O&&ke.push(O);let dt=J.Keypair.generate(),pt=Es(s.programId,dt.publicKey),Xe=await s.methods.bridge({amount:c,destinationChainId:T,recipient:A,receiveToken:u}).accounts({mint:I,user:h,cctpBridge:o,messageSentEventData:dt.publicKey,lock:pt,cctpMessenger:se,messageTransmitterProgram:Re,messageTransmitterAccount:mt,tokenMessenger:lt,tokenMinter:Je,localToken:we,remoteTokenMessengerKey:Ee,authorityPda:Le,eventAuthority:vt,bridgeToken:g,gasPrice:w,thisGasPrice:R,chainBridge:S,userToken:l,bridgeAuthority:m}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(ke).transaction(),Z=U.connection;return Xe.recentBlockhash=(await Z.getLatestBlockhash()).blockhash,Xe.feePayer=h,{transaction:await this.convertToVersionedTransaction(Xe,Z),messageSentEventDataKeypair:dt}}send(r){throw new ce}};var _r=require("@stellar/stellar-sdk"),io=require("big.js");var t=require("@stellar/stellar-sdk"),aA=t.contract.Spec,sA=t.contract.Client;var qn=class extends sA{constructor(r){super(new aA(["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 Vr=class extends Oe{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,h=l;S&&(h=(0,io.Big)(h).plus(S).toFixed());let T=this.getContract(qn,s,o),I;return g==="stablecoin"?I=await T.swap_and_bridge({sender:o,token:_r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:Tt(),gas_amount:BigInt(0),fee_token_amount:BigInt(h)}):I=await T.swap_and_bridge({sender:o,token:_r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:Tt(),gas_amount:BigInt(h),fee_token_amount:BigInt(0)}),I.toXDR()}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r;return(await this.getContract(qn,s,o).swap({sender:o,amount:BigInt(a),token:_r.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(u),recipient:A,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ce}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var ao="1.18.0",so="1.40.0";var oA={"-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"},$r=class extends Error{},vn=class extends $r{constructor(n,r){super(n),this.code=r,this.type=oA[r]??"ServerError"}},Zr=class extends $r{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var oo=i=>{throw TypeError(i)},ia=(i,n,r)=>n.has(i)||oo("Cannot "+r),ne=(i,n,r)=>(ia(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?oo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),Rn=(i,n,r,a)=>(ia(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),co=(i,n,r)=>(ia(i,n,"access private method"),r),cA=(i,n,r,a)=>({set _(s){Rn(i,n,s,r)},get _(){return ne(i,n,a)}}),sn,er,Mt,on,tr,kn,Jr,Ao,uo;function AA(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var uA={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Lr=class{constructor(n,r={}){if(an(this,Jr),an(this,sn,0),an(this,er,0),an(this,Mt,null),an(this,on,null),an(this,tr,new Set),an(this,kn,new Map),this.endpoint=n,this.options={...uA,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=AA(this.endpoint))}async makeRequest(n,r){let a=await co(this,Jr,Ao).call(this);return new Promise((s,o)=>{Rn(this,sn,ne(this,sn)+1),ne(this,kn).set(ne(this,sn),{resolve:s,reject:o,timeout:setTimeout(()=>{ne(this,kn).delete(ne(this,sn)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:ne(this,sn),method:n,params:r}))}).then(({error:s,result:o})=>{if(s)throw new vn(s.message,s.code);return o})}async subscribe(n){let r=new ra(n);return ne(this,tr).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;er=new WeakMap;Mt=new WeakMap;on=new WeakMap;tr=new WeakMap;kn=new WeakMap;Jr=new WeakSet;Ao=function(){return ne(this,on)?ne(this,on):(Rn(this,on,new Promise(i=>{ne(this,Mt)?.close(),Rn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),ne(this,Mt).addEventListener("open",()=>{Rn(this,er,0),i(ne(this,Mt))}),ne(this,Mt).addEventListener("close",()=>{cA(this,er)._++,ne(this,er)<=this.options.maxReconnects&&setTimeout(()=>{co(this,Jr,uo).call(this)},this.options.reconnectTimeout)}),ne(this,Mt).addEventListener("message",({data:n})=>{let r;try{r=JSON.parse(n)}catch(a){console.error(new Error(`Failed to parse RPC message: ${n}`,{cause:a}));return}if("id"in r&&r.id!=null&&ne(this,kn).has(r.id)){let{resolve:a,timeout:s}=ne(this,kn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;ne(this,tr).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),ne(this,on))};uo=async function(){return ne(this,Mt)?.close(),Rn(this,on,null),Promise.allSettled([...ne(this,tr)].map(i=>i.subscribe(this)))};var ra=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 mo=i=>{throw TypeError(i)},oa=(i,n,r)=>n.has(i)||mo("Cannot "+r),Ve=(i,n,r)=>(oa(i,n,"read from private field"),r?r.call(i):n.get(i)),Xr=(i,n,r)=>n.has(i)?mo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),aa=(i,n,r,a)=>(oa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),mA=(i,n,r)=>(oa(i,n,"access private method"),r),nr,Qe,rr,sa,lo,Yr=class{constructor(n){Xr(this,sa),Xr(this,nr,0),Xr(this,Qe),Xr(this,rr),aa(this,Qe,n)}fetch(n,r){let a=Ve(this,Qe).fetch??fetch;if(!a)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return a(n,r)}async request(n){aa(this,nr,Ve(this,nr)+1);let r=await this.fetch(Ve(this,Qe).rpc?.url??Ve(this,Qe).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":ao,"Client-Target-Api-Version":so,"Client-Request-Method":n.method,...Ve(this,Qe).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Ve(this,nr),method:n.method,params:n.params})});if(!r.ok)throw new Zr(`Unexpected status code: ${r.status}`,r.status,r.statusText);let a=await r.json();if("error"in a&&a.error!=null)throw new vn(a.error.message,a.error.code);return a.result}async subscribe(n){let r=await mA(this,sa,lo).call(this).subscribe(n);return async()=>!!await r()}};nr=new WeakMap;Qe=new WeakMap;rr=new WeakMap;sa=new WeakSet;lo=function(){if(!Ve(this,rr)){let i=Ve(this,Qe).WebSocketConstructor??WebSocket;if(!i)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");aa(this,rr,new Lr(Ve(this,Qe).websocket?.url??Ve(this,Qe).url,{WebSocketConstructor:i,...Ve(this,Qe).websocket}))}return Ve(this,rr)};var Wt=require("@mysten/bcs");le();Ie();var j=require("@mysten/bcs");var NA=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,DA=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function wo(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!NA.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!DA.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]}`}Ie();var WA=BigInt(1e9),Da="0x1",Qr="0x2";var qr=Ce("0x6");var Wa=`${Qr}::sui::SUI`,UA=Ce("0x5");Ie();var jA="object",EA="ID",GA="ascii",_A="String",VA="string",$A="String",ZA="option",JA="Option";function Co(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&x(n.package)===x("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function ei(i){if(typeof i=="string")switch(i){case"address":return b.Address;case"bool":return b.Bool;case"u8":return b.U8;case"u16":return b.U16;case"u32":return b.U32;case"u64":return b.U64;case"u128":return b.U128;case"u256":return b.U256;default:throw new Error(`Unknown type signature ${i}`)}if("vector"in i){if(i.vector==="u8")return b.vector(b.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});let n=ei(i.vector);return n?b.vector(n):null}if("datatype"in i){let n=x(i.datatype.package);if(n===x(Da)){if(i.datatype.module===GA&&i.datatype.type===_A)return b.String;if(i.datatype.module===VA&&i.datatype.type===$A)return b.String;if(i.datatype.module===ZA&&i.datatype.type===JA){let r=ei(i.datatype.typeParameters[0]);return r?b.vector(r):null}}if(n===x(Qr)&&i.datatype.module===jA&&i.datatype.type===EA)return b.Address}return null}function Io(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:sr(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:sr(i.MutableReference)}:{ref:null,body:sr(i)}}function sr(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:sr(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(sr)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var Bo=require("@mysten/bcs");Ie();function LA(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,Bo.toBase64)(i):i.toBase64()}}}var ve={Pure:LA,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:x(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:x(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:x(i)}}}}};var Ga=require("@mysten/bcs"),nt=require("valibot");Ie();var p=require("valibot");Ie();function Lt(i){let n=Object.entries(i).map(([r,a])=>(0,p.object)({[r]:a}));return(0,p.pipe)((0,p.union)(n),(0,p.transform)(r=>({...r,$kind:Object.keys(r)[0]})))}var cn=(0,p.pipe)((0,p.string)(),(0,p.transform)(i=>x(i)),(0,p.check)(Ne)),Se=cn,Jt=(0,p.string)(),ye=(0,p.pipe)((0,p.union)([(0,p.string)(),(0,p.pipe)((0,p.number)(),(0,p.integer)())]),(0,p.check)(i=>{try{return BigInt(i),BigInt(i)>=0&&BigInt(i)<=18446744073709551615n}catch{return!1}},"Invalid u64")),tt=(0,p.object)({objectId:cn,version:ye,digest:(0,p.string)()}),Y=(0,p.pipe)((0,p.union)([(0,p.object)({GasCoin:(0,p.literal)(!0)}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("pure"))}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("object"))}),(0,p.object)({Result:(0,p.pipe)((0,p.number)(),(0,p.integer)())}),(0,p.object)({NestedResult:(0,p.tuple)([(0,p.pipe)((0,p.number)(),(0,p.integer)()),(0,p.pipe)((0,p.number)(),(0,p.integer)())])})]),(0,p.transform)(i=>({...i,$kind:Object.keys(i)[0]}))),XA=(0,p.object)({budget:(0,p.nullable)(ye),price:(0,p.nullable)(ye),owner:(0,p.nullable)(cn),payment:(0,p.nullable)((0,p.array)(tt))}),Ep=(0,p.object)({address:(0,p.string)(),module:(0,p.string)(),name:(0,p.string)(),typeParams:(0,p.array)((0,p.string)())}),Ua=(0,p.union)([(0,p.literal)("address"),(0,p.literal)("bool"),(0,p.literal)("u8"),(0,p.literal)("u16"),(0,p.literal)("u32"),(0,p.literal)("u64"),(0,p.literal)("u128"),(0,p.literal)("u256"),(0,p.object)({vector:(0,p.lazy)(()=>Ua)}),(0,p.object)({datatype:(0,p.object)({package:(0,p.string)(),module:(0,p.string)(),type:(0,p.string)(),typeParameters:(0,p.array)((0,p.lazy)(()=>Ua))})}),(0,p.object)({typeParameter:(0,p.pipe)((0,p.number)(),(0,p.integer)())})]),YA=(0,p.object)({ref:(0,p.nullable)((0,p.union)([(0,p.literal)("&"),(0,p.literal)("&mut")])),body:Ua}),KA=(0,p.object)({package:Se,module:(0,p.string)(),function:(0,p.string)(),typeArguments:(0,p.array)((0,p.string)()),arguments:(0,p.array)(Y),_argumentTypes:(0,p.optional)((0,p.nullable)((0,p.array)(YA)))}),zA=(0,p.object)({name:(0,p.string)(),inputs:(0,p.record)((0,p.string)(),(0,p.union)([Y,(0,p.array)(Y)])),data:(0,p.record)((0,p.string)(),(0,p.unknown)())}),HA=Lt({MoveCall:KA,TransferObjects:(0,p.object)({objects:(0,p.array)(Y),address:Y}),SplitCoins:(0,p.object)({coin:Y,amounts:(0,p.array)(Y)}),MergeCoins:(0,p.object)({destination:Y,sources:(0,p.array)(Y)}),Publish:(0,p.object)({modules:(0,p.array)(Jt),dependencies:(0,p.array)(Se)}),MakeMoveVec:(0,p.object)({type:(0,p.nullable)((0,p.string)()),elements:(0,p.array)(Y)}),Upgrade:(0,p.object)({modules:(0,p.array)(Jt),dependencies:(0,p.array)(Se),package:Se,ticket:Y}),$Intent:zA}),vo=Lt({ImmOrOwnedObject:tt,SharedObject:(0,p.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,p.boolean)()}),Receiving:tt}),QA=Lt({Object:vo,Pure:(0,p.object)({bytes:Jt}),UnresolvedPure:(0,p.object)({value:(0,p.unknown)()}),UnresolvedObject:(0,p.object)({objectId:Se,version:(0,p.optional)((0,p.nullable)(ye)),digest:(0,p.optional)((0,p.nullable)((0,p.string)())),initialSharedVersion:(0,p.optional)((0,p.nullable)(ye))})}),ja=Lt({Object:vo,Pure:(0,p.object)({bytes:Jt})}),Ea=Lt({None:(0,p.literal)(!0),Epoch:ye}),On=(0,p.object)({version:(0,p.literal)(2),sender:(0,p.nullish)(cn),expiration:(0,p.nullish)(Ea),gasData:XA,inputs:(0,p.array)(QA),commands:(0,p.array)(HA)});var We={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,nt.parse)(Y,r)),address:(0,nt.parse)(Y,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,nt.parse)(Y,i),amounts:n.map(r=>(0,nt.parse)(Y,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,nt.parse)(Y,i),sources:n.map(r=>(0,nt.parse)(Y,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,Ga.toBase64)(new Uint8Array(r))),dependencies:n.map(r=>Ce(r))}}},Upgrade({modules:i,dependencies:n,package:r,ticket:a}){return{$kind:"Upgrade",Upgrade:{modules:i.map(s=>typeof s=="string"?s:(0,Ga.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Ce(s)),package:r,ticket:(0,nt.parse)(Y,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,nt.parse)(Y,r))}}},Intent({name:i,inputs:n={},data:r={}}){return{$kind:"$Intent",$Intent:{name:i,inputs:Object.fromEntries(Object.entries(n).map(([a,s])=>[a,Array.isArray(s)?s.map(o=>(0,nt.parse)(Y,o)):(0,nt.parse)(Y,s)])),data:r}}}};var Fn=require("@mysten/bcs"),Pt=require("valibot");Ie();var Xt=require("@mysten/bcs"),d=require("valibot");le();var _a=(0,d.object)({digest:(0,d.string)(),objectId:(0,d.string)(),version:(0,d.union)([(0,d.pipe)((0,d.number)(),(0,d.integer)()),(0,d.string)(),(0,d.bigint)()])}),qA=Lt({ImmOrOwned:_a,Shared:(0,d.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,d.boolean)()}),Receiving:_a}),Ro=Lt({Object:qA,Pure:(0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))}),Mo=(0,d.union)([(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.optional)((0,d.literal)("object"))}),(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.literal)("pure")})]),eu=(0,d.union)([(0,d.object)({Epoch:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),ko=(0,d.pipe)((0,d.union)([(0,d.number)(),(0,d.string)(),(0,d.bigint)()]),(0,d.check)(i=>{if(!["string","number","bigint"].includes(typeof i))return!1;try{return BigInt(i),!0}catch{return!1}})),Va=(0,d.union)([(0,d.object)({bool:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u8:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u64:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u128:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({address:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({signer:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({vector:(0,d.lazy)(()=>Va)}),(0,d.object)({struct:(0,d.lazy)(()=>tu)}),(0,d.object)({u16:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u32:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u256:(0,d.nullable)((0,d.literal)(!0))})]),tu=(0,d.object)({address:(0,d.string)(),module:(0,d.string)(),name:(0,d.string)(),typeParams:(0,d.array)(Va)}),nu=(0,d.object)({budget:(0,d.optional)(ko),price:(0,d.optional)(ko),payment:(0,d.optional)((0,d.array)(_a)),owner:(0,d.optional)((0,d.string)())}),ru=[Mo,(0,d.object)({kind:(0,d.literal)("GasCoin")}),(0,d.object)({kind:(0,d.literal)("Result"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({kind:(0,d.literal)("NestedResult"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),resultIndex:(0,d.pipe)((0,d.number)(),(0,d.integer)())})],Nt=(0,d.union)([...ru]),iu=(0,d.object)({kind:(0,d.literal)("MoveCall"),target:(0,d.pipe)((0,d.string)(),(0,d.check)(i=>i.split("::").length===3)),typeArguments:(0,d.array)((0,d.string)()),arguments:(0,d.array)(Nt)}),au=(0,d.object)({kind:(0,d.literal)("TransferObjects"),objects:(0,d.array)(Nt),address:Nt}),su=(0,d.object)({kind:(0,d.literal)("SplitCoins"),coin:Nt,amounts:(0,d.array)(Nt)}),ou=(0,d.object)({kind:(0,d.literal)("MergeCoins"),destination:Nt,sources:(0,d.array)(Nt)}),cu=(0,d.object)({kind:(0,d.literal)("MakeMoveVec"),type:(0,d.union)([(0,d.object)({Some:Va}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),objects:(0,d.array)(Nt)}),Au=(0,d.object)({kind:(0,d.literal)("Publish"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)())}),uu=(0,d.object)({kind:(0,d.literal)("Upgrade"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)()),packageId:(0,d.string)(),ticket:Nt}),mu=[iu,au,su,ou,Au,uu,cu],lu=(0,d.union)([...mu]),Lp=(0,d.object)({version:(0,d.literal)(1),sender:(0,d.optional)((0,d.string)()),expiration:(0,d.nullish)(eu),gasConfig:nu,inputs:(0,d.array)(Mo),transactions:(0,d.array)(lu)});function $a(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Xt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some:xt.parseFromStr(r.MakeMoveVec.type)},objects:r.MakeMoveVec.elements.map(a=>Ot(a,n))};if(r.MergeCoins)return{kind:"MergeCoins",destination:Ot(r.MergeCoins.destination,n),sources:r.MergeCoins.sources.map(a=>Ot(a,n))};if(r.MoveCall)return{kind:"MoveCall",target:`${r.MoveCall.package}::${r.MoveCall.module}::${r.MoveCall.function}`,typeArguments:r.MoveCall.typeArguments,arguments:r.MoveCall.arguments.map(a=>Ot(a,n))};if(r.Publish)return{kind:"Publish",modules:r.Publish.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Publish.dependencies};if(r.SplitCoins)return{kind:"SplitCoins",coin:Ot(r.SplitCoins.coin,n),amounts:r.SplitCoins.amounts.map(a=>Ot(a,n))};if(r.TransferObjects)return{kind:"TransferObjects",objects:r.TransferObjects.objects.map(a=>Ot(a,n)),address:Ot(r.TransferObjects.address,n)};if(r.Upgrade)return{kind:"Upgrade",modules:r.Upgrade.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Upgrade.dependencies,packageId:r.Upgrade.package,ticket:Ot(r.Upgrade.ticket,n)};throw new Error(`Unknown transaction ${Object.keys(r)}`)})}}function Ot(i,n){if(i.$kind==="GasCoin")return{kind:"GasCoin"};if(i.$kind==="Result")return{kind:"Result",index:i.Result};if(i.$kind==="NestedResult")return{kind:"NestedResult",index:i.NestedResult[0],resultIndex:i.NestedResult[1]};if(i.$kind==="Input")return n[i.Input];throw new Error(`Invalid argument ${Object.keys(i)}`)}function xo(i){return(0,d.parse)(On,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,d.is)(Ro,n.value)){let r=(0,d.parse)(Ro,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Xt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?xt.tagToString(n.type.Some):null,elements:n.objects.map(r=>Ft(r))}};case"MergeCoins":return{MergeCoins:{destination:Ft(n.destination),sources:n.sources.map(r=>Ft(r))}};case"MoveCall":{let[r,a,s]=n.target.split("::");return{MoveCall:{package:r,module:a,function:s,typeArguments:n.typeArguments,arguments:n.arguments.map(o=>Ft(o))}}}case"Publish":return{Publish:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var P=require("valibot");function or(i){return(0,P.union)(Object.entries(i).map(([n,r])=>(0,P.object)({[n]:r})))}var rt=or({GasCoin:(0,P.literal)(!0),Input:(0,P.pipe)((0,P.number)(),(0,P.integer)()),Result:(0,P.pipe)((0,P.number)(),(0,P.integer)()),NestedResult:(0,P.tuple)([(0,P.pipe)((0,P.number)(),(0,P.integer)()),(0,P.pipe)((0,P.number)(),(0,P.integer)())])}),du=(0,P.object)({budget:(0,P.nullable)(ye),price:(0,P.nullable)(ye),owner:(0,P.nullable)(cn),payment:(0,P.nullable)((0,P.array)(tt))}),pu=(0,P.object)({package:Se,module:(0,P.string)(),function:(0,P.string)(),typeArguments:(0,P.array)((0,P.string)()),arguments:(0,P.array)(rt)}),gu=(0,P.object)({name:(0,P.string)(),inputs:(0,P.record)((0,P.string)(),(0,P.union)([rt,(0,P.array)(rt)])),data:(0,P.record)((0,P.string)(),(0,P.unknown)())}),fu=or({MoveCall:pu,TransferObjects:(0,P.object)({objects:(0,P.array)(rt),address:rt}),SplitCoins:(0,P.object)({coin:rt,amounts:(0,P.array)(rt)}),MergeCoins:(0,P.object)({destination:rt,sources:(0,P.array)(rt)}),Publish:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Se)}),MakeMoveVec:(0,P.object)({type:(0,P.nullable)((0,P.string)()),elements:(0,P.array)(rt)}),Upgrade:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Se),package:Se,ticket:rt}),$Intent:gu}),yu=or({ImmOrOwnedObject:tt,SharedObject:(0,P.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,P.boolean)()}),Receiving:tt}),hu=or({Object:yu,Pure:(0,P.object)({bytes:Jt}),UnresolvedPure:(0,P.object)({value:(0,P.unknown)()}),UnresolvedObject:(0,P.object)({objectId:Se,version:(0,P.optional)((0,P.nullable)(ye)),digest:(0,P.optional)((0,P.nullable)((0,P.string)())),initialSharedVersion:(0,P.optional)((0,P.nullable)(ye))})}),bu=or({None:(0,P.literal)(!0),Epoch:ye}),Oo=(0,P.object)({version:(0,P.literal)(2),sender:(0,P.nullish)(cn),expiration:(0,P.nullish)(bu),gasData:du,inputs:(0,P.array)(hu),commands:(0,P.array)(fu)});var No=require("valibot");le();var Tu=50,Su=1000n,Pu=5e10;async function Do(i,n,r){return await vu(i,n),await Bu(i,n),n.onlyTransactionKind||(await wu(i,n),await Cu(i,n),await Iu(i,n)),await Ru(i),await r()}async function wu(i,n){i.gasConfig.price||(i.gasConfig.price=String(await An(n).getReferenceGasPrice()))}async function Cu(i,n){if(i.gasConfig.budget)return;let r=await An(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(Pu),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=Su*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 Iu(i,n){if(!i.gasConfig.payment){let a=(await An(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:Wa})).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,No.parse)(tt,s))}}async function Bu(i,n){let r=i.inputs.filter(l=>l.UnresolvedObject&&!(l.UnresolvedObject.version||l.UnresolvedObject?.initialSharedVersion)),a=[...new Set(r.map(l=>Ce(l.UnresolvedObject.objectId)))],s=a.length?Ou(a,Tu):[],o=(await Promise.all(s.map(l=>An(n).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat(),c=new Map(a.map((l,g)=>[l,o[g]])),A=Array.from(c).filter(([l,g])=>g.error).map(([l,g])=>JSON.stringify(g.error));if(A.length)throw new Error(`The following input objects are invalid: ${A.join(", ")}`);let u=o.map(l=>{if(l.error||!l.data)throw new Error(`Failed to fetch object: ${l.error}`);let g=l.data.owner,S=g&&typeof g=="object"&&"Shared"in g?g.Shared.initial_shared_version:null;return{objectId:l.data.objectId,digest:l.data.digest,version:l.data.version,initialSharedVersion:S}}),m=new Map(a.map((l,g)=>[l,u[g]]));for(let[l,g]of i.inputs.entries()){if(!g.UnresolvedObject)continue;let S,h=x(g.UnresolvedObject.objectId),T=m.get(h);g.UnresolvedObject.initialSharedVersion??T?.initialSharedVersion?S=ve.SharedObjectRef({objectId:h,initialSharedVersion:g.UnresolvedObject.initialSharedVersion||T?.initialSharedVersion,mutable:ku(i,l)}):Mu(i,l)&&(S=ve.ReceivingRef({objectId:h,digest:g.UnresolvedObject.digest??T?.digest,version:g.UnresolvedObject.version??T?.version})),i.inputs[i.inputs.indexOf(g)]=S??ve.ObjectRef({objectId:h,digest:g.UnresolvedObject.digest??T?.digest,version:g.UnresolvedObject.version??T?.version})}}async function vu(i,n){let{inputs:r,commands:a}=i,s=[],o=new Set;a.forEach(A=>{if(A.MoveCall){if(A.MoveCall._argumentTypes)return;if(A.MoveCall.arguments.map(l=>l.$kind==="Input"?i.inputs[l.Input]:null).some(l=>l?.UnresolvedPure||l?.UnresolvedObject)){let l=`${A.MoveCall.package}::${A.MoveCall.module}::${A.MoveCall.function}`;o.add(l),s.push(A.MoveCall)}}switch(A.$kind){case"SplitCoins":A.SplitCoins.amounts.forEach(u=>{Fo(u,b.U64,i)});break;case"TransferObjects":Fo(A.TransferObjects.address,b.Address,i);break}});let c=new Map;if(o.size>0){let A=An(n);await Promise.all([...o].map(async u=>{let[m,l,g]=u.split("::"),S=await A.getNormalizedMoveFunction({package:m,module:l,function:g});c.set(u,S.parameters.map(h=>Io(h)))}))}s.length&&await Promise.all(s.map(async A=>{let u=c.get(`${A.package}::${A.module}::${A.function}`);if(!u)return;let l=u.length>0&&Co(u.at(-1))?u.slice(0,u.length-1):u;A._argumentTypes=l})),a.forEach(A=>{if(!A.MoveCall)return;let u=A.MoveCall,m=`${u.package}::${u.module}::${u.function}`,l=u._argumentTypes;if(l){if(l.length!==A.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${m}`);l.forEach((g,S)=>{let h=u.arguments[S];if(h.$kind!=="Input")return;let T=r[h.Input];if(!T.UnresolvedPure&&!T.UnresolvedObject)return;let I=T.UnresolvedPure?.value??T.UnresolvedObject?.objectId,w=ei(g.body);if(w){h.type="pure",r[r.indexOf(T)]=ve.Pure(w.serialize(I));return}if(typeof I!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(I,null,2)}`);h.type="object";let R=T.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:I}}:T;r[h.Input]=R})}})}function Ru(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 Fo(i,n,r){if(i.$kind!=="Input")return;let a=r.inputs[i.Input];a.$kind==="UnresolvedPure"&&(r.inputs[i.Input]=ve.Pure(n.serialize(a.UnresolvedPure.value)))}function ku(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 Mu(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=xu(s.MoveCall._argumentTypes[o])||r}}),r}function xu(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 An(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 Ou(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Wo(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 Uo=require("@mysten/bcs");le();function jo(i){function n(r,a){if(typeof r=="string")return i(cr(r).serialize(a));if(r instanceof Uint8Array||(0,Uo.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(b.U8.serialize(r)),n.u16=r=>i(b.U16.serialize(r)),n.u32=r=>i(b.U32.serialize(r)),n.u64=r=>i(b.U64.serialize(r)),n.u128=r=>i(b.U128.serialize(r)),n.u256=r=>i(b.U256.serialize(r)),n.bool=r=>i(b.Bool.serialize(r)),n.string=r=>i(b.String.serialize(r)),n.address=r=>i(b.Address.serialize(r)),n.id=n.address,n.vector=(r,a)=>i(b.vector(cr(r)).serialize(a)),n.option=(r,a)=>i(b.option(cr(r)).serialize(a)),n}function cr(i){switch(i){case"u8":return b.u8();case"u16":return b.u16();case"u32":return b.u32();case"u64":return b.u64();case"u128":return b.u128();case"u256":return b.u256();case"bool":return b.bool();case"string":return b.string();case"id":case"address":return b.Address}let n=i.match(/^(vector|option)<(.+)>$/);if(n){let[r,a]=n.slice(1);return r==="vector"?b.vector(cr(a)):b.option(cr(a))}throw new Error(`Invalid Pure type name: ${i}`)}var Vo=require("@mysten/bcs"),ti=require("valibot");le();Ie();var Eo=require("@noble/hashes/blake2b");function Go(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,Eo.blake2b)(a,{dkLen:32})}function _o(i){return x(i).replace("0x","")}var Yt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=b.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=b.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,ti.parse)(On,n)):new i((0,ti.parse)(On,xo(n)))}static getDigestFromBytes(n){let r=Go("TransactionData",n);return(0,Vo.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 b.TransactionKind.serialize(c,{maxSize:n}).toBytes();let A=r?.expiration??this.expiration,u=r?.sender??this.sender,m={...this.gasData,...r?.gasConfig,...r?.gasData};if(!u)throw new Error("Missing transaction sender");if(!m.budget)throw new Error("Missing gas budget");if(!m.payment)throw new Error("Missing gas payment");if(!m.price)throw new Error("Missing gas price");let l={sender:_o(u),expiration:A||{None:!0},gasData:{payment:m.payment,owner:_o(this.gasData.owner??u),price:BigInt(m.price),budget:BigInt(m.budget)},kind:{ProgrammableTransaction:{inputs:s,commands:o}}};return b.TransactionData.serialize({V1:l},{maxSize:n}).toBytes()}addInput(n,r){let a=this.inputs.length;return this.inputs.push(r),{Input:a,type:n,$kind:"Input"}}getInputUses(n,r){this.mapArguments((a,s)=>(a.$kind==="Input"&&a.Input===n&&r(a,s),a))}mapArguments(n){for(let r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(s=>n(s,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(s=>n(s,r)),r.TransferObjects.address=n(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=n(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(s=>n(s,r));break;case"MergeCoins":r.MergeCoins.destination=n(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(s=>n(s,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(s=>n(s,r));break;case"Upgrade":r.Upgrade.ticket=n(r.Upgrade.ticket,r);break;case"$Intent":let a=r.$Intent.inputs;r.$Intent.inputs={};for(let[s,o]of Object.entries(a))r.$Intent.inputs[s]=Array.isArray(o)?o.map(c=>n(c,r)):n(o,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(n,r){if(!Array.isArray(r)){this.commands[n]=r;return}let a=r.length-1;this.commands.splice(n,1,...r),a!==0&&this.mapArguments(s=>{switch(s.$kind){case"Result":s.Result>n&&(s.Result+=a);break;case"NestedResult":s.NestedResult[0]>n&&(s.NestedResult[0]+=a);break}return s})}getDigest(){let n=this.build({onlyTransactionKind:!1});return i.getDigestFromBytes(n)}snapshot(){return(0,ti.parse)(On,this)}};Ie();function Za(i){if(typeof i=="string")return x(i);if(i.Object)return i.Object.ImmOrOwnedObject?x(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?x(i.Object.Receiving.objectId):x(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return x(i.UnresolvedObject.objectId)}var Jo=i=>{throw TypeError(i)},Ya=(i,n,r)=>n.has(i)||Jo("Cannot "+r),D=(i,n,r)=>(Ya(i,n,"read from private field"),r?r.call(i):n.get(i)),Ar=(i,n,r)=>n.has(i)?Jo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),un=(i,n,r,a)=>(Ya(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Dt=(i,n,r)=>(Ya(i,n,"access private method"),r),mr,lr,mn,E,it,ni,Ka,La,za;function $o(i,n=1/0){let r={$kind:"Result",Result:i},a=[],s=o=>a[o]??(a[o]={$kind:"NestedResult",NestedResult:[i,o]});return new Proxy(r,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(o,c){if(c in o)return Reflect.get(o,c);if(c===Symbol.iterator)return function*(){let u=0;for(;u<n;)yield s(u),u++};if(typeof c=="symbol")return;let A=parseInt(c,10);if(!(Number.isNaN(A)||A<0))return s(A)}})}var Lo=Symbol.for("@mysten/transaction");function ri(i){return!!i&&typeof i=="object"&&i[Lo]===!0}var Zo={buildPlugins:new Map,serializationPlugins:new Map},Ja=Symbol.for("@mysten/transaction/registry");function ur(){try{let i=globalThis;return i[Ja]||(i[Ja]=Zo),i[Ja]}catch{return Zo}}var Fu=class Xa{constructor(){Ar(this,it),Ar(this,mr),Ar(this,lr),Ar(this,mn,new Map),Ar(this,E),this.object=Wo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Pt.is)(Y,r))return r;let a=Za(r),s=D(this,E).inputs.find(o=>a===Za(o));return s?.Object?.SharedObject&&typeof r=="object"&&r.Object?.SharedObject&&(s.Object.SharedObject.mutable=s.Object.SharedObject.mutable||r.Object.SharedObject.mutable),s?{$kind:"Input",Input:D(this,E).inputs.indexOf(s),type:"object"}:D(this,E).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:x(r)}}:r)});let n=ur();un(this,E,new Yt),un(this,lr,[...n.buildPlugins.values()]),un(this,mr,[...n.serializationPlugins.values()])}static fromKind(n){let r=new Xa;return un(r,E,Yt.fromKindBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)),r}static from(n){let r=new Xa;return ri(n)?un(r,E,new Yt(n.getData())):typeof n!="string"||!n.startsWith("{")?un(r,E,Yt.fromBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)):un(r,E,Yt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){ur().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){ur().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){ur().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){ur().buildPlugins.delete(n)}addSerializationPlugin(n){D(this,mr).push(n)}addBuildPlugin(n){D(this,lr).push(n)}addIntentResolver(n,r){if(D(this,mn).has(n)&&D(this,mn).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);D(this,mn).set(n,r)}setSender(n){D(this,E).sender=n}setSenderIfNotSet(n){D(this,E).sender||(D(this,E).sender=n)}setExpiration(n){D(this,E).expiration=n?(0,Pt.parse)(Ea,n):null}setGasPrice(n){D(this,E).gasConfig.price=String(n)}setGasBudget(n){D(this,E).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){D(this,E).gasData.budget==null&&(D(this,E).gasConfig.budget=String(n))}setGasOwner(n){D(this,E).gasConfig.owner=n}setGasPayment(n){D(this,E).gasConfig.payment=n.map(r=>(0,Pt.parse)(tt,r))}get blockData(){return $a(D(this,E).snapshot())}getData(){return D(this,E).snapshot()}get[Lo](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:jo(n=>(0,Fn.isSerializedBcs)(n)?D(this,E).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):D(this,E).addInput("pure",(0,Pt.is)(ja,n)?(0,Pt.parse)(ja,n):n instanceof Uint8Array?ve.Pure(n):{$kind:"UnresolvedPure",UnresolvedPure:{value:n}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...n){return this.object(ve.ObjectRef(...n))}receivingRef(...n){return this.object(ve.ReceivingRef(...n))}sharedObjectRef(...n){return this.object(ve.SharedObjectRef(...n))}add(n){if(typeof n=="function")return n(this);let r=D(this,E).commands.push(n);return $o(r-1)}splitCoins(n,r){let a=We.SplitCoins(typeof n=="string"?this.object(n):Dt(this,it,Ka).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Dt(this,it,ni).call(this,o))),s=D(this,E).commands.push(a);return $o(s-1,r.length)}mergeCoins(n,r){return this.add(We.MergeCoins(this.object(n),r.map(a=>this.object(a))))}publish({modules:n,dependencies:r}){return this.add(We.Publish({modules:n,dependencies:r}))}upgrade({modules:n,dependencies:r,package:a,ticket:s}){return this.add(We.Upgrade({modules:n,dependencies:r,package:a,ticket:this.object(s)}))}moveCall({arguments:n,...r}){return this.add(We.MoveCall({...r,arguments:n?.map(a=>Dt(this,it,ni).call(this,a))}))}transferObjects(n,r){return this.add(We.TransferObjects(n.map(a=>this.object(a)),typeof r=="string"?this.pure.address(r):Dt(this,it,ni).call(this,r)))}makeMoveVec({type:n,elements:r}){return this.add(We.MakeMoveVec({type:n,elements:r.map(a=>this.object(a))}))}serialize(){return JSON.stringify($a(D(this,E).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Pt.parse)(Oo,D(this,E).snapshot()),(r,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(n){let{signer:r,...a}=n,s=await this.build(a);return r.signTransaction(s)}async build(n={}){return await this.prepareForSerialization(n),await Dt(this,it,La).call(this,n),D(this,E).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Dt(this,it,La).call(this,n),D(this,E).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of D(this,E).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...D(this,mr)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!D(this,mn).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(D(this,mn).get(s))}await Dt(this,it,za).call(this,a,n)}};mr=new WeakMap;lr=new WeakMap;mn=new WeakMap;E=new WeakMap;it=new WeakSet;ni=function(i){return(0,Fn.isSerializedBcs)(i)?this.pure(i):Dt(this,it,Ka).call(this,i)};Ka=function(i){return typeof i=="function"?(0,Pt.parse)(Y,i(this)):(0,Pt.parse)(Y,i)};La=async function(i){if(!i.onlyTransactionKind&&!D(this,E).sender)throw new Error("Missing transaction sender");await Dt(this,it,za).call(this,[...D(this,lr),Do],i)};za=async function(i,n){let r=a=>{if(a>=i.length)return()=>{};let s=i[a];return async()=>{let o=r(a+1),c=!1,A=!1;if(await s(D(this,E),n,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${a}`);c=!0,await o(),A=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${a}`);if(!A)throw new Error(`next() was not awaited in TransactionPlugin ${a}`)}};await r(0)()};var at=Fu;var Kt=require("valibot");le();Ie();var ii="CoinWithBalance",Xo=ar("0x2::sui::SUI");function ee({type:i=Xo,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(ii,Du);let s=i==="gas"?i:ar(i);return a.add(We.Intent({name:ii,inputs:{},data:{type:s===Xo&&r?"gas":s,balance:BigInt(n)}}))}}var Nu=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function Du(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===ii){let{type:l,balance:g}=(0,Kt.parse)(Nu,m.$Intent.data);l!=="gas"&&g>0n&&a.add(l),s.set(l,(s.get(l)??0n)+g)}let o=new Set;for(let m of i.inputs)m.Object?.ImmOrOwnedObject&&o.add(m.Object.ImmOrOwnedObject.objectId),m.UnresolvedObject?.objectId&&o.add(m.UnresolvedObject.objectId);let c=new Map,A=An(n);await Promise.all([...a].map(async m=>{c.set(m,await Wu({coinType:m,balance:s.get(m),client:A,owner:i.sender,usedIds:o}))}));let u=new Map;u.set("gas",{$kind:"GasCoin",GasCoin:!0});for(let[m,l]of i.commands.entries()){if(l.$kind!=="$Intent"||l.$Intent.name!==ii)continue;let{type:g,balance:S}=l.$Intent.data;if(S===0n){i.replaceCommand(m,We.MoveCall({target:"0x2::coin::zero",typeArguments:[g]}));continue}let h=[];if(!u.has(g)){let[T,...I]=c.get(g).map(w=>i.addInput("object",ve.ObjectRef({objectId:w.coinObjectId,digest:w.digest,version:w.version})));I.length>0&&h.push(We.MergeCoins(T,I)),u.set(g,T)}h.push(We.SplitCoins(u.get(g),[i.addInput("pure",ve.Pure(b.u64().serialize(S)))])),i.replaceCommand(m,h),i.mapArguments(T=>T.$kind==="Result"&&T.Result===m?{$kind:"NestedResult",NestedResult:[m+h.length-1,0]}:T)}return r()}async function Wu({coinType:i,balance:n,client:r,owner:a,usedIds:s}){let o=n,c=[];return A();async function A(u=null){let{data:m,hasNextPage:l,nextCursor:g}=await r.getCoins({owner:a,coinType:i,cursor:u}),S=m.sort((h,T)=>Number(BigInt(T.balance)-BigInt(h.balance)));for(let h of S){if(s.has(h.coinObjectId))continue;let T=BigInt(h.balance);if(c.push(h),o-=T,o<=0)return c}if(l)return A(g);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}Ie();var Uu=Symbol.for("@mysten/SuiClient");var Ut=class{get[Uu](){return!0}constructor(n){this.transport=n.transport??new Yr({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[n.owner,n.coinType,n.cursor,n.limit]})}async getAllCoins(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[n.owner,n.cursor,n.limit]})}async getBalance(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[n.owner,n.coinType]})}async getAllBalances(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[n.owner]})}async getCoinMetadata(n){return await this.transport.request({method:"suix_getCoinMetadata",params:[n.coinType]})}async getTotalSupply(n){return await this.transport.request({method:"suix_getTotalSupply",params:[n.coinType]})}async call(n,r){return await this.transport.request({method:n,params:r})}async getMoveFunctionArgTypes(n){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[n.package,n.module,n.function]})}async getNormalizedMoveModulesByPackage(n){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[n.package]})}async getNormalizedMoveModule(n){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[n.package,n.module]})}async getNormalizedMoveFunction(n){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[n.package,n.module,n.function]})}async getNormalizedMoveStruct(n){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[n.package,n.module,n.struct]})}async getOwnedObjects(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[n.owner,{filter:n.filter,options:n.options},n.cursor,n.limit]})}async getObject(n){if(!n.id||!Mn(Ce(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(Ce(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(!zr(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(!zr(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||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[n.owner]})}async getStakesByIds(n){return n.stakedSuiIds.forEach(r=>{if(!r||!Mn(Ce(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(ri(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(Ce(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=>wo(c,n))}}async getProtocolConfig(n){return await this.transport.request({method:"sui_getProtocolConfig",params:[n?.version]})}async waitForTransaction({signal:n,timeout:r=60*1e3,pollInterval:a=2*1e3,...s}){let o=AbortSignal.timeout(r),c=new Promise((A,u)=>{o.addEventListener("abort",()=>u(o.reason))});for(c.catch(()=>{});!o.aborted;){n?.throwIfAborted();try{return await this.getTransactionBlock(s)}catch{await Promise.race([new Promise(u=>setTimeout(u,a)),c])}}throw o.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};var ui=require("big.js");var ss=oe(zt());var jt=oe(zt());de();function zo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[k(i,r.bridge),k(i,r.coin),$e(i,r.receiveAmountMin,"u64")]})}function Ho(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),k(i,r.coin)]})}function Qo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),$e(i,r.amountLp,"u64")]})}function qo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit)]})}function ec(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[k(i,r)]})}function Qa(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.wormholeState),k(i,r.theClock),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),$e(i,r.destinationChainId,"u8"),k(i,r.receiveToken),$e(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}function tc(i,n){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function qa(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),$e(i,r.destinationChainId,"u8"),k(i,r.receiveToken),$e(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}var oc=oe(ts());var rc=oe(ts());de();function ns(i,n,r){return i.moveCall({target:`${rc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[k(i,r.cctpBridge),k(i,r.gasOracle),k(i,r.tokenMessengerMinterState),k(i,r.messageTransmitterState),k(i,r.treasury),k(i,r.denyList),k(i,r.amount),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin),$e(i,r.destinationChainId,"u8"),k(i,r.recipient),k(i,r.recipientWalletAddress)]})}var cc=oe(is());var sc=oe(is());le();de();le();de();var as=class i{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(n,r){this.$fullTypeName=_(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs(dr(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([M(n)],r),kind:"VectorClassReified"}}static get r(){return i.reified}static get bcs(){return b.vector}static fromFields(n,r){return i.reified(n).new(r.map(a=>W(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>F(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(dr(n)).parse(r))}toJSONField(){return this.elements.map(n=>ln(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=>N(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 Nn(i){return as.r(i)}function re(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var $u=b.bytes(32).transform({input:i=>(0,j.fromHEX)(i),output:i=>(0,j.toHEX)(i)});function dr(i){switch(i){case"bool":return b.bool();case"u8":return b.u8();case"u16":return b.u16();case"u32":return b.u32();case"u64":return b.u64();case"u128":return b.u128();case"u256":return b.u256();case"address":return $u;default:return i.bcs}}function M(i){switch(i){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return i}switch(i.kind){case"PhantomReified":return i.phantomType;case"StructClassReified":return i.fullTypeName;case"VectorClassReified":return i.fullTypeName}throw new Error("unreachable")}function W(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return`0x${n}`}if(i.kind==="VectorClassReified")return i.fromFields(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(n.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(n.url.bytes)).toString();case"0x2::object::ID":return`0x${n.bytes}`;case"0x2::object::UID":return`0x${n.id.bytes}`;case"0x1::option::Option":return n.vec.length===0?null:i.fromFields(n).vec[0];default:return i.fromFields(n)}}function F(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.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:F(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function st(i,n,r){if(r.length!==n.length)throw new Error(`provided item has mismatching number of type argments ${i} (expected ${r.length}, got ${n.length}))`);for(let a=0;a<n.length;a++)if(v(n[a])!==v(M(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${M(r[a])}, got ${n[a]}))`)}function wt(i,n){let{typeArgs:r}=he(i.type);st(i.type,r,n)}function ln(i,n){let{typeName:r,typeArgs:a}=he(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=>ln(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:ln(a[0],n);default:return n.toJSONField()}}function N(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.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:N(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}de();var ai="0x1";de();le();function si(i){return i=v(i),i===`${ai}::string::String`}var oi=class i{__StructClass=!0;static get $typeName(){return`${ai}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("String",{bytes:b.vector(b.u8())})}static fromFields(n){return i.reified().new({bytes:W(Nn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!si(n.type))throw new Error("not a String type");return i.reified().new({bytes:F(Nn("u8"),n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:ln("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:N(Nn("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(!si(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"||!si(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"||!si(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};de();de();var Ht="0x2";le();function ci(i){return i=v(i),i===`${Ht}::object::ID`}var dn=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("ID",{bytes:b.bytes(32).transform({input:n=>(0,j.fromHEX)(n),output:n=>(0,j.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:W("address",n.bytes)})}static fromFieldsWithTypes(n){if(!ci(n.type))throw new Error("not a ID type");return i.reified().new({bytes:F("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:N("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(!ci(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"||!ci(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"||!ci(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function Ai(i){return i=v(i),i===`${Ht}::object::UID`}var Ze=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("UID",{id:dn.bcs})}static fromFields(n){return i.reified().new({id:W(dn.reified(),n.id)})}static fromFieldsWithTypes(n){if(!Ai(n.type))throw new Error("not a UID type");return i.reified().new({id:F(dn.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:N(dn.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(!Ai(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"||!Ai(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"||!Ai(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function ot(i,n){return i.moveCall({target:`${sc.PUBLISHED_AT}::bytes32::from_hex`,arguments:[$e(i,n,`${oi.$typeName}`)]})}async function Ct(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?Ct(i,a.nextCursor,s):s}var mi=class extends Oe{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new Ut({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new C("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");(0,ss.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let s=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toTokenAddress:A,minimumReceiveAmount:u}=r,m=new at;m.setSender(o);let l={bridge:a.bridgeObjectAddress,coin:ee({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(u)},g=zo(m,[c,A],l),S=await Ct(h=>this.client.getCoins({owner:r.toAccountAddress,coinType:A,cursor:h}));return S.length===0||!S[0]?m.transferObjects([g],r.toAccountAddress):m.mergeCoins(S[0].coinObjectId,[g]),await m.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),{messenger:s}=a,o=r.sourceToken.suiAddresses;if(!o)throw new C("SUI token must contain 'suiAddresses'");switch((0,ss.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin),(0,cc.setAddress)(o.utilsAddress),s){case 1:return this.buildRawTransactionAllbridgeSend(a,o);case 2:return this.buildRawTransactionWormholeSend(a,o);case 3:return this.buildRawTransactionCctpSend(r,a,o)}}async buildRawTransactionAllbridgeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,h=l;S&&(h=(0,ui.Big)(h).plus(S).toFixed());let T=new at;if(T.setSender(o),g==="stablecoin"){let I=BigInt(s)-BigInt(h),w={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:I,type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};qa(T,c,w)}else{let I=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),w={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:I};qa(T,c,w)}return await T.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,h=l;S&&(h=(0,ui.Big)(h).plus(S).toFixed());let T=new at;if(T.setSender(o),g==="stablecoin"){let I=BigInt(s)-BigInt(h),w={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:qr,amount:ee({balance:I,type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};Qa(T,c,w)}else{let I=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),w={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:qr,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:I};Qa(T,c,w)}return await T.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=a;(0,oc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let h=l;S&&(h=(0,ui.Big)(h).plus(S).toFixed());let T=new at;T.setSender(c);let I=ot(T,ze(m)),w;if(r.destinationToken.chainType==="SOLANA"){let R=await Dr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));w=ot(T,ze(R))}else w=I;if(g==="stablecoin"){let R=BigInt(o)-BigInt(h),O={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:R,type:A}),destinationChainId:u,recipient:w,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:A}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};ns(T,A,O)}else{let R=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),O={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:BigInt(o),type:A}),destinationChainId:u,recipient:w,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:A}),feeSuiCoin:R};ns(T,A,O)}return await T.toJSON({client:this.client})}};var mc=require("big.js");var Ac=oe(require("bn.js"));function li(i){return"0x"+new Ac.default(i).toString("hex")}function uc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function di(i,n){let r=await i.trx.sign(n);if(!r.signature)throw new qt("Transaction was not signed properly");let s=(await i.trx.sendRawTransaction(r)).transaction.txID;return await Zu(i,s),{txId:s}}async function Zu(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 uc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new bn(`Transaction status is ${s.receipt.result}`)}}var pr=class extends Oe{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await He(this.chainType,r,this.api),s=await this.buildRawTransactionSendFromParams(a);return await di(this.tronWeb,s)}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,l=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:u},{type:"address",value:A},{type:"uint256",value:m}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",l,"0",o)}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,messenger:l,fee:g,gasFeePaymentMethod:S,extraGas:h}=r,T=g;h&&(T=(0,mc.Big)(T).plus(h).toFixed());let I=Tt().toString(),w,R,O;return l==3?(S==="stablecoin"?(w=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:T}],R="0"):(w=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:0}],R=T),O="bridge(uint256,bytes32,uint256,uint256)"):(S==="stablecoin"?(w=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:I},{type:"uint8",value:l},{type:"uint256",value:T}],R="0"):(w=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:I},{type:"uint8",value:l},{type:"uint256",value:0}],R=T),O="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(s,O,w,R,o)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var pi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new Wr(n,r,a,s)}rawTxBuilder;async getAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:o},a)}async checkAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},a)}async approve(n,r){let a=zn(r.token,r.messenger);return this.tokenService.approve(n,{...r,spender:a})}async send(n,r){return z(r.amount),q("amount",r.amount,r.sourceToken.decimals),Ur(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).send(r)}};function zn(i,n){if(n&&n==3){if(i.cctpAddress)return i.cctpAddress;throw new Ge("Such route does not support CCTP protocol")}else return i.bridgeAddress}function Ur(i,n,r,a,s){switch($.getChainProperty(i).chainType){case"EVM":{if(s)return new Kn(s,n,r);{let o=r.getNodeRpcUrl(i);return new Kn(new dc.Web3(o),n,r)}}case"TRX":{if(s)return new pr(s,n);{let o=r.getNodeRpcUrl(i);return new pr(new lc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new Gr(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterUrl:a.jupiterUrl,jupiterMaxAccounts:a.jupiterMaxAccounts},n);case"SRB":return new Vr(r,a,n);case"SUI":return new mi(r,n)}}var bc=require("big.js");var Tc=require("tronweb"),jn=require("web3");var It=require("big.js");function pc(i,n,r,a,s){let o=L(i,3),c=(0,It.Big)(o),A=(0,It.Big)(r),u=(0,It.Big)(a).plus(s),m,l;if(A.eq(0)||u.eq(0)){let S=c.div(2);m=(0,It.Big)(a).plus(S),l=(0,It.Big)(s).plus(S)}else m=(0,It.Big)(a).plus(c.mul(a).div(u)),l=(0,It.Big)(s).plus(c.mul(s).div(u));return(0,It.Big)(Ps(n,m.toFixed(),l.toFixed())).minus(A).toFixed()}function gc(i){let n=L(i,3);return(0,It.Big)(n).round().toFixed()}var Et=require("web3");var Ju={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"}]},Dn=Ju;var Pe=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return G(this.lpAmount,3).toFixed()}earned(n,r){let a=Ts(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?G(a,r).toFixed():a}};var Ue=class{};var gr=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let s;try{s=await Mr(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await Ji(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return s}async getPoolInfoFromChain(r){let a;try{a=await Mr(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Ji(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let s=new this.web3.eth.BatchRequest,o=this.getPoolContract(a.poolAddress),c=o.methods.userRewardDebt(r).encodeABI(),A=o.methods.balanceOf(r).encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]});let[u,m]=await s.execute();if(u&&m&&!u.error&&!m.error)return new Pe({lpAmount:Et.Web3.utils.toBigInt(m.result).toString(),rewardDebt:Et.Web3.utils.toBigInt(u.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let s=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),o=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new Pe({lpAmount:o,rewardDebt:s})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,s=this.getPoolContract(r.poolAddress),o=s.methods.a().encodeABI(),c=s.methods.d().encodeABI(),A=s.methods.tokenBalance().encodeABI(),u=s.methods.vUsdBalance().encodeABI(),m=s.methods.totalSupply().encodeABI(),l=s.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:o},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:c},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:A},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:l},"latest"]});let[g,S,h,T,I,w]=await a.execute();if(g&&S&&h&&T&&I&&w&&!g.error&&!S.error&&!h.error&&!T.error&&!I.error&&!w.error){let R=Et.Web3.utils.toBigInt(h.result).toString(),O=Et.Web3.utils.toBigInt(T.result).toString(),U=Te({tokenBalance:R,vUsdBalance:O});return{aValue:Et.Web3.utils.toBigInt(g.result).toString(),dValue:Et.Web3.utils.toBigInt(S.result).toString(),tokenBalance:R,vUsdBalance:O,totalLpAmount:Et.Web3.utils.toBigInt(I.result).toString(),accRewardPerShareP:Et.Web3.utils.toBigInt(w.result).toString(),p:this.P,imbalance:U}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),s=(await a.methods.a().call()).toString(),o=(await a.methods.d().call()).toString(),c=(await a.methods.tokenBalance().call()).toString(),A=(await a.methods.vUsdBalance().call()).toString(),u=(await a.methods.totalSupply().call()).toString(),m=(await a.methods.accRewardPerShareP().call()).toString(),l=Te({tokenBalance:c,vUsdBalance:A});return{aValue:s,dValue:o,tokenBalance:c,vUsdBalance:A,totalLpAmount:u,accRewardPerShareP:m,p:this.P,imbalance:l}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Dn.abi,r)}};var gi=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 z(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(n.amount,n.token.decimals).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(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 At=require("@project-serum/anchor"),ct=require("@solana/web3.js");var fi=class extends Ue{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 ct.PublicKey(a.poolAddress),A=await o.account.pool.fetch(c);try{let u=await Yi(new ct.PublicKey(r),A.mint,o.programId),{lpAmount:m,rewardDebt:l}=await o.account.userDeposit.fetch(u);return new Pe({lpAmount:m.toString(),rewardDebt:l.toString()})}catch{return new Pe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),s=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),o=s.vUsdBalance.toString(),c=s.tokenBalance.toString(),A=Te({tokenBalance:c,vUsdBalance:o});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:o,tokenBalance:c,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:A}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.deposit(new At.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.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 At.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.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 ct.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 At.Program(Hn,r,a)}buildAnchorProvider(r){let a=new ct.Connection(this.solanaRpcUrl,"confirmed"),s=new ct.PublicKey(r);return new At.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new ct.PublicKey(s),A=await Vt(r.programId),u=await Pn(r.programId),m=new ct.PublicKey(a),g=(await r.account.pool.fetch(m)).mint,S=await Ke(c,g),h=await wn(g,r.programId),T=await Yi(c,g,r.programId),I=[At.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await Cn(S,o)}catch{let U=await At.Spl.associatedToken(o).methods.create().accounts({mint:g,owner:c,associatedAccount:S}).instruction();I.push(U)}try{await r.account.userDeposit.fetch(T)}catch{let O=await r.methods.initDepositAccount().accounts({mint:g,user:c,userDeposit:T}).instruction();I.push(O)}return{accounts:{mint:g,user:c,config:A,pool:m,bridgeAuthority:u,userDeposit:T,userToken:S,bridgeToken:h},preInstructions:I}}};var Lh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),Lu=e.contract.Spec,Xu=e.contract.Client;var yi=class extends Xu{constructor(r){super(new Lu(["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 hi=class extends Ue{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})).result;if(o.isErr())throw new C;let c=o.unwrap();return new Pe({lpAmount:c.lp_amount.toString(),rewardDebt:c.reward_debt.toString()})}async getPoolInfoFromChain(r){let s=(await this.getContract(r.poolAddress).get_pool()).result;if(s.isErr())throw new C;let o=s.unwrap();return{aValue:o.a.toString(),accRewardPerShareP:o.acc_reward_per_share_p.toString(),dValue:o.d.toString(),tokenBalance:o.token_balance.toString(),p:this.P,totalLpAmount:o.total_lp_amount.toString(),vUsdBalance:o.v_usd_balance.toString(),imbalance:Te({tokenBalance:o.token_balance.toString(),vUsdBalance:o.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 yi(s)}};var Un=oe(zt());de();de();le();function bi(i){return i=v(i),i.startsWith(`${Ht}::balance::Balance<`)}var be=class i{__StructClass=!0;static get $typeName(){return`${Ht}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;value;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("Balance",{value:b.u64()})}static fromFields(n,r){return i.reified(n).new({value:W("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!bi(r.type))throw new Error("not a Balance type");return wt(r,[n]),i.reified(n).new({value:F("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:N("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!bi(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!bi(r.bcs.type))throw new Error("object at is not a Balance object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!bi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var As=oe(zt());de();var os=oe(zt());le();function Ti(i){return i=v(i),i.startsWith(`${os.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${os.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("PoolRewards",{acc_reward_per_share_p:b.u128(),admin_fee_share_bp:b.u64(),admin_fee:be.bcs,rewards:be.bcs,lp_supply:b.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:W("u128",r.acc_reward_per_share_p),adminFeeShareBp:W("u64",r.admin_fee_share_bp),adminFee:W(be.reified(n),r.admin_fee),rewards:W(be.reified(n),r.rewards),lpSupply:W("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!Ti(r.type))throw new Error("not a PoolRewards type");return wt(r,[n]),i.reified(n).new({accRewardPerShareP:F("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:F("u64",r.fields.admin_fee_share_bp),adminFee:F(be.reified(n),r.fields.admin_fee),rewards:F(be.reified(n),r.fields.rewards),lpSupply:F("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:N("u128",r.accRewardPerShareP),adminFeeShareBp:N("u64",r.adminFeeShareBp),adminFee:N(be.reified(n),r.adminFee),rewards:N(be.reified(n),r.rewards),lpSupply:N("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ti(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ti(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Ti(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};de();var cs=oe(zt());le();function Si(i){return i=v(i),i.startsWith(`${cs.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${cs.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("PoolState",{token_balance:b.u64(),vusd_balance:b.u64(),d:b.u64(),a:b.u64(),balance_ratio_min_bp:b.u64()})}static fromFields(n,r){return i.reified(n).new({tokenBalance:W("u64",r.token_balance),vusdBalance:W("u64",r.vusd_balance),d:W("u64",r.d),a:W("u64",r.a),balanceRatioMinBp:W("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!Si(r.type))throw new Error("not a PoolState type");return wt(r,[n]),i.reified(n).new({tokenBalance:F("u64",r.fields.token_balance),vusdBalance:F("u64",r.fields.vusd_balance),d:F("u64",r.fields.d),a:F("u64",r.fields.a),balanceRatioMinBp:F("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:N("u64",r.tokenBalance),vusdBalance:N("u64",r.vusdBalance),d:N("u64",r.d),a:N("u64",r.a),balanceRatioMinBp:N("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Si(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Si(r.bcs.type))throw new Error("object at is not a PoolState object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Si(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};le();function Pi(i){return i=v(i),i.startsWith(`${As.PKG_V1}::pool::Pool<`)}var wi=class i{__StructClass=!0;static get $typeName(){return`${As.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("Pool",{id:Ze.bcs,state:gn.bcs,rewards:pn.bcs,fee_share_bp:b.u64(),can_deposit:b.bool(),can_withdraw:b.bool(),decimals:b.u8(),balance:be.bcs})}static fromFields(n,r){return i.reified(n).new({id:W(Ze.reified(),r.id),state:W(gn.reified(n),r.state),rewards:W(pn.reified(n),r.rewards),feeShareBp:W("u64",r.fee_share_bp),canDeposit:W("bool",r.can_deposit),canWithdraw:W("bool",r.can_withdraw),decimals:W("u8",r.decimals),balance:W(be.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Pi(r.type))throw new Error("not a Pool type");return wt(r,[n]),i.reified(n).new({id:F(Ze.reified(),r.fields.id),state:F(gn.reified(n),r.fields.state),rewards:F(pn.reified(n),r.fields.rewards),feeShareBp:F("u64",r.fields.fee_share_bp),canDeposit:F("bool",r.fields.can_deposit),canWithdraw:F("bool",r.fields.can_withdraw),decimals:F("u8",r.fields.decimals),balance:F(be.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:N(Ze.reified(),r.id),state:N(gn.reified(n),r.state),rewards:N(pn.reified(n),r.rewards),feeShareBp:N("u64",r.feeShareBp),canDeposit:N("bool",r.canDeposit),canWithdraw:N("bool",r.canWithdraw),decimals:N("u8",r.decimals),balance:N(be.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Pi(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Pi(r.bcs.type))throw new Error("object at is not a Pool object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Pi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};de();var us=oe(zt());le();function Ci(i){return i=v(i),i.startsWith(`${us.PKG_V1}::user_deposit::UserDeposit<`)}var Ii=class i{__StructClass=!0;static get $typeName(){return`${us.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;lpAmount;rewardDebt;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("UserDeposit",{id:Ze.bcs,lp_amount:b.u64(),reward_debt:b.u64()})}static fromFields(n,r){return i.reified(n).new({id:W(Ze.reified(),r.id),lpAmount:W("u64",r.lp_amount),rewardDebt:W("u64",r.reward_debt)})}static fromFieldsWithTypes(n,r){if(!Ci(r.type))throw new Error("not a UserDeposit type");return wt(r,[n]),i.reified(n).new({id:F(Ze.reified(),r.fields.id),lpAmount:F("u64",r.fields.lp_amount),rewardDebt:F("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:N(Ze.reified(),r.id),lpAmount:N("u64",r.lpAmount),rewardDebt:N("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ci(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ci(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Ci(s.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return i.fromSuiObjectData(r,s.data)}};function yc(i,n,r){if(n.length===0||!n[0])return[];let a=n[0],s=i.reduce((A,u)=>A+BigInt(u),BigInt(0)),o=BigInt(a.balance),c=[];for(let A of n.slice(1)){if(o>s)return fc(r,a,c,i);o+=BigInt(A.balance),c.push(A)}return o>=s?fc(r,a,c,i):[]}function fc(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 Yu="0x0000000000000000000000000000000000000000000000000000000000000000";async function hc(i,n,r){let a=await i.devInspectTransactionBlock({sender:Yu,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():dr(r).parse(Uint8Array.from(o))}var Bi=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new Ut({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=a.suiAddresses;if(!s)throw new C("SUI token must contain 'suiAddresses'");(0,Un.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin);let c=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((A,u)=>{if(u.data)return A.lpAmount+=BigInt(u.data.content.fields.lp_amount),A.rewardDebt+=BigInt(u.data.content.fields.reward_debt),A;throw new C("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new Pe({lpAmount:c.lpAmount.toString(),rewardDebt:c.rewardDebt.toString()})}async fetchDeposits(r,a){return await Ct(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:Ii.phantom(re(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=48,o=new at;ec(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await hc(this.client,o,wi.reified(re(r.originTokenAddress))),A=c.state.tokenBalance,u=c.state.vusdBalance,m=Te({tokenBalance:A,vUsdBalance:u});return{dValue:c.state.d,aValue:c.state.a,totalLpAmount:c.rewards.lpSupply,vUsdBalance:u,tokenBalance:A,accRewardPerShareP:c.rewards.accRewardPerShareP,p:s,imbalance:m}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=await Ct(g=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:g}));if(s.length===0||!s[0])throw new gt("No coins to deposit");let o=s[0],c=new at;c.setSender(r.accountAddress);let{depositObj:A,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=yc([r.amount],s,c);if(!m)throw new gt("No coins to deposit");if(!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let l=Ho(c,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:A,coin:m});return c.mergeCoins(o.coinObjectId,[l]),u&&c.transferObjects([A],r.accountAddress),await c.toJSON({client:this.client})}async getDepositObject(r,a,s){let o=await this.fetchDeposits(r,a);if(o.length===0||!o[0]){let c=re(a).phantomType;return{depositObj:tc(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new C("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new at;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=Qo(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await Ct(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));if(!u[0]||!u[1])throw new C("No rewards found");return m[0]?o.mergeCoins(m[0].coinObjectId,[u[0],u[1]]):(o.mergeCoins(u[0],[u[1]]),o.transferObjects([u[0]],r.accountAddress)),await o.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new at;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=qo(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await Ct(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));return m[0]?o.mergeCoins(m[0].coinObjectId,[u]):o.transferObjects([u],r.accountAddress),await o.toJSON({client:this.client})}};var Bt=require("web3");var fr=class extends Ue{constructor(r,a,s){super();this.tronWeb=r;this.api=a;s&&(this.web3=new Bt.Web3(s))}chainType="TRX";P=52;web3;async getUserBalanceInfo(r,a){let s;if(this.web3)try{s=await this.getUserBalanceInfoByBatch(this.web3,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=new r.BatchRequest,c=new r.eth.Contract(Dn.abi,Or(s.poolAddress)),A=c.methods.userRewardDebt(a).encodeABI(),u=c.methods.balanceOf(a).encodeABI();o.add({method:"eth_call",params:[{to:s.poolAddress,data:A},"latest"]}),o.add({method:"eth_call",params:[{to:s.poolAddress,data:u},"latest"]});let[m,l]=await o.execute();if(m&&l&&!m.error&&!l.error)return new Pe({lpAmount:Bt.Web3.utils.toBigInt(l.result).toString(),rewardDebt:Bt.Web3.utils.toBigInt(m.result).toString()});throw new Error("Batched 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 Pe({lpAmount:c,rewardDebt:o})}async getPoolInfoFromChain(r){let a;if(this.web3)try{a=await this.getPoolInfoByBatch(this.web3,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let s=new r.BatchRequest,o=new r.eth.Contract(Dn.abi,Or(a.poolAddress),this.web3),c=o.methods.a().encodeABI(),A=o.methods.d().encodeABI(),u=o.methods.tokenBalance().encodeABI(),m=o.methods.vUsdBalance().encodeABI(),l=o.methods.totalSupply().encodeABI(),g=o.methods.accRewardPerShareP().encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:u},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:l},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:g},"latest"]});let[S,h,T,I,w,R]=await s.execute();if(S&&h&&T&&I&&w&&R&&!S.error&&!h.error&&!T.error&&!I.error&&!w.error&&!R.error){let O=Bt.Web3.utils.toBigInt(T.result).toString(),U=Bt.Web3.utils.toBigInt(I.result).toString(),Ae=Te({tokenBalance:O,vUsdBalance:U});return{aValue:Bt.Web3.utils.toBigInt(S.result).toString(),dValue:Bt.Web3.utils.toBigInt(h.result).toString(),tokenBalance:O,vUsdBalance:U,totalLpAmount:Bt.Web3.utils.toBigInt(w.result).toString(),accRewardPerShareP:Bt.Web3.utils.toBigInt(R.result).toString(),p:this.P,imbalance:Ae}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[s,o,c,A,u,m]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),l=c.toString(),g=A.toString(),S=Te({tokenBalance:l,vUsdBalance:g});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:l,vUsdBalance:g,totalLpAmount:u.toString(),accRewardPerShareP:m.toString(),p:this.P,imbalance:S}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",o,"0",s)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",o,"0",s)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,s=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",s,"0",a)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}getContract(r){return this.tronWeb.contract(Dn.abi,r)}};var vi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new gi(n,r,this.params,s);let o=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Rt({defaultTtl:o})}rawTxBuilder;cache;async getAllowance(n,r){if(r){let a=n,s=r;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(n,r){if(r){let a=n,s=r;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(n,r){return this.tokenService.approve(n,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(n,r,a){z(n),q("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:A,dValue:u}=s,m=pc(n,A,u,c,o);return G(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){z(n),q("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=gc(n),A=xe(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",l=(0,bc.Big)(A).plus(m).toFixed();return G(l,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($.getChainProperty(i).chainType){case"EVM":{if(s)return new gr(s,n);{let o=r.getNodeRpcUrl(i),c=new jn.Web3(o);return c.defaultReturnFormat={number:jn.FMT_NUMBER.STR,bytes:jn.FMT_BYTES.HEX},new gr(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new fr(s,n,c);{let A=new Tc.TronWeb({fullHost:o});return new fr(A,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new fi(o,n)}case"SRB":return new hi(r,a,n);case"SUI":return new Bi(r.getNodeRpcUrl(i),n)}}var ie=require("big.js");function wc(i,n,r){let a=Ku(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=zu(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Cc(i,n,r){let a=Hu(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=Qu(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Ku(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Sc(en(c,r),a),amountExcludingCommissionInSystemPrecision:Sc(en(s,r),a)}}function Sc(i,n){if(i.eq(0))return"0";let r=(0,ie.Big)(n.tokenBalance).plus(i),a=ht(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(n.vUsdBalance).minus(a).round().toFixed()}function zu(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,ie.Big)(i).plus(a.vUsdBalance),c=ht(o,a.aValue,a.dValue),A=xe((0,ie.Big)(a.tokenBalance).minus(c),r),u=(0,ie.Big)(A).times(n),m=(0,ie.Big)(A).minus(u).round();return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}function Hu(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),o=(0,ie.Big)(i).times(s),c=(0,ie.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Pc(en(c,r),a),amountExcludingCommissionInSystemPrecision:Pc(en(i,r),a)}}function Pc(i,n){let r=(0,ie.Big)(n.tokenBalance).minus(i),a=ht(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(a).minus(n.vUsdBalance).round().toFixed()}function Qu(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,ie.Big)(a.vUsdBalance).minus(i),o=ht(s.toFixed(),a.aValue,a.dValue),c=(0,ie.Big)(o).minus(a.tokenBalance),A=xe(c.toFixed(),r),u=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),m=(0,ie.Big)(A).times(u),l=(0,ie.Big)(A).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:l.round().toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}var Gt=require("big.js");function Ic(i,n,r,a,s){let o=yt(i,n,r),c=xe(o,n.decimals),A=Ln(o,a,s),u=(0,Gt.Big)(i).times(n.feeShare),m=(0,Gt.Big)(A).div((0,Gt.Big)(1).minus(a.feeShare)).minus(A);return{sourceLPSwap:{fee:G(u,n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed(),swap:G((0,Gt.Big)(i).minus(c).minus(u),n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed()},destLPSwap:{fee:G(m,a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed(),swap:G(xe(o,a.decimals).minus(A).minus(m),a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed()}}}var En=require("@solana/web3.js");var Ri=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async addMemoToTx(n,r){if(r.length>28)throw new C("InvalidArgumentException memo cannot be more than 28 characters");let a=new En.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=En.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s}),c=o.instructions[o.instructions.length-1];if(!c?.keys)throw new C("Last instruction or its keys are invalid.");c.keys.push({pubkey:new En.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var K=require("@stellar/stellar-sdk");var VC=require("@stellar/stellar-sdk"),qu=VC.contract.Spec,em=VC.contract.Client;var yr=class extends em{constructor(r){super(new qu(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var tm=100,nm=180,ki=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=(await this.getContract(yr,n.tokenAddress).name()).result,[c,A]=o.split(":");if(c===void 0||A===void 0)throw new C("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let u=new K.Asset(c,A),m=K.Operation.changeTrust({asset:u,limit:n.limit});return new K.TransactionBuilder(a,{fee:tm.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(m).setTimeout(nm).build().toXDR()}async getBalanceLine(n,r){let s=(await this.getContract(yr,r).name()).result,[o,c]=s.split(":"),A=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new K.Horizon.Server(A).loadAccount(n)).balances.find(g=>(g.asset_type==="credit_alphanum4"||g.asset_type==="credit_alphanum12")&&g.asset_code==o&&g.asset_issuer==c)}async submitTransactionStellar(n){let r=new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=K.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(K.rpc.Api.isSimulationRestore(c))return new K.TransactionBuilder(s,{fee:(+K.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(K.Operation.restoreFootprint({})).setTimeout(K.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Ms(()=>a.getTransaction(n),c=>c.status===K.rpc.Api.GetTransactionStatus.NOT_FOUND,r);if(s.length===0)throw new C("No transaction responses found.");let o=s[s.length-1];if(!o)throw new C("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 Mi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new ki(n,r),this.sol=new Ri(n,r)}srb;sol};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),Yn=(r=>(r.INT="int",r.FLOAT="float",r))(Yn||{});var vc=require("big.js"),Rc=require("tronweb"),kc=require("web3");var rm={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"}]},xi=rm;var ms=require("big.js"),je=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,ms.Big)(r).gte((0,ms.Big)(n.amount))}};var im="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",am="0xdac17f958d2ee523a2206206994597c13d831ec7",sm=1e5,hr=class extends je{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()===am}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=this.getERC20Contract(a).methods.approve(s,c==null?im:li(c));return Promise.resolve({from:o,to:a,value:"0",data:u.encodeABI()})}async sendRawTransaction(r,a){let s=r,o={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?s.gas=sm: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(xi.abi,r)}};var Bc=require("@project-serum/anchor"),fn=require("@solana/web3.js");var Oi=class extends je{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}buildAnchorProvider(r){let a=new fn.Connection(this.solanaRpcUrl,"confirmed"),s=new fn.PublicKey(r);return new Bc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ce}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await Ke(new fn.PublicKey(a),new fn.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 fn.PublicKey(r.account))).toString()}};var ls=require("@stellar/stellar-sdk");var Fi=class extends je{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new C("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new ls.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof ls.NotFoundError)return"0";throw m}let u=c.balances.find(m=>(m.asset_type==="credit_alphanum4"||m.asset_type==="credit_alphanum12")&&m.asset_code==a&&m.asset_issuer==s);return u?.balance?L(u.balance,$.getChainDecimalsByType($.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new ls.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(A=>A.asset_type==="native");return c?.balance?L(c.balance,$.getChainDecimalsByType($.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ce}buildRawTransactionApprove(){throw new ce}};var Ni=class extends je{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Ut({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}getAllowance(r){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await Ct(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 om="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",br=class extends je{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:s}=r;return(await(await this.getContract(a)).methods.allowance(s,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await di(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=c==null?om:li(c),u=[{type:"address",value:s},{type:"uint256",value:A}];return this.buildRawTransaction(a,"approve(address,uint256)",u,"0",o)}getContract(r){return this.tronWeb.contract(xi.abi,r)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var Di=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 G(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),this.getChainTokenService(n.token.chainSymbol,n.owner,r).checkAllowance(this.prepareCheckAllowanceParams(n))}async approve(n,r){return r.amount&&(z(r.amount),q("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,n).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(n,r){return n.amount&&(z(n.amount),q("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,r).buildRawTransactionApprove(this.prepareApproveParams(n))}async getTokenBalance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.account,r).getTokenBalance(n);return n.token.decimals?G(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:G(a,$.getChainDecimalsByType($.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch($.getChainProperty(n).chainType){case"EVM":{if(a)return new hr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new hr(new kc.Web3(s),this.api)}}case"TRX":{if(a)return new br(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Rc.TronWeb({fullHost:s});return o.setAddress(r),new br(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Oi(s,this.api)}case"SRB":return new Fi(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Ni(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:L(n.amount,n.token.decimals)}}prepareApproveParams(n){return{tokenAddress:n.token.tokenAddress,owner:n.owner,spender:n.spender,chainSymbol:n.token.chainSymbol,amount:n.amount==null?void 0:(0,vc.Big)(n.amount).toFixed()}}};var Tr=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new $n(n)}},Wi=class{api;tokenService;params;bridge;pool;constructor(n,r=Gn){$.addChainsProperties(r.additionalChainsProperties);let a=new Ir(r),s=new Br(a),o=new vr(s),c=new kr(o);this.api=new Rr(c,r),this.tokenService=new Di(this.api,n,r),this.bridge=new pi(this.api,n,r,this.tokenService),this.pool=new vi(this.api,n,r,this.tokenService),this.params=r}async chainDetailsMap(n){return this.api.getChainDetailsMap(n)}async tokens(n){return this.api.tokens(n)}async tokensByChain(n,r){let s=(await this.api.getChainDetailsMap(r))[n];return s?s.tokens:[]}async getTransferStatus(n,r){return this.api.getTransferStatus(n,r)}async getGasBalance(n,r){return this.api.getGasBalance(n,r)}async checkAddress(){return new Promise(n=>{n({status:"OK",gasBalance:null})})}async getPendingStatusInfo(n,r,a,s){z(n);let o;r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n;let c=yt(o,a,await ue(this.api,a)),A=await ue(this.api,s),u=this.getAmountFromVUsdFormatted(c,s,A),m,l=await this.api.getPendingInfo();for(let g in l[s.chainSymbol]){let S=l[s.chainSymbol];if(!S)throw new C("Cannot find pending info for "+s.chainSymbol);m=S[g]}if(m){let g=ys(m.totalSentAmount,A),S=this.getAmountFromVUsdFormatted(c,s,g),h;return(0,ut.Big)(S.int).gt(u.int)?h={min:u,max:S}:h={min:S,max:u},{pendingTxs:m.pendingTxs,pendingAmount:{int:_t(m.totalSentAmount,3,s.decimals).toFixed(0),float:G(m.totalSentAmount,3).toFixed()},estimatedAmount:h}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:u,max:u}}}async getTokenBalance(n,r){return this.tokenService.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.tokenService.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){z(n),q("amountFloat",n,r.decimals);let a=L(n,r.decimals);if(a.eq(0))return 0;let s=yt(a,r,await ue(this.api,r)),o=xe(s,r.decimals);return Ei(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){z(n),q("amountFloat",n,r.decimals);let s=L(n,r.decimals);if(s.eq(0))return 0;let o=yt(s,r,await ue(this.api,r)),c=Ln(o,a,await ue(this.api,a)),A=xe(o,a.decimals);return Ei(A,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return z(n),q("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,ut.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 z(n),q("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,ut.Big)(n).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToBeReceived(n,r,a,s){let o=await ue(this.api,r),c=await ue(this.api,a);return this.getAmountToBeReceivedFromPools(n,r,a,o,c,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToBeReceivedFromPools(n,r,a,A,u,s)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){z(n),q("amountToSendFloat",n,r.decimals);let A=L(n,r.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ge("Such route does not support CCTP protocol");let m=A.mul((0,ut.Big)(1).minus(r.cctpFeeShare)).round(0,ut.Big.roundUp),l=_t(m,r.decimals,a.decimals).round(0);return G(l,a.decimals).toFixed()}let u=yt(A,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}async getAmountToSend(n,r,a,s){let o=await ue(this.api,r),c=await ue(this.api,a);return this.getAmountToSendFromPools(n,r,a,o,c,s)}async getAmountToSendFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToSendFromPools(n,r,a,A,u,s)}getAmountToSendFromPools(n,r,a,s,o,c){z(n),q("amountToBeReceivedFloat",n,a.decimals);let A=L(n,a.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ge("Such route does not support CCTP protocol");let l=A.div((0,ut.Big)(1).minus(r.cctpFeeShare)).round(0,ut.Big.roundDown),g=_t(l,a.decimals,r.decimals).round(0);return G(g,r.decimals).toFixed()}let u=bs(A,a,o),m=hs(u,r,s);if((0,ut.Big)(m).lte(0))throw new ft;return G(m,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return Hi(n.allbridgeChainId,n.chainType,r.allbridgeChainId,n.decimals,a,this.api)}getAverageTransferTime(n,r,a){return n.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(n){return await this.api.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}async refreshPoolInfo(n){if(n){let a=(n instanceof Array?n:[n]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(n){return Ss(n)}async getExtraGasMaxLimits(n,r){return await Qi(n,r,this.api)}async getVUsdFromAmount(n,r,a){z(n);let s;r=="float"?(q("amount",n,a.decimals),s=L(n,a.decimals).toFixed()):s=n;let o=yt(s,a,await ue(this.api,a));return{int:o,float:G(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await ue(this.api,r))}getAmountFromVUsdFormatted(n,r,a){z(n);let s=Ln(n,r,a);if((0,ut.Big)(s).lt(0))throw new ft;return{int:s,float:G(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return wc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ue(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ue(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Cc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ue(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ue(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,ut.Big)(o).lt(0))throw new ft;return s}async getSendAmountDetails(n,r,a,s){z(n);let o;return r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n,Ic(o,a,await ue(this.api,a),s,await ue(this.api,s))}};function cm(i){return"solanaRpcUrl"in i}var ds=class{params;bridge;pool;utils;service;constructor(n,r=Gn){let a;cm(n)?a=new Tr({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new Tr(n),this.service=new Wi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Mi(a,r),this.params=r}async chainDetailsMap(n="swap"){return this.service.chainDetailsMap(n)}async tokens(n="swap"){return this.service.tokens(n)}async tokensByChain(n,r="swap"){return this.service.tokensByChain(n,r)}async getTransferStatus(n,r){return this.service.getTransferStatus(n,r)}async getGasBalance(n,r){return this.service.getGasBalance(n,r)}async checkAddress(n,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(n,r,a,s){return this.service.getPendingStatusInfo(n,r,a,s)}async getTokenBalance(n,r){return this.service.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.service.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){return this.service.calculateFeePercentOnSourceChain(n,r)}async calculateFeePercentOnDestinationChain(n,r,a){return this.service.calculateFeePercentOnDestinationChain(n,r,a)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(n,r,a,s)}async getAmountToSendAndGasFeeOptions(n,r,a,s){return this.service.getAmountToSendAndGasFeeOptions(n,r,a,s)}async getAmountToBeReceived(n,r,a,s){return this.service.getAmountToBeReceived(n,r,a,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromChain(n,r,a,s,o,c)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromPools(n,r,a,s,o,c)}async getAmountToSend(n,r,a,s){return this.service.getAmountToSend(n,r,a,s)}async getAmountToSendFromChain(n,r,a,s,o,c){return this.service.getAmountToSendFromChain(n,r,a,s,o,c)}getAmountToSendFromPools(n,r,a,s,o,c){return this.service.getAmountToSendFromPools(n,r,a,s,o,c)}async getGasFeeOptions(n,r,a){return this.service.getGasFeeOptions(n,r,a)}getAverageTransferTime(n,r,a){return this.service.getAverageTransferTime(n,r,a)}async getPoolInfoByToken(n){return this.service.getPoolInfoByToken(n)}async refreshPoolInfo(n){return this.service.refreshPoolInfo(n)}aprInPercents(n){return this.service.aprInPercents(n)}async getExtraGasMaxLimits(n,r){return this.service.getExtraGasMaxLimits(n,r)}async getVUsdFromAmount(n,r,a){return this.service.getVUsdFromAmount(n,r,a)}async getAmountFromVUsd(n,r){return this.service.getAmountFromVUsd(n,r)}async swapAndBridgeFeeCalculation(n,r,a){return this.service.swapAndBridgeFeeCalculation(n,r,a)}async swapAndBridgeFeeCalculationReverse(n,r,a){return this.service.swapAndBridgeFeeCalculationReverse(n,r,a)}async getSendAmountDetails(n,r,a,s){return this.service.getSendAmountDetails(n,r,a,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
1
+ "use strict";var Dc=Object.create;var Cr=Object.defineProperty;var Wc=Object.getOwnPropertyDescriptor;var Uc=Object.getOwnPropertyNames;var jc=Object.getPrototypeOf,Ec=Object.prototype.hasOwnProperty;var yn=(i,n)=>()=>(i&&(n=i(i=0)),n);var Ei=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),Gc=(i,n)=>{for(var r in n)Cr(i,r,{get:n[r],enumerable:!0})},ys=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Uc(n))!Ec.call(i,s)&&s!==r&&Cr(i,s,{get:()=>n[s],enumerable:!(a=Wc(n,s))||a.enumerable});return i};var oe=(i,n,r)=>(r=i!=null?Dc(jc(i)):{},ys(n||!i||!i.__esModule?Cr(r,"default",{value:i,enumerable:!0}):r,i)),_c=i=>ys(Cr({},"__esModule",{value:!0}),i);function Qr(i){try{return(0,Hr.fromBase58)(i).length===fA}catch{return!1}}function Ne(i){return hA(i)&&bA(i)===sr}function Mn(i){return Ne(i)}function yA(i){return i.includes("::")?ua(i):i}function ua(i){let[n,r]=i.split("::"),a=i.slice(n.length+r.length+4),s=a.includes("<")?a.slice(0,a.indexOf("<")):a,o=a.includes("<")?(0,Hr.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>yA(c.trim())):[];return{address:x(n),module:r,name:s,typeParams:o}}function or(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?ua(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:or(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function x(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(sr*2,"0")}`}function Ce(i,n=!1){return x(i,n)}function hA(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function bA(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var Hr,fA,sr,Ie=yn(()=>{Hr=require("@mysten/bcs"),fA=32;sr=32});var yo,TA,SA,xt,ma=yn(()=>{yo=require("@mysten/bcs");Ie();TA=/^vector<(.+)>$/,SA=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,xt=class i{static parseFromStr(n,r=!1){if(n==="address")return{address:null};if(n==="bool")return{bool:null};if(n==="u8")return{u8:null};if(n==="u16")return{u16:null};if(n==="u32")return{u32:null};if(n==="u64")return{u64:null};if(n==="u128")return{u128:null};if(n==="u256")return{u256:null};if(n==="signer")return{signer:null};let a=n.match(TA);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(SA);if(s)return{struct:{address:r?x(s[1]):s[1],module:s[2],name:s[3],typeParams:s[5]===void 0?[]:i.parseStructTypeArgs(s[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${n}`)}static parseStructTypeArgs(n,r=!1){return(0,yo.splitGenericParameters)(n).map(a=>i.parseFromStr(a,r))}static tagToString(n){if("bool"in n)return"bool";if("u8"in n)return"u8";if("u16"in n)return"u16";if("u32"in n)return"u32";if("u64"in n)return"u64";if("u128"in n)return"u128";if("u256"in n)return"u256";if("address"in n)return"address";if("signer"in n)return"signer";if("vector"in n)return`vector<${i.tagToString(n.vector)}>`;if("struct"in n){let r=n.struct,a=r.typeParams.map(i.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${a?`<${a}>`:""}`}throw new Error("Invalid TypeTag")}}});function PA(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function wA(i){return f.bcs.enum("Option",{None:null,Some:i})}function ka(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ra,value:i})}var f,H,De,Be,la,da,pa,ga,qr,qe,fa,ya,ha,ba,Ta,Sa,Pa,wa,Ca,Ia,Ba,va,Ra,Ma,xa,Oa,Fa,ho,CA,Na,bo,To,Da=yn(()=>{f=require("@mysten/bcs");Ie();ma();H=f.bcs.bytes(sr).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!Ne(x(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(x(i)):i,output:i=>x((0,f.toHex)(i))}),De=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")}}),Be=f.bcs.struct("SuiObjectRef",{objectId:H,version:f.bcs.u64(),digest:De}),la=f.bcs.struct("SharedObjectRef",{objectId:H,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),da=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Be,SharedObject:la,Receiving:Be}),pa=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:da}),ga=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>ga),struct:f.bcs.lazy(()=>Sa),u16:null,u32:null,u256:null}),qr=ga.transform({input:i=>typeof i=="string"?xt.parseFromStr(i,!0):i,output:i=>xt.tagToString(i)}),qe=f.bcs.enum("Argument",{GasCoin:null,Input:f.bcs.u16(),Result:f.bcs.u16(),NestedResult:f.bcs.tuple([f.bcs.u16(),f.bcs.u16()])}),fa=f.bcs.struct("ProgrammableMoveCall",{package:H,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(qr),arguments:f.bcs.vector(qe)}),ya=f.bcs.enum("Command",{MoveCall:fa,TransferObjects:f.bcs.struct("TransferObjects",{objects:f.bcs.vector(qe),address:qe}),SplitCoins:f.bcs.struct("SplitCoins",{coin:qe,amounts:f.bcs.vector(qe)}),MergeCoins:f.bcs.struct("MergeCoins",{destination:qe,sources:f.bcs.vector(qe)}),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(H)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:wA(qr).transform({input:i=>i===null?{None:!0}:{Some:i},output:i=>i.Some??null}),elements:f.bcs.vector(qe)}),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(H),package:H,ticket:qe})}),ha=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(pa),commands:f.bcs.vector(ya)}),ba=f.bcs.enum("TransactionKind",{ProgrammableTransaction:ha,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),Ta=f.bcs.enum("TransactionExpiration",{None:null,Epoch:PA()}),Sa=f.bcs.struct("StructTag",{address:H,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(ga)}),Pa=f.bcs.struct("GasData",{payment:f.bcs.vector(Be),owner:H,price:f.bcs.u64(),budget:f.bcs.u64()}),wa=f.bcs.struct("TransactionDataV1",{kind:ba,sender:H,gasData:Pa,expiration:Ta}),Ca=f.bcs.enum("TransactionData",{V1:wa}),Ia=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Ba=f.bcs.enum("IntentVersion",{V0:null}),va=f.bcs.enum("AppId",{Sui:null}),Ra=f.bcs.struct("Intent",{scope:Ia,version:Ba,appId:va});Ma=f.bcs.enum("CompressedSignature",{ED25519:f.bcs.fixedArray(64,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(64,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(64,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),xa=f.bcs.enum("PublicKey",{ED25519:f.bcs.fixedArray(32,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(33,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(33,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),Oa=f.bcs.struct("MultiSigPkMap",{pubKey:xa,weight:f.bcs.u8()}),Fa=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(Oa),threshold:f.bcs.u16()}),ho=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(Ma),bitmap:f.bcs.u16(),multisig_pk:Fa}),CA=f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))}),Na=f.bcs.struct("SenderSignedTransaction",{intentMessage:ka(Ca),txSignatures:f.bcs.vector(CA)}),bo=f.bcs.vector(Na,{name:"SenderSignedData"}),To=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,IA,BA,So,vA,RA,kA,Po,wo,xn,MA,Wa,xA,OA,FA,NA,DA,WA,Co,Io=yn(()=>{y=require("@mysten/bcs");Da();IA=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:H}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:H}),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:H,ticketId:H})}),BA=y.bcs.struct("ModuleId",{address:H,name:y.bcs.string()}),So=y.bcs.struct("MoveLocation",{module:BA,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),vA=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}),RA=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),kA=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:H}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(So),MoveAbort:y.bcs.tuple([So,y.bcs.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:y.bcs.struct("CommandArgumentError",{argIdx:y.bcs.u16(),kind:vA}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:RA}),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:IA}),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(H)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:H,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),Po=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:kA,command:y.bcs.option(y.bcs.u64())})}),wo=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),xn=y.bcs.enum("Owner",{AddressOwner:H,ObjectOwner:H,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),MA=y.bcs.struct("TransactionEffectsV1",{status:Po,executedEpoch:y.bcs.u64(),gasUsed:wo,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([H,y.bcs.u64()])),sharedObjects:y.bcs.vector(Be),transactionDigest:De,created:y.bcs.vector(y.bcs.tuple([Be,xn])),mutated:y.bcs.vector(y.bcs.tuple([Be,xn])),unwrapped:y.bcs.vector(y.bcs.tuple([Be,xn])),deleted:y.bcs.vector(Be),unwrappedThenDeleted:y.bcs.vector(Be),wrapped:y.bcs.vector(Be),gasObject:y.bcs.tuple([Be,xn]),eventsDigest:y.bcs.option(De),dependencies:y.bcs.vector(De)}),Wa=y.bcs.tuple([y.bcs.u64(),De]),xA=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Wa,xn])}),OA=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([De,xn]),PackageWrite:Wa}),FA=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),NA=y.bcs.struct("EffectsObjectChange",{inputState:xA,outputState:OA,idOperation:FA}),DA=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Wa,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),WA=y.bcs.struct("TransactionEffectsV2",{status:Po,executedEpoch:y.bcs.u64(),gasUsed:wo,transactionDigest:De,gasObjectIndex:y.bcs.option(y.bcs.u32()),eventsDigest:y.bcs.option(De),dependencies:y.bcs.vector(De),lamportVersion:y.bcs.u64(),changedObjects:y.bcs.vector(y.bcs.tuple([H,NA])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([H,DA])),auxDataDigest:y.bcs.option(De)}),Co=y.bcs.enum("TransactionEffects",{V1:MA,V2:WA})});var et,UA,b,le=yn(()=>{et=require("@mysten/bcs");Da();Io();ma();UA=require("@mysten/bcs"),b={...et.bcs,U8:et.bcs.u8(),U16:et.bcs.u16(),U32:et.bcs.u32(),U64:et.bcs.u64(),U128:et.bcs.u128(),U256:et.bcs.u256(),ULEB128:et.bcs.uleb128(),Bool:et.bcs.bool(),String:et.bcs.string(),Address:H,AppId:va,Argument:qe,CallArg:pa,CompressedSignature:Ma,GasData:Pa,Intent:Ra,IntentMessage:ka,IntentScope:Ia,IntentVersion:Ba,MultiSig:ho,MultiSigPkMap:Oa,MultiSigPublicKey:Fa,ObjectArg:da,ObjectDigest:De,ProgrammableMoveCall:fa,ProgrammableTransaction:ha,PublicKey:xa,SenderSignedData:bo,SenderSignedTransaction:Na,SharedObjectRef:la,StructTag:Sa,SuiObjectRef:Be,Command:ya,TransactionData:Ca,TransactionDataV1:wa,TransactionExpiration:Ta,TransactionKind:ba,TypeTag:qr,TransactionEffects:Co,PasskeyAuthenticator:To}});function Vu(i,n=["<",">"]){let[r,a]=n,s=[],o="",c=0;for(let A=0;A<i.length;A++){let u=i[A];if(u===r&&c++,u===a&&c--,c===0&&u===","){s.push(o.trim()),o="";continue}o+=u}return s.push(o.trim()),s}function he(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=Vu(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function Ho(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function k(i,n){return Ho(n)?n:i.object(n)}function $e(i,n,r){if(Ho(n))return k(i,n);function a(m){let{typeName:l,typeArgs:g}=he(m);switch(l){case"bool":return b.Bool;case"u8":return b.U8;case"u16":return b.U16;case"u32":return b.U32;case"u64":return b.U64;case"u128":return b.U128;case"u256":return b.U256;case"address":return b.Address;case"0x1::string::String":case"0x1::ascii::String":return b.String;case"0x2::object::ID":return b.Address;case"0x1::option::Option":return b.option(a(g[0]));case"vector":return b.vector(a(g[0]));default:throw new Error(`invalid primitive type ${m}`)}}function s(m){for(let l of m){if(typeof l>"u"||l===null)return!0;if(Array.isArray(l))return s(l)}return!1}function o(m){for(let l of m){if(!Array.isArray(l)){if(l===null)continue;switch(typeof l){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return o(l)}return!0}function c(m){for(let l of m){if(!Array.isArray(l))switch(typeof l){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return c(l)}return!1}let{typeName:A,typeArgs:u}=he(r);switch(A){case"0x1::option::Option":if(n===null)return i.pure.option("bool",null);if(o([n]))return i.pure(a(r).serialize(n));if(c([n]))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.moveCall({target:"0x1::option::some",typeArguments:[u[0]],arguments:[$e(i,n,u[0])]});case"vector":if(!Array.isArray(n))throw new Error("expected an array for vector type");if(n.length===0)return i.pure(b.vector(b.Bool).serialize([]));if(s(n))throw new Error("the provided array contains undefined or null values");if(o(n))return i.pure(a(r).serialize(n));if(c(n))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.makeMoveVec({type:u[0],elements:n});default:return i.pure(a(r).serialize(n))}}function $u(i){let n=i.split("0x").join("");for(let r=0;r<n.length;r++)if(n[r]!=="0")return`0x${n.substring(r)}`;return"0x0"}function v(i){let{typeName:n,typeArgs:r}=he(i);switch(n){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return n;case"vector":return`vector<${v(r[0])}>`;default:{let a=n.split("::");a[0]=$u(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>v(o)).join(",")}>`:s}}}function _(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var de=yn(()=>{"use strict";le()});var zt=Ei((Qg,Qo)=>{"use strict";de();var qa=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Zu=new qa;Qo.exports=Zu});var rs=Ei((nf,ac)=>{"use strict";de();var ns=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Ju=new ns;ac.exports=Ju});var ss=Ei((of,oc)=>{"use strict";de();var as=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Lu=new as;oc.exports=Lu});var dm={};Gc(dm,{AddressStatus:()=>Br,AllbridgeCoreSdk:()=>fs,AmountFormat:()=>zn,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>Zn,CCTPDoesNotSupportedError:()=>Ge,ChainSymbol:()=>Me,ChainType:()=>Q,ErrorCode:()=>hs,ExtraGasMaxLimitExceededError:()=>$n,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>ft,InvalidAmountError:()=>gt,InvalidGasFeePaymentOptionError:()=>hn,InvalidMessengerOptionError:()=>Gi,InvalidTxError:()=>qt,JupiterError:()=>me,Messenger:()=>Ye,MethodNotSupportedError:()=>ce,NodeRpcUrlNotInitializedError:()=>Jn,SdkError:()=>C,SdkRootError:()=>ae,SolanaAutoTxFee:()=>Gr,TimeoutError:()=>Tn,TxTooLargeError:()=>Ln,VerifyTxError:()=>bn,mainnet:()=>Vn,nodeRpcUrlsDefault:()=>$c,nodeUrlsDefault:()=>Vc});module.exports=_c(dm);var Vn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",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},Vc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},$c={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 ut=require("big.js");var ae=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},C=class extends ae{constructor(n){super("SdkError",n)}},gt=class extends ae{constructor(n){super("InvalidAmountError",n)}},Qt=class extends ae{constructor(n){super("AmountNotEnoughError",n)}},ft=class extends ae{constructor(n){super("InsufficientPoolLiquidityError",n)}},me=class extends ae{constructor(n){super("JupiterError",n)}},hn=class extends ae{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},Gi=class extends ae{constructor(n){super("InvalidMessengerOptionError",n)}},ce=class extends ae{constructor(n){super("MethodNotSupportedError",n)}},bn=class extends ae{constructor(n){super("VerifyTxError",n)}},qt=class extends ae{constructor(n){super("InvalidTxError",n)}},$n=class extends ae{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},Zn=class extends ae{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},Tn=class extends ae{constructor(n){super("TimeoutError",n)}},Jn=class extends ae{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},Ge=class extends ae{constructor(n){super("CCTPDoesNotSupportedError",n)}},Ln=class extends ae{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},hs=(w=>(w.SDK_ERROR="SdkError",w.INVALID_AMOUNT_ERROR="InvalidAmountError",w.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",w.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",w.JUPITER_ERROR="JupiterError",w.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",w.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",w.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",w.VERIFY_TX_ERROR="VerifyTxError",w.INVALID_TX_ERROR="InvalidTxError",w.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",w.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",w.TIMEOUT_ERROR="TimeoutError",w.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",w.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",w.TX_TOO_LARGE="TxTooLargeError",w))(hs||{});var Me=(h=>(h.BSC="BSC",h.ETH="ETH",h.BAS="BAS",h.SOL="SOL",h.TRX="TRX",h.POL="POL",h.ARB="ARB",h.CEL="CEL",h.AVA="AVA",h.SRB="SRB",h.STLR="STLR",h.OPT="OPT",h.SUI="SUI",h))(Me||{}),Q=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(Q||{});var Zc={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Jc={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"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},$=(()=>{let i={...Jc};return{addChainsProperties(n){i={...i,...n}},getChainProperty(n){let r=i[n];if(!r)throw new C(`Cannot find chain properties for ${n}`);return r},getChainsProperties(){return i},getChainDecimalsByType(n){return Zc[n]}}})();var Ms=oe(require("axios"));var bs="3.21.1-alpha.2";var B=require("big.js"),Ir=oe(require("bn.js"));function _i(i,n){return(0,B.Big)(100).minus((0,B.Big)(100).times(n).div(i)).toNumber()}function en(i,n){return _t(i,n,3).round(0,B.Big.roundDown)}function xe(i,n){return _t(i,3,n)}function _t(i,n,r){let a=(0,B.Big)(r).minus(n).toNumber();return(0,B.Big)(i).times(Xn(a))}function Xn(i){return(0,B.Big)(10).pow(i)}function L(i,n){return(0,B.Big)(i).times(Xn(n))}function G(i,n){let r=(0,B.Big)(i);return r.eq(0)?(0,B.Big)(0):(0,B.Big)(r).div(Xn(n))}function Te(i){return G((0,B.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function yt(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),A=en(c,r),u=(0,B.Big)(a.tokenBalance).plus(A),m=ht(u,a.aValue,a.dValue);return(0,B.Big)(a.vUsdBalance).minus(m).round(0,B.Big.roundDown).toFixed()}function Yn(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=ht(o,a.aValue,a.dValue),A=xe((0,B.Big)(a.tokenBalance).minus(c),r),u=(0,B.Big)(A).times(n);return(0,B.Big)(A).minus(u).round(0,B.Big.roundDown).toFixed()}function Ts(i,n){let r=(0,B.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=ht(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function Ss(i,{feeShare:n,decimals:r},a){if((0,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 ft;let o=ht(s,a.aValue,a.dValue),c=(0,B.Big)(o).minus(a.tokenBalance),A=xe(c,r),u=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),m=(0,B.Big)(A).times(u).round(0,B.Big.roundUp);return(0,B.Big)(A).plus(m).round(0,B.Big.roundDown)}function Ps(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),A=en(c,r),u=(0,B.Big)(a.tokenBalance).minus(A);if(u.lte(0))throw new ft;let m=ht(u,a.aValue,a.dValue);return(0,B.Big)(m).minus(a.vUsdBalance).round(0,B.Big.roundDown)}function ht(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),A=(0,B.Big)(8).times(n).times(i),u=a.times(i).plus(c).div(A).round(0,B.Big.roundDown);return u.eq(0)?(0,B.Big)(0):u.plus(1)}function ws(i,n,r,a){let s=new Ir.default(i),o=new Ir.default(r),c=new Ir.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Cs(i){return(0,B.Big)(i).gt(0)?`${Number((0,B.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Is(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),A=o.times(o),u=c.times(c).times(c),m=A.plus(u),l=(0,B.Big)(m).sqrt(),g=(0,B.Big)(Math.cbrt(+o.plus(l).toFixed())),T=(0,B.Big)(Math.cbrt(+o.minus(l).toFixed()));return g.plus(T).toFixed()}var Br=(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))(Br||{});var Ye=(a=>(a[a.ALLBRIDGE=1]="ALLBRIDGE",a[a.WORMHOLE=2]="WORMHOLE",a[a.CCTP=3]="CCTP",a))(Ye||{});function Bs(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=zc(a,s);return o&&(n[a]=o),n},{})}function vs(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=Sn({chainSymbol:s,poolAddress:o.poolAddress}),A=Te(o.poolInfo);n[c]={...o.poolInfo,imbalance:A}}}return n}function Lc(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function Xc(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function Yc(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=Kc(a),n),{})}function Kc(i){return Object.entries(i).reduce((n,[r,a])=>{let s=Xc(r);return s&&(n[s]=a),n},{})}function zc(i,n){let r=$.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,transferTime:Yc(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>Lc(a,s))}}function Sn(i){return i.chainSymbol+"_"+i.poolAddress}function Rs(i){let n=[];for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens)n.push({chainSymbol:s,poolAddress:o.poolAddress})}return n}function ks(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=Te(c),n[Sn({chainSymbol:s,poolAddress:o})]=c}return n}var vr=class{api;constructor(n){this.api=Ms.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+bs},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Bs(n),poolInfoMap:vs(n)}}async getPendingInfo(){let{data:n}=await this.api.get("/pending-info");return n}async getGasBalance(n,r){let{data:a}=await this.api.get(`/check/${n}/${r}`);return a}async getTransferStatus(n,r){let{data:a}=await this.api.get(`/chain/${n}/${r}`);return a}async getReceiveTransactionCost(n){let{data:r}=await this.api.post("/receive-fee",n,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice}}async getPoolInfoMap(n){let r=n instanceof Array?n:[n],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return ks(a)}};var Hc=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),xs="__cache__",Vi=function(i){return typeof i!="string"?xs+JSON.stringify(i):xs+i},$i=class{constructor(n={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=n.defaultTtl||60*1e3}put(n,r,a){let s=(a?a.ttl:void 0)||this.defaultTtl,o=(a?a.callback:void 0)||function(){},c=Vi(n),A=this.cache[c];A&&clearTimeout(A.handle);let u=setTimeout(()=>this.remove(n),s);this.cache[c]={handle:u,data:r,callback:o}}get(n){let r=this.cache[Vi(n)];return r&&r.data}remove(n){let r=Vi(n),a=this.cache[r];a&&(clearTimeout(a.handle),delete this.cache[r],a.callback(n,a.data))}clear(){for(let n in this.cache)Hc(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Rt=$i;var Zi=20*1e3,Qc=55*1e3,Rr=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new Rt({defaultTtl:Qc}),this.receivedTransactionCache=new Rt({defaultTtl:Zi}),this.pendingInfoCache=new Rt({defaultTtl:Zi}),this.gasBalanceCache=new Rt({defaultTtl:Zi})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let n="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(n);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(n,a),a}async getGasBalance(n,r){let a=`GAS_BALANCE_${n}_${r}`,s=this.gasBalanceCache.get(a);if(s)return s;let o=this.apiClient.getGasBalance(n,r);return this.gasBalanceCache.put(a,o),o}async getPendingInfo(){let n="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(n);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(n,a),a}async getReceiveTransactionCost(n){let r=`RECEIVE_TX_COST_${n.sourceChainId}_${n.destinationChainId}_${n.messenger}`,a=this.receivedTransactionCache.get(r);if(a)return a;let s=await this.apiClient.getReceiveTransactionCost(n);return this.receivedTransactionCache.put(r,s),s}async getTransferStatus(n,r){return this.apiClient.getTransferStatus(n,r)}async getPoolInfoMap(n){return this.apiClient.getPoolInfoMap(n)}};var kr=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 Mr=class{constructor(n,r){this.client=n;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(n){let r=await this.client.getChainDetailsMap(),a={};for(let s in r){let o=r[s];o&&(a[s]={...o,tokens:Os(o.tokens,n,this.isStaging)})}return a}async tokens(n){return Os(await this.client.tokens(),n,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getTransferStatus(n,r){return await this.client.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.client.getReceiveTransactionCost(n)}cachePut(n,r){return this.client.cachePut(n,r)}getPoolInfoByKey(n){return this.client.getPoolInfoByKey(n)}refreshPoolInfo(n){return this.client.refreshPoolInfo(n)}};function Os(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(qc)}function qc(i){let{flags:n,...r}=i;return r}var eA=55*1e3,xr=class{constructor(n){this.client=n;this.poolInfoCache=new Ji}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(n,r){return this.client.getTransferStatus(n,r)}getReceiveTransactionCost(n){return this.client.getReceiveTransactionCost(n)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getPoolInfoByKey(n){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(n);if(r)return r;{let a=await this.client.getPoolInfoMap(n);this.poolInfoCache.putAll(a);let s=a[Sn(n)];if(s)return s;throw new C("Cannot find pool info for "+n.poolAddress+" on chain "+n.chainSymbol)}}async refreshPoolInfo(n){let r;if(n)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(n);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(Rs(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(Sn(n),r)}},Ji=class{cache;constructor(){this.cache=new Rt({defaultTtl:eA})}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=Sn(n);return this.cache.get(r)}};var gc=require("tronweb"),fc=require("web3");var Li=require("big.js");async function ue(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function z(i){if((0,Li.Big)(i).lte(0))throw new gt("Amount must be greater than zero")}function q(i,n,r){let a=(0,Li.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new Zn(i,o.length,r)}async function Or(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new Tn(n)),r)})])}async function Xi(i,n,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let s=0;for(;;)try{return await Or(i(),n,a)}catch{if(++s>=r)throw new Tn(n)}}async function Fs(i,n,r,a=1.5,s=!1){let o=[],c=0,A=await i();if(o.push(A),!n(A))return o;let u=new Date(Date.now()+r*1e3).valueOf(),m=1e3,l=m;for(;Date.now()<u;){let g=o[o.length-1];if(g===void 0||!n(g))break;c++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${l}ms so far, of total ${r*1e3}ms)`),await new Promise(h=>setTimeout(h,m)),m=m*a,new Date(Date.now()+m).valueOf()>u&&(m=u-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),l=m+l;let T=await i(g);o.push(T),s&&n(T)&&console.info(`${c}. Called ${i.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var zs=require("big.js");var tA={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Ns=tA;var nA={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=nA;var Wr=oe(require("@project-serum/anchor")),ta=require("@solana/web3.js");var ge=oe(require("@project-serum/anchor")),fe=require("@solana/web3.js");async function Ke(i,n){return ge.utils.token.associatedAddress({mint:n,owner:i})}async function Vt(i){let[n]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("config")],i);return n}async function Ws(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function Kn(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function Pn(i){let n=await Vt(i),[r]=await fe.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function Us(i,n){let[r]=await fe.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function wn(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function js(i,n,r){let[a]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function Yi(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function Ki(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function Es(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function zi(i,n,r){let[a]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Gs(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function _s(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Vs(i,n){let[r]=fe.PublicKey.findProgramAddressSync([ge.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function $s(i,n,r,a){let s=tn("message_transmitter",r),o=tn("token_messenger",a),c=tn("__event_authority",a),A=tn("token_minter",a),u=tn("local_token",a,[n]),m=tn("remote_token_messenger",a,[i.toString()]),l=tn("sender_authority",a);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:c,tokenMinter:A,localToken:u,remoteTokenMessengerKey:m,authorityPda:l}}function tn(i,n,r=[]){let a=[Buffer.from(ge.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(ge.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 fe.PublicKey.findProgramAddressSync(a,n)[0]}var Zs=require("@project-serum/anchor"),Fr=require("@solana/web3.js");function $t(i,n){let r=new Fr.Connection(i,"confirmed"),a=new Fr.PublicKey(n);return new Zs.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ls=require("@solana/web3.js"),Xs=require("@stellar/stellar-sdk"),bt=require("big.js"),Qi=oe(require("randombytes")),Hi=require("tronweb");function kt(i,n,r){let a;switch(n){case"EVM":{a=Js(i);break}case"SOLANA":{a=new Ls.PublicKey(i).toBuffer();break}case"TRX":{a=rA(i);break}case"SRB":{a=new Xs.Address(i).toBuffer();break}case"SUI":{a=Js(i);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(i){return i.replace(/^0x/i,"")}function Ys(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function Js(i){let r=Ys(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function rA(i){let n=Nr(i),r=Ys(n);return iA(r,32)}function Nr(i){let n=Hi.utils.crypto.decodeBase58Address(i);return n?Hi.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function iA(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Dr(){return(0,Qi.default)(32)}function Tt(){let i=(0,Qi.default)(32).readBigInt64BE();return i<0?i*-1n:i}function St(i,n){let r={},a=n.sourceToken;if(r.amount=L(n.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=n.fromAccountAddress,i==="SUI"){if(!a.originTokenAddress)throw new C("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 C("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=n.destinationToken.originTokenAddress}else r.toTokenAddress=kt(n.destinationToken.tokenAddress,i,i);return r.minimumReceiveAmount=n.minimumReceiveAmount?L(n.minimumReceiveAmount,n.destinationToken.decimals).toFixed():"0",r}async function He(i,n,r){let a={};a.fromChainId=n.sourceToken.allbridgeChainId,a.fromChainSymbol=n.sourceToken.chainSymbol;let s=$.getChainProperty(n.destinationToken.chainSymbol).chainType;if(i==="SUI"){if(!n.sourceToken.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=n.sourceToken.originTokenAddress}else a.fromTokenAddress=n.sourceToken.tokenAddress;a.toChainId=n.destinationToken.allbridgeChainId,a.toTokenAddress=n.destinationToken.tokenAddress,n.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let o=n.sourceToken;if(n.messenger===3){if(!o.cctpAddress||!n.destinationToken.cctpAddress)throw new Ge("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress}else a.contractAddress=o.bridgeAddress;a.messenger=n.messenger,a.fromAccountAddress=n.fromAccountAddress,a.amount=L(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:A}=n;if(!c){let g=(await qi(a.fromChainId,n.sourceToken.chainType,a.toChainId,o.decimals,a.messenger,r))[a.gasFeePaymentMethod];if(!g)throw new hn;c=g.int,A="int"}if(A=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=L(c,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=L(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:u,extraGasFormat:m}=n;if(u&&+u>0){if(m=="float")switch(a.gasFeePaymentMethod){case"native":a.extraGas=L(u,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.extraGas=L(u,o.decimals).toFixed(0);break}else a.extraGas=u;await sA(a.extraGas,a.gasFeePaymentMethod,o,n.destinationToken,r)}return i!=="SUI"&&(a.fromTokenAddress=kt(a.fromTokenAddress,i,i)),a.toAccountAddress=kt(n.toAccountAddress,s,i),a.toTokenAddress=kt(a.toTokenAddress,s,i),a.gasFeePaymentMethod=="stablecoin"&&aA(a.amount,o.decimals,a.fee,a.extraGas),a}function aA(i,n,r,a){let s=(0,bt.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new Qt(`Amount not enough to pay fee, ${G((0,bt.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function qi(i,n,r,a,s,o){let c=await o.getReceiveTransactionCost({sourceChainId:i,destinationChainId:r,messenger:s}),A={native:{int:c.fee,float:G(c.fee,$.getChainDecimalsByType(n)).toFixed()}};if(c.sourceNativeTokenPrice){let u=_t(new bt.Big(c.fee).mul(c.sourceNativeTokenPrice),$.getChainDecimalsByType(n),a).toFixed(0,bt.Big.roundUp);A.stablecoin={int:u,float:G(u,a).toFixed()}}return A}async function sA(i,n,r,a,s){let c=(await ea(r,a,s)).extraGasMax[n];if(!c)throw new hn(`Impossible to pay extra gas by '${n}' payment method`);let A=c.int;if((0,bt.Big)(i).gt(A))throw new $n(`Extra gas ${i} in int format, exceeded limit ${A} for '${n}' payment method`)}async function ea(i,n,r){let a={},s=await r.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:n.allbridgeChainId,messenger:1}),o=n.txCostAmount.maxAmount,c=G(o,$.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,bt.Big)(c).div(s.exchangeRate).toFixed($.getChainDecimalsByType(i.chainType),bt.Big.roundDown),u=L(A,$.getChainDecimalsByType(i.chainType)).toFixed(0);if(a.native={int:u,float:A},s.sourceNativeTokenPrice){let m=(0,bt.Big)(A).mul(s.sourceNativeTokenPrice).toFixed(i.decimals,bt.Big.roundDown);a.stablecoin={int:L(m,i.decimals).toFixed(0),float:m}}return{extraGasMax:a,destinationChain:{gasAmountMax:{int:o,float:c},swap:{int:n.txCostAmount.swap,float:G(n.txCostAmount.swap,$.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:G(n.txCostAmount.transfer,$.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Ks(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Ur(i,n,r,a){let s,o=new ta.PublicKey(n),c=new ta.PublicKey(r),A=await Ke(o,c),u=$t(a,n);Wr.setProvider(u);let m=await Wr.Spl.token(u).account.token.fetchNullable(A);if(m?.authority.equals(o))s=kt(A.toBase58(),"SOLANA",i);else{let l=await u.connection.getTokenAccountsByOwner(o,{mint:c});if(l.value.length===0&&!m)s=kt(A.toBase58(),"SOLANA",i);else if(l.value.length>0){let g=l.value[0];if(!g?.pubkey)throw new C("First token account or its public key is undefined");s=kt(g.pubkey.toBase58(),"SOLANA",i)}else throw new C("Associated account has wrong owner")}return s}var Oe=class{};var Hn=class extends Oe{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=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,g=this.getBridgeContract(s).methods.swap(a,c,u,A,m);return Promise.resolve({from:o,to:s,data:g.encodeABI()})}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),{amount:s,contractAddress:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,messenger:g,fee:T,gasFeePaymentMethod:h,extraGas:S}=a,I="0x"+Dr().toString("hex"),w,R,O=T;if(S&&(O=(0,zs.Big)(O).plus(S).toFixed()),g===3){let U=await this.buildRawTransactionCctpSend(r,a,O);w=U.sendMethod,R=U.value}else{let U=this.getBridgeContract(o);h==="stablecoin"?(w=U.methods.swapAndBridge(A,s,m,u,l,I,g,O),R="0"):(w=U.methods.swapAndBridge(A,s,m,u,l,I,g,0),R=O)}return Promise.resolve({from:c,to:o,value:R,data:w.encodeABI()})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,contractAddress:c,toChainId:A,toAccountAddress:u,gasFeePaymentMethod:m}=a,l=this.getCctpBridgeContract(c),g,T;if(r.destinationToken.chainType==="SOLANA"){let h=await Ur(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));m==="stablecoin"?(g=l.methods.bridgeWithWalletAddress(o,h,u,A,s),T="0"):(g=l.methods.bridgeWithWalletAddress(o,h,u,A,0),T=s)}else m==="stablecoin"?(g=l.methods.bridge(o,u,A,s),T="0"):(g=l.methods.bridge(o,u,A,0),T=s);return{sendMethod:g,value:T}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...r,gas:a,...s});return{txId:o.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Ns.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Ds.abi,r)}};var jr=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){let a,s;r?(a=n,s=r):s=n;let o=Qn(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},a)}async send(n,r){return z(n.amount),q("amount",n.amount,n.sourceToken.decimals),Ks(n)?Er(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Er(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var te=require("@project-serum/anchor"),J=require("@solana/web3.js"),_e=require("big.js");var qn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var Hs={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var Qs=require("@project-serum/anchor"),qs=oe(require("big.js")),er=require("web3");async function Cn(i,n){return await Qs.Spl.token(n).account.token.fetch(i)}async function eo(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,qs.default)(a.feeShareBp.toString()).div(1e4).toFixed(),c={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return yt(i,{decimals:s,feeShare:o},c)}function to(i){let n=i.amount,r="0x"+i.recipient.toString("hex"),a=i.sourceChainId,s=i.destinationChainId,o="0x"+i.receiveToken.toString("hex"),c="0x"+i.nonce.toString("hex"),A=1,u="0x"+i.chainBridge.toString("hex"),m=er.Web3.utils.encodePacked({t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:o},{t:"uint256",v:c},{t:"uint8",v:A});if(!m)throw new C("message cannot be undefined");let l=er.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),g=Buffer.from(l.replace("0x",""),"hex");g[0]=a,g[1]=s;let T=er.Web3.utils.encodePacked({t:"bytes32",v:"0x"+g.toString("hex")},{t:"bytes32",v:u});if(!T)throw new qt("messageWithSigner cannot be undefined");let h=er.Web3.utils.keccak256(Buffer.from(T.replace("0x",""),"hex")),S=Buffer.from(h.replace("0x",""),"hex");return S[0]=g[0],S[1]=g[1],S}var Fe=require("@solana/web3.js"),no=require("big.js");var na=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new na.AddressLookupTableAccount({key:r.accountKey,state:na.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new C("Cannot get AccountInfo");return a.data}))})))}var Gr="AUTO";async function In(i,n,r){let a=new Fe.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await io(i.instructions,s,n,a)}async function ro(i,n,r){let a=new Fe.Connection(r,"confirmed"),s=await nn(i,a),o=Fe.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:s});if(i.serialize().length>1232)throw new Ln;await io(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function io(i,n,r,a){if(n>0){let s=oA(n,i);if(r?.solana){let o=r.solana;if(o===Gr)await ra(i,a);else if("pricePerUnitInMicroLamports"in o)await ra(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,no.Big)(o.extraFeeInLamports).div(s).mul(Xn(6)).toFixed(0);await ra(i,a,c)}}}}function oA(i,n){let r=n.findIndex(o=>o.programId.equals(Fe.ComputeBudgetProgram.programId)&&Fe.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),a=Number((i*1.3).toFixed(0)),s=Fe.ComputeBudgetProgram.setComputeUnitLimit({units:a});return r>=0?n[r]=s:n.push(s),a.toString()}async function ra(i,n,r){let a=i.findIndex(c=>c.programId.equals(Fe.ComputeBudgetProgram.programId)&&Fe.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await cA(n)),o=Fe.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function cA(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var ao=require("@solana/spl-token"),rn=require("@solana/web3.js"),Bn=oe(require("axios"));var _r=class{connection;jupiterUrl;maxAccounts;constructor(n,r,a){this.connection=new rn.Connection(n),this.jupiterUrl=r.replace(/\/$/,""),this.maxAccounts=a}async getJupiterSwapTx(n,r,a,s){let o;try{let g=s?"ExactOut":"ExactIn",T=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${ao.NATIVE_MINT.toString()}&amount=${a}&swapMode=${g}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(T+=`&maxAccounts=${this.maxAccounts}`),o=await Bn.default.get(T)}catch(g){throw g instanceof Bn.AxiosError&&g.response&&g.response.data&&g.response.data.error?new me(g.response.data.error):new me("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new me("Cannot get inAmount");let A;try{A=await Bn.default.post(`${this.jupiterUrl}/swap`,{quoteResponse:o.data,userPublicKey:n,wrapAndUnwrapSol:!0})}catch(g){throw g instanceof Bn.AxiosError&&g.response&&g.response.data&&g.response.data.error?new me(g.response.data.error):new me("Cannot get swap transaction")}let u;if(A?.data?.swapTransaction)u=A.data.swapTransaction;else throw new me("Cannot get swap transaction");let m=Buffer.from(u,"base64"),l=rn.VersionedTransaction.deserialize(m);return s?{tx:l,amountIn:c}:{tx:l}}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 A=r.signatures[0];if(!A)throw new C("Signature is undefined");n.signatures.push(A)}return n}catch(a){throw a instanceof Error&&a.message?new me(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new me("Some error occurred during creation final swap and bridge transaction")}}};var ia=1e6,so=1.1,Vr=class extends Oe{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new _r(r,a.jupiterUrl,a.jupiterMaxAccounts)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,s,o){let{fromAccountAddress:c,amount:A,contractAddress:u,fromTokenAddress:m,toTokenAddress:l,toAccountAddress:g,minimumReceiveAmount:T}=r,h=c,S=u,I=m,w=l,R=s,O=g,U=new J.PublicKey(h),Ae=$t(this.solanaRpcUrl,U.toString()),X=new te.Program(qn,S,Ae),V=await Pn(X.programId),Re=await Vt(X.programId),se=new J.PublicKey(I),mt=await wn(se,X.programId),lt=new J.PublicKey(a),vt=await Ke(U,se),Je=new J.PublicKey(O),we=new J.PublicKey(w),Ee=await wn(we,X.programId),Le=new J.PublicKey(R),ke=await Ke(Je,we),dt=[te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ia})];try{await Cn(ke,Ae)}catch{let Nc=await te.Spl.associatedToken(Ae).methods.create().accounts({mint:we,owner:Je,associatedAccount:ke}).instruction();dt.push(Nc)}let pt=await X.methods.swap(new te.BN(A),new te.BN(T||0)).accounts({payer:U,config:Re,bridgeAuthority:V,user:U,sendBridgeToken:mt,sendMint:se,sendPool:lt,sendUserToken:vt,receiveBridgeToken:Ee,receiveMint:we,receivePool:Le,receiveUserToken:ke}).preInstructions(dt).transaction(),Xe=Ae.connection;return pt.recentBlockhash=(await Xe.getLatestBlockhash()).blockhash,pt.feePayer=U,await In(pt,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(pt,Xe)}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),s=this.addPoolAddress(r,a),o=s.gasFeePaymentMethod=="stablecoin",c;if(o)try{let{tx:m,solTxSendUpdatedParams:l}=await this.processJup(s,r,!0);c=m,s={...s,...l}}catch{try{let{tx:l,solTxSendUpdatedParams:g}=await this.processJup(s,r,!1);c=l,s={...s,...g}}catch(l){throw l instanceof ae?l:l instanceof Error&&l.message?new me(`Some error occurred during creation Jupiter swap transaction. ${l.message}`):new me("Some error occurred during creation Jupiter swap transaction")}}let A,u;switch(a.messenger){case 1:{let m=await this.prepareSwapAndBridgeData(s);A=await this.buildSwapAndBridgeAllbridgeTransaction(m);break}case 2:{let m=await this.prepareSwapAndBridgeData(s),{transaction:l,messageAccount:g}=await this.buildSwapAndBridgeWormholeTransaction(m);A=l,u=g;break}case 3:{let m=await this.prepareSwapAndBridgeCctpData(s),{transaction:l,messageSentEventDataKeypair:g}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,m);A=l,u=g;break}}if(o){if(!c)throw new me("Swap tx is absent");A=await this.jupiterService.amendJupiterWithSdkTx(c,A)}return await ro(A,r.txFeeParams,this.solanaRpcUrl),u&&A.sign([u]),A}async processJup(r,a,s){let{fee:o,extraGas:c,gasFeePaymentMethod:A}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken.decimals,r),u=s?(0,_e.Big)(o):(0,_e.Big)(r.fee);c&&(u=u.plus(c)),s||(u=u.mul(so));let{tx:m,amountIn:l}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,u.toFixed(0),s),g;if(s){if(!l)throw new me("Cannot get inAmount");g=(0,_e.Big)(r.amount).minus((0,_e.Big)(l).mul(so)).toFixed(0)}else g=(0,_e.Big)(r.amount).minus(u).toFixed(0);if((0,_e.Big)(g).lte(0))throw new Qt(`Amount not enough to pay fee, ${G((0,_e.Big)(g).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:m,solTxSendUpdatedParams:{amount:g,fee:o,extraGas:c,gasFeePaymentMethod:A}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger})).sourceNativeTokenPrice,o=(0,_e.Big)(a.fee).div(s).mul((0,_e.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0),c;return a.extraGas&&(c=(0,_e.Big)(a.extraGas).div(s).mul((0,_e.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0)),{fee:o,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,s){return te.web3.SystemProgram.transfer({fromPubkey:a,toPubkey:s,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:s,fromChainId:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,poolAddress:g,extraGas:T}=r,h=A,S=c,I=u,w=l,R=m,O=s,U=o,Ae=$t(this.solanaRpcUrl,S),X=new te.Program(qn,O,Ae),V=Array.from(Dr()),Re=new J.PublicKey(g),se=await eo(a,X,Re),mt=await Ws(V,X.programId),lt=await Pn(X.programId),vt=await Ke(new J.PublicKey(S),new J.PublicKey(h)),Je=await wn(new J.PublicKey(h),X.programId),we=await Yi(I,X.programId),Ee=await js(I,Buffer.from(w),X.programId),Le=await Vt(X.programId),ke=await X.account.config.fetch(Le),dt=await Kn(I,ke.gasOracleProgramId),pt=await Kn(U,ke.gasOracleProgramId),Xe=to({amount:se,recipient:Buffer.from(R),nonce:Buffer.from(V),receiveToken:Buffer.from(w),destinationChainId:I,sourceChainId:U,chainBridge:(await Pn(X.programId)).toBuffer()}),Z={};return Z.bridge=X,Z.amount=new te.BN(a),Z.vusdAmount=new te.BN(se),Z.nonce=V,Z.recipient=Array.from(R),Z.receiveToken=Array.from(w),Z.poolAccount=Re,Z.lockAccount=mt,Z.bridgeAuthority=lt,Z.userToken=vt,Z.bridgeTokenAccount=Je,Z.chainBridgeAccount=we,Z.otherBridgeTokenAccount=Ee,Z.userAccount=new J.PublicKey(S),Z.destinationChainId=I,Z.mint=new J.PublicKey(h),Z.config=Le,Z.configAccountInfo=ke,Z.gasPrice=dt,Z.thisGasPrice=pt,Z.message=Xe,T&&(Z.extraGasInstruction=this.getExtraGasInstruction(T,Z.userAccount,Le)),Z}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:T,chainBridgeAccount:h,otherBridgeTokenAccount:S,userAccount:I,destinationChainId:w,mint:R,config:O,configAccountInfo:U,gasPrice:Ae,thisGasPrice:X,message:V,extraGasInstruction:Re}=r,se=U.allbridgeMessengerProgramId,mt=await Ki(w,se),lt=await Vt(se),vt=await Es(V,se),Je=[];Re&&Je.push(Re);let we=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:w,recipient:c,receiveToken:A}).accounts({mint:R,user:I,config:O,lock:m,pool:u,gasPrice:Ae,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:T,chainBridge:h,messenger:se,messengerGasUsage:mt,messengerConfig:lt,sentMessageAccount:vt,otherBridgeToken:S}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ia})]).postInstructions(Je).transaction(),Ee=$t(this.solanaRpcUrl,I.toString()).connection;return we.recentBlockhash=(await Ee.getLatestBlockhash()).blockhash,we.feePayer=I,await this.convertToVersionedTransaction(we,Ee)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new J.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new C("Cannot find allbridgeLookupTableAccount");let o=new te.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new te.web3.VersionedTransaction(o)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:T,chainBridgeAccount:h,otherBridgeTokenAccount:S,userAccount:I,destinationChainId:w,mint:R,config:O,configAccountInfo:U,gasPrice:Ae,thisGasPrice:X,message:V,extraGasInstruction:Re}=r,se=this.params.wormholeMessengerProgramId,[mt]=J.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new J.PublicKey(se)),[lt]=J.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new J.PublicKey(se)),[vt]=J.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),l.toBuffer()],new J.PublicKey(se)),Je=await Ki(w,U.wormholeMessengerProgramId),we=await Vt(U.wormholeMessengerProgramId),Ee=J.Keypair.generate(),Le=$t(this.solanaRpcUrl,I.toString()),ke=await Le.connection.getAccountInfo(mt);if(ke==null)throw new C("Cannot fetch wormhole bridge account info");let dt=new te.BN(ke.data.slice(16,24),"le").toString(),pt=J.SystemProgram.transfer({fromPubkey:I,toPubkey:lt,lamports:+dt}),Xe=[];Re&&Xe.push(Re);let Z={mint:R,user:I,config:O,lock:m,pool:u,gasPrice:Ae,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:T,chainBridge:h,otherBridgeToken:S,messengerGasUsage:Je,wormholeProgram:se,bridge:mt,message:Ee.publicKey,wormholeMessenger:U.wormholeMessengerProgramId,sequence:vt,feeCollector:lt,wormholeMessengerConfig:we,clock:te.web3.SYSVAR_CLOCK_PUBKEY},wr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:w,recipient:c,receiveToken:A}).accounts(Z).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:ia}),pt]).postInstructions(Xe).signers([Ee]).transaction();return wr.recentBlockhash=(await Le.connection.getLatestBlockhash()).blockhash,wr.feePayer=I,{transaction:await this.convertToVersionedTransaction(wr,Le.connection),messageAccount:Ee}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,extraGas:l}=r,g=a;if(!g)throw new Ge("Such route does not support CCTP protocol");let T=4,h=o,S=m,I=u,w=$t(this.solanaRpcUrl,h),R=new te.Program(Hs,g,w),O=new J.PublicKey(c),U=await Gs(O,R.programId),Ae=new J.PublicKey(h),X=await R.account.cctpBridge.fetch(U),V={};return V.cctpBridge=R,V.cctpBridgeAccount=U,V.cctpAddressAccount=new J.PublicKey(g),V.amount=new te.BN(s),V.recipient=Array.from(I),V.receiveToken=Array.from(S),V.userToken=await Ke(Ae,O),V.bridgeAuthority=await Us(U,R.programId),V.bridgeTokenAccount=await _s(O,R.programId),V.chainBridgeAccount=await Yi(A,R.programId),V.userAccount=Ae,V.destinationChainId=A,V.mint=O,V.gasPrice=await Kn(A,X.gasOracleProgramId),V.thisGasPrice=await Kn(T,X.gasOracleProgramId),V.provider=w,l&&(V.extraGasInstruction=this.getExtraGasInstruction(l,V.userAccount,U)),V}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:s,cctpBridgeAccount:o,amount:c,recipient:A,receiveToken:u,bridgeAuthority:m,userToken:l,bridgeTokenAccount:g,chainBridgeAccount:T,userAccount:h,destinationChainId:S,mint:I,gasPrice:w,thisGasPrice:R,extraGasInstruction:O,provider:U}=a,Ae=this.params.cctpParams.cctpDomains[r],X=this.params.cctpParams.cctpTransmitterProgramId,V=this.params.cctpParams.cctpTokenMessengerMinter;if(Ae==null||!X||!V)throw new C("CCTP is not configured");let Re=new J.PublicKey(X),se=new J.PublicKey(V),{messageTransmitterAccount:mt,tokenMessenger:lt,tokenMessengerEventAuthority:vt,tokenMinter:Je,localToken:we,remoteTokenMessengerKey:Ee,authorityPda:Le}=$s(Ae,I,Re,se),ke=[];O&&ke.push(O);let dt=J.Keypair.generate(),pt=Vs(s.programId,dt.publicKey),Xe=await s.methods.bridge({amount:c,destinationChainId:S,recipient:A,receiveToken:u}).accounts({mint:I,user:h,cctpBridge:o,messageSentEventData:dt.publicKey,lock:pt,cctpMessenger:se,messageTransmitterProgram:Re,messageTransmitterAccount:mt,tokenMessenger:lt,tokenMinter:Je,localToken:we,remoteTokenMessengerKey:Ee,authorityPda:Le,eventAuthority:vt,bridgeToken:g,gasPrice:w,thisGasPrice:R,chainBridge:T,userToken:l,bridgeAuthority:m}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(ke).transaction(),Z=U.connection;return Xe.recentBlockhash=(await Z.getLatestBlockhash()).blockhash,Xe.feePayer=h,{transaction:await this.convertToVersionedTransaction(Xe,Z),messageSentEventDataKeypair:dt}}send(r){throw new ce}};var $r=require("@stellar/stellar-sdk"),oo=require("big.js");var t=require("@stellar/stellar-sdk"),AA=t.contract.Spec,uA=t.contract.Client;var tr=class extends uA{constructor(r){super(new AA(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Zr=class extends Oe{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:T}=r,h=l;T&&(h=(0,oo.Big)(h).plus(T).toFixed());let S=this.getContract(tr,s,o),I;return g==="stablecoin"?I=await S.swap_and_bridge({sender:o,token:$r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:Tt(),gas_amount:BigInt(0),fee_token_amount:BigInt(h)}):I=await S.swap_and_bridge({sender:o,token:$r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:Tt(),gas_amount:BigInt(h),fee_token_amount:BigInt(0)}),I.toXDR()}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r;return(await this.getContract(tr,s,o).swap({sender:o,amount:BigInt(a),token:$r.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(u),recipient:A,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ce}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var co="1.18.0",Ao="1.40.0";var mA={"-32700":"ParseError","-32701":"OversizedRequest","-32702":"OversizedResponse","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError","-32604":"ServerBusy","-32000":"CallExecutionFailed","-32001":"UnknownError","-32003":"SubscriptionClosed","-32004":"SubscriptionClosedWithError","-32005":"BatchesNotSupported","-32006":"TooManySubscriptions","-32050":"TransientError","-32002":"TransactionExecutionClientError"},Jr=class extends Error{},vn=class extends Jr{constructor(n,r){super(n),this.code=r,this.type=mA[r]??"ServerError"}},Lr=class extends Jr{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var uo=i=>{throw TypeError(i)},sa=(i,n,r)=>n.has(i)||uo("Cannot "+r),ne=(i,n,r)=>(sa(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?uo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),Rn=(i,n,r,a)=>(sa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),mo=(i,n,r)=>(sa(i,n,"access private method"),r),lA=(i,n,r,a)=>({set _(s){Rn(i,n,s,r)},get _(){return ne(i,n,a)}}),sn,nr,Mt,on,rr,kn,Xr,lo,po;function dA(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var pA={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Yr=class{constructor(n,r={}){if(an(this,Xr),an(this,sn,0),an(this,nr,0),an(this,Mt,null),an(this,on,null),an(this,rr,new Set),an(this,kn,new Map),this.endpoint=n,this.options={...pA,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=dA(this.endpoint))}async makeRequest(n,r){let a=await mo(this,Xr,lo).call(this);return new Promise((s,o)=>{Rn(this,sn,ne(this,sn)+1),ne(this,kn).set(ne(this,sn),{resolve:s,reject:o,timeout:setTimeout(()=>{ne(this,kn).delete(ne(this,sn)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:ne(this,sn),method:n,params:r}))}).then(({error:s,result:o})=>{if(s)throw new vn(s.message,s.code);return o})}async subscribe(n){let r=new aa(n);return ne(this,rr).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;nr=new WeakMap;Mt=new WeakMap;on=new WeakMap;rr=new WeakMap;kn=new WeakMap;Xr=new WeakSet;lo=function(){return ne(this,on)?ne(this,on):(Rn(this,on,new Promise(i=>{ne(this,Mt)?.close(),Rn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),ne(this,Mt).addEventListener("open",()=>{Rn(this,nr,0),i(ne(this,Mt))}),ne(this,Mt).addEventListener("close",()=>{lA(this,nr)._++,ne(this,nr)<=this.options.maxReconnects&&setTimeout(()=>{mo(this,Xr,po).call(this)},this.options.reconnectTimeout)}),ne(this,Mt).addEventListener("message",({data:n})=>{let r;try{r=JSON.parse(n)}catch(a){console.error(new Error(`Failed to parse RPC message: ${n}`,{cause:a}));return}if("id"in r&&r.id!=null&&ne(this,kn).has(r.id)){let{resolve:a,timeout:s}=ne(this,kn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;ne(this,rr).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),ne(this,on))};po=async function(){return ne(this,Mt)?.close(),Rn(this,on,null),Promise.allSettled([...ne(this,rr)].map(i=>i.subscribe(this)))};var aa=class{constructor(n){this.subscriptionId=null,this.subscribed=!1,this.input=n}onMessage(n){this.subscribed&&this.input.onMessage(n)}async unsubscribe(n){let{subscriptionId:r}=this;return this.subscribed=!1,r==null?!1:(this.subscriptionId=null,n.makeRequest(this.input.unsubscribe,[r]))}async subscribe(n){this.subscriptionId=null,this.subscribed=!0;let r=await n.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=r)}};var go=i=>{throw TypeError(i)},Aa=(i,n,r)=>n.has(i)||go("Cannot "+r),Ve=(i,n,r)=>(Aa(i,n,"read from private field"),r?r.call(i):n.get(i)),Kr=(i,n,r)=>n.has(i)?go("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),oa=(i,n,r,a)=>(Aa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),gA=(i,n,r)=>(Aa(i,n,"access private method"),r),ir,Qe,ar,ca,fo,zr=class{constructor(n){Kr(this,ca),Kr(this,ir,0),Kr(this,Qe),Kr(this,ar),oa(this,Qe,n)}fetch(n,r){let a=Ve(this,Qe).fetch??fetch;if(!a)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return a(n,r)}async request(n){oa(this,ir,Ve(this,ir)+1);let r=await this.fetch(Ve(this,Qe).rpc?.url??Ve(this,Qe).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":co,"Client-Target-Api-Version":Ao,"Client-Request-Method":n.method,...Ve(this,Qe).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Ve(this,ir),method:n.method,params:n.params})});if(!r.ok)throw new Lr(`Unexpected status code: ${r.status}`,r.status,r.statusText);let a=await r.json();if("error"in a&&a.error!=null)throw new vn(a.error.message,a.error.code);return a.result}async subscribe(n){let r=await gA(this,ca,fo).call(this).subscribe(n);return async()=>!!await r()}};ir=new WeakMap;Qe=new WeakMap;ar=new WeakMap;ca=new WeakSet;fo=function(){if(!Ve(this,ar)){let i=Ve(this,Qe).WebSocketConstructor??WebSocket;if(!i)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");oa(this,ar,new Yr(Ve(this,Qe).websocket?.url??Ve(this,Qe).url,{WebSocketConstructor:i,...Ve(this,Qe).websocket}))}return Ve(this,ar)};var Wt=require("@mysten/bcs");le();Ie();var j=require("@mysten/bcs");var jA=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,EA=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function Bo(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!jA.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!EA.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]}`}Ie();var GA=BigInt(1e9),Ua="0x1",ei="0x2";var ti=Ce("0x6");var ja=`${ei}::sui::SUI`,_A=Ce("0x5");Ie();var VA="object",$A="ID",ZA="ascii",JA="String",LA="string",XA="String",YA="option",KA="Option";function vo(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&x(n.package)===x("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function ni(i){if(typeof i=="string")switch(i){case"address":return b.Address;case"bool":return b.Bool;case"u8":return b.U8;case"u16":return b.U16;case"u32":return b.U32;case"u64":return b.U64;case"u128":return b.U128;case"u256":return b.U256;default:throw new Error(`Unknown type signature ${i}`)}if("vector"in i){if(i.vector==="u8")return b.vector(b.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});let n=ni(i.vector);return n?b.vector(n):null}if("datatype"in i){let n=x(i.datatype.package);if(n===x(Ua)){if(i.datatype.module===ZA&&i.datatype.type===JA)return b.String;if(i.datatype.module===LA&&i.datatype.type===XA)return b.String;if(i.datatype.module===YA&&i.datatype.type===KA){let r=ni(i.datatype.typeParameters[0]);return r?b.vector(r):null}}if(n===x(ei)&&i.datatype.module===VA&&i.datatype.type===$A)return b.Address}return null}function Ro(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:cr(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:cr(i.MutableReference)}:{ref:null,body:cr(i)}}function cr(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:cr(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(cr)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var ko=require("@mysten/bcs");Ie();function zA(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,ko.toBase64)(i):i.toBase64()}}}var ve={Pure:zA,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:x(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:x(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:x(i)}}}}};var Va=require("@mysten/bcs"),nt=require("valibot");Ie();var p=require("valibot");Ie();function Lt(i){let n=Object.entries(i).map(([r,a])=>(0,p.object)({[r]:a}));return(0,p.pipe)((0,p.union)(n),(0,p.transform)(r=>({...r,$kind:Object.keys(r)[0]})))}var cn=(0,p.pipe)((0,p.string)(),(0,p.transform)(i=>x(i)),(0,p.check)(Ne)),Se=cn,Jt=(0,p.string)(),ye=(0,p.pipe)((0,p.union)([(0,p.string)(),(0,p.pipe)((0,p.number)(),(0,p.integer)())]),(0,p.check)(i=>{try{return BigInt(i),BigInt(i)>=0&&BigInt(i)<=18446744073709551615n}catch{return!1}},"Invalid u64")),tt=(0,p.object)({objectId:cn,version:ye,digest:(0,p.string)()}),Y=(0,p.pipe)((0,p.union)([(0,p.object)({GasCoin:(0,p.literal)(!0)}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("pure"))}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("object"))}),(0,p.object)({Result:(0,p.pipe)((0,p.number)(),(0,p.integer)())}),(0,p.object)({NestedResult:(0,p.tuple)([(0,p.pipe)((0,p.number)(),(0,p.integer)()),(0,p.pipe)((0,p.number)(),(0,p.integer)())])})]),(0,p.transform)(i=>({...i,$kind:Object.keys(i)[0]}))),HA=(0,p.object)({budget:(0,p.nullable)(ye),price:(0,p.nullable)(ye),owner:(0,p.nullable)(cn),payment:(0,p.nullable)((0,p.array)(tt))}),$p=(0,p.object)({address:(0,p.string)(),module:(0,p.string)(),name:(0,p.string)(),typeParams:(0,p.array)((0,p.string)())}),Ea=(0,p.union)([(0,p.literal)("address"),(0,p.literal)("bool"),(0,p.literal)("u8"),(0,p.literal)("u16"),(0,p.literal)("u32"),(0,p.literal)("u64"),(0,p.literal)("u128"),(0,p.literal)("u256"),(0,p.object)({vector:(0,p.lazy)(()=>Ea)}),(0,p.object)({datatype:(0,p.object)({package:(0,p.string)(),module:(0,p.string)(),type:(0,p.string)(),typeParameters:(0,p.array)((0,p.lazy)(()=>Ea))})}),(0,p.object)({typeParameter:(0,p.pipe)((0,p.number)(),(0,p.integer)())})]),QA=(0,p.object)({ref:(0,p.nullable)((0,p.union)([(0,p.literal)("&"),(0,p.literal)("&mut")])),body:Ea}),qA=(0,p.object)({package:Se,module:(0,p.string)(),function:(0,p.string)(),typeArguments:(0,p.array)((0,p.string)()),arguments:(0,p.array)(Y),_argumentTypes:(0,p.optional)((0,p.nullable)((0,p.array)(QA)))}),eu=(0,p.object)({name:(0,p.string)(),inputs:(0,p.record)((0,p.string)(),(0,p.union)([Y,(0,p.array)(Y)])),data:(0,p.record)((0,p.string)(),(0,p.unknown)())}),tu=Lt({MoveCall:qA,TransferObjects:(0,p.object)({objects:(0,p.array)(Y),address:Y}),SplitCoins:(0,p.object)({coin:Y,amounts:(0,p.array)(Y)}),MergeCoins:(0,p.object)({destination:Y,sources:(0,p.array)(Y)}),Publish:(0,p.object)({modules:(0,p.array)(Jt),dependencies:(0,p.array)(Se)}),MakeMoveVec:(0,p.object)({type:(0,p.nullable)((0,p.string)()),elements:(0,p.array)(Y)}),Upgrade:(0,p.object)({modules:(0,p.array)(Jt),dependencies:(0,p.array)(Se),package:Se,ticket:Y}),$Intent:eu}),Mo=Lt({ImmOrOwnedObject:tt,SharedObject:(0,p.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,p.boolean)()}),Receiving:tt}),nu=Lt({Object:Mo,Pure:(0,p.object)({bytes:Jt}),UnresolvedPure:(0,p.object)({value:(0,p.unknown)()}),UnresolvedObject:(0,p.object)({objectId:Se,version:(0,p.optional)((0,p.nullable)(ye)),digest:(0,p.optional)((0,p.nullable)((0,p.string)())),initialSharedVersion:(0,p.optional)((0,p.nullable)(ye))})}),Ga=Lt({Object:Mo,Pure:(0,p.object)({bytes:Jt})}),_a=Lt({None:(0,p.literal)(!0),Epoch:ye}),On=(0,p.object)({version:(0,p.literal)(2),sender:(0,p.nullish)(cn),expiration:(0,p.nullish)(_a),gasData:HA,inputs:(0,p.array)(nu),commands:(0,p.array)(tu)});var We={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,nt.parse)(Y,r)),address:(0,nt.parse)(Y,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,nt.parse)(Y,i),amounts:n.map(r=>(0,nt.parse)(Y,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,nt.parse)(Y,i),sources:n.map(r=>(0,nt.parse)(Y,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,Va.toBase64)(new Uint8Array(r))),dependencies:n.map(r=>Ce(r))}}},Upgrade({modules:i,dependencies:n,package:r,ticket:a}){return{$kind:"Upgrade",Upgrade:{modules:i.map(s=>typeof s=="string"?s:(0,Va.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Ce(s)),package:r,ticket:(0,nt.parse)(Y,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,nt.parse)(Y,r))}}},Intent({name:i,inputs:n={},data:r={}}){return{$kind:"$Intent",$Intent:{name:i,inputs:Object.fromEntries(Object.entries(n).map(([a,s])=>[a,Array.isArray(s)?s.map(o=>(0,nt.parse)(Y,o)):(0,nt.parse)(Y,s)])),data:r}}}};var Fn=require("@mysten/bcs"),Pt=require("valibot");Ie();var Xt=require("@mysten/bcs"),d=require("valibot");le();var $a=(0,d.object)({digest:(0,d.string)(),objectId:(0,d.string)(),version:(0,d.union)([(0,d.pipe)((0,d.number)(),(0,d.integer)()),(0,d.string)(),(0,d.bigint)()])}),ru=Lt({ImmOrOwned:$a,Shared:(0,d.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,d.boolean)()}),Receiving:$a}),xo=Lt({Object:ru,Pure:(0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))}),Fo=(0,d.union)([(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.optional)((0,d.literal)("object"))}),(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.literal)("pure")})]),iu=(0,d.union)([(0,d.object)({Epoch:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),Oo=(0,d.pipe)((0,d.union)([(0,d.number)(),(0,d.string)(),(0,d.bigint)()]),(0,d.check)(i=>{if(!["string","number","bigint"].includes(typeof i))return!1;try{return BigInt(i),!0}catch{return!1}})),Za=(0,d.union)([(0,d.object)({bool:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u8:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u64:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u128:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({address:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({signer:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({vector:(0,d.lazy)(()=>Za)}),(0,d.object)({struct:(0,d.lazy)(()=>au)}),(0,d.object)({u16:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u32:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u256:(0,d.nullable)((0,d.literal)(!0))})]),au=(0,d.object)({address:(0,d.string)(),module:(0,d.string)(),name:(0,d.string)(),typeParams:(0,d.array)(Za)}),su=(0,d.object)({budget:(0,d.optional)(Oo),price:(0,d.optional)(Oo),payment:(0,d.optional)((0,d.array)($a)),owner:(0,d.optional)((0,d.string)())}),ou=[Fo,(0,d.object)({kind:(0,d.literal)("GasCoin")}),(0,d.object)({kind:(0,d.literal)("Result"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({kind:(0,d.literal)("NestedResult"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),resultIndex:(0,d.pipe)((0,d.number)(),(0,d.integer)())})],Nt=(0,d.union)([...ou]),cu=(0,d.object)({kind:(0,d.literal)("MoveCall"),target:(0,d.pipe)((0,d.string)(),(0,d.check)(i=>i.split("::").length===3)),typeArguments:(0,d.array)((0,d.string)()),arguments:(0,d.array)(Nt)}),Au=(0,d.object)({kind:(0,d.literal)("TransferObjects"),objects:(0,d.array)(Nt),address:Nt}),uu=(0,d.object)({kind:(0,d.literal)("SplitCoins"),coin:Nt,amounts:(0,d.array)(Nt)}),mu=(0,d.object)({kind:(0,d.literal)("MergeCoins"),destination:Nt,sources:(0,d.array)(Nt)}),lu=(0,d.object)({kind:(0,d.literal)("MakeMoveVec"),type:(0,d.union)([(0,d.object)({Some:Za}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),objects:(0,d.array)(Nt)}),du=(0,d.object)({kind:(0,d.literal)("Publish"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)())}),pu=(0,d.object)({kind:(0,d.literal)("Upgrade"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)()),packageId:(0,d.string)(),ticket:Nt}),gu=[cu,Au,uu,mu,du,pu,lu],fu=(0,d.union)([...gu]),zp=(0,d.object)({version:(0,d.literal)(1),sender:(0,d.optional)((0,d.string)()),expiration:(0,d.nullish)(iu),gasConfig:su,inputs:(0,d.array)(Fo),transactions:(0,d.array)(fu)});function Ja(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Xt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some:xt.parseFromStr(r.MakeMoveVec.type)},objects:r.MakeMoveVec.elements.map(a=>Ot(a,n))};if(r.MergeCoins)return{kind:"MergeCoins",destination:Ot(r.MergeCoins.destination,n),sources:r.MergeCoins.sources.map(a=>Ot(a,n))};if(r.MoveCall)return{kind:"MoveCall",target:`${r.MoveCall.package}::${r.MoveCall.module}::${r.MoveCall.function}`,typeArguments:r.MoveCall.typeArguments,arguments:r.MoveCall.arguments.map(a=>Ot(a,n))};if(r.Publish)return{kind:"Publish",modules:r.Publish.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Publish.dependencies};if(r.SplitCoins)return{kind:"SplitCoins",coin:Ot(r.SplitCoins.coin,n),amounts:r.SplitCoins.amounts.map(a=>Ot(a,n))};if(r.TransferObjects)return{kind:"TransferObjects",objects:r.TransferObjects.objects.map(a=>Ot(a,n)),address:Ot(r.TransferObjects.address,n)};if(r.Upgrade)return{kind:"Upgrade",modules:r.Upgrade.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Upgrade.dependencies,packageId:r.Upgrade.package,ticket:Ot(r.Upgrade.ticket,n)};throw new Error(`Unknown transaction ${Object.keys(r)}`)})}}function Ot(i,n){if(i.$kind==="GasCoin")return{kind:"GasCoin"};if(i.$kind==="Result")return{kind:"Result",index:i.Result};if(i.$kind==="NestedResult")return{kind:"NestedResult",index:i.NestedResult[0],resultIndex:i.NestedResult[1]};if(i.$kind==="Input")return n[i.Input];throw new Error(`Invalid argument ${Object.keys(i)}`)}function No(i){return(0,d.parse)(On,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,d.is)(xo,n.value)){let r=(0,d.parse)(xo,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Xt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?xt.tagToString(n.type.Some):null,elements:n.objects.map(r=>Ft(r))}};case"MergeCoins":return{MergeCoins:{destination:Ft(n.destination),sources:n.sources.map(r=>Ft(r))}};case"MoveCall":{let[r,a,s]=n.target.split("::");return{MoveCall:{package:r,module:a,function:s,typeArguments:n.typeArguments,arguments:n.arguments.map(o=>Ft(o))}}}case"Publish":return{Publish:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var P=require("valibot");function Ar(i){return(0,P.union)(Object.entries(i).map(([n,r])=>(0,P.object)({[n]:r})))}var rt=Ar({GasCoin:(0,P.literal)(!0),Input:(0,P.pipe)((0,P.number)(),(0,P.integer)()),Result:(0,P.pipe)((0,P.number)(),(0,P.integer)()),NestedResult:(0,P.tuple)([(0,P.pipe)((0,P.number)(),(0,P.integer)()),(0,P.pipe)((0,P.number)(),(0,P.integer)())])}),yu=(0,P.object)({budget:(0,P.nullable)(ye),price:(0,P.nullable)(ye),owner:(0,P.nullable)(cn),payment:(0,P.nullable)((0,P.array)(tt))}),hu=(0,P.object)({package:Se,module:(0,P.string)(),function:(0,P.string)(),typeArguments:(0,P.array)((0,P.string)()),arguments:(0,P.array)(rt)}),bu=(0,P.object)({name:(0,P.string)(),inputs:(0,P.record)((0,P.string)(),(0,P.union)([rt,(0,P.array)(rt)])),data:(0,P.record)((0,P.string)(),(0,P.unknown)())}),Tu=Ar({MoveCall:hu,TransferObjects:(0,P.object)({objects:(0,P.array)(rt),address:rt}),SplitCoins:(0,P.object)({coin:rt,amounts:(0,P.array)(rt)}),MergeCoins:(0,P.object)({destination:rt,sources:(0,P.array)(rt)}),Publish:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Se)}),MakeMoveVec:(0,P.object)({type:(0,P.nullable)((0,P.string)()),elements:(0,P.array)(rt)}),Upgrade:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Se),package:Se,ticket:rt}),$Intent:bu}),Su=Ar({ImmOrOwnedObject:tt,SharedObject:(0,P.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,P.boolean)()}),Receiving:tt}),Pu=Ar({Object:Su,Pure:(0,P.object)({bytes:Jt}),UnresolvedPure:(0,P.object)({value:(0,P.unknown)()}),UnresolvedObject:(0,P.object)({objectId:Se,version:(0,P.optional)((0,P.nullable)(ye)),digest:(0,P.optional)((0,P.nullable)((0,P.string)())),initialSharedVersion:(0,P.optional)((0,P.nullable)(ye))})}),wu=Ar({None:(0,P.literal)(!0),Epoch:ye}),Do=(0,P.object)({version:(0,P.literal)(2),sender:(0,P.nullish)(cn),expiration:(0,P.nullish)(wu),gasData:yu,inputs:(0,P.array)(Pu),commands:(0,P.array)(Tu)});var Uo=require("valibot");le();var Cu=50,Iu=1000n,Bu=5e10;async function jo(i,n,r){return await xu(i,n),await Mu(i,n),n.onlyTransactionKind||(await vu(i,n),await Ru(i,n),await ku(i,n)),await Ou(i),await r()}async function vu(i,n){i.gasConfig.price||(i.gasConfig.price=String(await An(n).getReferenceGasPrice()))}async function Ru(i,n){if(i.gasConfig.budget)return;let r=await An(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(Bu),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=Iu*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 ku(i,n){if(!i.gasConfig.payment){let a=(await An(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:ja})).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,Uo.parse)(tt,s))}}async function Mu(i,n){let r=i.inputs.filter(l=>l.UnresolvedObject&&!(l.UnresolvedObject.version||l.UnresolvedObject?.initialSharedVersion)),a=[...new Set(r.map(l=>Ce(l.UnresolvedObject.objectId)))],s=a.length?Wu(a,Cu):[],o=(await Promise.all(s.map(l=>An(n).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat(),c=new Map(a.map((l,g)=>[l,o[g]])),A=Array.from(c).filter(([l,g])=>g.error).map(([l,g])=>JSON.stringify(g.error));if(A.length)throw new Error(`The following input objects are invalid: ${A.join(", ")}`);let u=o.map(l=>{if(l.error||!l.data)throw new Error(`Failed to fetch object: ${l.error}`);let g=l.data.owner,T=g&&typeof g=="object"&&"Shared"in g?g.Shared.initial_shared_version:null;return{objectId:l.data.objectId,digest:l.data.digest,version:l.data.version,initialSharedVersion:T}}),m=new Map(a.map((l,g)=>[l,u[g]]));for(let[l,g]of i.inputs.entries()){if(!g.UnresolvedObject)continue;let T,h=x(g.UnresolvedObject.objectId),S=m.get(h);g.UnresolvedObject.initialSharedVersion??S?.initialSharedVersion?T=ve.SharedObjectRef({objectId:h,initialSharedVersion:g.UnresolvedObject.initialSharedVersion||S?.initialSharedVersion,mutable:Fu(i,l)}):Nu(i,l)&&(T=ve.ReceivingRef({objectId:h,digest:g.UnresolvedObject.digest??S?.digest,version:g.UnresolvedObject.version??S?.version})),i.inputs[i.inputs.indexOf(g)]=T??ve.ObjectRef({objectId:h,digest:g.UnresolvedObject.digest??S?.digest,version:g.UnresolvedObject.version??S?.version})}}async function xu(i,n){let{inputs:r,commands:a}=i,s=[],o=new Set;a.forEach(A=>{if(A.MoveCall){if(A.MoveCall._argumentTypes)return;if(A.MoveCall.arguments.map(l=>l.$kind==="Input"?i.inputs[l.Input]:null).some(l=>l?.UnresolvedPure||l?.UnresolvedObject)){let l=`${A.MoveCall.package}::${A.MoveCall.module}::${A.MoveCall.function}`;o.add(l),s.push(A.MoveCall)}}switch(A.$kind){case"SplitCoins":A.SplitCoins.amounts.forEach(u=>{Wo(u,b.U64,i)});break;case"TransferObjects":Wo(A.TransferObjects.address,b.Address,i);break}});let c=new Map;if(o.size>0){let A=An(n);await Promise.all([...o].map(async u=>{let[m,l,g]=u.split("::"),T=await A.getNormalizedMoveFunction({package:m,module:l,function:g});c.set(u,T.parameters.map(h=>Ro(h)))}))}s.length&&await Promise.all(s.map(async A=>{let u=c.get(`${A.package}::${A.module}::${A.function}`);if(!u)return;let l=u.length>0&&vo(u.at(-1))?u.slice(0,u.length-1):u;A._argumentTypes=l})),a.forEach(A=>{if(!A.MoveCall)return;let u=A.MoveCall,m=`${u.package}::${u.module}::${u.function}`,l=u._argumentTypes;if(l){if(l.length!==A.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${m}`);l.forEach((g,T)=>{let h=u.arguments[T];if(h.$kind!=="Input")return;let S=r[h.Input];if(!S.UnresolvedPure&&!S.UnresolvedObject)return;let I=S.UnresolvedPure?.value??S.UnresolvedObject?.objectId,w=ni(g.body);if(w){h.type="pure",r[r.indexOf(S)]=ve.Pure(w.serialize(I));return}if(typeof I!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(I,null,2)}`);h.type="object";let R=S.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:I}}:S;r[h.Input]=R})}})}function Ou(i){i.inputs.forEach((n,r)=>{if(n.$kind!=="Object"&&n.$kind!=="Pure")throw new Error(`Input at index ${r} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(n)}`)})}function Wo(i,n,r){if(i.$kind!=="Input")return;let a=r.inputs[i.Input];a.$kind==="UnresolvedPure"&&(r.inputs[i.Input]=ve.Pure(n.serialize(a.UnresolvedPure.value)))}function Fu(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 Nu(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=Du(s.MoveCall._argumentTypes[o])||r}}),r}function Du(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 An(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 Wu(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Eo(i){function n(r){return i(r)}return n.system=()=>n("0x5"),n.clock=()=>n("0x6"),n.random=()=>n("0x8"),n.denyList=()=>n("0x403"),n.option=({type:r,value:a})=>s=>s.moveCall({typeArguments:[r],target:`0x1::option::${a===null?"none":"some"}`,arguments:a===null?[]:[s.object(a)]}),n}var Go=require("@mysten/bcs");le();function _o(i){function n(r,a){if(typeof r=="string")return i(ur(r).serialize(a));if(r instanceof Uint8Array||(0,Go.isSerializedBcs)(r))return i(r);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return n.u8=r=>i(b.U8.serialize(r)),n.u16=r=>i(b.U16.serialize(r)),n.u32=r=>i(b.U32.serialize(r)),n.u64=r=>i(b.U64.serialize(r)),n.u128=r=>i(b.U128.serialize(r)),n.u256=r=>i(b.U256.serialize(r)),n.bool=r=>i(b.Bool.serialize(r)),n.string=r=>i(b.String.serialize(r)),n.address=r=>i(b.Address.serialize(r)),n.id=n.address,n.vector=(r,a)=>i(b.vector(ur(r)).serialize(a)),n.option=(r,a)=>i(b.option(ur(r)).serialize(a)),n}function ur(i){switch(i){case"u8":return b.u8();case"u16":return b.u16();case"u32":return b.u32();case"u64":return b.u64();case"u128":return b.u128();case"u256":return b.u256();case"bool":return b.bool();case"string":return b.string();case"id":case"address":return b.Address}let n=i.match(/^(vector|option)<(.+)>$/);if(n){let[r,a]=n.slice(1);return r==="vector"?b.vector(ur(a)):b.option(ur(a))}throw new Error(`Invalid Pure type name: ${i}`)}var Jo=require("@mysten/bcs"),ri=require("valibot");le();Ie();var Vo=require("@noble/hashes/blake2b");function $o(i,n){let r=Array.from(`${i}::`).map(s=>s.charCodeAt(0)),a=new Uint8Array(r.length+n.length);return a.set(r),a.set(n,r.length),(0,Vo.blake2b)(a,{dkLen:32})}function Zo(i){return x(i).replace("0x","")}var Yt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=b.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=b.TransactionData.parse(n)?.V1,s=a.kind.ProgrammableTransaction;if(!a||!s)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:a.sender,expiration:a.expiration,gasData:a.gasData,inputs:s.inputs,commands:s.commands})}static restore(n){return n.version===2?new i((0,ri.parse)(On,n)):new i((0,ri.parse)(On,No(n)))}static getDigestFromBytes(n){let r=$o("TransactionData",n);return(0,Jo.toBase58)(r)}get gasConfig(){return this.gasData}set gasConfig(n){this.gasData=n}build({maxSizeBytes:n=1/0,overrides:r,onlyTransactionKind:a}={}){let s=this.inputs,o=this.commands,c={ProgrammableTransaction:{inputs:s,commands:o}};if(a)return b.TransactionKind.serialize(c,{maxSize:n}).toBytes();let A=r?.expiration??this.expiration,u=r?.sender??this.sender,m={...this.gasData,...r?.gasConfig,...r?.gasData};if(!u)throw new Error("Missing transaction sender");if(!m.budget)throw new Error("Missing gas budget");if(!m.payment)throw new Error("Missing gas payment");if(!m.price)throw new Error("Missing gas price");let l={sender:Zo(u),expiration:A||{None:!0},gasData:{payment:m.payment,owner:Zo(this.gasData.owner??u),price:BigInt(m.price),budget:BigInt(m.budget)},kind:{ProgrammableTransaction:{inputs:s,commands:o}}};return b.TransactionData.serialize({V1:l},{maxSize:n}).toBytes()}addInput(n,r){let a=this.inputs.length;return this.inputs.push(r),{Input:a,type:n,$kind:"Input"}}getInputUses(n,r){this.mapArguments((a,s)=>(a.$kind==="Input"&&a.Input===n&&r(a,s),a))}mapArguments(n){for(let r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(s=>n(s,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(s=>n(s,r)),r.TransferObjects.address=n(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=n(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(s=>n(s,r));break;case"MergeCoins":r.MergeCoins.destination=n(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(s=>n(s,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(s=>n(s,r));break;case"Upgrade":r.Upgrade.ticket=n(r.Upgrade.ticket,r);break;case"$Intent":let a=r.$Intent.inputs;r.$Intent.inputs={};for(let[s,o]of Object.entries(a))r.$Intent.inputs[s]=Array.isArray(o)?o.map(c=>n(c,r)):n(o,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(n,r){if(!Array.isArray(r)){this.commands[n]=r;return}let a=r.length-1;this.commands.splice(n,1,...r),a!==0&&this.mapArguments(s=>{switch(s.$kind){case"Result":s.Result>n&&(s.Result+=a);break;case"NestedResult":s.NestedResult[0]>n&&(s.NestedResult[0]+=a);break}return s})}getDigest(){let n=this.build({onlyTransactionKind:!1});return i.getDigestFromBytes(n)}snapshot(){return(0,ri.parse)(On,this)}};Ie();function La(i){if(typeof i=="string")return x(i);if(i.Object)return i.Object.ImmOrOwnedObject?x(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?x(i.Object.Receiving.objectId):x(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return x(i.UnresolvedObject.objectId)}var Yo=i=>{throw TypeError(i)},za=(i,n,r)=>n.has(i)||Yo("Cannot "+r),D=(i,n,r)=>(za(i,n,"read from private field"),r?r.call(i):n.get(i)),mr=(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),un=(i,n,r,a)=>(za(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Dt=(i,n,r)=>(za(i,n,"access private method"),r),dr,pr,mn,E,it,ii,Ha,Ya,Qa;function Lo(i,n=1/0){let r={$kind:"Result",Result:i},a=[],s=o=>a[o]??(a[o]={$kind:"NestedResult",NestedResult:[i,o]});return new Proxy(r,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(o,c){if(c in o)return Reflect.get(o,c);if(c===Symbol.iterator)return function*(){let u=0;for(;u<n;)yield s(u),u++};if(typeof c=="symbol")return;let A=parseInt(c,10);if(!(Number.isNaN(A)||A<0))return s(A)}})}var Ko=Symbol.for("@mysten/transaction");function ai(i){return!!i&&typeof i=="object"&&i[Ko]===!0}var Xo={buildPlugins:new Map,serializationPlugins:new Map},Xa=Symbol.for("@mysten/transaction/registry");function lr(){try{let i=globalThis;return i[Xa]||(i[Xa]=Xo),i[Xa]}catch{return Xo}}var Uu=class Ka{constructor(){mr(this,it),mr(this,dr),mr(this,pr),mr(this,mn,new Map),mr(this,E),this.object=Eo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Pt.is)(Y,r))return r;let a=La(r),s=D(this,E).inputs.find(o=>a===La(o));return s?.Object?.SharedObject&&typeof r=="object"&&r.Object?.SharedObject&&(s.Object.SharedObject.mutable=s.Object.SharedObject.mutable||r.Object.SharedObject.mutable),s?{$kind:"Input",Input:D(this,E).inputs.indexOf(s),type:"object"}:D(this,E).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:x(r)}}:r)});let n=lr();un(this,E,new Yt),un(this,pr,[...n.buildPlugins.values()]),un(this,dr,[...n.serializationPlugins.values()])}static fromKind(n){let r=new Ka;return un(r,E,Yt.fromKindBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)),r}static from(n){let r=new Ka;return ai(n)?un(r,E,new Yt(n.getData())):typeof n!="string"||!n.startsWith("{")?un(r,E,Yt.fromBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)):un(r,E,Yt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){lr().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){lr().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){lr().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){lr().buildPlugins.delete(n)}addSerializationPlugin(n){D(this,dr).push(n)}addBuildPlugin(n){D(this,pr).push(n)}addIntentResolver(n,r){if(D(this,mn).has(n)&&D(this,mn).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);D(this,mn).set(n,r)}setSender(n){D(this,E).sender=n}setSenderIfNotSet(n){D(this,E).sender||(D(this,E).sender=n)}setExpiration(n){D(this,E).expiration=n?(0,Pt.parse)(_a,n):null}setGasPrice(n){D(this,E).gasConfig.price=String(n)}setGasBudget(n){D(this,E).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){D(this,E).gasData.budget==null&&(D(this,E).gasConfig.budget=String(n))}setGasOwner(n){D(this,E).gasConfig.owner=n}setGasPayment(n){D(this,E).gasConfig.payment=n.map(r=>(0,Pt.parse)(tt,r))}get blockData(){return Ja(D(this,E).snapshot())}getData(){return D(this,E).snapshot()}get[Ko](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:_o(n=>(0,Fn.isSerializedBcs)(n)?D(this,E).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):D(this,E).addInput("pure",(0,Pt.is)(Ga,n)?(0,Pt.parse)(Ga,n):n instanceof Uint8Array?ve.Pure(n):{$kind:"UnresolvedPure",UnresolvedPure:{value:n}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...n){return this.object(ve.ObjectRef(...n))}receivingRef(...n){return this.object(ve.ReceivingRef(...n))}sharedObjectRef(...n){return this.object(ve.SharedObjectRef(...n))}add(n){if(typeof n=="function")return n(this);let r=D(this,E).commands.push(n);return Lo(r-1)}splitCoins(n,r){let a=We.SplitCoins(typeof n=="string"?this.object(n):Dt(this,it,Ha).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Dt(this,it,ii).call(this,o))),s=D(this,E).commands.push(a);return Lo(s-1,r.length)}mergeCoins(n,r){return this.add(We.MergeCoins(this.object(n),r.map(a=>this.object(a))))}publish({modules:n,dependencies:r}){return this.add(We.Publish({modules:n,dependencies:r}))}upgrade({modules:n,dependencies:r,package:a,ticket:s}){return this.add(We.Upgrade({modules:n,dependencies:r,package:a,ticket:this.object(s)}))}moveCall({arguments:n,...r}){return this.add(We.MoveCall({...r,arguments:n?.map(a=>Dt(this,it,ii).call(this,a))}))}transferObjects(n,r){return this.add(We.TransferObjects(n.map(a=>this.object(a)),typeof r=="string"?this.pure.address(r):Dt(this,it,ii).call(this,r)))}makeMoveVec({type:n,elements:r}){return this.add(We.MakeMoveVec({type:n,elements:r.map(a=>this.object(a))}))}serialize(){return JSON.stringify(Ja(D(this,E).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Pt.parse)(Do,D(this,E).snapshot()),(r,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(n){let{signer:r,...a}=n,s=await this.build(a);return r.signTransaction(s)}async build(n={}){return await this.prepareForSerialization(n),await Dt(this,it,Ya).call(this,n),D(this,E).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Dt(this,it,Ya).call(this,n),D(this,E).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of D(this,E).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...D(this,dr)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!D(this,mn).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(D(this,mn).get(s))}await Dt(this,it,Qa).call(this,a,n)}};dr=new WeakMap;pr=new WeakMap;mn=new WeakMap;E=new WeakMap;it=new WeakSet;ii=function(i){return(0,Fn.isSerializedBcs)(i)?this.pure(i):Dt(this,it,Ha).call(this,i)};Ha=function(i){return typeof i=="function"?(0,Pt.parse)(Y,i(this)):(0,Pt.parse)(Y,i)};Ya=async function(i){if(!i.onlyTransactionKind&&!D(this,E).sender)throw new Error("Missing transaction sender");await Dt(this,it,Qa).call(this,[...D(this,pr),jo],i)};Qa=async function(i,n){let r=a=>{if(a>=i.length)return()=>{};let s=i[a];return async()=>{let o=r(a+1),c=!1,A=!1;if(await s(D(this,E),n,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${a}`);c=!0,await o(),A=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${a}`);if(!A)throw new Error(`next() was not awaited in TransactionPlugin ${a}`)}};await r(0)()};var at=Uu;var Kt=require("valibot");le();Ie();var si="CoinWithBalance",zo=or("0x2::sui::SUI");function ee({type:i=zo,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(si,Eu);let s=i==="gas"?i:or(i);return a.add(We.Intent({name:si,inputs:{},data:{type:s===zo&&r?"gas":s,balance:BigInt(n)}}))}}var ju=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function Eu(i,n,r){let a=new Set,s=new Map;if(!i.sender)throw new Error("Sender must be set to resolve CoinWithBalance");for(let m of i.commands)if(m.$kind==="$Intent"&&m.$Intent.name===si){let{type:l,balance:g}=(0,Kt.parse)(ju,m.$Intent.data);l!=="gas"&&g>0n&&a.add(l),s.set(l,(s.get(l)??0n)+g)}let o=new Set;for(let m of i.inputs)m.Object?.ImmOrOwnedObject&&o.add(m.Object.ImmOrOwnedObject.objectId),m.UnresolvedObject?.objectId&&o.add(m.UnresolvedObject.objectId);let c=new Map,A=An(n);await Promise.all([...a].map(async m=>{c.set(m,await Gu({coinType:m,balance:s.get(m),client:A,owner:i.sender,usedIds:o}))}));let u=new Map;u.set("gas",{$kind:"GasCoin",GasCoin:!0});for(let[m,l]of i.commands.entries()){if(l.$kind!=="$Intent"||l.$Intent.name!==si)continue;let{type:g,balance:T}=l.$Intent.data;if(T===0n){i.replaceCommand(m,We.MoveCall({target:"0x2::coin::zero",typeArguments:[g]}));continue}let h=[];if(!u.has(g)){let[S,...I]=c.get(g).map(w=>i.addInput("object",ve.ObjectRef({objectId:w.coinObjectId,digest:w.digest,version:w.version})));I.length>0&&h.push(We.MergeCoins(S,I)),u.set(g,S)}h.push(We.SplitCoins(u.get(g),[i.addInput("pure",ve.Pure(b.u64().serialize(T)))])),i.replaceCommand(m,h),i.mapArguments(S=>S.$kind==="Result"&&S.Result===m?{$kind:"NestedResult",NestedResult:[m+h.length-1,0]}:S)}return r()}async function Gu({coinType:i,balance:n,client:r,owner:a,usedIds:s}){let o=n,c=[];return A();async function A(u=null){let{data:m,hasNextPage:l,nextCursor:g}=await r.getCoins({owner:a,coinType:i,cursor:u}),T=m.sort((h,S)=>Number(BigInt(S.balance)-BigInt(h.balance)));for(let h of T){if(s.has(h.coinObjectId))continue;let S=BigInt(h.balance);if(c.push(h),o-=S,o<=0)return c}if(l)return A(g);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}Ie();var _u=Symbol.for("@mysten/SuiClient");var Ut=class{get[_u](){return!0}constructor(n){this.transport=n.transport??new zr({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[n.owner,n.coinType,n.cursor,n.limit]})}async getAllCoins(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[n.owner,n.cursor,n.limit]})}async getBalance(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[n.owner,n.coinType]})}async getAllBalances(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[n.owner]})}async getCoinMetadata(n){return await this.transport.request({method:"suix_getCoinMetadata",params:[n.coinType]})}async getTotalSupply(n){return await this.transport.request({method:"suix_getTotalSupply",params:[n.coinType]})}async call(n,r){return await this.transport.request({method:n,params:r})}async getMoveFunctionArgTypes(n){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[n.package,n.module,n.function]})}async getNormalizedMoveModulesByPackage(n){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[n.package]})}async getNormalizedMoveModule(n){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[n.package,n.module]})}async getNormalizedMoveFunction(n){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[n.package,n.module,n.function]})}async getNormalizedMoveStruct(n){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[n.package,n.module,n.struct]})}async getOwnedObjects(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[n.owner,{filter:n.filter,options:n.options},n.cursor,n.limit]})}async getObject(n){if(!n.id||!Mn(Ce(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(Ce(a)))throw new Error(`Invalid Sui Object id ${a}`)}),n.ids.length!==new Set(n.ids).size)throw new Error(`Duplicate object ids in batch call ${n.ids}`);return await this.transport.request({method:"sui_multiGetObjects",params:[n.ids,n.options]})}async queryTransactionBlocks(n){return await this.transport.request({method:"suix_queryTransactionBlocks",params:[{filter:n.filter,options:n.options},n.cursor,n.limit,(n.order||"descending")==="descending"]})}async getTransactionBlock(n){if(!Qr(n.digest))throw new Error("Invalid Transaction digest");return await this.transport.request({method:"sui_getTransactionBlock",params:[n.digest,n.options]})}async multiGetTransactionBlocks(n){if(n.digests.forEach(a=>{if(!Qr(a))throw new Error(`Invalid Transaction digest ${a}`)}),n.digests.length!==new Set(n.digests).size)throw new Error(`Duplicate digests in batch call ${n.digests}`);return await this.transport.request({method:"sui_multiGetTransactionBlocks",params:[n.digests,n.options]})}async executeTransactionBlock({transactionBlock:n,signature:r,options:a,requestType:s}){let o=await this.transport.request({method:"sui_executeTransactionBlock",params:[typeof n=="string"?n:(0,Wt.toBase64)(n),Array.isArray(r)?r:[r],a]});if(s==="WaitForLocalExecution")try{await this.waitForTransaction({digest:o.digest})}catch{}return o}async signAndExecuteTransaction({transaction:n,signer:r,...a}){let s;n instanceof Uint8Array?s=n:(n.setSenderIfNotSet(r.toSuiAddress()),s=await n.build({client:this}));let{signature:o,bytes:c}=await r.signTransaction(s);return this.executeTransactionBlock({transactionBlock:c,signature:o,...a})}async getTotalTransactionBlocks(){let n=await this.transport.request({method:"sui_getTotalTransactionBlocks",params:[]});return BigInt(n)}async getReferenceGasPrice(){let n=await this.transport.request({method:"suix_getReferenceGasPrice",params:[]});return BigInt(n)}async getStakes(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[n.owner]})}async getStakesByIds(n){return n.stakedSuiIds.forEach(r=>{if(!r||!Mn(Ce(r)))throw new Error(`Invalid Sui Stake id ${r}`)}),await this.transport.request({method:"suix_getStakesByIds",params:[n.stakedSuiIds]})}async getLatestSuiSystemState(){return await this.transport.request({method:"suix_getLatestSuiSystemState",params:[]})}async queryEvents(n){return await this.transport.request({method:"suix_queryEvents",params:[n.query,n.cursor,n.limit,(n.order||"descending")==="descending"]})}async subscribeEvent(n){return this.transport.subscribe({method:"suix_subscribeEvent",unsubscribe:"suix_unsubscribeEvent",params:[n.filter],onMessage:n.onMessage})}async subscribeTransaction(n){return this.transport.subscribe({method:"suix_subscribeTransaction",unsubscribe:"suix_unsubscribeTransaction",params:[n.filter],onMessage:n.onMessage})}async devInspectTransactionBlock(n){let r;if(ai(n.transactionBlock))n.transactionBlock.setSenderIfNotSet(n.sender),r=(0,Wt.toBase64)(await n.transactionBlock.build({client:this,onlyTransactionKind:!0}));else if(typeof n.transactionBlock=="string")r=n.transactionBlock;else if(n.transactionBlock instanceof Uint8Array)r=(0,Wt.toBase64)(n.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[n.sender,r,n.gasPrice?.toString(),n.epoch]})}async dryRunTransactionBlock(n){return await this.transport.request({method:"sui_dryRunTransactionBlock",params:[typeof n.transactionBlock=="string"?n.transactionBlock:(0,Wt.toBase64)(n.transactionBlock)]})}async getDynamicFields(n){if(!n.parentId||!Mn(Ce(n.parentId)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"suix_getDynamicFields",params:[n.parentId,n.cursor,n.limit]})}async getDynamicFieldObject(n){return await this.transport.request({method:"suix_getDynamicFieldObject",params:[n.parentId,n.name]})}async getLatestCheckpointSequenceNumber(){let n=await this.transport.request({method:"sui_getLatestCheckpointSequenceNumber",params:[]});return String(n)}async getCheckpoint(n){return await this.transport.request({method:"sui_getCheckpoint",params:[n.id]})}async getCheckpoints(n){return await this.transport.request({method:"sui_getCheckpoints",params:[n.cursor,n?.limit,n.descendingOrder]})}async getCommitteeInfo(n){return await this.transport.request({method:"suix_getCommitteeInfo",params:[n?.epoch]})}async getNetworkMetrics(){return await this.transport.request({method:"suix_getNetworkMetrics",params:[]})}async getAddressMetrics(){return await this.transport.request({method:"suix_getLatestAddressMetrics",params:[]})}async getEpochMetrics(n){return await this.transport.request({method:"suix_getEpochMetrics",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getAllEpochAddressMetrics(n){return await this.transport.request({method:"suix_getAllEpochAddressMetrics",params:[n?.descendingOrder]})}async getEpochs(n){return await this.transport.request({method:"suix_getEpochs",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getMoveCallMetrics(){return await this.transport.request({method:"suix_getMoveCallMetrics",params:[]})}async getCurrentEpoch(){return await this.transport.request({method:"suix_getCurrentEpoch",params:[]})}async getValidatorsApy(){return await this.transport.request({method:"suix_getValidatorsApy",params:[]})}async getChainIdentifier(){let n=await this.getCheckpoint({id:"0"}),r=(0,Wt.fromBase58)(n.digest);return(0,Wt.toHex)(r.slice(0,4))}async resolveNameServiceAddress(n){return await this.transport.request({method:"suix_resolveNameServiceAddress",params:[n.name]})}async resolveNameServiceNames({format:n="dot",...r}){let{nextCursor:a,hasNextPage:s,data:o}=await this.transport.request({method:"suix_resolveNameServiceNames",params:[r.address,r.cursor,r.limit]});return{hasNextPage:s,nextCursor:a,data:o.map(c=>Bo(c,n))}}async getProtocolConfig(n){return await this.transport.request({method:"sui_getProtocolConfig",params:[n?.version]})}async waitForTransaction({signal:n,timeout:r=60*1e3,pollInterval:a=2*1e3,...s}){let o=AbortSignal.timeout(r),c=new Promise((A,u)=>{o.addEventListener("abort",()=>u(o.reason))});for(c.catch(()=>{});!o.aborted;){n?.throwIfAborted();try{return await this.getTransactionBlock(s)}catch{await Promise.race([new Promise(u=>setTimeout(u,a)),c])}}throw o.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};var li=require("big.js");var cs=oe(zt());var jt=oe(zt());de();function qo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[k(i,r.bridge),k(i,r.coin),$e(i,r.receiveAmountMin,"u64")]})}function ec(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),k(i,r.coin)]})}function tc(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),$e(i,r.amountLp,"u64")]})}function nc(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit)]})}function rc(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[k(i,r)]})}function es(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.wormholeState),k(i,r.theClock),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),$e(i,r.destinationChainId,"u8"),k(i,r.receiveToken),$e(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}function ic(i,n){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function ts(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),$e(i,r.destinationChainId,"u8"),k(i,r.receiveToken),$e(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}var uc=oe(rs());var sc=oe(rs());de();function is(i,n,r){return i.moveCall({target:`${sc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[k(i,r.cctpBridge),k(i,r.gasOracle),k(i,r.tokenMessengerMinterState),k(i,r.messageTransmitterState),k(i,r.treasury),k(i,r.denyList),k(i,r.amount),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin),$e(i,r.destinationChainId,"u8"),k(i,r.recipient),k(i,r.recipientWalletAddress)]})}var mc=oe(ss());var Ac=oe(ss());le();de();le();de();var os=class i{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(n,r){this.$fullTypeName=_(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs(gr(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([M(n)],r),kind:"VectorClassReified"}}static get r(){return i.reified}static get bcs(){return b.vector}static fromFields(n,r){return i.reified(n).new(r.map(a=>W(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>F(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(gr(n)).parse(r))}toJSONField(){return this.elements.map(n=>ln(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=>N(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 Nn(i){return os.r(i)}function re(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var Xu=b.bytes(32).transform({input:i=>(0,j.fromHEX)(i),output:i=>(0,j.toHEX)(i)});function gr(i){switch(i){case"bool":return b.bool();case"u8":return b.u8();case"u16":return b.u16();case"u32":return b.u32();case"u64":return b.u64();case"u128":return b.u128();case"u256":return b.u256();case"address":return Xu;default:return i.bcs}}function M(i){switch(i){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return i}switch(i.kind){case"PhantomReified":return i.phantomType;case"StructClassReified":return i.fullTypeName;case"VectorClassReified":return i.fullTypeName}throw new Error("unreachable")}function W(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return`0x${n}`}if(i.kind==="VectorClassReified")return i.fromFields(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(n.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(n.url.bytes)).toString();case"0x2::object::ID":return`0x${n.bytes}`;case"0x2::object::UID":return`0x${n.id.bytes}`;case"0x1::option::Option":return n.vec.length===0?null:i.fromFields(n).vec[0];default:return i.fromFields(n)}}function F(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.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:F(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function st(i,n,r){if(r.length!==n.length)throw new Error(`provided item has mismatching number of type argments ${i} (expected ${r.length}, got ${n.length}))`);for(let a=0;a<n.length;a++)if(v(n[a])!==v(M(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${M(r[a])}, got ${n[a]}))`)}function wt(i,n){let{typeArgs:r}=he(i.type);st(i.type,r,n)}function ln(i,n){let{typeName:r,typeArgs:a}=he(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=>ln(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:ln(a[0],n);default:return n.toJSONField()}}function N(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.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:N(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}de();var oi="0x1";de();le();function ci(i){return i=v(i),i===`${oi}::string::String`}var Ai=class i{__StructClass=!0;static get $typeName(){return`${oi}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("String",{bytes:b.vector(b.u8())})}static fromFields(n){return i.reified().new({bytes:W(Nn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!ci(n.type))throw new Error("not a String type");return i.reified().new({bytes:F(Nn("u8"),n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:ln("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:N(Nn("u8"),n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!ci(n.type))throw new Error(`object at ${n.fields.id} is not a String object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!ci(n.bcs.type))throw new Error("object at is not a String object");return i.fromBcs((0,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"||!ci(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};de();de();var Ht="0x2";le();function ui(i){return i=v(i),i===`${Ht}::object::ID`}var dn=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("ID",{bytes:b.bytes(32).transform({input:n=>(0,j.fromHEX)(n),output:n=>(0,j.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:W("address",n.bytes)})}static fromFieldsWithTypes(n){if(!ui(n.type))throw new Error("not a ID type");return i.reified().new({bytes:F("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:N("address",n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!ui(n.type))throw new Error(`object at ${n.fields.id} is not a ID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!ui(n.bcs.type))throw new Error("object at is not a ID object");return i.fromBcs((0,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"||!ui(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function mi(i){return i=v(i),i===`${Ht}::object::UID`}var Ze=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("UID",{id:dn.bcs})}static fromFields(n){return i.reified().new({id:W(dn.reified(),n.id)})}static fromFieldsWithTypes(n){if(!mi(n.type))throw new Error("not a UID type");return i.reified().new({id:F(dn.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:N(dn.reified(),n.id)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!mi(n.type))throw new Error(`object at ${n.fields.id} is not a UID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!mi(n.bcs.type))throw new Error("object at is not a UID object");return i.fromBcs((0,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"||!mi(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function ot(i,n){return i.moveCall({target:`${Ac.PUBLISHED_AT}::bytes32::from_hex`,arguments:[$e(i,n,`${Ai.$typeName}`)]})}async function Ct(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?Ct(i,a.nextCursor,s):s}var di=class extends Oe{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new Ut({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new C("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");(0,cs.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let s=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toTokenAddress:A,minimumReceiveAmount:u}=r,m=new at;m.setSender(o);let l={bridge:a.bridgeObjectAddress,coin:ee({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(u)},g=qo(m,[c,A],l),T=await Ct(h=>this.client.getCoins({owner:r.toAccountAddress,coinType:A,cursor:h}));return T.length===0||!T[0]?m.transferObjects([g],r.toAccountAddress):m.mergeCoins(T[0].coinObjectId,[g]),await m.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),{messenger:s}=a,o=r.sourceToken.suiAddresses;if(!o)throw new C("SUI token must contain 'suiAddresses'");switch((0,cs.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin),(0,mc.setAddress)(o.utilsAddress),s){case 1:return this.buildRawTransactionAllbridgeSend(a,o);case 2:return this.buildRawTransactionWormholeSend(a,o);case 3:return this.buildRawTransactionCctpSend(r,a,o)}}async buildRawTransactionAllbridgeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:T}=r,h=l;T&&(h=(0,li.Big)(h).plus(T).toFixed());let S=new at;if(S.setSender(o),g==="stablecoin"){let I=BigInt(s)-BigInt(h),w={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:I,type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(S,ze(u)),receiveToken:ot(S,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};ts(S,c,w)}else{let I=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),w={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(S,ze(u)),receiveToken:ot(S,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:I};ts(S,c,w)}return await S.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:T}=r,h=l;T&&(h=(0,li.Big)(h).plus(T).toFixed());let S=new at;if(S.setSender(o),g==="stablecoin"){let I=BigInt(s)-BigInt(h),w={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:ti,amount:ee({balance:I,type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(S,ze(u)),receiveToken:ot(S,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};es(S,c,w)}else{let I=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),w={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:ti,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(S,ze(u)),receiveToken:ot(S,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:I};es(S,c,w)}return await S.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:T}=a;(0,uc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let h=l;T&&(h=(0,li.Big)(h).plus(T).toFixed());let S=new at;S.setSender(c);let I=ot(S,ze(m)),w;if(r.destinationToken.chainType==="SOLANA"){let R=await Ur(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));w=ot(S,ze(R))}else w=I;if(g==="stablecoin"){let R=BigInt(o)-BigInt(h),O={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:R,type:A}),destinationChainId:u,recipient:w,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:A}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};is(S,A,O)}else{let R=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),O={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:BigInt(o),type:A}),destinationChainId:u,recipient:w,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:A}),feeSuiCoin:R};is(S,A,O)}return await S.toJSON({client:this.client})}};var pc=require("big.js");var lc=oe(require("bn.js"));function pi(i){return"0x"+new lc.default(i).toString("hex")}function dc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function gi(i,n){let r=await i.trx.sign(n);if(!r.signature)throw new qt("Transaction was not signed properly");let s=(await i.trx.sendRawTransaction(r)).transaction.txID;return await Yu(i,s),{txId:s}}async function Yu(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 dc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new bn(`Transaction status is ${s.receipt.result}`)}}var fr=class extends Oe{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await He(this.chainType,r,this.api),s=await this.buildRawTransactionSendFromParams(a);return await gi(this.tronWeb,s)}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,l=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:u},{type:"address",value:A},{type:"uint256",value:m}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",l,"0",o)}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,messenger:l,fee:g,gasFeePaymentMethod:T,extraGas:h}=r,S=g;h&&(S=(0,pc.Big)(S).plus(h).toFixed());let I=Tt().toString(),w,R,O;return l==3?(T==="stablecoin"?(w=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:S}],R="0"):(w=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:0}],R=S),O="bridge(uint256,bytes32,uint256,uint256)"):(T==="stablecoin"?(w=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:I},{type:"uint8",value:l},{type:"uint256",value:S}],R="0"):(w=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:I},{type:"uint8",value:l},{type:"uint256",value:0}],R=S),O="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(s,O,w,R,o)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var fi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new jr(n,r,a,s)}rawTxBuilder;async getAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=Qn(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:o},a)}async checkAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=Qn(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},a)}async approve(n,r){let a=Qn(r.token,r.messenger);return this.tokenService.approve(n,{...r,spender:a})}async send(n,r){return z(r.amount),q("amount",r.amount,r.sourceToken.decimals),Er(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).send(r)}};function Qn(i,n){if(n&&n==3){if(i.cctpAddress)return i.cctpAddress;throw new Ge("Such route does not support CCTP protocol")}else return i.bridgeAddress}function Er(i,n,r,a,s){switch($.getChainProperty(i).chainType){case"EVM":{if(s)return new Hn(s,n,r);{let o=r.getNodeRpcUrl(i);return new Hn(new fc.Web3(o),n,r)}}case"TRX":{if(s)return new fr(s,n);{let o=r.getNodeRpcUrl(i);return new fr(new gc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new Vr(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterUrl:a.jupiterUrl,jupiterMaxAccounts:a.jupiterMaxAccounts},n);case"SRB":return new Zr(r,a,n);case"SUI":return new di(r,n)}}var wc=require("big.js");var Cc=require("tronweb"),Gn=require("web3");var It=require("big.js");function yc(i,n,r,a,s){let o=L(i,3),c=(0,It.Big)(o),A=(0,It.Big)(r),u=(0,It.Big)(a).plus(s),m,l;if(A.eq(0)||u.eq(0)){let T=c.div(2);m=(0,It.Big)(a).plus(T),l=(0,It.Big)(s).plus(T)}else m=(0,It.Big)(a).plus(c.mul(a).div(u)),l=(0,It.Big)(s).plus(c.mul(s).div(u));return(0,It.Big)(Is(n,m.toFixed(),l.toFixed())).minus(A).toFixed()}function hc(i){let n=L(i,3);return(0,It.Big)(n).round().toFixed()}var Et=require("web3");var Ku={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"}]},Dn=Ku;var Pe=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return G(this.lpAmount,3).toFixed()}earned(n,r){let a=ws(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?G(a,r).toFixed():a}};var Ue=class{};var yr=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let s;try{s=await Or(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await Xi(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return s}async getPoolInfoFromChain(r){let a;try{a=await Or(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Xi(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let s=new this.web3.eth.BatchRequest,o=this.getPoolContract(a.poolAddress),c=o.methods.userRewardDebt(r).encodeABI(),A=o.methods.balanceOf(r).encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]});let[u,m]=await s.execute();if(u&&m&&!u.error&&!m.error)return new Pe({lpAmount:Et.Web3.utils.toBigInt(m.result).toString(),rewardDebt:Et.Web3.utils.toBigInt(u.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let s=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),o=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new Pe({lpAmount:o,rewardDebt:s})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,s=this.getPoolContract(r.poolAddress),o=s.methods.a().encodeABI(),c=s.methods.d().encodeABI(),A=s.methods.tokenBalance().encodeABI(),u=s.methods.vUsdBalance().encodeABI(),m=s.methods.totalSupply().encodeABI(),l=s.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:o},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:c},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:A},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:l},"latest"]});let[g,T,h,S,I,w]=await a.execute();if(g&&T&&h&&S&&I&&w&&!g.error&&!T.error&&!h.error&&!S.error&&!I.error&&!w.error){let R=Et.Web3.utils.toBigInt(h.result).toString(),O=Et.Web3.utils.toBigInt(S.result).toString(),U=Te({tokenBalance:R,vUsdBalance:O});return{aValue:Et.Web3.utils.toBigInt(g.result).toString(),dValue:Et.Web3.utils.toBigInt(T.result).toString(),tokenBalance:R,vUsdBalance:O,totalLpAmount:Et.Web3.utils.toBigInt(I.result).toString(),accRewardPerShareP:Et.Web3.utils.toBigInt(w.result).toString(),p:this.P,imbalance:U}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),s=(await a.methods.a().call()).toString(),o=(await a.methods.d().call()).toString(),c=(await a.methods.tokenBalance().call()).toString(),A=(await a.methods.vUsdBalance().call()).toString(),u=(await a.methods.totalSupply().call()).toString(),m=(await a.methods.accRewardPerShareP().call()).toString(),l=Te({tokenBalance:c,vUsdBalance:A});return{aValue:s,dValue:o,tokenBalance:c,vUsdBalance:A,totalLpAmount:u,accRewardPerShareP:m,p:this.P,imbalance:l}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Dn.abi,r)}};var yi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){if(r){let a=n,s=r;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(n.amount,n.token.decimals).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(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 At=require("@project-serum/anchor"),ct=require("@solana/web3.js");var hi=class extends Ue{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 ct.PublicKey(a.poolAddress),A=await o.account.pool.fetch(c);try{let u=await zi(new ct.PublicKey(r),A.mint,o.programId),{lpAmount:m,rewardDebt:l}=await o.account.userDeposit.fetch(u);return new Pe({lpAmount:m.toString(),rewardDebt:l.toString()})}catch{return new Pe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),s=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),o=s.vUsdBalance.toString(),c=s.tokenBalance.toString(),A=Te({tokenBalance:c,vUsdBalance:o});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:o,tokenBalance:c,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:A}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.deposit(new At.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.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 At.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.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 ct.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 At.Program(qn,r,a)}buildAnchorProvider(r){let a=new ct.Connection(this.solanaRpcUrl,"confirmed"),s=new ct.PublicKey(r);return new At.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new ct.PublicKey(s),A=await Vt(r.programId),u=await Pn(r.programId),m=new ct.PublicKey(a),g=(await r.account.pool.fetch(m)).mint,T=await Ke(c,g),h=await wn(g,r.programId),S=await zi(c,g,r.programId),I=[At.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await Cn(T,o)}catch{let U=await At.Spl.associatedToken(o).methods.create().accounts({mint:g,owner:c,associatedAccount:T}).instruction();I.push(U)}try{await r.account.userDeposit.fetch(S)}catch{let O=await r.methods.initDepositAccount().accounts({mint:g,user:c,userDeposit:S}).instruction();I.push(O)}return{accounts:{mint:g,user:c,config:A,pool:m,bridgeAuthority:u,userDeposit:S,userToken:T,bridgeToken:h},preInstructions:I}}};var Hh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),zu=e.contract.Spec,Hu=e.contract.Client;var bi=class extends Hu{constructor(r){super(new zu(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};var As=require("@stellar/stellar-sdk"),bc=As.rpc.Api;function Un(i){let{simulation:n,options:r}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");if(bc.isSimulationSuccess(n))return n.result==null?void 0:r.parseResultXdr(n.result.retval);throw new Error(n.error)}function jn(i){let{simulation:n}=i;if(!n)throw new Error("Soroban assembled transaction does not have simulation");return bc.isSimulationError(n)}var Ti=class extends Ue{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(jn(o))throw new C;let c=Un(o);if(!c)throw new C;let A=c.unwrap();return new Pe({lpAmount:A.lp_amount.toString(),rewardDebt:A.reward_debt.toString()})}async getPoolInfoFromChain(r){let s=await this.getContract(r.poolAddress).get_pool();if(jn(s))throw new C;let o=Un(s);if(!o)throw new C;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:Te({tokenBalance:c.token_balance.toString(),vUsdBalance:c.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let s={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new bi(s)}};var En=oe(zt());de();de();le();function Si(i){return i=v(i),i.startsWith(`${Ht}::balance::Balance<`)}var be=class i{__StructClass=!0;static get $typeName(){return`${Ht}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;value;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("Balance",{value:b.u64()})}static fromFields(n,r){return i.reified(n).new({value:W("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!Si(r.type))throw new Error("not a Balance type");return wt(r,[n]),i.reified(n).new({value:F("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:N("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Si(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Si(r.bcs.type))throw new Error("object at is not a Balance object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Si(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var ls=oe(zt());de();var us=oe(zt());le();function Pi(i){return i=v(i),i.startsWith(`${us.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${us.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("PoolRewards",{acc_reward_per_share_p:b.u128(),admin_fee_share_bp:b.u64(),admin_fee:be.bcs,rewards:be.bcs,lp_supply:b.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:W("u128",r.acc_reward_per_share_p),adminFeeShareBp:W("u64",r.admin_fee_share_bp),adminFee:W(be.reified(n),r.admin_fee),rewards:W(be.reified(n),r.rewards),lpSupply:W("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!Pi(r.type))throw new Error("not a PoolRewards type");return wt(r,[n]),i.reified(n).new({accRewardPerShareP:F("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:F("u64",r.fields.admin_fee_share_bp),adminFee:F(be.reified(n),r.fields.admin_fee),rewards:F(be.reified(n),r.fields.rewards),lpSupply:F("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:N("u128",r.accRewardPerShareP),adminFeeShareBp:N("u64",r.adminFeeShareBp),adminFee:N(be.reified(n),r.adminFee),rewards:N(be.reified(n),r.rewards),lpSupply:N("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Pi(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Pi(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Pi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};de();var ms=oe(zt());le();function wi(i){return i=v(i),i.startsWith(`${ms.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${ms.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("PoolState",{token_balance:b.u64(),vusd_balance:b.u64(),d:b.u64(),a:b.u64(),balance_ratio_min_bp:b.u64()})}static fromFields(n,r){return i.reified(n).new({tokenBalance:W("u64",r.token_balance),vusdBalance:W("u64",r.vusd_balance),d:W("u64",r.d),a:W("u64",r.a),balanceRatioMinBp:W("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!wi(r.type))throw new Error("not a PoolState type");return wt(r,[n]),i.reified(n).new({tokenBalance:F("u64",r.fields.token_balance),vusdBalance:F("u64",r.fields.vusd_balance),d:F("u64",r.fields.d),a:F("u64",r.fields.a),balanceRatioMinBp:F("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:N("u64",r.tokenBalance),vusdBalance:N("u64",r.vusdBalance),d:N("u64",r.d),a:N("u64",r.a),balanceRatioMinBp:N("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!wi(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!wi(r.bcs.type))throw new Error("object at is not a PoolState object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!wi(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};le();function Ci(i){return i=v(i),i.startsWith(`${ls.PKG_V1}::pool::Pool<`)}var Ii=class i{__StructClass=!0;static get $typeName(){return`${ls.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("Pool",{id:Ze.bcs,state:gn.bcs,rewards:pn.bcs,fee_share_bp:b.u64(),can_deposit:b.bool(),can_withdraw:b.bool(),decimals:b.u8(),balance:be.bcs})}static fromFields(n,r){return i.reified(n).new({id:W(Ze.reified(),r.id),state:W(gn.reified(n),r.state),rewards:W(pn.reified(n),r.rewards),feeShareBp:W("u64",r.fee_share_bp),canDeposit:W("bool",r.can_deposit),canWithdraw:W("bool",r.can_withdraw),decimals:W("u8",r.decimals),balance:W(be.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Ci(r.type))throw new Error("not a Pool type");return wt(r,[n]),i.reified(n).new({id:F(Ze.reified(),r.fields.id),state:F(gn.reified(n),r.fields.state),rewards:F(pn.reified(n),r.fields.rewards),feeShareBp:F("u64",r.fields.fee_share_bp),canDeposit:F("bool",r.fields.can_deposit),canWithdraw:F("bool",r.fields.can_withdraw),decimals:F("u8",r.fields.decimals),balance:F(be.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:N(Ze.reified(),r.id),state:N(gn.reified(n),r.state),rewards:N(pn.reified(n),r.rewards),feeShareBp:N("u64",r.feeShareBp),canDeposit:N("bool",r.canDeposit),canWithdraw:N("bool",r.canWithdraw),decimals:N("u8",r.decimals),balance:N(be.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ci(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ci(r.bcs.type))throw new Error("object at is not a Pool object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Ci(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};de();var ds=oe(zt());le();function Bi(i){return i=v(i),i.startsWith(`${ds.PKG_V1}::user_deposit::UserDeposit<`)}var vi=class i{__StructClass=!0;static get $typeName(){return`${ds.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;lpAmount;rewardDebt;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("UserDeposit",{id:Ze.bcs,lp_amount:b.u64(),reward_debt:b.u64()})}static fromFields(n,r){return i.reified(n).new({id:W(Ze.reified(),r.id),lpAmount:W("u64",r.lp_amount),rewardDebt:W("u64",r.reward_debt)})}static fromFieldsWithTypes(n,r){if(!Bi(r.type))throw new Error("not a UserDeposit type");return wt(r,[n]),i.reified(n).new({id:F(Ze.reified(),r.fields.id),lpAmount:F("u64",r.fields.lp_amount),rewardDebt:F("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:N(Ze.reified(),r.id),lpAmount:N("u64",r.lpAmount),rewardDebt:N("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Bi(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Bi(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,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"||!Bi(s.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return i.fromSuiObjectData(r,s.data)}};function Sc(i,n,r){if(n.length===0||!n[0])return[];let a=n[0],s=i.reduce((A,u)=>A+BigInt(u),BigInt(0)),o=BigInt(a.balance),c=[];for(let A of n.slice(1)){if(o>s)return Tc(r,a,c,i);o+=BigInt(A.balance),c.push(A)}return o>=s?Tc(r,a,c,i):[]}function Tc(i,n,r,a){let s=a.map(o=>i.pure.u64(o));return r.length>0&&i.mergeCoins(n.coinObjectId,r.map(o=>o.coinObjectId)),i.splitCoins(n.coinObjectId,s)}var Qu="0x0000000000000000000000000000000000000000000000000000000000000000";async function Pc(i,n,r){let a=await i.devInspectTransactionBlock({sender:Qu,transactionBlock:n});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let s=a.results?.pop()?.returnValues?.pop();if(!s)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[o,c]=s;return typeof r=="object"?r.fromBcs(Uint8Array.from(o)).toJSONField():gr(r).parse(Uint8Array.from(o))}var Ri=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new Ut({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=a.suiAddresses;if(!s)throw new C("SUI token must contain 'suiAddresses'");(0,En.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin);let c=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((A,u)=>{if(u.data)return A.lpAmount+=BigInt(u.data.content.fields.lp_amount),A.rewardDebt+=BigInt(u.data.content.fields.reward_debt),A;throw new C("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new Pe({lpAmount:c.lpAmount.toString(),rewardDebt:c.rewardDebt.toString()})}async fetchDeposits(r,a){return await Ct(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:vi.phantom(re(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=48,o=new at;rc(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await Pc(this.client,o,Ii.reified(re(r.originTokenAddress))),A=c.state.tokenBalance,u=c.state.vusdBalance,m=Te({tokenBalance:A,vUsdBalance:u});return{dValue:c.state.d,aValue:c.state.a,totalLpAmount:c.rewards.lpSupply,vUsdBalance:u,tokenBalance:A,accRewardPerShareP:c.rewards.accRewardPerShareP,p:s,imbalance:m}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=await Ct(g=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:g}));if(s.length===0||!s[0])throw new gt("No coins to deposit");let o=s[0],c=new at;c.setSender(r.accountAddress);let{depositObj:A,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=Sc([r.amount],s,c);if(!m)throw new gt("No coins to deposit");if(!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let l=ec(c,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:A,coin:m});return c.mergeCoins(o.coinObjectId,[l]),u&&c.transferObjects([A],r.accountAddress),await c.toJSON({client:this.client})}async getDepositObject(r,a,s){let o=await this.fetchDeposits(r,a);if(o.length===0||!o[0]){let c=re(a).phantomType;return{depositObj:ic(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new C("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new at;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=tc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await Ct(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));if(!u[0]||!u[1])throw new C("No rewards found");return m[0]?o.mergeCoins(m[0].coinObjectId,[u[0],u[1]]):(o.mergeCoins(u[0],[u[1]]),o.transferObjects([u[0]],r.accountAddress)),await o.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,En.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new at;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=nc(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await Ct(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));return m[0]?o.mergeCoins(m[0].coinObjectId,[u]):o.transferObjects([u],r.accountAddress),await o.toJSON({client:this.client})}};var Bt=require("web3");var hr=class extends Ue{constructor(r,a,s){super();this.tronWeb=r;this.api=a;s&&(this.web3=new Bt.Web3(s))}chainType="TRX";P=52;web3;async getUserBalanceInfo(r,a){let s;if(this.web3)try{s=await this.getUserBalanceInfoByBatch(this.web3,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=new r.BatchRequest,c=new r.eth.Contract(Dn.abi,Nr(s.poolAddress)),A=c.methods.userRewardDebt(a).encodeABI(),u=c.methods.balanceOf(a).encodeABI();o.add({method:"eth_call",params:[{to:s.poolAddress,data:A},"latest"]}),o.add({method:"eth_call",params:[{to:s.poolAddress,data:u},"latest"]});let[m,l]=await o.execute();if(m&&l&&!m.error&&!l.error)return new Pe({lpAmount:Bt.Web3.utils.toBigInt(l.result).toString(),rewardDebt:Bt.Web3.utils.toBigInt(m.result).toString()});throw new Error("Batched 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 Pe({lpAmount:c,rewardDebt:o})}async getPoolInfoFromChain(r){let a;if(this.web3)try{a=await this.getPoolInfoByBatch(this.web3,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let s=new r.BatchRequest,o=new r.eth.Contract(Dn.abi,Nr(a.poolAddress),this.web3),c=o.methods.a().encodeABI(),A=o.methods.d().encodeABI(),u=o.methods.tokenBalance().encodeABI(),m=o.methods.vUsdBalance().encodeABI(),l=o.methods.totalSupply().encodeABI(),g=o.methods.accRewardPerShareP().encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:u},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:l},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:g},"latest"]});let[T,h,S,I,w,R]=await s.execute();if(T&&h&&S&&I&&w&&R&&!T.error&&!h.error&&!S.error&&!I.error&&!w.error&&!R.error){let O=Bt.Web3.utils.toBigInt(S.result).toString(),U=Bt.Web3.utils.toBigInt(I.result).toString(),Ae=Te({tokenBalance:O,vUsdBalance:U});return{aValue:Bt.Web3.utils.toBigInt(T.result).toString(),dValue:Bt.Web3.utils.toBigInt(h.result).toString(),tokenBalance:O,vUsdBalance:U,totalLpAmount:Bt.Web3.utils.toBigInt(w.result).toString(),accRewardPerShareP:Bt.Web3.utils.toBigInt(R.result).toString(),p:this.P,imbalance:Ae}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[s,o,c,A,u,m]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),l=c.toString(),g=A.toString(),T=Te({tokenBalance:l,vUsdBalance:g});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:l,vUsdBalance:g,totalLpAmount:u.toString(),accRewardPerShareP:m.toString(),p:this.P,imbalance: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 A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}getContract(r){return this.tronWeb.contract(Dn.abi,r)}};var ki=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new yi(n,r,this.params,s);let o=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Rt({defaultTtl:o})}rawTxBuilder;cache;async getAllowance(n,r){if(r){let a=n,s=r;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(n,r){if(r){let a=n,s=r;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(n,r){return this.tokenService.approve(n,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(n,r,a){z(n),q("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:A,dValue:u}=s,m=yc(n,A,u,c,o);return G(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){z(n),q("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=hc(n),A=xe(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",l=(0,wc.Big)(A).plus(m).toFixed();return G(l,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($.getChainProperty(i).chainType){case"EVM":{if(s)return new yr(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 yr(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new hr(s,n,c);{let A=new Cc.TronWeb({fullHost:o});return new hr(A,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new hi(o,n)}case"SRB":return new Ti(r,a,n);case"SUI":return new Ri(r.getNodeRpcUrl(i),n)}}var ie=require("big.js");function vc(i,n,r){let a=qu(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=em(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Rc(i,n,r){let a=tm(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=nm(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function qu(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ic(en(c,r),a),amountExcludingCommissionInSystemPrecision:Ic(en(s,r),a)}}function Ic(i,n){if(i.eq(0))return"0";let r=(0,ie.Big)(n.tokenBalance).plus(i),a=ht(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(n.vUsdBalance).minus(a).round().toFixed()}function em(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,ie.Big)(i).plus(a.vUsdBalance),c=ht(o,a.aValue,a.dValue),A=xe((0,ie.Big)(a.tokenBalance).minus(c),r),u=(0,ie.Big)(A).times(n),m=(0,ie.Big)(A).minus(u).round();return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}function tm(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),o=(0,ie.Big)(i).times(s),c=(0,ie.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Bc(en(c,r),a),amountExcludingCommissionInSystemPrecision:Bc(en(i,r),a)}}function Bc(i,n){let r=(0,ie.Big)(n.tokenBalance).minus(i),a=ht(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(a).minus(n.vUsdBalance).round().toFixed()}function nm(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,ie.Big)(a.vUsdBalance).minus(i),o=ht(s.toFixed(),a.aValue,a.dValue),c=(0,ie.Big)(o).minus(a.tokenBalance),A=xe(c.toFixed(),r),u=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),m=(0,ie.Big)(A).times(u),l=(0,ie.Big)(A).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:l.round().toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}var Gt=require("big.js");function kc(i,n,r,a,s){let o=yt(i,n,r),c=xe(o,n.decimals),A=Yn(o,a,s),u=(0,Gt.Big)(i).times(n.feeShare),m=(0,Gt.Big)(A).div((0,Gt.Big)(1).minus(a.feeShare)).minus(A);return{sourceLPSwap:{fee:G(u,n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed(),swap:G((0,Gt.Big)(i).minus(c).minus(u),n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed()},destLPSwap:{fee:G(m,a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed(),swap:G(xe(o,a.decimals).minus(A).minus(m),a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed()}}}var _n=require("@solana/web3.js");var Mi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async addMemoToTx(n,r){if(r.length>28)throw new C("InvalidArgumentException memo cannot be more than 28 characters");let a=new _n.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=_n.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s}),c=o.instructions[o.instructions.length-1];if(!c?.keys)throw new C("Last instruction or its keys are invalid.");c.keys.push({pubkey:new _n.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var K=require("@stellar/stellar-sdk");var KC=require("@stellar/stellar-sdk"),rm=KC.contract.Spec,im=KC.contract.Client;var br=class extends im{constructor(r){super(new rm(["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 am=100,sm=180,xi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=await this.getContract(br,n.tokenAddress).name();if(jn(o))throw new C;let c=Un(o);if(!c)throw new C;let[A,u]=c.split(":");if(A===void 0||u===void 0)throw new C("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let m=new K.Asset(A,u),l=K.Operation.changeTrust({asset:m,limit:n.limit});return new K.TransactionBuilder(a,{fee:am.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(l).setTimeout(sm).build().toXDR()}async getBalanceLine(n,r){let s=await this.getContract(br,r).name();if(jn(s))throw new C;let o=Un(s);if(!o)throw new C;let[c,A]=o.split(":"),u=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new K.Horizon.Server(u).loadAccount(n)).balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==c&&T.asset_issuer==A)}async submitTransactionStellar(n){let r=new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=K.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(K.rpc.Api.isSimulationRestore(c))return new K.TransactionBuilder(s,{fee:(+K.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(K.Operation.restoreFootprint({})).setTimeout(K.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Fs(()=>a.getTransaction(n),c=>c.status===K.rpc.Api.GetTransactionStatus.NOT_FOUND,r);if(s.length===0)throw new C("No transaction responses found.");let o=s[s.length-1];if(!o)throw new C("Unexpected error: last response is undefined.");return o}getContract(n,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(a)}};var Oi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new xi(n,r),this.sol=new Mi(n,r)}srb;sol};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),zn=(r=>(r.INT="int",r.FLOAT="float",r))(zn||{});var xc=require("big.js"),Oc=require("tronweb"),Fc=require("web3");var om={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Fi=om;var ps=require("big.js"),je=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,ps.Big)(r).gte((0,ps.Big)(n.amount))}};var cm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Am="0xdac17f958d2ee523a2206206994597c13d831ec7",um=1e5,Tr=class extends je{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()===Am}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=this.getERC20Contract(a).methods.approve(s,c==null?cm:pi(c));return Promise.resolve({from:o,to:a,value:"0",data:u.encodeABI()})}async sendRawTransaction(r,a){let s=r,o={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?s.gas=um:s.gas=await this.web3.eth.estimateGas(r);let{transactionHash:c}=await this.web3.eth.sendTransaction({...s,...o});return{txId:c.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Fi.abi,r)}};var Mc=require("@project-serum/anchor"),fn=require("@solana/web3.js");var Ni=class extends je{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}buildAnchorProvider(r){let a=new fn.Connection(this.solanaRpcUrl,"confirmed"),s=new fn.PublicKey(r);return new Mc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ce}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await Ke(new fn.PublicKey(a),new fn.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 fn.PublicKey(r.account))).toString()}};var gs=require("@stellar/stellar-sdk");var Di=class extends je{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new C("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new gs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof gs.NotFoundError)return"0";throw m}let u=c.balances.find(m=>(m.asset_type==="credit_alphanum4"||m.asset_type==="credit_alphanum12")&&m.asset_code==a&&m.asset_issuer==s);return u?.balance?L(u.balance,$.getChainDecimalsByType($.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new gs.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(A=>A.asset_type==="native");return c?.balance?L(c.balance,$.getChainDecimalsByType($.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ce}buildRawTransactionApprove(){throw new ce}};var Wi=class extends je{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Ut({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}getAllowance(r){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await Ct(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 mm="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Sr=class extends je{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:s}=r;return(await(await this.getContract(a)).methods.allowance(s,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await gi(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=c==null?mm:pi(c),u=[{type:"address",value:s},{type:"uint256",value:A}];return this.buildRawTransaction(a,"approve(address,uint256)",u,"0",o)}getContract(r){return this.tronWeb.contract(Fi.abi,r)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var Ui=class{constructor(n,r,a){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.owner,r).getAllowance(n);return G(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),this.getChainTokenService(n.token.chainSymbol,n.owner,r).checkAllowance(this.prepareCheckAllowanceParams(n))}async approve(n,r){return r.amount&&(z(r.amount),q("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,n).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(n,r){return n.amount&&(z(n.amount),q("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,r).buildRawTransactionApprove(this.prepareApproveParams(n))}async getTokenBalance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.account,r).getTokenBalance(n);return n.token.decimals?G(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:G(a,$.getChainDecimalsByType($.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch($.getChainProperty(n).chainType){case"EVM":{if(a)return new Tr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Tr(new Fc.Web3(s),this.api)}}case"TRX":{if(a)return new Sr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Oc.TronWeb({fullHost:s});return o.setAddress(r),new Sr(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Ni(s,this.api)}case"SRB":return new Di(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Wi(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:L(n.amount,n.token.decimals)}}prepareApproveParams(n){return{tokenAddress:n.token.tokenAddress,owner:n.owner,spender:n.spender,chainSymbol:n.token.chainSymbol,amount:n.amount==null?void 0:(0,xc.Big)(n.amount).toFixed()}}};var Pr=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new Jn(n)}},ji=class{api;tokenService;params;bridge;pool;constructor(n,r=Vn){$.addChainsProperties(r.additionalChainsProperties);let a=new vr(r),s=new Rr(a),o=new kr(s),c=new xr(o);this.api=new Mr(c,r),this.tokenService=new Ui(this.api,n,r),this.bridge=new fi(this.api,n,r,this.tokenService),this.pool=new ki(this.api,n,r,this.tokenService),this.params=r}async chainDetailsMap(n){return this.api.getChainDetailsMap(n)}async tokens(n){return this.api.tokens(n)}async tokensByChain(n,r){let s=(await this.api.getChainDetailsMap(r))[n];return s?s.tokens:[]}async getTransferStatus(n,r){return this.api.getTransferStatus(n,r)}async getGasBalance(n,r){return this.api.getGasBalance(n,r)}async checkAddress(){return new Promise(n=>{n({status:"OK",gasBalance:null})})}async getPendingStatusInfo(n,r,a,s){z(n);let o;r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n;let c=yt(o,a,await ue(this.api,a)),A=await ue(this.api,s),u=this.getAmountFromVUsdFormatted(c,s,A),m,l=await this.api.getPendingInfo();for(let g in l[s.chainSymbol]){let T=l[s.chainSymbol];if(!T)throw new C("Cannot find pending info for "+s.chainSymbol);m=T[g]}if(m){let g=Ts(m.totalSentAmount,A),T=this.getAmountFromVUsdFormatted(c,s,g),h;return(0,ut.Big)(T.int).gt(u.int)?h={min:u,max:T}:h={min:T,max:u},{pendingTxs:m.pendingTxs,pendingAmount:{int:_t(m.totalSentAmount,3,s.decimals).toFixed(0),float:G(m.totalSentAmount,3).toFixed()},estimatedAmount:h}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:u,max:u}}}async getTokenBalance(n,r){return this.tokenService.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.tokenService.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){z(n),q("amountFloat",n,r.decimals);let a=L(n,r.decimals);if(a.eq(0))return 0;let s=yt(a,r,await ue(this.api,r)),o=xe(s,r.decimals);return _i(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){z(n),q("amountFloat",n,r.decimals);let s=L(n,r.decimals);if(s.eq(0))return 0;let o=yt(s,r,await ue(this.api,r)),c=Yn(o,a,await ue(this.api,a)),A=xe(o,a.decimals);return _i(A,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return z(n),q("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,ut.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 z(n),q("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,ut.Big)(n).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToBeReceived(n,r,a,s){let o=await ue(this.api,r),c=await ue(this.api,a);return this.getAmountToBeReceivedFromPools(n,r,a,o,c,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToBeReceivedFromPools(n,r,a,A,u,s)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){z(n),q("amountToSendFloat",n,r.decimals);let A=L(n,r.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ge("Such route does not support CCTP protocol");let m=A.mul((0,ut.Big)(1).minus(r.cctpFeeShare)).round(0,ut.Big.roundUp),l=_t(m,r.decimals,a.decimals).round(0);return G(l,a.decimals).toFixed()}let u=yt(A,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}async getAmountToSend(n,r,a,s){let o=await ue(this.api,r),c=await ue(this.api,a);return this.getAmountToSendFromPools(n,r,a,o,c,s)}async getAmountToSendFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToSendFromPools(n,r,a,A,u,s)}getAmountToSendFromPools(n,r,a,s,o,c){z(n),q("amountToBeReceivedFloat",n,a.decimals);let A=L(n,a.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ge("Such route does not support CCTP protocol");let l=A.div((0,ut.Big)(1).minus(r.cctpFeeShare)).round(0,ut.Big.roundDown),g=_t(l,a.decimals,r.decimals).round(0);return G(g,r.decimals).toFixed()}let u=Ps(A,a,o),m=Ss(u,r,s);if((0,ut.Big)(m).lte(0))throw new ft;return G(m,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return qi(n.allbridgeChainId,n.chainType,r.allbridgeChainId,n.decimals,a,this.api)}getAverageTransferTime(n,r,a){return n.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(n){return await this.api.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}async refreshPoolInfo(n){if(n){let a=(n instanceof Array?n:[n]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(n){return Cs(n)}async getExtraGasMaxLimits(n,r){return await ea(n,r,this.api)}async getVUsdFromAmount(n,r,a){z(n);let s;r=="float"?(q("amount",n,a.decimals),s=L(n,a.decimals).toFixed()):s=n;let o=yt(s,a,await ue(this.api,a));return{int:o,float:G(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await ue(this.api,r))}getAmountFromVUsdFormatted(n,r,a){z(n);let s=Yn(n,r,a);if((0,ut.Big)(s).lt(0))throw new ft;return{int:s,float:G(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return vc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ue(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ue(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Rc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ue(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ue(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,ut.Big)(o).lt(0))throw new ft;return s}async getSendAmountDetails(n,r,a,s){z(n);let o;return r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n,kc(o,a,await ue(this.api,a),s,await ue(this.api,s))}};function lm(i){return"solanaRpcUrl"in i}var fs=class{params;bridge;pool;utils;service;constructor(n,r=Vn){let a;lm(n)?a=new Pr({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new Pr(n),this.service=new ji(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Oi(a,r),this.params=r}async chainDetailsMap(n="swap"){return this.service.chainDetailsMap(n)}async tokens(n="swap"){return this.service.tokens(n)}async tokensByChain(n,r="swap"){return this.service.tokensByChain(n,r)}async getTransferStatus(n,r){return this.service.getTransferStatus(n,r)}async getGasBalance(n,r){return this.service.getGasBalance(n,r)}async checkAddress(n,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(n,r,a,s){return this.service.getPendingStatusInfo(n,r,a,s)}async getTokenBalance(n,r){return this.service.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.service.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){return this.service.calculateFeePercentOnSourceChain(n,r)}async calculateFeePercentOnDestinationChain(n,r,a){return this.service.calculateFeePercentOnDestinationChain(n,r,a)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(n,r,a,s)}async getAmountToSendAndGasFeeOptions(n,r,a,s){return this.service.getAmountToSendAndGasFeeOptions(n,r,a,s)}async getAmountToBeReceived(n,r,a,s){return this.service.getAmountToBeReceived(n,r,a,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromChain(n,r,a,s,o,c)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromPools(n,r,a,s,o,c)}async getAmountToSend(n,r,a,s){return this.service.getAmountToSend(n,r,a,s)}async getAmountToSendFromChain(n,r,a,s,o,c){return this.service.getAmountToSendFromChain(n,r,a,s,o,c)}getAmountToSendFromPools(n,r,a,s,o,c){return this.service.getAmountToSendFromPools(n,r,a,s,o,c)}async getGasFeeOptions(n,r,a){return this.service.getGasFeeOptions(n,r,a)}getAverageTransferTime(n,r,a){return this.service.getAverageTransferTime(n,r,a)}async getPoolInfoByToken(n){return this.service.getPoolInfoByToken(n)}async refreshPoolInfo(n){return this.service.refreshPoolInfo(n)}aprInPercents(n){return this.service.aprInPercents(n)}async getExtraGasMaxLimits(n,r){return this.service.getExtraGasMaxLimits(n,r)}async getVUsdFromAmount(n,r,a){return this.service.getVUsdFromAmount(n,r,a)}async getAmountFromVUsd(n,r){return this.service.getAmountFromVUsd(n,r)}async swapAndBridgeFeeCalculation(n,r,a){return this.service.swapAndBridgeFeeCalculation(n,r,a)}async swapAndBridgeFeeCalculationReverse(n,r,a){return this.service.swapAndBridgeFeeCalculationReverse(n,r,a)}async getSendAmountDetails(n,r,a,s){return this.service.getSendAmountDetails(n,r,a,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
2
2
  //# sourceMappingURL=index.js.map