@xoxno/sdk-js 1.0.187 → 1.0.188
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/sdk/stellar/admin.d.ts +22 -0
- package/dist/cjs/sdk/stellar/governance.d.ts +51 -0
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/sdk/stellar/admin.d.ts +22 -0
- package/dist/sdk/stellar/governance.d.ts +51 -0
- package/dist/sdk/stellar/index.cjs +1 -1
- package/dist/sdk/stellar/index.esm.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis),(()=>{"use strict";var e={d:(t,r)=>{for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{STELLAR_AGGREGATOR_ROUTER:()=>o,STELLAR_GOVERNANCE:()=>a,STELLAR_GOVERNANCE_ZERO_PREDECESSOR:()=>Je,STELLAR_LENDING_CONTROLLER:()=>r,STELLAR_LENDING_TOPICS:()=>br,STELLAR_NETWORK_PASSPHRASE:()=>i,STELLAR_QUOTE_URL:()=>s,STELLAR_SOROBAN_RPC_URL:()=>n,SYNTHETIC_EVENT_ORDER_STRIDE:()=>wr,XOXNO_LENDING_STELLAR_TICKER:()=>gr,buildSameTokenRepaySwapSteps:()=>Vr,buildStellarAcceptOwnershipTx:()=>Ce,buildStellarAddRewardsTx:()=>Ze,buildStellarApproveTokenTx:()=>We,buildStellarBatchSwapTx:()=>Br,buildStellarBorrowBatchTx:()=>q,buildStellarBorrowTx:()=>G,buildStellarCctpForwardTx:()=>zr,buildStellarClaimRevenueTx:()=>Ke,buildStellarCreateLiquidityPoolTx:()=>je,buildStellarExecuteStrategyTx:()=>Or,buildStellarFlashLoanTx:()=>X,buildStellarGovernanceExecuteGovernanceUpgradeTx:()=>Ft,buildStellarGovernanceExecuteGrantGovernanceRoleTx:()=>jt,buildStellarGovernanceExecuteRevokeGovernanceRoleTx:()=>Qt,buildStellarGovernanceExecuteTransferGovOwnTx:()=>Kt,buildStellarGovernanceExecuteTx:()=>Xt,buildStellarGovernanceExecuteUpdateDelayTx:()=>Ht,buildStellarGrantRoleTx:()=>$e,buildStellarLendingIdentifier:()=>yr,buildStellarLiquidateTx:()=>M,buildStellarMigrateFromBlendTx:()=>F,buildStellarMigrateTx:()=>Oe,buildStellarMultiplyTx:()=>H,buildStellarPauseTx:()=>Be,buildStellarProposeAddAssetToSpokeTx:()=>yt,buildStellarProposeAddSpokeTx:()=>gt,buildStellarProposeApproveBlendPoolTx:()=>It,buildStellarProposeApproveTokenTx:()=>Et,buildStellarProposeConfigureMarketOracleTx:()=>qt,buildStellarProposeCreateHubTx:()=>_t,buildStellarProposeCreateLiquidityPoolTx:()=>Ot,buildStellarProposeDeployPoolTx:()=>Lt,buildStellarProposeEditAssetInSpokeTx:()=>Tt,buildStellarProposeEditOracleToleranceTx:()=>Gt,buildStellarProposeGovernanceUpgradeTx:()=>Dt,buildStellarProposeGrantGovernanceRoleTx:()=>Wt,buildStellarProposeMigrateControllerTx:()=>Ut,buildStellarProposeRemoveAssetFromSpokeTx:()=>vt,buildStellarProposeRemoveSpokeTx:()=>wt,buildStellarProposeRevokeBlendPoolTx:()=>Pt,buildStellarProposeRevokeGovernanceRoleTx:()=>zt,buildStellarProposeRevokeTokenTx:()=>At,buildStellarProposeSetAccumulatorTx:()=>ht,buildStellarProposeSetAggregatorTx:()=>ft,buildStellarProposeSetMinBorrowCollatTx:()=>kt,buildStellarProposeSetPoolTemplateTx:()=>St,buildStellarProposeSetPositionLimitsTx:()=>bt,buildStellarProposeSetPositionManagerTx:()=>Rt,buildStellarProposeSetSpokeLiquidationCurveTx:()=>xt,buildStellarProposeTransferCtrlOwnershipTx:()=>Ct,buildStellarProposeTransferGovOwnTx:()=>Mt,buildStellarProposeUpdateDelayTx:()=>Vt,buildStellarProposeUpgradeControllerTx:()=>Nt,buildStellarProposeUpgradePoolParamsTx:()=>Bt,buildStellarProposeUpgradePoolTx:()=>$t,buildStellarRenewAccountTx:()=>He,buildStellarRepayBatchTx:()=>W,buildStellarRepayDebtWithCollateralTx:()=>K,buildStellarRepayTx:()=>z,buildStellarRevokeRoleTx:()=>Ne,buildStellarRevokeTokenTx:()=>ze,buildStellarSetAccumulatorTx:()=>Ge,buildStellarSetAggregatorTx:()=>qe,buildStellarSetLiquidityPoolTemplateTx:()=>De,buildStellarSetMarketOracleConfigTx:()=>Me,buildStellarSetOracleToleranceTx:()=>Xe,buildStellarSetPositionLimitsTx:()=>Ve,buildStellarSupplyBatchTx:()=>U,buildStellarSupplyTx:()=>C,buildStellarSwapCollateralTx:()=>Q,buildStellarSwapDebtTx:()=>j,buildStellarTransferOwnershipTx:()=>Ue,buildStellarUnpauseTx:()=>Le,buildStellarUpdateAccountThresholdTx:()=>Ye,buildStellarUpdateIndexesTx:()=>Fe,buildStellarUpgradeControllerTx:()=>Pe,buildStellarUpgradeLiquidityPoolParamsTx:()=>Qe,buildStellarWithdrawBatchTx:()=>D,buildStellarWithdrawTx:()=>V,buildTx:()=>N,decodeStellarLendingEvent:()=>_r,encodeInterestRateModel:()=>ve,encodeMarketOracleConfigInput:()=>Ie,encodeMarketParamsRaw:()=>xe,encodeOracleSourceConfigInput:()=>Ae,encodePositionLimits:()=>Re,encodeStrategyPayloadToRouteXdr:()=>Pr,extractEventOrder:()=>Tr,getStellarAccountPositions:()=>fe,getStellarAggregatorQuote:()=>Er,getStellarAggregatorRouter:()=>u,getStellarAsset:()=>ie,getStellarAssetGraph:()=>Se,getStellarAssetMarkets:()=>ue,getStellarAssetPage:()=>le,getStellarAssets:()=>te,getStellarGovernance:()=>c,getStellarGovernanceProposals:()=>he,getStellarHub:()=>ce,getStellarHubGraph:()=>be,getStellarHubs:()=>re,getStellarLendingContext:()=>ee,getStellarLendingController:()=>l,getStellarQuoteTokens:()=>Ar,getStellarReserve:()=>ne,getStellarReserveGraph:()=>ge,getStellarReserveHolders:()=>se,getStellarReserves:()=>ae,getStellarSpoke:()=>de,getStellarSpokeGraph:()=>_e,getStellarSpokes:()=>oe,getStellarUserActivity:()=>me,getStellarUserPositions:()=>pe,mapQuoteResponseToAggregatorSwap:()=>Nr,mapQuoteResponseToStrategyPayload:()=>Lr,mapQuoteResponseToStrategySwap:()=>$r,mapSorobanError:()=>Xr,mapStellarPositionActivityType:()=>xr,prepareStellarBuiltTx:()=>Gr,prepareStellarTxXdr:()=>qr,stellarLendingDispatchKey:()=>Jt,stellarLendingRead:()=>we,syntheticEventOrder:()=>vr,tagStellarInvokedContractError:()=>Cr,toBase64Xdr:()=>Zt,toStellarPositionMode:()=>Dr});const r={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},o={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},a={mainnet:process.env.STELLAR_GOVERNANCE_MAINNET??"",testnet:process.env.STELLAR_GOVERNANCE_TESTNET??""},n={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},s={mainnet:process.env.STELLAR_QUOTE_URL_MAINNET??"https://stellar-swap.xoxno.com",testnet:process.env.STELLAR_QUOTE_URL_TESTNET??"https://testnet-stellar-swap.xoxno.com"},i={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function l(e){const t=r[e];if(!t)throw new Error(`Stellar lending controller address not configured for network "${e}". Set STELLAR_LENDING_CONTROLLER_${e.toUpperCase()} env var.`);return t}function u(e){const t=o[e];if(!t)throw new Error(`Stellar aggregator router address not configured for network "${e}". Set STELLAR_AGGREGATOR_ROUTER_${e.toUpperCase()} env var.`);return t}function c(e){const t=a[e];if(!t)throw new Error(`Stellar governance address not configured for network "${e}". Set STELLAR_GOVERNANCE_${e.toUpperCase()} env var.`);return t}const d=require("@stellar/stellar-sdk"),p=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],m=e=>new d.Address(e).toScVal(),f=e=>new d.ScInt(e).toI128(),h=e=>d.xdr.ScVal.scvU32(e),S=e=>new d.ScInt("string"==typeof e?e:e.toString()).toU64(),b=e=>d.xdr.ScVal.scvBool(e),_=e=>d.xdr.ScVal.scvString(e),g=e=>d.xdr.ScVal.scvSymbol(e),w=()=>d.xdr.ScVal.scvVoid(),y=e=>d.xdr.ScVal.scvVec(e),T=(e,t=32)=>{const r=e.startsWith("0x")?e.slice(2):e,o=Buffer.from(r,"hex");if(o.length!==t)throw new Error(`Stellar builder: expected a ${t}-byte BytesN (got ${o.length} bytes from "${e}")`);return d.xdr.ScVal.scvBytes(o)},v=(e,t)=>null==e?w():t(e),x=e=>d.xdr.ScVal.scvVec(e.map((e=>{return t=e.token,r=e.amount,d.xdr.ScVal.scvVec([m(t),f(r)]);var t,r}))),R=(e,t)=>A({asset:m(t),hub_id:h(e)}),k=(e,t,r)=>d.xdr.ScVal.scvVec([R(e,t),f(r)]),E=e=>d.xdr.ScVal.scvVec(e.map((e=>k(e.hubId,e.asset,e.amount)))),A=e=>{const t=Object.keys(e).sort().map((t=>new d.xdr.ScMapEntry({key:g(t),val:e[t]})));return d.xdr.ScVal.scvMap(t)},I=e=>{const t=e.paths.map((e=>{const t=e.hops.map((e=>{return A({amount_out:f(e.amountOut),pool:m(e.pool),token_in:m(e.tokenIn),token_out:m(e.tokenOut),venue:(t=e.venue,d.xdr.ScVal.scvVec([g(t)]))});var t}));return A({hops:d.xdr.ScVal.scvVec(t),split_ppm:h(e.splitPpm)})}));return A({paths:d.xdr.ScVal.scvVec(t),referral_id:S(e.referralId??0),token_in:m(e.tokenIn),token_out:m(e.tokenOut),total_min_out:f(e.totalMinOut)})},P=e=>{const t=Buffer.from(e);if(0===t.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return d.xdr.ScVal.scvBytes(t)},O=()=>d.xdr.ScVal.scvBytes(Buffer.alloc(0)),B=e=>{const t=e.trim();if(t.startsWith("0x")){const e=t.slice(2);if(!((r=e).length>0&&r.length%2==0&&/^[0-9a-fA-F]+$/.test(r)))throw new Error("Stellar builder: strategy swap bytes hex string must be 0x-prefixed and even-length");return Buffer.from(e,"hex")}var r;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const o=Buffer.from(t,"base64");if(0===o.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return o},L=e=>{if("string"==typeof e)return P(B(e));if(e instanceof Uint8Array)return 0===e.length?O():P(e);if(e&&"object"==typeof e)return"routeXdr"in(r=e)&&"string"==typeof r.routeXdr?P(B(e.routeXdr)):(e=>"swapXdr"in e&&"string"==typeof e.swapXdr)(e)?P(B(e.swapXdr)):(e=>"bytes"in e&&("string"==typeof e.bytes||e.bytes instanceof Uint8Array))(e)?"string"==typeof e.bytes?P(B(e.bytes)):0===e.bytes.length?O():P(e.bytes):(t=(e=>{if(!e||"object"!=typeof e)throw new Error("Stellar builder: decoded strategy `steps` must be a StrategyPayload ({ paths, tokenIn, tokenOut, totalMinOut })");const t=e;if(!Array.isArray(t.paths)||0===t.paths.length)throw new Error("Stellar builder: `steps.paths` must be a non-empty array of strategy paths");if("string"!=typeof t.tokenIn)throw new Error("Stellar builder: `steps.tokenIn` must be a contract address");if("string"!=typeof t.tokenOut)throw new Error("Stellar builder: `steps.tokenOut` must be a contract address");if("string"!=typeof t.totalMinOut)throw new Error("Stellar builder: `steps.totalMinOut` must be an i128 decimal string");let r=0;for(const[e,o]of t.paths.entries()){if(!o||"number"!=typeof o.splitPpm||o.splitPpm<=0||!Array.isArray(o.hops)||0===o.hops.length)throw new Error(`Stellar builder: \`steps.paths[${e}]\` must have splitPpm > 0 and a non-empty hops array`);r+=o.splitPpm;for(const[t,r]of o.hops.entries())if(!r||"string"!=typeof r.amountOut||"string"!=typeof r.pool||"string"!=typeof r.tokenIn||"string"!=typeof r.tokenOut||!p.includes(r.venue))throw new Error(`Stellar builder: \`steps.paths[${e}].hops[${t}]\` must have amountOut, pool, tokenIn, tokenOut, and a valid Soroban venue`)}if(1e6!==r)throw new Error(`Stellar builder: \`steps.paths[].splitPpm\` must sum to 1_000_000, got ${r}`);return t})(e),d.xdr.ScVal.scvBytes(Buffer.from(I(t).toXDR("base64"),"base64")));var t,r;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},$=e=>{if("string"==typeof e)return(e=>{const t=e.startsWith("0x")?e.slice(2):e,r=Buffer.from(t,"hex");return d.xdr.ScVal.scvBytes(r)})(e);if(e instanceof Uint8Array)return d.xdr.ScVal.scvBytes(Buffer.from(e));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function N(e,t,r){const o=e.controllerAddress??l(e.network),a=new d.Contract(o),n=new d.Account(e.caller,e.sourceSequence);return{xdr:new d.TransactionBuilder(n,{fee:e.fee??d.BASE_FEE,networkPassphrase:i[e.network]}).addOperation(a.call(t,...r)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function U(e,t){const r=t.accountNonce??0,o=t.spokeId??0;return N(e,"supply",[m(e.caller),S(r),h(o),E([...t.assets])])}function C(e,t){return U(e,{accountNonce:t.accountNonce,spokeId:t.spokeId,assets:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function q(e,t){return N(e,"borrow",[m(e.caller),S(t.accountNonce),E([...t.borrows]),v(t.to,m)])}function G(e,t){return q(e,{accountNonce:t.accountNonce,borrows:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function D(e,t){return N(e,"withdraw",[m(e.caller),S(t.accountNonce),E([...t.withdrawals]),v(t.to,m)])}function V(e,t){return D(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function W(e,t){return N(e,"repay",[m(e.caller),S(t.accountNonce),E([...t.payments])])}function z(e,t){return W(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function M(e,t){return N(e,"liquidate",[m(e.caller),S(t.accountNonce),E([...t.debtPayments])])}function X(e,t){return N(e,"flash_loan",[m(e.caller),R(t.hubId,t.asset),f(t.amount),m(t.receiver),$(t.data)])}function F(e,t){return N(e,"migrate_from_blend",[m(e.caller),S(t.accountId),h(t.spokeId),h(t.hubId),m(t.blendPool),y(t.collateralTokens.map(m)),y(t.supplyTokens.map(m)),x(t.debtCaps.map((e=>({token:e.token,amount:e.cap}))))])}function H(e,t){const r=t.accountNonce??0,o=t.spokeId??0;return N(e,"multiply",[m(e.caller),S(r),h(o),R(t.collateral.hubId,t.collateral.asset),f(t.debtToFlashLoan),R(t.debt.hubId,t.debt.asset),h(t.mode),L(t.steps),v(t.initialPayment,(e=>k(e.hubId,e.asset,e.amount))),v(t.convertSwap,L)])}function j(e,t){return N(e,"swap_debt",[m(e.caller),S(t.accountNonce),R(t.existingDebt.hubId,t.existingDebt.asset),f(t.newDebtAmount),R(t.newDebt.hubId,t.newDebt.asset),L(t.steps)])}function Q(e,t){return N(e,"swap_collateral",[m(e.caller),S(t.accountNonce),R(t.current.hubId,t.current.asset),f(t.fromAmount),R(t.newCollateral.hubId,t.newCollateral.asset),L(t.steps)])}function K(e,t){return N(e,"repay_debt_with_collateral",[m(e.caller),S(t.accountNonce),R(t.collateral.hubId,t.collateral.asset),f(t.collateralAmount),R(t.debt.hubId,t.debt.asset),L(t.steps),b(t.closePosition)])}const Z="/stellar-lending",Y=25,J=encodeURIComponent,ee=(e,t)=>e.fetchWithTimeout(`${Z}/context`,t),te=(e,t)=>e.fetchWithTimeout(`${Z}/assets`,t),re=(e,t)=>e.fetchWithTimeout(`${Z}/hubs`,t),oe=(e,t)=>e.fetchWithTimeout(`${Z}/spokes`,t),ae=(e,t={},r)=>{const{hubId:o,spokeId:a,asset:n}=t;return e.fetchWithTimeout(`${Z}/reserves`,{...r,params:{...void 0!==o?{hubId:o}:{},...void 0!==a?{spokeId:a}:{},...n?{asset:n}:{}}})},ne=(e,t,r,o,a)=>e.fetchWithTimeout(`${Z}/reserves/${t}/${r}/${J(o)}`,a),se=(e,t,r,o,a,n)=>e.fetchWithTimeout(`${Z}/reserves/${t}/${r}/${J(o)}/holders`,{...n,params:{side:a}}),ie=(e,t,r)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}`,r),le=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/page`,{...o,params:{...r}}),ue=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/markets`,{...o,params:{side:r}}),ce=(e,t,r)=>e.fetchWithTimeout(`${Z}/hubs/${t}`,r),de=(e,t,r)=>e.fetchWithTimeout(`${Z}/spokes/${t}`,r),pe=(e,t,r)=>e.fetchWithTimeout(`${Z}/users/${J(t)}/positions`,r),me=(e,t,r={},o)=>{const{skip:a,top:n}=r;return e.fetchWithTimeout(`${Z}/users/${J(t)}/activity`,{...o,params:{...void 0!==a?{skip:a}:{},...void 0!==n?{top:n}:{}}})},fe=(e,t,r)=>e.fetchWithTimeout(`${Z}/accounts/${J(t)}/positions`,r),he=(e,t={},r)=>{const{top:o=Y,continuationToken:a}=t;return e.fetchWithTimeout(`${Z}/governance/proposals`,{...r,params:{top:o,...a?{continuationToken:a}:{}}})},Se=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/graph`,{...o,params:{...r}}),be=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/hubs/${t}/graph`,{...o,params:{...r}}),_e=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/spokes/${t}/graph`,{...o,params:{...r}}),ge=(e,t,r,o,a,n)=>e.fetchWithTimeout(`${Z}/reserves/${t}/${r}/${J(o)}/graph`,{...n,params:{...a}}),we=e=>({context:t=>ee(e,t),assets:t=>te(e,t),hubs:t=>re(e,t),spokes:t=>oe(e,t),reserves:(t,r)=>{return void 0===(o=t)||"hubId"in o||"spokeId"in o||"asset"in o?ae(e,t,r):ae(e,{},t);var o},reserve:(t,r,o,a)=>ne(e,t,r,o,a),reserveHolders:(t,r,o,a,n)=>se(e,t,r,o,a,n),asset:(t,r)=>ie(e,t,r),assetMarkets:(t,r,o)=>ue(e,t,r,o),hub:(t,r)=>ce(e,t,r),spoke:(t,r)=>de(e,t,r),userPositions:(t,r)=>pe(e,t,r),userActivity:(t,r,o)=>me(e,t,r,o),accountPositions:(t,r)=>fe(e,t,r),governanceProposals:(t,r)=>he(e,t,r),assetGraph:(t,r,o)=>Se(e,t,r,o),hubGraph:(t,r,o)=>be(e,t,r,o),spokeGraph:(t,r,o)=>_e(e,t,r,o),reserveGraph:(t,r,o,a,n)=>ge(e,t,r,o,a,n)}),ye={Single:0,PrimaryWithAnchor:1},Te="RedStonePriceFeed",ve=e=>A({base_borrow_rate:f(e.baseBorrowRateRay),max_borrow_rate:f(e.maxBorrowRateRay),max_utilization:f(e.maxUtilizationRay),mid_utilization:f(e.midUtilizationRay),optimal_utilization:f(e.optimalUtilizationRay),reserve_factor:h(e.reserveFactorBps),slope1:f(e.slope1Ray),slope2:f(e.slope2Ray),slope3:f(e.slope3Ray)}),xe=e=>A({asset_decimals:h(e.assetDecimals),asset_id:m(e.assetId),base_borrow_rate:f(e.baseBorrowRateRay),flashloan_fee:h(e.flashloanFeeBps),is_flashloanable:b(e.isFlashloanable),max_borrow_rate:f(e.maxBorrowRateRay),max_utilization:f(e.maxUtilizationRay),mid_utilization:f(e.midUtilizationRay),optimal_utilization:f(e.optimalUtilizationRay),reserve_factor:h(e.reserveFactorBps),slope1:f(e.slope1Ray),slope2:f(e.slope2Ray),slope3:f(e.slope3Ray)}),Re=e=>A({max_borrow_positions:h(e.maxBorrowPositions),max_supply_positions:h(e.maxSupplyPositions)}),ke=e=>{const t=e.kind;switch(t){case"Stellar":return y([g("Stellar"),m(e.value)]);case"Symbol":return y([g("Symbol"),g(e.value)]);case"String":return y([g("String"),_(e.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${t}"`)}},Ee=(e,t)=>{if("Twap"===e){if("number"!=typeof t)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return y([g("Twap"),h(t)])}return y([g("Spot")])},Ae=e=>{const t=e.provider;if("ReflectorSep40"===t){if(!e.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return y([g("Reflector"),A({asset:ke(e.asset),contract:m(e.contract),read_mode:Ee(e.readMode,e.twapRecords)})])}if(t===Te||"XoxnoPriceFeed"===t){const r=t===Te?"RedStone":"Xoxno";if("string"!=typeof e.feedId)throw new Error(`Stellar builder: ${r} oracle source requires \`feedId\``);if("number"!=typeof e.maxStaleSeconds)throw new Error(`Stellar builder: ${r} oracle source requires \`maxStaleSeconds\``);return y([g(r),A({contract:m(e.contract),feed_id:_(e.feedId),max_stale_seconds:S(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},Ie=e=>{const t=ye[e.strategy];if(void 0===t)throw new Error(`Stellar builder: unknown oracle strategy "${e.strategy}"`);return A({anchor:(r=e.anchor,y(null==r?[g("None")]:[g("Some"),Ae(r)])),max_price_stale_seconds:S(e.maxPriceStaleSeconds),max_sanity_price_wad:f(e.maxSanityPriceWad),min_sanity_price_wad:f(e.minSanityPriceWad),primary:Ae(e.primary),strategy:h(t),tolerance_bps:h(e.toleranceBps)});var r};function Pe(e,t){return N(e,"upgrade",[T(t.wasmHash)])}function Oe(e,t){return N(e,"migrate",[h(t.newVersion)])}function Be(e){return N(e,"pause",[])}function Le(e){return N(e,"unpause",[])}function $e(e,t){return N(e,"grant_role",[m(t.account),g(t.role)])}function Ne(e,t){return N(e,"revoke_role",[m(t.account),g(t.role)])}function Ue(e,t){return N(e,"transfer_ownership",[m(t.newOwner),h(t.liveUntilLedger)])}function Ce(e){return N(e,"accept_ownership",[])}function qe(e,t){return N(e,"set_aggregator",[m(t.aggregator)])}function Ge(e,t){return N(e,"set_accumulator",[m(t.accumulator)])}function De(e,t){return N(e,"set_liquidity_pool_template",[T(t.wasmHash)])}function Ve(e,t){return N(e,"set_position_limits",[Re(t)])}function We(e,t){return N(e,"approve_token",[m(t.token)])}function ze(e,t){return N(e,"revoke_token",[m(t.token)])}function Me(e,t){return N(e,"set_market_oracle_config",[R(t.hubId,t.asset),Ie(t.config)])}function Xe(e,t){return N(e,"set_oracle_tolerance",[m(t.asset),A({lower_ratio_bps:h(t.lowerRatioBps),upper_ratio_bps:h(t.upperRatioBps)})])}function Fe(e,t){return N(e,"update_indexes",[m(e.caller),y(t.assets.map((e=>R(e.hubId,e.asset))))])}function He(e,t){return N(e,"renew_account",[m(e.caller),S(t.accountNonce)])}function je(e,t){return N(e,"create_liquidity_pool",[h(t.hubId),m(t.asset),xe(t.params)])}function Qe(e,t){return N(e,"upgrade_liquidity_pool_params",[R(t.hubId,t.asset),ve(t.params)])}function Ke(e,t){return N(e,"claim_revenue",[m(e.caller),y(t.assets.map((e=>R(e.hubId,e.asset))))])}function Ze(e,t){return N(e,"add_rewards",[m(e.caller),E(t.rewards)])}function Ye(e,t){return N(e,"update_account_threshold",[m(e.caller),b(t.hasRisks),y(t.accountNonces.map((e=>S(e))))])}const Je="00".repeat(32),et=e=>{if("string"==typeof e)return T(e);const t=Buffer.from(e);if(32!==t.length)throw new Error(`Stellar governance builder: expected a 32-byte salt (got ${t.length} bytes)`);return d.xdr.ScVal.scvBytes(t)},tt=(e,...t)=>y([g(e),...t]),rt=e=>A({asset:m(e.asset),hub_id:h(e.hubId),params:xe(e.params)}),ot=e=>A({hub_asset:R(e.hubId,e.asset),params:ve(e.params)}),at=e=>A({new_owner:m(e.newOwner),live_until_ledger:h(e.liveUntilLedger)}),nt=e=>A({cfg:Ie(e.config),hub_asset:R(e.hubId,e.asset)}),st=e=>A({asset:m(e.asset),bonus:h(e.bonus),borrow_cap:f(e.borrowCap),can_borrow:b(e.canBorrow),can_collateral:b(e.canCollateral),frozen:b(e.frozen),hub_id:h(e.hubId),paused:b(e.paused),liquidation_fees:h(e.liquidationFees),ltv:h(e.ltv),oracle_override:y([g("None")]),spoke_id:h(e.spokeId),supply_cap:f(e.supplyCap),threshold:h(e.threshold)}),it=e=>A({hub_asset:R(e.hubId,e.asset),spoke_id:h(e.spokeId)}),lt=e=>A({hf_for_max_bonus_wad:f(e.hfForMaxBonusWad),liquidation_bonus_factor_bps:h(e.liquidationBonusFactorBps),spoke_id:h(e.spokeId),target_hf_wad:f(e.targetHfWad)}),ut=e=>A({asset:m(e.asset),tolerance:h(e.tolerance)}),ct=e=>A({account:m(e.account),role:g(e.role)});function dt(e,t,r){const o=e.governanceAddress??c(e.network),a=new d.Contract(o),n=new d.Account(e.caller,e.sourceSequence);return{xdr:new d.TransactionBuilder(n,{fee:e.fee??d.BASE_FEE,networkPassphrase:i[e.network]}).addOperation(a.call(t,...r)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}const pt=(e,t,r)=>dt(e,"propose",[m(e.caller),t,et(r)]),mt=(e,t,r)=>dt(e,"execute_self",[w(),t,et(r)]);function ft(e,t,r){return pt(e,tt("SetAggregator",m(t.aggregator)),r)}function ht(e,t,r){return pt(e,tt("SetAccumulator",m(t.accumulator)),r)}function St(e,t,r){return pt(e,tt("SetLiquidityPoolTemplate",T(t.wasmHash)),r)}function bt(e,t,r){return pt(e,tt("SetPositionLimits",Re(t)),r)}function _t(e,t){return pt(e,tt("CreateHub"),t)}function gt(e,t){return pt(e,tt("AddSpoke"),t)}function wt(e,t,r){return pt(e,tt("RemoveSpoke",h(t.spokeId)),r)}function yt(e,t,r){return pt(e,tt("AddAssetToSpoke",st(t)),r)}function Tt(e,t,r){return pt(e,tt("EditAssetInSpoke",st(t)),r)}function vt(e,t,r){return pt(e,tt("RemoveAssetFromSpoke",it(t)),r)}function xt(e,t,r){return pt(e,tt("SetSpokeLiquidationCurve",lt(t)),r)}function Rt(e,t,r){return pt(e,tt("SetPositionManager",m(t.manager),b(t.isActive)),r)}function kt(e,t,r){return pt(e,tt("SetMinBorrowCollateralUsd",f(t.floorWad)),r)}function Et(e,t,r){return pt(e,tt("ApproveToken",m(t.token)),r)}function At(e,t,r){return pt(e,tt("RevokeToken",m(t.token)),r)}function It(e,t,r){return pt(e,tt("ApproveBlendPool",m(t.pool)),r)}function Pt(e,t,r){return pt(e,tt("RevokeBlendPool",m(t.pool)),r)}function Ot(e,t,r){return pt(e,tt("CreateLiquidityPool",rt(t)),r)}function Bt(e,t,r){return pt(e,tt("UpgradeLiquidityPoolParams",ot(t)),r)}function Lt(e,t){return pt(e,tt("DeployPool"),t)}function $t(e,t,r){return pt(e,tt("UpgradePool",T(t.wasmHash)),r)}function Nt(e,t,r){return pt(e,tt("UpgradeController",T(t.wasmHash)),r)}function Ut(e,t,r){return pt(e,tt("MigrateController",h(t.newVersion)),r)}function Ct(e,t,r){return pt(e,tt("TransferCtrlOwnership",at(t)),r)}function qt(e,t,r){return pt(e,tt("ConfigureMarketOracle",nt(t)),r)}function Gt(e,t,r){return pt(e,tt("EditOracleTolerance",ut(t)),r)}function Dt(e,t,r){return pt(e,tt("UpgradeGov",T(t.wasmHash)),r)}function Vt(e,t,r){return pt(e,tt("UpdateGovDelay",h(t.newDelay)),r)}function Wt(e,t,r){return pt(e,tt("GrantGovRole",ct(t)),r)}function zt(e,t,r){return pt(e,tt("RevokeGovRole",ct(t)),r)}function Mt(e,t,r){return pt(e,tt("TransferGovOwnership",at(t)),r)}function Xt(e,t){const r=y(t.argsXdr.map((e=>d.xdr.ScVal.fromXDR(e,"base64")))),o=et(t.predecessor??Je);return dt(e,"execute",[w(),m(t.target),g(t.functionName),r,o,et(t.salt)])}function Ft(e,t,r){return mt(e,tt("UpgradeGov",T(t.wasmHash)),r)}function Ht(e,t,r){return mt(e,tt("UpdateGovDelay",h(t.newDelay)),r)}function jt(e,t,r){return mt(e,tt("GrantGovRole",ct(t)),r)}function Qt(e,t,r){return mt(e,tt("RevokeGovRole",ct(t)),r)}function Kt(e,t,r){return mt(e,tt("TransferGovOwnership",at(t)),r)}const Zt=e=>e.toXDR("base64"),Yt=e=>d.xdr.ScVal.fromXDR(e,"base64"),Jt=e=>e.map((e=>String((0,d.scValToNative)(Yt(e))))).join(":"),er=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),tr=e=>Number(e),rr=e=>String(e),or=e=>null==e?void 0:er(e),ar=e=>null==e?void 0:rr(e),nr=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),sr=["None","Multiply","Long","Short"],ir=["Single","PrimaryWithAnchor"],lr=["ReflectorSep40","RedStonePriceFeed"],ur=["Spot","Twap"],cr=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],dr=e=>Array.isArray(e)?e:[],pr=(e,t)=>{const r="Borrow"===t;return{action:(o=e[0],cr[tr(o)]??er(o)),positionType:t,hubId:tr(e[1]),asset:rr(e[2]),scaledAmountRay:er(e[3]),indexRay:er(e[4]),amount:er(e[5]),liquidationThresholdBps:r?void 0:tr(e[6]),liquidationBonusBps:r?void 0:tr(e[7]),loanToValueBps:r?void 0:tr(e[8]),liquidationFeesBps:r?void 0:tr(e[9])};var o},mr=e=>{return{owner:rr(e[0]),spokeId:tr(e[1]),mode:(t=e[2],sr[tr(t)]??"None")};var t},fr=(e,t)=>{const r=ur[tr(e[`${t}_read_mode`])]??"Spot",o=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=o?{kind:"Stellar",value:rr(o)}:null!=a?{kind:"Symbol",value:rr(a)}:void 0;return{provider:lr[tr(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:rr(e[`${t}_contract`]),asset:n,feedId:ar(e[`${t}_feed_id`]),readMode:r,twapRecords:"Twap"===r?tr(e[`${t}_twap_records`]):void 0,decimals:tr(e[`${t}_decimals`]),resolutionSeconds:tr(e[`${t}_resolution_seconds`]),maxStaleSeconds:tr(e[`${t}_max_stale_seconds`])}},hr=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:rr(e.base_token_id),quoteTokenId:rr(e.quote_token_id),tolerance:{upperRatio:tr(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:tr(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:tr(e.asset_decimals),maxPriceStaleSeconds:tr(e.max_price_stale_seconds),strategy:ir[tr(e.strategy)]??"Single",primary:fr(e,"primary"),anchor:t?fr(e,"anchor"):void 0,primaryQuoteToken:ar(e.primary_quote_token),anchorQuoteToken:ar(e.anchor_quote_token),minSanityPriceWad:or(e.min_sanity_price_wad),maxSanityPriceWad:or(e.max_sanity_price_wad)}},Sr={"market:create":e=>({topic:"market:create",data:{hubId:tr(e.hub_id),baseAsset:rr(e.base_asset),maxBorrowRate:er(e.max_borrow_rate),baseBorrowRate:er(e.base_borrow_rate),slope1:er(e.slope1),slope2:er(e.slope2),slope3:er(e.slope3),midUtilization:er(e.mid_utilization),optimalUtilization:er(e.optimal_utilization),maxUtilization:er(e.max_utilization),reserveFactor:tr(e.reserve_factor),marketAddress:rr(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:rr(e.asset),maxBorrowRateRay:er(e.max_borrow_rate),baseBorrowRateRay:er(e.base_borrow_rate),slope1Ray:er(e.slope1),slope2Ray:er(e.slope2),slope3Ray:er(e.slope3),midUtilizationRay:er(e.mid_utilization),optimalUtilizationRay:er(e.optimal_utilization),maxUtilizationRay:er(e.max_utilization),reserveFactorBps:tr(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:dr(e).map((e=>{return t=dr(e),{hubId:tr(t[0]),asset:rr(t[1]),timestamp:tr(t[2]),supplyIndexRay:er(t[3]),borrowIndexRay:er(t[4]),cash:er(t[5]),suppliedRay:er(t[6]),borrowedRay:er(t[7]),revenueRay:er(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:dr(e).map((e=>{const t=e;return{hubId:tr(t.hub_id),asset:rr(t.asset),params:(r=t.params,{maxBorrowRateRay:er(r.max_borrow_rate),baseBorrowRateRay:er(r.base_borrow_rate),slope1Ray:er(r.slope1),slope2Ray:er(r.slope2),slope3Ray:er(r.slope3),midUtilizationRay:er(r.mid_utilization),optimalUtilizationRay:er(r.optimal_utilization),maxUtilizationRay:er(r.max_utilization),reserveFactorBps:tr(r.reserve_factor),isFlashloanable:Boolean(r.is_flashloanable),flashloanFeeBps:tr(r.flashloan_fee),assetId:rr(r.asset_id),assetDecimals:tr(r.asset_decimals)})};var r}))}}),"position:batch_update":e=>{const t=dr(e);return{topic:"position:batch_update",data:{accountId:er(t[0]),accountAttributes:mr(dr(t[1])),updates:[...dr(t[2]).map((e=>pr(dr(e),"Deposit"))),...dr(t[3]).map((e=>pr(dr(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:tr(e.hub_id),asset:rr(e.asset),receiver:rr(e.receiver),caller:rr(e.caller),amount:er(e.amount),fee:er(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:rr(e.asset),oracle:hr(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:rr(e.liquidator),accountId:er(e.account_id),repaidUsdWad:er(e.repaid_usd_wad),bonusBps:er(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:er(e.account_id),totalBorrowUsdWad:er(e.total_borrow_usd_wad),totalCollateralUsdWad:er(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:rr(e.token),amount:er(e.amount),usdValueWad:er(e.usd_value_wad),accountId:er(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:tr(e.hub_id),asset:rr(e.asset),amount:er(e.amount),fee:er(e.fee),amountSent:er(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:nr(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:rr(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:rr(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:nr(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:tr(e.max_supply_positions),maxBorrowPositions:tr(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:rr(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:tr(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:er(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:er(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:tr(t.liquidation_bonus_factor_bps)}}}},br=Object.freeze(Object.keys(Sr));function _r(e,t){const r=Jt(e),o=Sr[r];return o?o((0,d.scValToNative)(Yt(t))):null}const gr="XLENDXLM-a7c9f3",wr=1e4;function yr(e){const t=BigInt(e).toString(16),r=t.length%2==0?t:`0${t}`;return`${gr}-${r}`}function Tr(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function vr(e,t=0){return e*wr+t}function xr(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Rr=(e,t,r)=>{const o=new URL(t,e.endsWith("/")?e:`${e}/`);if(r)for(const[e,t]of Object.entries(r))void 0!==t&&o.searchParams.set(e,String(t));return o.toString()},kr=e=>e.baseUrl??s[e.network];async function Er(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const r=Rr(kr(t),"api/v1/quote",{from:e.from,to:e.to,amountIn:e.amountIn,amountOut:e.amountOut,maxHops:e.maxHops,maxSplits:e.maxSplits,slippage:e.slippage,includePaths:e.includePaths,sender:e.sender,router:e.router,platform:e.platform,fresh:e.fresh}),o=await fetch(r,t.fetchOptions);if(!o.ok){const e=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${r} — ${e}`)}return await o.json()}async function Ar(e){const t=Rr(kr(e),"api/v1/tokens"),r=await fetch(t,e.fetchOptions);if(!r.ok){const e=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${t} — ${e}`)}return await r.json()}const Ir=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,Pr=e=>I(e).toXDR("base64");function Or(e,t){const r=e.routerAddress??u(e.network),o=new d.Contract(r),a=new d.Account(e.caller,e.sourceSequence),n=L(Ir(t,e.referralId));return{xdr:new d.TransactionBuilder(a,{fee:e.fee??d.BASE_FEE,networkPassphrase:i[e.network]}).addOperation(o.call("execute_strategy",m(e.caller),f(e.totalIn),n)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function Br(e,t){return Or(e,t)}function Lr(e,t={}){if("string"!=typeof e.amountOutMin)throw new Error("mapQuoteResponseToStrategyPayload: quote response is missing `amountOutMin`. Pass `slippage` when fetching the quote.");return{paths:e.paths?e.paths.map((e=>({hops:e.swaps.map(Ur),splitPpm:e.splitPpm}))):[{hops:e.hops.map(Ur),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function $r(e,t={}){const r=e;return"string"==typeof r.routeXdr&&r.routeXdr.length>0?{routeXdr:r.routeXdr}:Lr(e,t)}const Nr=Lr,Ur=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Cr(e,t){const r=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${r}`)}async function qr(e,t,r){const o=d.TransactionBuilder.fromXDR(t,"base64");try{return(await e.prepareTransaction(o)).toXDR()}catch(e){if(r?.invokedContractId)throw Cr(r.invokedContractId,e);throw e}}async function Gr(e,t,r){return qr(e,t.xdr,r)}function Dr(e){if(e<=0||e>4)throw new Error(`Invalid PositionMode ${e} for Stellar — expected 1 (Normal) through 4 (Short). "None" (0) has no Stellar equivalent.`);return e-1}function Vr(e,t){return new Uint8Array(0)}const Wr=e=>{const t=e.startsWith("0x")?e.slice(2):e;if(t.length%2!=0)throw new Error("buildStellarCctpForwardTx: hex input must have even length");return Buffer.from(t,"hex")};function zr(e){const t=new d.Account(e.caller,e.sourceSequence),r=new d.Contract(e.forwarderAddress).call("mint_and_forward",d.xdr.ScVal.scvBytes(Wr(e.message)),d.xdr.ScVal.scvBytes(Wr(e.attestation)));return{xdr:new d.TransactionBuilder(t,{fee:e.fee??"10000000",networkPassphrase:i[e.network]}).addOperation(r).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const Mr={1:{name:"AssetNotSupported",message:"This asset is not supported by the protocol."},2:{name:"AssetAlreadySupported",message:"This asset is already supported."},3:{name:"InvalidTicker",message:"Invalid asset ticker."},6:{name:"InvalidAsset",message:"Invalid asset address."},10:{name:"InvalidPoolTemplate",message:"The liquidity pool template hash is invalid."},11:{name:"InvalidExchangeSrc",message:"The oracle configuration is invalid."},12:{name:"PairNotActive",message:"No oracle is configured for this asset."},32:{name:"OwnerNotSet",message:"The contract owner has not been set."},39:{name:"InvalidTimelockDelay",message:"The timelock delay is out of the allowed range."},41:{name:"InvalidRole",message:"The caller does not hold the required role."},43:{name:"HubNotActive",message:"This hub is not active."},44:{name:"NotAuthorized",message:"The caller is not authorized to perform this action."},46:{name:"OperationNotCancellable",message:"This governance operation cannot be cancelled."},113:{name:"InvalidLiqThreshold",message:"LTV, liquidation threshold, or bonus is out of bounds."},116:{name:"InvalidBorrowParams",message:"Supply or borrow cap configuration is invalid."},117:{name:"InvalidUtilRange",message:"Interest-rate utilization breakpoints are invalid."},132:{name:"AssetDecimalsTooHigh",message:"Asset decimals exceed the protocol maximum (27)."},300:{name:"SpokeNotFound",message:"This spoke does not exist."},301:{name:"SpokeDeprecated",message:"This spoke has been deprecated."},308:{name:"AssetAlreadyInSpoke",message:"This asset is already listed in the spoke."},309:{name:"SpokeAssetsLimitReached",message:"This spoke has reached its asset limit."},314:{name:"SpokeCapBelowUsage",message:"The new cap is below current usage on this spoke asset."},315:{name:"SpokeAssetPaused",message:"This spoke asset is paused."},316:{name:"SpokeAssetFrozen",message:"This spoke asset is frozen."},220:{name:"InvalidOracleBase",message:"The oracle quote asset/market is missing or invalid."},221:{name:"InvalidOracleDecimals",message:"The oracle decimals value is invalid."},224:{name:"InvalidSanityBounds",message:"Oracle sanity bounds are invalid (require 0 < min < max)."},225:{name:"OracleCycleDetected",message:"A cycle was detected in the oracle quote chain."}};function Xr(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const r=Number(t[1]),o=Mr[r];return o?{code:r,...o}:null}module.exports=t})();
|
|
1
|
+
"undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis),(()=>{"use strict";var e={d:(t,r)=>{for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{STELLAR_AGGREGATOR_ROUTER:()=>o,STELLAR_GOVERNANCE:()=>a,STELLAR_GOVERNANCE_ZERO_PREDECESSOR:()=>tt,STELLAR_LENDING_CONTROLLER:()=>r,STELLAR_LENDING_TOPICS:()=>xr,STELLAR_NETWORK_PASSPHRASE:()=>i,STELLAR_QUOTE_URL:()=>s,STELLAR_SOROBAN_RPC_URL:()=>n,SYNTHETIC_EVENT_ORDER_STRIDE:()=>Ir,XOXNO_LENDING_STELLAR_TICKER:()=>Rr,buildSameTokenRepaySwapSteps:()=>jr,buildStellarAcceptOwnershipTx:()=>Ge,buildStellarAddRewardsTx:()=>Je,buildStellarApproveTokenTx:()=>We,buildStellarBatchSwapTx:()=>qr,buildStellarBorrowBatchTx:()=>C,buildStellarBorrowTx:()=>q,buildStellarCctpForwardTx:()=>Kr,buildStellarClaimRevenueTx:()=>Ye,buildStellarCreateLiquidityPoolTx:()=>Ke,buildStellarExecuteStrategyTx:()=>Cr,buildStellarFlashLoanTx:()=>F,buildStellarGovernanceAddSpokeImmediateTx:()=>rr,buildStellarGovernanceCreateHubImmediateTx:()=>tr,buildStellarGovernanceExecuteGovernanceUpgradeTx:()=>jt,buildStellarGovernanceExecuteGrantGovernanceRoleTx:()=>Kt,buildStellarGovernanceExecuteRevokeGovernanceRoleTx:()=>Zt,buildStellarGovernanceExecuteTransferGovOwnTx:()=>Yt,buildStellarGovernanceExecuteTx:()=>Ht,buildStellarGovernanceExecuteUpdateDelayTx:()=>Qt,buildStellarGovernanceRevokeRoleImmediateTx:()=>or,buildStellarGovernanceSetOracleSanityBoundsImmediateTx:()=>er,buildStellarGovernanceSetSpokeAssetFlagsImmediateTx:()=>Jt,buildStellarGrantRoleTx:()=>Ne,buildStellarLendingIdentifier:()=>Ar,buildStellarLiquidateTx:()=>M,buildStellarMigrateFromBlendTx:()=>X,buildStellarMigrateTx:()=>Oe,buildStellarMultiplyTx:()=>H,buildStellarPauseTx:()=>Be,buildStellarProposeAddAssetToSpokeTx:()=>vt,buildStellarProposeAddSpokeTx:()=>Tt,buildStellarProposeApproveBlendPoolTx:()=>Ot,buildStellarProposeApproveTokenTx:()=>Et,buildStellarProposeConfigureMarketOracleTx:()=>Dt,buildStellarProposeCreateHubTx:()=>wt,buildStellarProposeCreateLiquidityPoolTx:()=>Lt,buildStellarProposeDeployPoolTx:()=>$t,buildStellarProposeEditAssetInSpokeTx:()=>xt,buildStellarProposeEditOracleToleranceTx:()=>Vt,buildStellarProposeGovernanceUpgradeTx:()=>Wt,buildStellarProposeGrantGovernanceRoleTx:()=>Mt,buildStellarProposeMigrateControllerTx:()=>Ct,buildStellarProposeRemoveAssetFromSpokeTx:()=>kt,buildStellarProposeRemoveSpokeTx:()=>yt,buildStellarProposeRevokeBlendPoolTx:()=>Bt,buildStellarProposeRevokeGovernanceRoleTx:()=>Ft,buildStellarProposeRevokeTokenTx:()=>Pt,buildStellarProposeSetAccumulatorTx:()=>bt,buildStellarProposeSetAggregatorTx:()=>St,buildStellarProposeSetMinBorrowCollatTx:()=>At,buildStellarProposeSetPoolTemplateTx:()=>_t,buildStellarProposeSetPositionLimitsTx:()=>gt,buildStellarProposeSetPositionManagerTx:()=>It,buildStellarProposeSetSpokeLiquidationCurveTx:()=>Rt,buildStellarProposeTransferCtrlOwnershipTx:()=>qt,buildStellarProposeTransferGovOwnTx:()=>Xt,buildStellarProposeUpdateDelayTx:()=>zt,buildStellarProposeUpgradeControllerTx:()=>Gt,buildStellarProposeUpgradePoolParamsTx:()=>Nt,buildStellarProposeUpgradePoolTx:()=>Ut,buildStellarRenewAccountTx:()=>Qe,buildStellarRepayBatchTx:()=>W,buildStellarRepayDebtWithCollateralTx:()=>K,buildStellarRepayTx:()=>z,buildStellarRevokeRoleTx:()=>$e,buildStellarRevokeTokenTx:()=>ze,buildStellarSetAccumulatorTx:()=>qe,buildStellarSetAggregatorTx:()=>Ce,buildStellarSetLiquidityPoolTemplateTx:()=>De,buildStellarSetMarketOracleConfigTx:()=>Me,buildStellarSetOracleSanityBoundsTx:()=>He,buildStellarSetOracleToleranceTx:()=>Fe,buildStellarSetPositionLimitsTx:()=>Ve,buildStellarSetSpokeAssetFlagsTx:()=>Xe,buildStellarSupplyBatchTx:()=>U,buildStellarSupplyTx:()=>G,buildStellarSwapCollateralTx:()=>Q,buildStellarSwapDebtTx:()=>j,buildStellarTransferOwnershipTx:()=>Ue,buildStellarUnpauseTx:()=>Le,buildStellarUpdateAccountThresholdTx:()=>et,buildStellarUpdateIndexesTx:()=>je,buildStellarUpgradeControllerTx:()=>Pe,buildStellarUpgradeLiquidityPoolParamsTx:()=>Ze,buildStellarWithdrawBatchTx:()=>D,buildStellarWithdrawTx:()=>V,buildTx:()=>$,decodeStellarLendingEvent:()=>kr,encodeInterestRateModel:()=>ve,encodeMarketOracleConfigInput:()=>Ee,encodeMarketParamsRaw:()=>xe,encodeOracleSourceConfigInput:()=>Ae,encodePositionLimits:()=>ke,encodeStrategyPayloadToRouteXdr:()=>Gr,extractEventOrder:()=>Er,getStellarAccountPositions:()=>fe,getStellarAggregatorQuote:()=>Nr,getStellarAggregatorRouter:()=>u,getStellarAsset:()=>ie,getStellarAssetGraph:()=>Se,getStellarAssetMarkets:()=>ue,getStellarAssetPage:()=>le,getStellarAssets:()=>te,getStellarGovernance:()=>c,getStellarGovernanceProposals:()=>he,getStellarHub:()=>ce,getStellarHubGraph:()=>be,getStellarHubs:()=>re,getStellarLendingContext:()=>ee,getStellarLendingController:()=>l,getStellarQuoteTokens:()=>$r,getStellarReserve:()=>ne,getStellarReserveGraph:()=>ge,getStellarReserveHolders:()=>se,getStellarReserves:()=>ae,getStellarSpoke:()=>de,getStellarSpokeGraph:()=>_e,getStellarSpokes:()=>oe,getStellarUserActivity:()=>me,getStellarUserPositions:()=>pe,mapQuoteResponseToAggregatorSwap:()=>Wr,mapQuoteResponseToStrategyPayload:()=>Dr,mapQuoteResponseToStrategySwap:()=>Vr,mapSorobanError:()=>Yr,mapStellarPositionActivityType:()=>Or,prepareStellarBuiltTx:()=>Xr,prepareStellarTxXdr:()=>Fr,stellarLendingDispatchKey:()=>sr,stellarLendingRead:()=>we,syntheticEventOrder:()=>Pr,tagStellarInvokedContractError:()=>Mr,toBase64Xdr:()=>ar,toStellarPositionMode:()=>Hr});const r={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},o={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},a={mainnet:process.env.STELLAR_GOVERNANCE_MAINNET??"",testnet:process.env.STELLAR_GOVERNANCE_TESTNET??""},n={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},s={mainnet:process.env.STELLAR_QUOTE_URL_MAINNET??"https://stellar-swap.xoxno.com",testnet:process.env.STELLAR_QUOTE_URL_TESTNET??"https://testnet-stellar-swap.xoxno.com"},i={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function l(e){const t=r[e];if(!t)throw new Error(`Stellar lending controller address not configured for network "${e}". Set STELLAR_LENDING_CONTROLLER_${e.toUpperCase()} env var.`);return t}function u(e){const t=o[e];if(!t)throw new Error(`Stellar aggregator router address not configured for network "${e}". Set STELLAR_AGGREGATOR_ROUTER_${e.toUpperCase()} env var.`);return t}function c(e){const t=a[e];if(!t)throw new Error(`Stellar governance address not configured for network "${e}". Set STELLAR_GOVERNANCE_${e.toUpperCase()} env var.`);return t}const d=require("@stellar/stellar-sdk"),p=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],m=e=>new d.Address(e).toScVal(),f=e=>new d.ScInt(e).toI128(),h=e=>d.xdr.ScVal.scvU32(e),S=e=>new d.ScInt("string"==typeof e?e:e.toString()).toU64(),b=e=>d.xdr.ScVal.scvBool(e),_=e=>d.xdr.ScVal.scvString(e),g=e=>d.xdr.ScVal.scvSymbol(e),w=()=>d.xdr.ScVal.scvVoid(),T=e=>d.xdr.ScVal.scvVec(e),y=(e,t=32)=>{const r=e.startsWith("0x")?e.slice(2):e,o=Buffer.from(r,"hex");if(o.length!==t)throw new Error(`Stellar builder: expected a ${t}-byte BytesN (got ${o.length} bytes from "${e}")`);return d.xdr.ScVal.scvBytes(o)},v=(e,t)=>null==e?w():t(e),x=e=>d.xdr.ScVal.scvVec(e.map((e=>{return t=e.token,r=e.amount,d.xdr.ScVal.scvVec([m(t),f(r)]);var t,r}))),k=(e,t)=>A({asset:m(t),hub_id:h(e)}),R=(e,t,r)=>d.xdr.ScVal.scvVec([k(e,t),f(r)]),I=e=>d.xdr.ScVal.scvVec(e.map((e=>R(e.hubId,e.asset,e.amount)))),A=e=>{const t=Object.keys(e).sort().map((t=>new d.xdr.ScMapEntry({key:g(t),val:e[t]})));return d.xdr.ScVal.scvMap(t)},E=e=>{const t=e.paths.map((e=>{const t=e.hops.map((e=>{return A({amount_out:f(e.amountOut),pool:m(e.pool),token_in:m(e.tokenIn),token_out:m(e.tokenOut),venue:(t=e.venue,d.xdr.ScVal.scvVec([g(t)]))});var t}));return A({hops:d.xdr.ScVal.scvVec(t),split_ppm:h(e.splitPpm)})}));return A({paths:d.xdr.ScVal.scvVec(t),referral_id:S(e.referralId??0),token_in:m(e.tokenIn),token_out:m(e.tokenOut),total_min_out:f(e.totalMinOut)})},P=e=>{const t=Buffer.from(e);if(0===t.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return d.xdr.ScVal.scvBytes(t)},O=()=>d.xdr.ScVal.scvBytes(Buffer.alloc(0)),B=e=>{const t=e.trim();if(t.startsWith("0x")){const e=t.slice(2);if(!((r=e).length>0&&r.length%2==0&&/^[0-9a-fA-F]+$/.test(r)))throw new Error("Stellar builder: strategy swap bytes hex string must be 0x-prefixed and even-length");return Buffer.from(e,"hex")}var r;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const o=Buffer.from(t,"base64");if(0===o.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return o},L=e=>{if("string"==typeof e)return P(B(e));if(e instanceof Uint8Array)return 0===e.length?O():P(e);if(e&&"object"==typeof e)return"routeXdr"in(r=e)&&"string"==typeof r.routeXdr?P(B(e.routeXdr)):(e=>"swapXdr"in e&&"string"==typeof e.swapXdr)(e)?P(B(e.swapXdr)):(e=>"bytes"in e&&("string"==typeof e.bytes||e.bytes instanceof Uint8Array))(e)?"string"==typeof e.bytes?P(B(e.bytes)):0===e.bytes.length?O():P(e.bytes):(t=(e=>{if(!e||"object"!=typeof e)throw new Error("Stellar builder: decoded strategy `steps` must be a StrategyPayload ({ paths, tokenIn, tokenOut, totalMinOut })");const t=e;if(!Array.isArray(t.paths)||0===t.paths.length)throw new Error("Stellar builder: `steps.paths` must be a non-empty array of strategy paths");if("string"!=typeof t.tokenIn)throw new Error("Stellar builder: `steps.tokenIn` must be a contract address");if("string"!=typeof t.tokenOut)throw new Error("Stellar builder: `steps.tokenOut` must be a contract address");if("string"!=typeof t.totalMinOut)throw new Error("Stellar builder: `steps.totalMinOut` must be an i128 decimal string");let r=0;for(const[e,o]of t.paths.entries()){if(!o||"number"!=typeof o.splitPpm||o.splitPpm<=0||!Array.isArray(o.hops)||0===o.hops.length)throw new Error(`Stellar builder: \`steps.paths[${e}]\` must have splitPpm > 0 and a non-empty hops array`);r+=o.splitPpm;for(const[t,r]of o.hops.entries())if(!r||"string"!=typeof r.amountOut||"string"!=typeof r.pool||"string"!=typeof r.tokenIn||"string"!=typeof r.tokenOut||!p.includes(r.venue))throw new Error(`Stellar builder: \`steps.paths[${e}].hops[${t}]\` must have amountOut, pool, tokenIn, tokenOut, and a valid Soroban venue`)}if(1e6!==r)throw new Error(`Stellar builder: \`steps.paths[].splitPpm\` must sum to 1_000_000, got ${r}`);return t})(e),d.xdr.ScVal.scvBytes(Buffer.from(E(t).toXDR("base64"),"base64")));var t,r;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},N=e=>{if("string"==typeof e)return(e=>{const t=e.startsWith("0x")?e.slice(2):e,r=Buffer.from(t,"hex");return d.xdr.ScVal.scvBytes(r)})(e);if(e instanceof Uint8Array)return d.xdr.ScVal.scvBytes(Buffer.from(e));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function $(e,t,r){const o=e.controllerAddress??l(e.network),a=new d.Contract(o),n=new d.Account(e.caller,e.sourceSequence);return{xdr:new d.TransactionBuilder(n,{fee:e.fee??d.BASE_FEE,networkPassphrase:i[e.network]}).addOperation(a.call(t,...r)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function U(e,t){const r=t.accountNonce??0,o=t.spokeId??0;return $(e,"supply",[m(e.caller),S(r),h(o),I([...t.assets])])}function G(e,t){return U(e,{accountNonce:t.accountNonce,spokeId:t.spokeId,assets:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function C(e,t){return $(e,"borrow",[m(e.caller),S(t.accountNonce),I([...t.borrows]),v(t.to,m)])}function q(e,t){return C(e,{accountNonce:t.accountNonce,borrows:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function D(e,t){return $(e,"withdraw",[m(e.caller),S(t.accountNonce),I([...t.withdrawals]),v(t.to,m)])}function V(e,t){return D(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function W(e,t){return $(e,"repay",[m(e.caller),S(t.accountNonce),I([...t.payments])])}function z(e,t){return W(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function M(e,t){return $(e,"liquidate",[m(e.caller),S(t.accountNonce),I([...t.debtPayments])])}function F(e,t){return $(e,"flash_loan",[m(e.caller),k(t.hubId,t.asset),f(t.amount),m(t.receiver),N(t.data)])}function X(e,t){return $(e,"migrate_from_blend",[m(e.caller),S(t.accountId),h(t.spokeId),h(t.hubId),m(t.blendPool),T(t.collateralTokens.map(m)),T(t.supplyTokens.map(m)),x(t.debtCaps.map((e=>({token:e.token,amount:e.cap}))))])}function H(e,t){const r=t.accountNonce??0,o=t.spokeId??0;return $(e,"multiply",[m(e.caller),S(r),h(o),k(t.collateral.hubId,t.collateral.asset),f(t.debtToFlashLoan),k(t.debt.hubId,t.debt.asset),h(t.mode),L(t.steps),v(t.initialPayment,(e=>R(e.hubId,e.asset,e.amount))),v(t.convertSwap,L)])}function j(e,t){return $(e,"swap_debt",[m(e.caller),S(t.accountNonce),k(t.existingDebt.hubId,t.existingDebt.asset),f(t.newDebtAmount),k(t.newDebt.hubId,t.newDebt.asset),L(t.steps)])}function Q(e,t){return $(e,"swap_collateral",[m(e.caller),S(t.accountNonce),k(t.current.hubId,t.current.asset),f(t.fromAmount),k(t.newCollateral.hubId,t.newCollateral.asset),L(t.steps)])}function K(e,t){return $(e,"repay_debt_with_collateral",[m(e.caller),S(t.accountNonce),k(t.collateral.hubId,t.collateral.asset),f(t.collateralAmount),k(t.debt.hubId,t.debt.asset),L(t.steps),b(t.closePosition)])}const Z="/stellar-lending",Y=25,J=encodeURIComponent,ee=(e,t)=>e.fetchWithTimeout(`${Z}/context`,t),te=(e,t)=>e.fetchWithTimeout(`${Z}/assets`,t),re=(e,t)=>e.fetchWithTimeout(`${Z}/hubs`,t),oe=(e,t)=>e.fetchWithTimeout(`${Z}/spokes`,t),ae=(e,t={},r)=>{const{hubId:o,spokeId:a,asset:n}=t;return e.fetchWithTimeout(`${Z}/reserves`,{...r,params:{...void 0!==o?{hubId:o}:{},...void 0!==a?{spokeId:a}:{},...n?{asset:n}:{}}})},ne=(e,t,r,o,a)=>e.fetchWithTimeout(`${Z}/reserves/${t}/${r}/${J(o)}`,a),se=(e,t,r,o,a,n)=>e.fetchWithTimeout(`${Z}/reserves/${t}/${r}/${J(o)}/holders`,{...n,params:{side:a}}),ie=(e,t,r)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}`,r),le=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/page`,{...o,params:{...r}}),ue=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/markets`,{...o,params:{side:r}}),ce=(e,t,r)=>e.fetchWithTimeout(`${Z}/hubs/${t}`,r),de=(e,t,r)=>e.fetchWithTimeout(`${Z}/spokes/${t}`,r),pe=(e,t,r)=>e.fetchWithTimeout(`${Z}/users/${J(t)}/positions`,r),me=(e,t,r={},o)=>{const{skip:a,top:n}=r;return e.fetchWithTimeout(`${Z}/users/${J(t)}/activity`,{...o,params:{...void 0!==a?{skip:a}:{},...void 0!==n?{top:n}:{}}})},fe=(e,t,r)=>e.fetchWithTimeout(`${Z}/accounts/${J(t)}/positions`,r),he=(e,t={},r)=>{const{top:o=Y,continuationToken:a}=t;return e.fetchWithTimeout(`${Z}/governance/proposals`,{...r,params:{top:o,...a?{continuationToken:a}:{}}})},Se=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/graph`,{...o,params:{...r}}),be=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/hubs/${t}/graph`,{...o,params:{...r}}),_e=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/spokes/${t}/graph`,{...o,params:{...r}}),ge=(e,t,r,o,a,n)=>e.fetchWithTimeout(`${Z}/reserves/${t}/${r}/${J(o)}/graph`,{...n,params:{...a}}),we=e=>({context:t=>ee(e,t),assets:t=>te(e,t),hubs:t=>re(e,t),spokes:t=>oe(e,t),reserves:(t,r)=>{return void 0===(o=t)||"hubId"in o||"spokeId"in o||"asset"in o?ae(e,t,r):ae(e,{},t);var o},reserve:(t,r,o,a)=>ne(e,t,r,o,a),reserveHolders:(t,r,o,a,n)=>se(e,t,r,o,a,n),asset:(t,r)=>ie(e,t,r),assetMarkets:(t,r,o)=>ue(e,t,r,o),hub:(t,r)=>ce(e,t,r),spoke:(t,r)=>de(e,t,r),userPositions:(t,r)=>pe(e,t,r),userActivity:(t,r,o)=>me(e,t,r,o),accountPositions:(t,r)=>fe(e,t,r),governanceProposals:(t,r)=>he(e,t,r),assetGraph:(t,r,o)=>Se(e,t,r,o),hubGraph:(t,r,o)=>be(e,t,r,o),spokeGraph:(t,r,o)=>_e(e,t,r,o),reserveGraph:(t,r,o,a,n)=>ge(e,t,r,o,a,n)}),Te={Single:0,PrimaryWithAnchor:1},ye="RedStonePriceFeed",ve=e=>A({base_borrow_rate:f(e.baseBorrowRateRay),max_borrow_rate:f(e.maxBorrowRateRay),max_utilization:f(e.maxUtilizationRay),mid_utilization:f(e.midUtilizationRay),optimal_utilization:f(e.optimalUtilizationRay),reserve_factor:h(e.reserveFactorBps),slope1:f(e.slope1Ray),slope2:f(e.slope2Ray),slope3:f(e.slope3Ray)}),xe=e=>A({asset_decimals:h(e.assetDecimals),asset_id:m(e.assetId),base_borrow_rate:f(e.baseBorrowRateRay),flashloan_fee:h(e.flashloanFeeBps),is_flashloanable:b(e.isFlashloanable),max_borrow_rate:f(e.maxBorrowRateRay),max_utilization:f(e.maxUtilizationRay),mid_utilization:f(e.midUtilizationRay),optimal_utilization:f(e.optimalUtilizationRay),reserve_factor:h(e.reserveFactorBps),slope1:f(e.slope1Ray),slope2:f(e.slope2Ray),slope3:f(e.slope3Ray)}),ke=e=>A({max_borrow_positions:h(e.maxBorrowPositions),max_supply_positions:h(e.maxSupplyPositions)}),Re=e=>{const t=e.kind;switch(t){case"Stellar":return T([g("Stellar"),m(e.value)]);case"Symbol":return T([g("Symbol"),g(e.value)]);case"String":return T([g("String"),_(e.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${t}"`)}},Ie=(e,t)=>{if("Twap"===e){if("number"!=typeof t)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return T([g("Twap"),h(t)])}return T([g("Spot")])},Ae=e=>{const t=e.provider;if("ReflectorSep40"===t){if(!e.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return T([g("Reflector"),A({asset:Re(e.asset),contract:m(e.contract),read_mode:Ie(e.readMode,e.twapRecords)})])}if(t===ye||"XoxnoPriceFeed"===t){const r=t===ye?"RedStone":"Xoxno";if("string"!=typeof e.feedId)throw new Error(`Stellar builder: ${r} oracle source requires \`feedId\``);if("number"!=typeof e.maxStaleSeconds)throw new Error(`Stellar builder: ${r} oracle source requires \`maxStaleSeconds\``);return T([g(r),A({contract:m(e.contract),feed_id:_(e.feedId),max_stale_seconds:S(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},Ee=e=>{const t=Te[e.strategy];if(void 0===t)throw new Error(`Stellar builder: unknown oracle strategy "${e.strategy}"`);return A({anchor:(r=e.anchor,T(null==r?[g("None")]:[g("Some"),Ae(r)])),max_price_stale_seconds:S(e.maxPriceStaleSeconds),max_sanity_price_wad:f(e.maxSanityPriceWad),min_sanity_price_wad:f(e.minSanityPriceWad),primary:Ae(e.primary),strategy:h(t),tolerance_bps:h(e.toleranceBps)});var r};function Pe(e,t){return $(e,"upgrade",[y(t.wasmHash)])}function Oe(e,t){return $(e,"migrate",[h(t.newVersion)])}function Be(e){return $(e,"pause",[])}function Le(e){return $(e,"unpause",[])}function Ne(e,t){return $(e,"grant_role",[m(t.account),g(t.role)])}function $e(e,t){return $(e,"revoke_role",[m(t.account),g(t.role)])}function Ue(e,t){return $(e,"transfer_ownership",[m(t.newOwner),h(t.liveUntilLedger)])}function Ge(e){return $(e,"accept_ownership",[])}function Ce(e,t){return $(e,"set_aggregator",[m(t.aggregator)])}function qe(e,t){return $(e,"set_accumulator",[m(t.accumulator)])}function De(e,t){return $(e,"set_liquidity_pool_template",[y(t.wasmHash)])}function Ve(e,t){return $(e,"set_position_limits",[ke(t)])}function We(e,t){return $(e,"approve_token",[m(t.token)])}function ze(e,t){return $(e,"revoke_token",[m(t.token)])}function Me(e,t){return $(e,"set_market_oracle_config",[k(t.hubId,t.asset),Ee(t.config)])}function Fe(e,t){return $(e,"set_oracle_tolerance",[m(t.asset),A({lower_ratio_bps:h(t.lowerRatioBps),upper_ratio_bps:h(t.upperRatioBps)})])}function Xe(e,t){return $(e,"set_spoke_asset_flags",[h(t.spokeId),k(t.hubId,t.asset),b(t.paused),b(t.frozen)])}function He(e,t){return $(e,"set_oracle_sanity_bounds",[m(t.asset),f(t.minPriceWad),f(t.maxPriceWad)])}function je(e,t){return $(e,"update_indexes",[m(e.caller),T(t.assets.map((e=>k(e.hubId,e.asset))))])}function Qe(e,t){return $(e,"renew_account",[m(e.caller),S(t.accountNonce)])}function Ke(e,t){return $(e,"create_liquidity_pool",[h(t.hubId),m(t.asset),xe(t.params)])}function Ze(e,t){return $(e,"upgrade_liquidity_pool_params",[k(t.hubId,t.asset),ve(t.params)])}function Ye(e,t){return $(e,"claim_revenue",[m(e.caller),T(t.assets.map((e=>k(e.hubId,e.asset))))])}function Je(e,t){return $(e,"add_rewards",[m(e.caller),I(t.rewards)])}function et(e,t){return $(e,"update_account_threshold",[m(e.caller),b(t.hasRisks),T(t.accountNonces.map((e=>S(e))))])}const tt="00".repeat(32),rt=e=>{if("string"==typeof e)return y(e);const t=Buffer.from(e);if(32!==t.length)throw new Error(`Stellar governance builder: expected a 32-byte salt (got ${t.length} bytes)`);return d.xdr.ScVal.scvBytes(t)},ot=(e,...t)=>T([g(e),...t]),at=e=>A({asset:m(e.asset),hub_id:h(e.hubId),params:xe(e.params)}),nt=e=>A({hub_asset:k(e.hubId,e.asset),params:ve(e.params)}),st=e=>A({new_owner:m(e.newOwner),live_until_ledger:h(e.liveUntilLedger)}),it=e=>A({cfg:Ee(e.config),hub_asset:k(e.hubId,e.asset)}),lt=e=>A({asset:m(e.asset),bonus:h(e.bonus),borrow_cap:f(e.borrowCap),can_borrow:b(e.canBorrow),can_collateral:b(e.canCollateral),frozen:b(e.frozen),hub_id:h(e.hubId),paused:b(e.paused),liquidation_fees:h(e.liquidationFees),ltv:h(e.ltv),oracle_override:T([g("None")]),spoke_id:h(e.spokeId),supply_cap:f(e.supplyCap),threshold:h(e.threshold)}),ut=e=>A({hub_asset:k(e.hubId,e.asset),spoke_id:h(e.spokeId)}),ct=e=>A({hf_for_max_bonus_wad:f(e.hfForMaxBonusWad),liquidation_bonus_factor_bps:h(e.liquidationBonusFactorBps),spoke_id:h(e.spokeId),target_hf_wad:f(e.targetHfWad)}),dt=e=>A({asset:m(e.asset),tolerance:h(e.tolerance)}),pt=e=>A({account:m(e.account),role:g(e.role)});function mt(e,t,r){const o=e.governanceAddress??c(e.network),a=new d.Contract(o),n=new d.Account(e.caller,e.sourceSequence);return{xdr:new d.TransactionBuilder(n,{fee:e.fee??d.BASE_FEE,networkPassphrase:i[e.network]}).addOperation(a.call(t,...r)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}const ft=(e,t,r)=>mt(e,"propose",[m(e.caller),t,rt(r)]),ht=(e,t,r)=>mt(e,"execute_self",[w(),t,rt(r)]);function St(e,t,r){return ft(e,ot("SetAggregator",m(t.aggregator)),r)}function bt(e,t,r){return ft(e,ot("SetAccumulator",m(t.accumulator)),r)}function _t(e,t,r){return ft(e,ot("SetLiquidityPoolTemplate",y(t.wasmHash)),r)}function gt(e,t,r){return ft(e,ot("SetPositionLimits",ke(t)),r)}function wt(e,t){return ft(e,ot("CreateHub"),t)}function Tt(e,t){return ft(e,ot("AddSpoke"),t)}function yt(e,t,r){return ft(e,ot("RemoveSpoke",h(t.spokeId)),r)}function vt(e,t,r){return ft(e,ot("AddAssetToSpoke",lt(t)),r)}function xt(e,t,r){return ft(e,ot("EditAssetInSpoke",lt(t)),r)}function kt(e,t,r){return ft(e,ot("RemoveAssetFromSpoke",ut(t)),r)}function Rt(e,t,r){return ft(e,ot("SetSpokeLiquidationCurve",ct(t)),r)}function It(e,t,r){return ft(e,ot("SetPositionManager",m(t.manager),b(t.isActive)),r)}function At(e,t,r){return ft(e,ot("SetMinBorrowCollateralUsd",f(t.floorWad)),r)}function Et(e,t,r){return ft(e,ot("ApproveToken",m(t.token)),r)}function Pt(e,t,r){return ft(e,ot("RevokeToken",m(t.token)),r)}function Ot(e,t,r){return ft(e,ot("ApproveBlendPool",m(t.pool)),r)}function Bt(e,t,r){return ft(e,ot("RevokeBlendPool",m(t.pool)),r)}function Lt(e,t,r){return ft(e,ot("CreateLiquidityPool",at(t)),r)}function Nt(e,t,r){return ft(e,ot("UpgradeLiquidityPoolParams",nt(t)),r)}function $t(e,t){return ft(e,ot("DeployPool"),t)}function Ut(e,t,r){return ft(e,ot("UpgradePool",y(t.wasmHash)),r)}function Gt(e,t,r){return ft(e,ot("UpgradeController",y(t.wasmHash)),r)}function Ct(e,t,r){return ft(e,ot("MigrateController",h(t.newVersion)),r)}function qt(e,t,r){return ft(e,ot("TransferCtrlOwnership",st(t)),r)}function Dt(e,t,r){return ft(e,ot("ConfigureMarketOracle",it(t)),r)}function Vt(e,t,r){return ft(e,ot("EditOracleTolerance",dt(t)),r)}function Wt(e,t,r){return ft(e,ot("UpgradeGov",y(t.wasmHash)),r)}function zt(e,t,r){return ft(e,ot("UpdateGovDelay",h(t.newDelay)),r)}function Mt(e,t,r){return ft(e,ot("GrantGovRole",pt(t)),r)}function Ft(e,t,r){return ft(e,ot("RevokeGovRole",pt(t)),r)}function Xt(e,t,r){return ft(e,ot("TransferGovOwnership",st(t)),r)}function Ht(e,t){const r=T(t.argsXdr.map((e=>d.xdr.ScVal.fromXDR(e,"base64")))),o=rt(t.predecessor??tt);return mt(e,"execute",[w(),m(t.target),g(t.functionName),r,o,rt(t.salt)])}function jt(e,t,r){return ht(e,ot("UpgradeGov",y(t.wasmHash)),r)}function Qt(e,t,r){return ht(e,ot("UpdateGovDelay",h(t.newDelay)),r)}function Kt(e,t,r){return ht(e,ot("GrantGovRole",pt(t)),r)}function Zt(e,t,r){return ht(e,ot("RevokeGovRole",pt(t)),r)}function Yt(e,t,r){return ht(e,ot("TransferGovOwnership",st(t)),r)}function Jt(e,t){return mt(e,"set_spoke_asset_flags",[m(e.caller),h(t.spokeId),k(t.hubId,t.asset),b(t.paused),b(t.frozen)])}function er(e,t){return mt(e,"set_oracle_sanity_bounds",[m(e.caller),m(t.asset),f(t.minPriceWad),f(t.maxPriceWad)])}function tr(e){return mt(e,"create_hub",[m(e.caller)])}function rr(e){return mt(e,"add_spoke",[m(e.caller)])}function or(e,t){return mt(e,"revoke_role_immediate",[m(t.account),g(t.role)])}const ar=e=>e.toXDR("base64"),nr=e=>d.xdr.ScVal.fromXDR(e,"base64"),sr=e=>e.map((e=>String((0,d.scValToNative)(nr(e))))).join(":"),ir=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),lr=e=>Number(e),ur=e=>String(e),cr=e=>null==e?void 0:ir(e),dr=e=>null==e?void 0:ur(e),pr=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),mr=["None","Multiply","Long","Short"],fr=["Single","PrimaryWithAnchor"],hr=["ReflectorSep40","RedStonePriceFeed"],Sr=["Spot","Twap"],br=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],_r=e=>Array.isArray(e)?e:[],gr=(e,t)=>{const r="Borrow"===t;return{action:(o=e[0],br[lr(o)]??ir(o)),positionType:t,hubId:lr(e[1]),asset:ur(e[2]),scaledAmountRay:ir(e[3]),indexRay:ir(e[4]),amount:ir(e[5]),liquidationThresholdBps:r?void 0:lr(e[6]),liquidationBonusBps:r?void 0:lr(e[7]),loanToValueBps:r?void 0:lr(e[8]),liquidationFeesBps:r?void 0:lr(e[9])};var o},wr=e=>{return{owner:ur(e[0]),spokeId:lr(e[1]),mode:(t=e[2],mr[lr(t)]??"None")};var t},Tr=(e,t)=>{const r=Sr[lr(e[`${t}_read_mode`])]??"Spot",o=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=o?{kind:"Stellar",value:ur(o)}:null!=a?{kind:"Symbol",value:ur(a)}:void 0;return{provider:hr[lr(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:ur(e[`${t}_contract`]),asset:n,feedId:dr(e[`${t}_feed_id`]),readMode:r,twapRecords:"Twap"===r?lr(e[`${t}_twap_records`]):void 0,decimals:lr(e[`${t}_decimals`]),resolutionSeconds:lr(e[`${t}_resolution_seconds`]),maxStaleSeconds:lr(e[`${t}_max_stale_seconds`])}},yr=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:ur(e.base_token_id),quoteTokenId:ur(e.quote_token_id),tolerance:{upperRatio:lr(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:lr(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:lr(e.asset_decimals),maxPriceStaleSeconds:lr(e.max_price_stale_seconds),strategy:fr[lr(e.strategy)]??"Single",primary:Tr(e,"primary"),anchor:t?Tr(e,"anchor"):void 0,primaryQuoteToken:dr(e.primary_quote_token),anchorQuoteToken:dr(e.anchor_quote_token),minSanityPriceWad:cr(e.min_sanity_price_wad),maxSanityPriceWad:cr(e.max_sanity_price_wad)}},vr={"market:create":e=>({topic:"market:create",data:{hubId:lr(e.hub_id),baseAsset:ur(e.base_asset),maxBorrowRate:ir(e.max_borrow_rate),baseBorrowRate:ir(e.base_borrow_rate),slope1:ir(e.slope1),slope2:ir(e.slope2),slope3:ir(e.slope3),midUtilization:ir(e.mid_utilization),optimalUtilization:ir(e.optimal_utilization),maxUtilization:ir(e.max_utilization),reserveFactor:lr(e.reserve_factor),marketAddress:ur(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:ur(e.asset),maxBorrowRateRay:ir(e.max_borrow_rate),baseBorrowRateRay:ir(e.base_borrow_rate),slope1Ray:ir(e.slope1),slope2Ray:ir(e.slope2),slope3Ray:ir(e.slope3),midUtilizationRay:ir(e.mid_utilization),optimalUtilizationRay:ir(e.optimal_utilization),maxUtilizationRay:ir(e.max_utilization),reserveFactorBps:lr(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:_r(e).map((e=>{return t=_r(e),{hubId:lr(t[0]),asset:ur(t[1]),timestamp:lr(t[2]),supplyIndexRay:ir(t[3]),borrowIndexRay:ir(t[4]),cash:ir(t[5]),suppliedRay:ir(t[6]),borrowedRay:ir(t[7]),revenueRay:ir(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:_r(e).map((e=>{const t=e;return{hubId:lr(t.hub_id),asset:ur(t.asset),params:(r=t.params,{maxBorrowRateRay:ir(r.max_borrow_rate),baseBorrowRateRay:ir(r.base_borrow_rate),slope1Ray:ir(r.slope1),slope2Ray:ir(r.slope2),slope3Ray:ir(r.slope3),midUtilizationRay:ir(r.mid_utilization),optimalUtilizationRay:ir(r.optimal_utilization),maxUtilizationRay:ir(r.max_utilization),reserveFactorBps:lr(r.reserve_factor),isFlashloanable:Boolean(r.is_flashloanable),flashloanFeeBps:lr(r.flashloan_fee),assetId:ur(r.asset_id),assetDecimals:lr(r.asset_decimals)})};var r}))}}),"position:batch_update":e=>{const t=_r(e);return{topic:"position:batch_update",data:{accountId:ir(t[0]),accountAttributes:wr(_r(t[1])),updates:[..._r(t[2]).map((e=>gr(_r(e),"Deposit"))),..._r(t[3]).map((e=>gr(_r(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:lr(e.hub_id),asset:ur(e.asset),receiver:ur(e.receiver),caller:ur(e.caller),amount:ir(e.amount),fee:ir(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:ur(e.asset),oracle:yr(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:ur(e.liquidator),accountId:ir(e.account_id),repaidUsdWad:ir(e.repaid_usd_wad),bonusBps:ir(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:ir(e.account_id),totalBorrowUsdWad:ir(e.total_borrow_usd_wad),totalCollateralUsdWad:ir(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:ur(e.token),amount:ir(e.amount),usdValueWad:ir(e.usd_value_wad),accountId:ir(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:lr(e.hub_id),asset:ur(e.asset),amount:ir(e.amount),fee:ir(e.fee),amountSent:ir(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:pr(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:ur(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:ur(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:pr(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:lr(e.max_supply_positions),maxBorrowPositions:lr(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:ur(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:lr(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:ir(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:ir(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:lr(t.liquidation_bonus_factor_bps)}}}},xr=Object.freeze(Object.keys(vr));function kr(e,t){const r=sr(e),o=vr[r];return o?o((0,d.scValToNative)(nr(t))):null}const Rr="XLENDXLM-a7c9f3",Ir=1e4;function Ar(e){const t=BigInt(e).toString(16),r=t.length%2==0?t:`0${t}`;return`${Rr}-${r}`}function Er(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function Pr(e,t=0){return e*Ir+t}function Or(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Br=(e,t,r)=>{const o=new URL(t,e.endsWith("/")?e:`${e}/`);if(r)for(const[e,t]of Object.entries(r))void 0!==t&&o.searchParams.set(e,String(t));return o.toString()},Lr=e=>e.baseUrl??s[e.network];async function Nr(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const r=Br(Lr(t),"api/v1/quote",{from:e.from,to:e.to,amountIn:e.amountIn,amountOut:e.amountOut,maxHops:e.maxHops,maxSplits:e.maxSplits,slippage:e.slippage,includePaths:e.includePaths,sender:e.sender,router:e.router,platform:e.platform,fresh:e.fresh}),o=await fetch(r,t.fetchOptions);if(!o.ok){const e=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${r} — ${e}`)}return await o.json()}async function $r(e){const t=Br(Lr(e),"api/v1/tokens"),r=await fetch(t,e.fetchOptions);if(!r.ok){const e=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${t} — ${e}`)}return await r.json()}const Ur=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,Gr=e=>E(e).toXDR("base64");function Cr(e,t){const r=e.routerAddress??u(e.network),o=new d.Contract(r),a=new d.Account(e.caller,e.sourceSequence),n=L(Ur(t,e.referralId));return{xdr:new d.TransactionBuilder(a,{fee:e.fee??d.BASE_FEE,networkPassphrase:i[e.network]}).addOperation(o.call("execute_strategy",m(e.caller),f(e.totalIn),n)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function qr(e,t){return Cr(e,t)}function Dr(e,t={}){if("string"!=typeof e.amountOutMin)throw new Error("mapQuoteResponseToStrategyPayload: quote response is missing `amountOutMin`. Pass `slippage` when fetching the quote.");return{paths:e.paths?e.paths.map((e=>({hops:e.swaps.map(zr),splitPpm:e.splitPpm}))):[{hops:e.hops.map(zr),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Vr(e,t={}){const r=e;return"string"==typeof r.routeXdr&&r.routeXdr.length>0?{routeXdr:r.routeXdr}:Dr(e,t)}const Wr=Dr,zr=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Mr(e,t){const r=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${r}`)}async function Fr(e,t,r){const o=d.TransactionBuilder.fromXDR(t,"base64");try{return(await e.prepareTransaction(o)).toXDR()}catch(e){if(r?.invokedContractId)throw Mr(r.invokedContractId,e);throw e}}async function Xr(e,t,r){return Fr(e,t.xdr,r)}function Hr(e){if(e<=0||e>4)throw new Error(`Invalid PositionMode ${e} for Stellar — expected 1 (Normal) through 4 (Short). "None" (0) has no Stellar equivalent.`);return e-1}function jr(e,t){return new Uint8Array(0)}const Qr=e=>{const t=e.startsWith("0x")?e.slice(2):e;if(t.length%2!=0)throw new Error("buildStellarCctpForwardTx: hex input must have even length");return Buffer.from(t,"hex")};function Kr(e){const t=new d.Account(e.caller,e.sourceSequence),r=new d.Contract(e.forwarderAddress).call("mint_and_forward",d.xdr.ScVal.scvBytes(Qr(e.message)),d.xdr.ScVal.scvBytes(Qr(e.attestation)));return{xdr:new d.TransactionBuilder(t,{fee:e.fee??"10000000",networkPassphrase:i[e.network]}).addOperation(r).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const Zr={1:{name:"AssetNotSupported",message:"This asset is not supported by the protocol."},2:{name:"AssetAlreadySupported",message:"This asset is already supported."},3:{name:"InvalidTicker",message:"Invalid asset ticker."},6:{name:"InvalidAsset",message:"Invalid asset address."},10:{name:"InvalidPoolTemplate",message:"The liquidity pool template hash is invalid."},11:{name:"InvalidExchangeSrc",message:"The oracle configuration is invalid."},12:{name:"PairNotActive",message:"No oracle is configured for this asset."},32:{name:"OwnerNotSet",message:"The contract owner has not been set."},39:{name:"InvalidTimelockDelay",message:"The timelock delay is out of the allowed range."},41:{name:"InvalidRole",message:"The caller does not hold the required role."},43:{name:"HubNotActive",message:"This hub is not active."},44:{name:"NotAuthorized",message:"The caller is not authorized to perform this action."},46:{name:"OperationNotCancellable",message:"This governance operation cannot be cancelled."},113:{name:"InvalidLiqThreshold",message:"LTV, liquidation threshold, or bonus is out of bounds."},116:{name:"InvalidBorrowParams",message:"Supply or borrow cap configuration is invalid."},117:{name:"InvalidUtilRange",message:"Interest-rate utilization breakpoints are invalid."},132:{name:"AssetDecimalsTooHigh",message:"Asset decimals exceed the protocol maximum (27)."},300:{name:"SpokeNotFound",message:"This spoke does not exist."},301:{name:"SpokeDeprecated",message:"This spoke has been deprecated."},307:{name:"AssetNotInSpoke",message:"This asset is not listed on the spoke."},308:{name:"AssetAlreadyInSpoke",message:"This asset is already listed in the spoke."},309:{name:"SpokeAssetInUse",message:"This spoke asset still has live positions; drain usage before removal."},315:{name:"SpokeAssetPaused",message:"This spoke asset is paused."},316:{name:"SpokeAssetFrozen",message:"This spoke asset is frozen."},220:{name:"InvalidOracleBase",message:"The oracle quote asset/market is missing or invalid."},221:{name:"InvalidOracleDecimals",message:"The oracle decimals value is invalid."},224:{name:"InvalidSanityBounds",message:"Oracle sanity bounds are invalid (require 0 < min < max)."},225:{name:"OracleCycleDetected",message:"A cycle was detected in the oracle quote chain."}};function Yr(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const r=Number(t[1]),o=Zr[r];return o?{code:r,...o}:null}module.exports=t})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis);import{Account as e,Address as t,BASE_FEE as o,Contract as r,ScInt as a,TransactionBuilder as n,scValToNative as s,xdr as i}from"@stellar/stellar-sdk";const u={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},l={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},c={mainnet:process.env.STELLAR_GOVERNANCE_MAINNET??"",testnet:process.env.STELLAR_GOVERNANCE_TESTNET??""},p={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},d={mainnet:process.env.STELLAR_QUOTE_URL_MAINNET??"https://stellar-swap.xoxno.com",testnet:process.env.STELLAR_QUOTE_URL_TESTNET??"https://testnet-stellar-swap.xoxno.com"},m={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function f(e){const t=u[e];if(!t)throw new Error(`Stellar lending controller address not configured for network "${e}". Set STELLAR_LENDING_CONTROLLER_${e.toUpperCase()} env var.`);return t}function h(e){const t=l[e];if(!t)throw new Error(`Stellar aggregator router address not configured for network "${e}". Set STELLAR_AGGREGATOR_ROUTER_${e.toUpperCase()} env var.`);return t}function _(e){const t=c[e];if(!t)throw new Error(`Stellar governance address not configured for network "${e}". Set STELLAR_GOVERNANCE_${e.toUpperCase()} env var.`);return t}const b=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],w=e=>new t(e).toScVal(),g=e=>new a(e).toI128(),y=e=>i.ScVal.scvU32(e),v=e=>new a("string"==typeof e?e:e.toString()).toU64(),S=e=>i.ScVal.scvBool(e),k=e=>i.ScVal.scvString(e),R=e=>i.ScVal.scvSymbol(e),T=()=>i.ScVal.scvVoid(),I=e=>i.ScVal.scvVec(e),x=(e,t=32)=>{const o=e.startsWith("0x")?e.slice(2):e,r=Buffer.from(o,"hex");if(r.length!==t)throw new Error(`Stellar builder: expected a ${t}-byte BytesN (got ${r.length} bytes from "${e}")`);return i.ScVal.scvBytes(r)},A=(e,t)=>null==e?T():t(e),E=(e,t)=>N({asset:w(t),hub_id:y(e)}),$=(e,t,o)=>i.ScVal.scvVec([E(e,t),g(o)]),B=e=>i.ScVal.scvVec(e.map((e=>$(e.hubId,e.asset,e.amount)))),N=e=>{const t=Object.keys(e).sort().map((t=>new i.ScMapEntry({key:R(t),val:e[t]})));return i.ScVal.scvMap(t)},O=e=>{const t=e.paths.map((e=>{const t=e.hops.map((e=>{return N({amount_out:g(e.amountOut),pool:w(e.pool),token_in:w(e.tokenIn),token_out:w(e.tokenOut),venue:(t=e.venue,i.ScVal.scvVec([R(t)]))});var t}));return N({hops:i.ScVal.scvVec(t),split_ppm:y(e.splitPpm)})}));return N({paths:i.ScVal.scvVec(t),referral_id:v(e.referralId??0),token_in:w(e.tokenIn),token_out:w(e.tokenOut),total_min_out:g(e.totalMinOut)})},P=e=>{const t=Buffer.from(e);if(0===t.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return i.ScVal.scvBytes(t)},U=()=>i.ScVal.scvBytes(Buffer.alloc(0)),q=e=>{const t=e.trim();if(t.startsWith("0x")){const e=t.slice(2);if(!((o=e).length>0&&o.length%2==0&&/^[0-9a-fA-F]+$/.test(o)))throw new Error("Stellar builder: strategy swap bytes hex string must be 0x-prefixed and even-length");return Buffer.from(e,"hex")}var o;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const r=Buffer.from(t,"base64");if(0===r.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return r},L=e=>{if("string"==typeof e)return P(q(e));if(e instanceof Uint8Array)return 0===e.length?U():P(e);if(e&&"object"==typeof e)return"routeXdr"in(o=e)&&"string"==typeof o.routeXdr?P(q(e.routeXdr)):(e=>"swapXdr"in e&&"string"==typeof e.swapXdr)(e)?P(q(e.swapXdr)):(e=>"bytes"in e&&("string"==typeof e.bytes||e.bytes instanceof Uint8Array))(e)?"string"==typeof e.bytes?P(q(e.bytes)):0===e.bytes.length?U():P(e.bytes):(t=(e=>{if(!e||"object"!=typeof e)throw new Error("Stellar builder: decoded strategy `steps` must be a StrategyPayload ({ paths, tokenIn, tokenOut, totalMinOut })");const t=e;if(!Array.isArray(t.paths)||0===t.paths.length)throw new Error("Stellar builder: `steps.paths` must be a non-empty array of strategy paths");if("string"!=typeof t.tokenIn)throw new Error("Stellar builder: `steps.tokenIn` must be a contract address");if("string"!=typeof t.tokenOut)throw new Error("Stellar builder: `steps.tokenOut` must be a contract address");if("string"!=typeof t.totalMinOut)throw new Error("Stellar builder: `steps.totalMinOut` must be an i128 decimal string");let o=0;for(const[e,r]of t.paths.entries()){if(!r||"number"!=typeof r.splitPpm||r.splitPpm<=0||!Array.isArray(r.hops)||0===r.hops.length)throw new Error(`Stellar builder: \`steps.paths[${e}]\` must have splitPpm > 0 and a non-empty hops array`);o+=r.splitPpm;for(const[t,o]of r.hops.entries())if(!o||"string"!=typeof o.amountOut||"string"!=typeof o.pool||"string"!=typeof o.tokenIn||"string"!=typeof o.tokenOut||!b.includes(o.venue))throw new Error(`Stellar builder: \`steps.paths[${e}].hops[${t}]\` must have amountOut, pool, tokenIn, tokenOut, and a valid Soroban venue`)}if(1e6!==o)throw new Error(`Stellar builder: \`steps.paths[].splitPpm\` must sum to 1_000_000, got ${o}`);return t})(e),i.ScVal.scvBytes(Buffer.from(O(t).toXDR("base64"),"base64")));var t,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},V=e=>{if("string"==typeof e)return(e=>{const t=e.startsWith("0x")?e.slice(2):e,o=Buffer.from(t,"hex");return i.ScVal.scvBytes(o)})(e);if(e instanceof Uint8Array)return i.ScVal.scvBytes(Buffer.from(e));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function z(t,a,s){const i=t.controllerAddress??f(t.network),u=new r(i),l=new e(t.caller,t.sourceSequence);return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(u.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function W(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return z(e,"supply",[w(e.caller),v(o),y(r),B([...t.assets])])}function D(e,t){return W(e,{accountNonce:t.accountNonce,spokeId:t.spokeId,assets:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function C(e,t){return z(e,"borrow",[w(e.caller),v(t.accountNonce),B([...t.borrows]),A(t.to,w)])}function G(e,t){return C(e,{accountNonce:t.accountNonce,borrows:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function X(e,t){return z(e,"withdraw",[w(e.caller),v(t.accountNonce),B([...t.withdrawals]),A(t.to,w)])}function F(e,t){return X(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function M(e,t){return z(e,"repay",[w(e.caller),v(t.accountNonce),B([...t.payments])])}function H(e,t){return M(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function j(e,t){return z(e,"liquidate",[w(e.caller),v(t.accountNonce),B([...t.debtPayments])])}function Q(e,t){return z(e,"flash_loan",[w(e.caller),E(t.hubId,t.asset),g(t.amount),w(t.receiver),V(t.data)])}function Z(e,t){return z(e,"migrate_from_blend",[w(e.caller),v(t.accountId),y(t.spokeId),y(t.hubId),w(t.blendPool),I(t.collateralTokens.map(w)),I(t.supplyTokens.map(w)),(o=t.debtCaps.map((e=>({token:e.token,amount:e.cap}))),i.ScVal.scvVec(o.map((e=>{return t=e.token,o=e.amount,i.ScVal.scvVec([w(t),g(o)]);var t,o}))))]);var o}function J(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return z(e,"multiply",[w(e.caller),v(o),y(r),E(t.collateral.hubId,t.collateral.asset),g(t.debtToFlashLoan),E(t.debt.hubId,t.debt.asset),y(t.mode),L(t.steps),A(t.initialPayment,(e=>$(e.hubId,e.asset,e.amount))),A(t.convertSwap,L)])}function K(e,t){return z(e,"swap_debt",[w(e.caller),v(t.accountNonce),E(t.existingDebt.hubId,t.existingDebt.asset),g(t.newDebtAmount),E(t.newDebt.hubId,t.newDebt.asset),L(t.steps)])}function Y(e,t){return z(e,"swap_collateral",[w(e.caller),v(t.accountNonce),E(t.current.hubId,t.current.asset),g(t.fromAmount),E(t.newCollateral.hubId,t.newCollateral.asset),L(t.steps)])}function ee(e,t){return z(e,"repay_debt_with_collateral",[w(e.caller),v(t.accountNonce),E(t.collateral.hubId,t.collateral.asset),g(t.collateralAmount),E(t.debt.hubId,t.debt.asset),L(t.steps),S(t.closePosition)])}const te="/stellar-lending",oe=25,re=encodeURIComponent,ae=(e,t)=>e.fetchWithTimeout(`${te}/context`,t),ne=(e,t)=>e.fetchWithTimeout(`${te}/assets`,t),se=(e,t)=>e.fetchWithTimeout(`${te}/hubs`,t),ie=(e,t)=>e.fetchWithTimeout(`${te}/spokes`,t),ue=(e,t={},o)=>{const{hubId:r,spokeId:a,asset:n}=t;return e.fetchWithTimeout(`${te}/reserves`,{...o,params:{...void 0!==r?{hubId:r}:{},...void 0!==a?{spokeId:a}:{},...n?{asset:n}:{}}})},le=(e,t,o,r,a)=>e.fetchWithTimeout(`${te}/reserves/${t}/${o}/${re(r)}`,a),ce=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${te}/reserves/${t}/${o}/${re(r)}/holders`,{...n,params:{side:a}}),pe=(e,t,o)=>e.fetchWithTimeout(`${te}/assets/${re(t)}`,o),de=(e,t,o,r)=>e.fetchWithTimeout(`${te}/assets/${re(t)}/page`,{...r,params:{...o}}),me=(e,t,o,r)=>e.fetchWithTimeout(`${te}/assets/${re(t)}/markets`,{...r,params:{side:o}}),fe=(e,t,o)=>e.fetchWithTimeout(`${te}/hubs/${t}`,o),he=(e,t,o)=>e.fetchWithTimeout(`${te}/spokes/${t}`,o),_e=(e,t,o)=>e.fetchWithTimeout(`${te}/users/${re(t)}/positions`,o),be=(e,t,o={},r)=>{const{skip:a,top:n}=o;return e.fetchWithTimeout(`${te}/users/${re(t)}/activity`,{...r,params:{...void 0!==a?{skip:a}:{},...void 0!==n?{top:n}:{}}})},we=(e,t,o)=>e.fetchWithTimeout(`${te}/accounts/${re(t)}/positions`,o),ge=(e,t={},o)=>{const{top:r=oe,continuationToken:a}=t;return e.fetchWithTimeout(`${te}/governance/proposals`,{...o,params:{top:r,...a?{continuationToken:a}:{}}})},ye=(e,t,o,r)=>e.fetchWithTimeout(`${te}/assets/${re(t)}/graph`,{...r,params:{...o}}),ve=(e,t,o,r)=>e.fetchWithTimeout(`${te}/hubs/${t}/graph`,{...r,params:{...o}}),Se=(e,t,o,r)=>e.fetchWithTimeout(`${te}/spokes/${t}/graph`,{...r,params:{...o}}),ke=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${te}/reserves/${t}/${o}/${re(r)}/graph`,{...n,params:{...a}}),Re=e=>({context:t=>ae(e,t),assets:t=>ne(e,t),hubs:t=>se(e,t),spokes:t=>ie(e,t),reserves:(t,o)=>{return void 0===(r=t)||"hubId"in r||"spokeId"in r||"asset"in r?ue(e,t,o):ue(e,{},t);var r},reserve:(t,o,r,a)=>le(e,t,o,r,a),reserveHolders:(t,o,r,a,n)=>ce(e,t,o,r,a,n),asset:(t,o)=>pe(e,t,o),assetMarkets:(t,o,r)=>me(e,t,o,r),hub:(t,o)=>fe(e,t,o),spoke:(t,o)=>he(e,t,o),userPositions:(t,o)=>_e(e,t,o),userActivity:(t,o,r)=>be(e,t,o,r),accountPositions:(t,o)=>we(e,t,o),governanceProposals:(t,o)=>ge(e,t,o),assetGraph:(t,o,r)=>ye(e,t,o,r),hubGraph:(t,o,r)=>ve(e,t,o,r),spokeGraph:(t,o,r)=>Se(e,t,o,r),reserveGraph:(t,o,r,a,n)=>ke(e,t,o,r,a,n)}),Te={Single:0,PrimaryWithAnchor:1},Ie="RedStonePriceFeed",xe=e=>N({base_borrow_rate:g(e.baseBorrowRateRay),max_borrow_rate:g(e.maxBorrowRateRay),max_utilization:g(e.maxUtilizationRay),mid_utilization:g(e.midUtilizationRay),optimal_utilization:g(e.optimalUtilizationRay),reserve_factor:y(e.reserveFactorBps),slope1:g(e.slope1Ray),slope2:g(e.slope2Ray),slope3:g(e.slope3Ray)}),Ae=e=>N({asset_decimals:y(e.assetDecimals),asset_id:w(e.assetId),base_borrow_rate:g(e.baseBorrowRateRay),flashloan_fee:y(e.flashloanFeeBps),is_flashloanable:S(e.isFlashloanable),max_borrow_rate:g(e.maxBorrowRateRay),max_utilization:g(e.maxUtilizationRay),mid_utilization:g(e.midUtilizationRay),optimal_utilization:g(e.optimalUtilizationRay),reserve_factor:y(e.reserveFactorBps),slope1:g(e.slope1Ray),slope2:g(e.slope2Ray),slope3:g(e.slope3Ray)}),Ee=e=>N({max_borrow_positions:y(e.maxBorrowPositions),max_supply_positions:y(e.maxSupplyPositions)}),$e=e=>{const t=e.kind;switch(t){case"Stellar":return I([R("Stellar"),w(e.value)]);case"Symbol":return I([R("Symbol"),R(e.value)]);case"String":return I([R("String"),k(e.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${t}"`)}},Be=(e,t)=>{if("Twap"===e){if("number"!=typeof t)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return I([R("Twap"),y(t)])}return I([R("Spot")])},Ne=e=>{const t=e.provider;if("ReflectorSep40"===t){if(!e.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return I([R("Reflector"),N({asset:$e(e.asset),contract:w(e.contract),read_mode:Be(e.readMode,e.twapRecords)})])}if(t===Ie||"XoxnoPriceFeed"===t){const o=t===Ie?"RedStone":"Xoxno";if("string"!=typeof e.feedId)throw new Error(`Stellar builder: ${o} oracle source requires \`feedId\``);if("number"!=typeof e.maxStaleSeconds)throw new Error(`Stellar builder: ${o} oracle source requires \`maxStaleSeconds\``);return I([R(o),N({contract:w(e.contract),feed_id:k(e.feedId),max_stale_seconds:v(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},Oe=e=>{const t=Te[e.strategy];if(void 0===t)throw new Error(`Stellar builder: unknown oracle strategy "${e.strategy}"`);return N({anchor:(o=e.anchor,I(null==o?[R("None")]:[R("Some"),Ne(o)])),max_price_stale_seconds:v(e.maxPriceStaleSeconds),max_sanity_price_wad:g(e.maxSanityPriceWad),min_sanity_price_wad:g(e.minSanityPriceWad),primary:Ne(e.primary),strategy:y(t),tolerance_bps:y(e.toleranceBps)});var o};function Pe(e,t){return z(e,"upgrade",[x(t.wasmHash)])}function Ue(e,t){return z(e,"migrate",[y(t.newVersion)])}function qe(e){return z(e,"pause",[])}function Le(e){return z(e,"unpause",[])}function Ve(e,t){return z(e,"grant_role",[w(t.account),R(t.role)])}function ze(e,t){return z(e,"revoke_role",[w(t.account),R(t.role)])}function We(e,t){return z(e,"transfer_ownership",[w(t.newOwner),y(t.liveUntilLedger)])}function De(e){return z(e,"accept_ownership",[])}function Ce(e,t){return z(e,"set_aggregator",[w(t.aggregator)])}function Ge(e,t){return z(e,"set_accumulator",[w(t.accumulator)])}function Xe(e,t){return z(e,"set_liquidity_pool_template",[x(t.wasmHash)])}function Fe(e,t){return z(e,"set_position_limits",[Ee(t)])}function Me(e,t){return z(e,"approve_token",[w(t.token)])}function He(e,t){return z(e,"revoke_token",[w(t.token)])}function je(e,t){return z(e,"set_market_oracle_config",[E(t.hubId,t.asset),Oe(t.config)])}function Qe(e,t){return z(e,"set_oracle_tolerance",[w(t.asset),N({lower_ratio_bps:y(t.lowerRatioBps),upper_ratio_bps:y(t.upperRatioBps)})])}function Ze(e,t){return z(e,"update_indexes",[w(e.caller),I(t.assets.map((e=>E(e.hubId,e.asset))))])}function Je(e,t){return z(e,"renew_account",[w(e.caller),v(t.accountNonce)])}function Ke(e,t){return z(e,"create_liquidity_pool",[y(t.hubId),w(t.asset),Ae(t.params)])}function Ye(e,t){return z(e,"upgrade_liquidity_pool_params",[E(t.hubId,t.asset),xe(t.params)])}function et(e,t){return z(e,"claim_revenue",[w(e.caller),I(t.assets.map((e=>E(e.hubId,e.asset))))])}function tt(e,t){return z(e,"add_rewards",[w(e.caller),B(t.rewards)])}function ot(e,t){return z(e,"update_account_threshold",[w(e.caller),S(t.hasRisks),I(t.accountNonces.map((e=>v(e))))])}const rt="00".repeat(32),at=e=>{if("string"==typeof e)return x(e);const t=Buffer.from(e);if(32!==t.length)throw new Error(`Stellar governance builder: expected a 32-byte salt (got ${t.length} bytes)`);return i.ScVal.scvBytes(t)},nt=(e,...t)=>I([R(e),...t]),st=e=>N({new_owner:w(e.newOwner),live_until_ledger:y(e.liveUntilLedger)}),it=e=>N({asset:w(e.asset),bonus:y(e.bonus),borrow_cap:g(e.borrowCap),can_borrow:S(e.canBorrow),can_collateral:S(e.canCollateral),frozen:S(e.frozen),hub_id:y(e.hubId),paused:S(e.paused),liquidation_fees:y(e.liquidationFees),ltv:y(e.ltv),oracle_override:I([R("None")]),spoke_id:y(e.spokeId),supply_cap:g(e.supplyCap),threshold:y(e.threshold)}),ut=e=>N({account:w(e.account),role:R(e.role)});function lt(t,a,s){const i=t.governanceAddress??_(t.network),u=new r(i),l=new e(t.caller,t.sourceSequence);return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(u.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const ct=(e,t,o)=>lt(e,"propose",[w(e.caller),t,at(o)]),pt=(e,t,o)=>lt(e,"execute_self",[T(),t,at(o)]);function dt(e,t,o){return ct(e,nt("SetAggregator",w(t.aggregator)),o)}function mt(e,t,o){return ct(e,nt("SetAccumulator",w(t.accumulator)),o)}function ft(e,t,o){return ct(e,nt("SetLiquidityPoolTemplate",x(t.wasmHash)),o)}function ht(e,t,o){return ct(e,nt("SetPositionLimits",Ee(t)),o)}function _t(e,t){return ct(e,nt("CreateHub"),t)}function bt(e,t){return ct(e,nt("AddSpoke"),t)}function wt(e,t,o){return ct(e,nt("RemoveSpoke",y(t.spokeId)),o)}function gt(e,t,o){return ct(e,nt("AddAssetToSpoke",it(t)),o)}function yt(e,t,o){return ct(e,nt("EditAssetInSpoke",it(t)),o)}function vt(e,t,o){return ct(e,nt("RemoveAssetFromSpoke",N({hub_asset:E((r=t).hubId,r.asset),spoke_id:y(r.spokeId)})),o);var r}function St(e,t,o){return ct(e,nt("SetSpokeLiquidationCurve",N({hf_for_max_bonus_wad:g((r=t).hfForMaxBonusWad),liquidation_bonus_factor_bps:y(r.liquidationBonusFactorBps),spoke_id:y(r.spokeId),target_hf_wad:g(r.targetHfWad)})),o);var r}function kt(e,t,o){return ct(e,nt("SetPositionManager",w(t.manager),S(t.isActive)),o)}function Rt(e,t,o){return ct(e,nt("SetMinBorrowCollateralUsd",g(t.floorWad)),o)}function Tt(e,t,o){return ct(e,nt("ApproveToken",w(t.token)),o)}function It(e,t,o){return ct(e,nt("RevokeToken",w(t.token)),o)}function xt(e,t,o){return ct(e,nt("ApproveBlendPool",w(t.pool)),o)}function At(e,t,o){return ct(e,nt("RevokeBlendPool",w(t.pool)),o)}function Et(e,t,o){return ct(e,nt("CreateLiquidityPool",N({asset:w((r=t).asset),hub_id:y(r.hubId),params:Ae(r.params)})),o);var r}function $t(e,t,o){return ct(e,nt("UpgradeLiquidityPoolParams",N({hub_asset:E((r=t).hubId,r.asset),params:xe(r.params)})),o);var r}function Bt(e,t){return ct(e,nt("DeployPool"),t)}function Nt(e,t,o){return ct(e,nt("UpgradePool",x(t.wasmHash)),o)}function Ot(e,t,o){return ct(e,nt("UpgradeController",x(t.wasmHash)),o)}function Pt(e,t,o){return ct(e,nt("MigrateController",y(t.newVersion)),o)}function Ut(e,t,o){return ct(e,nt("TransferCtrlOwnership",st(t)),o)}function qt(e,t,o){return ct(e,nt("ConfigureMarketOracle",N({cfg:Oe((r=t).config),hub_asset:E(r.hubId,r.asset)})),o);var r}function Lt(e,t,o){return ct(e,nt("EditOracleTolerance",N({asset:w((r=t).asset),tolerance:y(r.tolerance)})),o);var r}function Vt(e,t,o){return ct(e,nt("UpgradeGov",x(t.wasmHash)),o)}function zt(e,t,o){return ct(e,nt("UpdateGovDelay",y(t.newDelay)),o)}function Wt(e,t,o){return ct(e,nt("GrantGovRole",ut(t)),o)}function Dt(e,t,o){return ct(e,nt("RevokeGovRole",ut(t)),o)}function Ct(e,t,o){return ct(e,nt("TransferGovOwnership",st(t)),o)}function Gt(e,t){const o=I(t.argsXdr.map((e=>i.ScVal.fromXDR(e,"base64")))),r=at(t.predecessor??rt);return lt(e,"execute",[T(),w(t.target),R(t.functionName),o,r,at(t.salt)])}function Xt(e,t,o){return pt(e,nt("UpgradeGov",x(t.wasmHash)),o)}function Ft(e,t,o){return pt(e,nt("UpdateGovDelay",y(t.newDelay)),o)}function Mt(e,t,o){return pt(e,nt("GrantGovRole",ut(t)),o)}function Ht(e,t,o){return pt(e,nt("RevokeGovRole",ut(t)),o)}function jt(e,t,o){return pt(e,nt("TransferGovOwnership",st(t)),o)}const Qt=e=>e.toXDR("base64"),Zt=e=>i.ScVal.fromXDR(e,"base64"),Jt=e=>e.map((e=>String(s(Zt(e))))).join(":"),Kt=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),Yt=e=>Number(e),eo=e=>String(e),to=e=>null==e?void 0:Kt(e),oo=e=>null==e?void 0:eo(e),ro=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),ao=["None","Multiply","Long","Short"],no=["Single","PrimaryWithAnchor"],so=["ReflectorSep40","RedStonePriceFeed"],io=["Spot","Twap"],uo=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],lo=e=>Array.isArray(e)?e:[],co=(e,t)=>{const o="Borrow"===t;return{action:(r=e[0],uo[Yt(r)]??Kt(r)),positionType:t,hubId:Yt(e[1]),asset:eo(e[2]),scaledAmountRay:Kt(e[3]),indexRay:Kt(e[4]),amount:Kt(e[5]),liquidationThresholdBps:o?void 0:Yt(e[6]),liquidationBonusBps:o?void 0:Yt(e[7]),loanToValueBps:o?void 0:Yt(e[8]),liquidationFeesBps:o?void 0:Yt(e[9])};var r},po=e=>{return{owner:eo(e[0]),spokeId:Yt(e[1]),mode:(t=e[2],ao[Yt(t)]??"None")};var t},mo=(e,t)=>{const o=io[Yt(e[`${t}_read_mode`])]??"Spot",r=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=r?{kind:"Stellar",value:eo(r)}:null!=a?{kind:"Symbol",value:eo(a)}:void 0;return{provider:so[Yt(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:eo(e[`${t}_contract`]),asset:n,feedId:oo(e[`${t}_feed_id`]),readMode:o,twapRecords:"Twap"===o?Yt(e[`${t}_twap_records`]):void 0,decimals:Yt(e[`${t}_decimals`]),resolutionSeconds:Yt(e[`${t}_resolution_seconds`]),maxStaleSeconds:Yt(e[`${t}_max_stale_seconds`])}},fo=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:eo(e.base_token_id),quoteTokenId:eo(e.quote_token_id),tolerance:{upperRatio:Yt(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:Yt(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:Yt(e.asset_decimals),maxPriceStaleSeconds:Yt(e.max_price_stale_seconds),strategy:no[Yt(e.strategy)]??"Single",primary:mo(e,"primary"),anchor:t?mo(e,"anchor"):void 0,primaryQuoteToken:oo(e.primary_quote_token),anchorQuoteToken:oo(e.anchor_quote_token),minSanityPriceWad:to(e.min_sanity_price_wad),maxSanityPriceWad:to(e.max_sanity_price_wad)}},ho={"market:create":e=>({topic:"market:create",data:{hubId:Yt(e.hub_id),baseAsset:eo(e.base_asset),maxBorrowRate:Kt(e.max_borrow_rate),baseBorrowRate:Kt(e.base_borrow_rate),slope1:Kt(e.slope1),slope2:Kt(e.slope2),slope3:Kt(e.slope3),midUtilization:Kt(e.mid_utilization),optimalUtilization:Kt(e.optimal_utilization),maxUtilization:Kt(e.max_utilization),reserveFactor:Yt(e.reserve_factor),marketAddress:eo(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:eo(e.asset),maxBorrowRateRay:Kt(e.max_borrow_rate),baseBorrowRateRay:Kt(e.base_borrow_rate),slope1Ray:Kt(e.slope1),slope2Ray:Kt(e.slope2),slope3Ray:Kt(e.slope3),midUtilizationRay:Kt(e.mid_utilization),optimalUtilizationRay:Kt(e.optimal_utilization),maxUtilizationRay:Kt(e.max_utilization),reserveFactorBps:Yt(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:lo(e).map((e=>{return t=lo(e),{hubId:Yt(t[0]),asset:eo(t[1]),timestamp:Yt(t[2]),supplyIndexRay:Kt(t[3]),borrowIndexRay:Kt(t[4]),cash:Kt(t[5]),suppliedRay:Kt(t[6]),borrowedRay:Kt(t[7]),revenueRay:Kt(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:lo(e).map((e=>{const t=e;return{hubId:Yt(t.hub_id),asset:eo(t.asset),params:(o=t.params,{maxBorrowRateRay:Kt(o.max_borrow_rate),baseBorrowRateRay:Kt(o.base_borrow_rate),slope1Ray:Kt(o.slope1),slope2Ray:Kt(o.slope2),slope3Ray:Kt(o.slope3),midUtilizationRay:Kt(o.mid_utilization),optimalUtilizationRay:Kt(o.optimal_utilization),maxUtilizationRay:Kt(o.max_utilization),reserveFactorBps:Yt(o.reserve_factor),isFlashloanable:Boolean(o.is_flashloanable),flashloanFeeBps:Yt(o.flashloan_fee),assetId:eo(o.asset_id),assetDecimals:Yt(o.asset_decimals)})};var o}))}}),"position:batch_update":e=>{const t=lo(e);return{topic:"position:batch_update",data:{accountId:Kt(t[0]),accountAttributes:po(lo(t[1])),updates:[...lo(t[2]).map((e=>co(lo(e),"Deposit"))),...lo(t[3]).map((e=>co(lo(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:Yt(e.hub_id),asset:eo(e.asset),receiver:eo(e.receiver),caller:eo(e.caller),amount:Kt(e.amount),fee:Kt(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:eo(e.asset),oracle:fo(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:eo(e.liquidator),accountId:Kt(e.account_id),repaidUsdWad:Kt(e.repaid_usd_wad),bonusBps:Kt(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:Kt(e.account_id),totalBorrowUsdWad:Kt(e.total_borrow_usd_wad),totalCollateralUsdWad:Kt(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:eo(e.token),amount:Kt(e.amount),usdValueWad:Kt(e.usd_value_wad),accountId:Kt(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:Yt(e.hub_id),asset:eo(e.asset),amount:Kt(e.amount),fee:Kt(e.fee),amountSent:Kt(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:ro(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:eo(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:eo(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:ro(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:Yt(e.max_supply_positions),maxBorrowPositions:Yt(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:eo(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:Yt(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:Kt(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:Kt(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:Yt(t.liquidation_bonus_factor_bps)}}}},_o=Object.freeze(Object.keys(ho));function bo(e,t){const o=Jt(e),r=ho[o];return r?r(s(Zt(t))):null}const wo="XLENDXLM-a7c9f3",go=1e4;function yo(e){const t=BigInt(e).toString(16),o=t.length%2==0?t:`0${t}`;return`${wo}-${o}`}function vo(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function So(e,t=0){return 1e4*e+t}function ko(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Ro=(e,t,o)=>{const r=new URL(t,e.endsWith("/")?e:`${e}/`);if(o)for(const[e,t]of Object.entries(o))void 0!==t&&r.searchParams.set(e,String(t));return r.toString()},To=e=>e.baseUrl??d[e.network];async function Io(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=Ro(To(t),"api/v1/quote",{from:e.from,to:e.to,amountIn:e.amountIn,amountOut:e.amountOut,maxHops:e.maxHops,maxSplits:e.maxSplits,slippage:e.slippage,includePaths:e.includePaths,sender:e.sender,router:e.router,platform:e.platform,fresh:e.fresh}),r=await fetch(o,t.fetchOptions);if(!r.ok){const e=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${o} — ${e}`)}return await r.json()}async function xo(e){const t=Ro(To(e),"api/v1/tokens"),o=await fetch(t,e.fetchOptions);if(!o.ok){const e=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${t} — ${e}`)}return await o.json()}const Ao=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,Eo=e=>O(e).toXDR("base64");function $o(t,a){const s=t.routerAddress??h(t.network),i=new r(s),u=new e(t.caller,t.sourceSequence),l=L(Ao(a,t.referralId));return{xdr:new n(u,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(i.call("execute_strategy",w(t.caller),g(t.totalIn),l)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function Bo(e,t){return $o(e,t)}function No(e,t={}){if("string"!=typeof e.amountOutMin)throw new Error("mapQuoteResponseToStrategyPayload: quote response is missing `amountOutMin`. Pass `slippage` when fetching the quote.");return{paths:e.paths?e.paths.map((e=>({hops:e.swaps.map(Uo),splitPpm:e.splitPpm}))):[{hops:e.hops.map(Uo),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Oo(e,t={}){const o=e;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:No(e,t)}const Po=No,Uo=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function qo(e,t){const o=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${o}`)}async function Lo(e,t,o){const r=n.fromXDR(t,"base64");try{return(await e.prepareTransaction(r)).toXDR()}catch(e){if(o?.invokedContractId)throw qo(o.invokedContractId,e);throw e}}async function Vo(e,t,o){return Lo(e,t.xdr,o)}function zo(e){if(e<=0||e>4)throw new Error(`Invalid PositionMode ${e} for Stellar — expected 1 (Normal) through 4 (Short). "None" (0) has no Stellar equivalent.`);return e-1}function Wo(e,t){return new Uint8Array(0)}const Do=e=>{const t=e.startsWith("0x")?e.slice(2):e;if(t.length%2!=0)throw new Error("buildStellarCctpForwardTx: hex input must have even length");return Buffer.from(t,"hex")};function Co(t){const o=new e(t.caller,t.sourceSequence),a=new r(t.forwarderAddress).call("mint_and_forward",i.ScVal.scvBytes(Do(t.message)),i.ScVal.scvBytes(Do(t.attestation)));return{xdr:new n(o,{fee:t.fee??"10000000",networkPassphrase:m[t.network]}).addOperation(a).setTimeout(t.timeoutSeconds??120).build().toXDR()}}const Go={1:{name:"AssetNotSupported",message:"This asset is not supported by the protocol."},2:{name:"AssetAlreadySupported",message:"This asset is already supported."},3:{name:"InvalidTicker",message:"Invalid asset ticker."},6:{name:"InvalidAsset",message:"Invalid asset address."},10:{name:"InvalidPoolTemplate",message:"The liquidity pool template hash is invalid."},11:{name:"InvalidExchangeSrc",message:"The oracle configuration is invalid."},12:{name:"PairNotActive",message:"No oracle is configured for this asset."},32:{name:"OwnerNotSet",message:"The contract owner has not been set."},39:{name:"InvalidTimelockDelay",message:"The timelock delay is out of the allowed range."},41:{name:"InvalidRole",message:"The caller does not hold the required role."},43:{name:"HubNotActive",message:"This hub is not active."},44:{name:"NotAuthorized",message:"The caller is not authorized to perform this action."},46:{name:"OperationNotCancellable",message:"This governance operation cannot be cancelled."},113:{name:"InvalidLiqThreshold",message:"LTV, liquidation threshold, or bonus is out of bounds."},116:{name:"InvalidBorrowParams",message:"Supply or borrow cap configuration is invalid."},117:{name:"InvalidUtilRange",message:"Interest-rate utilization breakpoints are invalid."},132:{name:"AssetDecimalsTooHigh",message:"Asset decimals exceed the protocol maximum (27)."},300:{name:"SpokeNotFound",message:"This spoke does not exist."},301:{name:"SpokeDeprecated",message:"This spoke has been deprecated."},308:{name:"AssetAlreadyInSpoke",message:"This asset is already listed in the spoke."},309:{name:"SpokeAssetsLimitReached",message:"This spoke has reached its asset limit."},314:{name:"SpokeCapBelowUsage",message:"The new cap is below current usage on this spoke asset."},315:{name:"SpokeAssetPaused",message:"This spoke asset is paused."},316:{name:"SpokeAssetFrozen",message:"This spoke asset is frozen."},220:{name:"InvalidOracleBase",message:"The oracle quote asset/market is missing or invalid."},221:{name:"InvalidOracleDecimals",message:"The oracle decimals value is invalid."},224:{name:"InvalidSanityBounds",message:"Oracle sanity bounds are invalid (require 0 < min < max)."},225:{name:"OracleCycleDetected",message:"A cycle was detected in the oracle quote chain."}};function Xo(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const o=Number(t[1]),r=Go[o];return r?{code:o,...r}:null}export{l as STELLAR_AGGREGATOR_ROUTER,c as STELLAR_GOVERNANCE,rt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,u as STELLAR_LENDING_CONTROLLER,_o as STELLAR_LENDING_TOPICS,m as STELLAR_NETWORK_PASSPHRASE,d as STELLAR_QUOTE_URL,p as STELLAR_SOROBAN_RPC_URL,go as SYNTHETIC_EVENT_ORDER_STRIDE,wo as XOXNO_LENDING_STELLAR_TICKER,Wo as buildSameTokenRepaySwapSteps,De as buildStellarAcceptOwnershipTx,tt as buildStellarAddRewardsTx,Me as buildStellarApproveTokenTx,Bo as buildStellarBatchSwapTx,C as buildStellarBorrowBatchTx,G as buildStellarBorrowTx,Co as buildStellarCctpForwardTx,et as buildStellarClaimRevenueTx,Ke as buildStellarCreateLiquidityPoolTx,$o as buildStellarExecuteStrategyTx,Q as buildStellarFlashLoanTx,Xt as buildStellarGovernanceExecuteGovernanceUpgradeTx,Mt as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Ht as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,jt as buildStellarGovernanceExecuteTransferGovOwnTx,Gt as buildStellarGovernanceExecuteTx,Ft as buildStellarGovernanceExecuteUpdateDelayTx,Ve as buildStellarGrantRoleTx,yo as buildStellarLendingIdentifier,j as buildStellarLiquidateTx,Z as buildStellarMigrateFromBlendTx,Ue as buildStellarMigrateTx,J as buildStellarMultiplyTx,qe as buildStellarPauseTx,gt as buildStellarProposeAddAssetToSpokeTx,bt as buildStellarProposeAddSpokeTx,xt as buildStellarProposeApproveBlendPoolTx,Tt as buildStellarProposeApproveTokenTx,qt as buildStellarProposeConfigureMarketOracleTx,_t as buildStellarProposeCreateHubTx,Et as buildStellarProposeCreateLiquidityPoolTx,Bt as buildStellarProposeDeployPoolTx,yt as buildStellarProposeEditAssetInSpokeTx,Lt as buildStellarProposeEditOracleToleranceTx,Vt as buildStellarProposeGovernanceUpgradeTx,Wt as buildStellarProposeGrantGovernanceRoleTx,Pt as buildStellarProposeMigrateControllerTx,vt as buildStellarProposeRemoveAssetFromSpokeTx,wt as buildStellarProposeRemoveSpokeTx,At as buildStellarProposeRevokeBlendPoolTx,Dt as buildStellarProposeRevokeGovernanceRoleTx,It as buildStellarProposeRevokeTokenTx,mt as buildStellarProposeSetAccumulatorTx,dt as buildStellarProposeSetAggregatorTx,Rt as buildStellarProposeSetMinBorrowCollatTx,ft as buildStellarProposeSetPoolTemplateTx,ht as buildStellarProposeSetPositionLimitsTx,kt as buildStellarProposeSetPositionManagerTx,St as buildStellarProposeSetSpokeLiquidationCurveTx,Ut as buildStellarProposeTransferCtrlOwnershipTx,Ct as buildStellarProposeTransferGovOwnTx,zt as buildStellarProposeUpdateDelayTx,Ot as buildStellarProposeUpgradeControllerTx,$t as buildStellarProposeUpgradePoolParamsTx,Nt as buildStellarProposeUpgradePoolTx,Je as buildStellarRenewAccountTx,M as buildStellarRepayBatchTx,ee as buildStellarRepayDebtWithCollateralTx,H as buildStellarRepayTx,ze as buildStellarRevokeRoleTx,He as buildStellarRevokeTokenTx,Ge as buildStellarSetAccumulatorTx,Ce as buildStellarSetAggregatorTx,Xe as buildStellarSetLiquidityPoolTemplateTx,je as buildStellarSetMarketOracleConfigTx,Qe as buildStellarSetOracleToleranceTx,Fe as buildStellarSetPositionLimitsTx,W as buildStellarSupplyBatchTx,D as buildStellarSupplyTx,Y as buildStellarSwapCollateralTx,K as buildStellarSwapDebtTx,We as buildStellarTransferOwnershipTx,Le as buildStellarUnpauseTx,ot as buildStellarUpdateAccountThresholdTx,Ze as buildStellarUpdateIndexesTx,Pe as buildStellarUpgradeControllerTx,Ye as buildStellarUpgradeLiquidityPoolParamsTx,X as buildStellarWithdrawBatchTx,F as buildStellarWithdrawTx,z as buildTx,bo as decodeStellarLendingEvent,xe as encodeInterestRateModel,Oe as encodeMarketOracleConfigInput,Ae as encodeMarketParamsRaw,Ne as encodeOracleSourceConfigInput,Ee as encodePositionLimits,Eo as encodeStrategyPayloadToRouteXdr,vo as extractEventOrder,we as getStellarAccountPositions,Io as getStellarAggregatorQuote,h as getStellarAggregatorRouter,pe as getStellarAsset,ye as getStellarAssetGraph,me as getStellarAssetMarkets,de as getStellarAssetPage,ne as getStellarAssets,_ as getStellarGovernance,ge as getStellarGovernanceProposals,fe as getStellarHub,ve as getStellarHubGraph,se as getStellarHubs,ae as getStellarLendingContext,f as getStellarLendingController,xo as getStellarQuoteTokens,le as getStellarReserve,ke as getStellarReserveGraph,ce as getStellarReserveHolders,ue as getStellarReserves,he as getStellarSpoke,Se as getStellarSpokeGraph,ie as getStellarSpokes,be as getStellarUserActivity,_e as getStellarUserPositions,Po as mapQuoteResponseToAggregatorSwap,No as mapQuoteResponseToStrategyPayload,Oo as mapQuoteResponseToStrategySwap,Xo as mapSorobanError,ko as mapStellarPositionActivityType,Vo as prepareStellarBuiltTx,Lo as prepareStellarTxXdr,Jt as stellarLendingDispatchKey,Re as stellarLendingRead,So as syntheticEventOrder,qo as tagStellarInvokedContractError,Qt as toBase64Xdr,zo as toStellarPositionMode};
|
|
1
|
+
"undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis);import{Account as e,Address as t,BASE_FEE as o,Contract as r,ScInt as a,TransactionBuilder as n,scValToNative as s,xdr as i}from"@stellar/stellar-sdk";const u={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},l={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},c={mainnet:process.env.STELLAR_GOVERNANCE_MAINNET??"",testnet:process.env.STELLAR_GOVERNANCE_TESTNET??""},d={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},p={mainnet:process.env.STELLAR_QUOTE_URL_MAINNET??"https://stellar-swap.xoxno.com",testnet:process.env.STELLAR_QUOTE_URL_TESTNET??"https://testnet-stellar-swap.xoxno.com"},m={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function f(e){const t=u[e];if(!t)throw new Error(`Stellar lending controller address not configured for network "${e}". Set STELLAR_LENDING_CONTROLLER_${e.toUpperCase()} env var.`);return t}function h(e){const t=l[e];if(!t)throw new Error(`Stellar aggregator router address not configured for network "${e}". Set STELLAR_AGGREGATOR_ROUTER_${e.toUpperCase()} env var.`);return t}function _(e){const t=c[e];if(!t)throw new Error(`Stellar governance address not configured for network "${e}". Set STELLAR_GOVERNANCE_${e.toUpperCase()} env var.`);return t}const b=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],w=e=>new t(e).toScVal(),g=e=>new a(e).toI128(),y=e=>i.ScVal.scvU32(e),v=e=>new a("string"==typeof e?e:e.toString()).toU64(),S=e=>i.ScVal.scvBool(e),k=e=>i.ScVal.scvString(e),I=e=>i.ScVal.scvSymbol(e),R=()=>i.ScVal.scvVoid(),T=e=>i.ScVal.scvVec(e),x=(e,t=32)=>{const o=e.startsWith("0x")?e.slice(2):e,r=Buffer.from(o,"hex");if(r.length!==t)throw new Error(`Stellar builder: expected a ${t}-byte BytesN (got ${r.length} bytes from "${e}")`);return i.ScVal.scvBytes(r)},A=(e,t)=>null==e?R():t(e),E=(e,t)=>N({asset:w(t),hub_id:y(e)}),$=(e,t,o)=>i.ScVal.scvVec([E(e,t),g(o)]),B=e=>i.ScVal.scvVec(e.map((e=>$(e.hubId,e.asset,e.amount)))),N=e=>{const t=Object.keys(e).sort().map((t=>new i.ScMapEntry({key:I(t),val:e[t]})));return i.ScVal.scvMap(t)},O=e=>{const t=e.paths.map((e=>{const t=e.hops.map((e=>{return N({amount_out:g(e.amountOut),pool:w(e.pool),token_in:w(e.tokenIn),token_out:w(e.tokenOut),venue:(t=e.venue,i.ScVal.scvVec([I(t)]))});var t}));return N({hops:i.ScVal.scvVec(t),split_ppm:y(e.splitPpm)})}));return N({paths:i.ScVal.scvVec(t),referral_id:v(e.referralId??0),token_in:w(e.tokenIn),token_out:w(e.tokenOut),total_min_out:g(e.totalMinOut)})},P=e=>{const t=Buffer.from(e);if(0===t.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return i.ScVal.scvBytes(t)},U=()=>i.ScVal.scvBytes(Buffer.alloc(0)),q=e=>{const t=e.trim();if(t.startsWith("0x")){const e=t.slice(2);if(!((o=e).length>0&&o.length%2==0&&/^[0-9a-fA-F]+$/.test(o)))throw new Error("Stellar builder: strategy swap bytes hex string must be 0x-prefixed and even-length");return Buffer.from(e,"hex")}var o;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const r=Buffer.from(t,"base64");if(0===r.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return r},L=e=>{if("string"==typeof e)return P(q(e));if(e instanceof Uint8Array)return 0===e.length?U():P(e);if(e&&"object"==typeof e)return"routeXdr"in(o=e)&&"string"==typeof o.routeXdr?P(q(e.routeXdr)):(e=>"swapXdr"in e&&"string"==typeof e.swapXdr)(e)?P(q(e.swapXdr)):(e=>"bytes"in e&&("string"==typeof e.bytes||e.bytes instanceof Uint8Array))(e)?"string"==typeof e.bytes?P(q(e.bytes)):0===e.bytes.length?U():P(e.bytes):(t=(e=>{if(!e||"object"!=typeof e)throw new Error("Stellar builder: decoded strategy `steps` must be a StrategyPayload ({ paths, tokenIn, tokenOut, totalMinOut })");const t=e;if(!Array.isArray(t.paths)||0===t.paths.length)throw new Error("Stellar builder: `steps.paths` must be a non-empty array of strategy paths");if("string"!=typeof t.tokenIn)throw new Error("Stellar builder: `steps.tokenIn` must be a contract address");if("string"!=typeof t.tokenOut)throw new Error("Stellar builder: `steps.tokenOut` must be a contract address");if("string"!=typeof t.totalMinOut)throw new Error("Stellar builder: `steps.totalMinOut` must be an i128 decimal string");let o=0;for(const[e,r]of t.paths.entries()){if(!r||"number"!=typeof r.splitPpm||r.splitPpm<=0||!Array.isArray(r.hops)||0===r.hops.length)throw new Error(`Stellar builder: \`steps.paths[${e}]\` must have splitPpm > 0 and a non-empty hops array`);o+=r.splitPpm;for(const[t,o]of r.hops.entries())if(!o||"string"!=typeof o.amountOut||"string"!=typeof o.pool||"string"!=typeof o.tokenIn||"string"!=typeof o.tokenOut||!b.includes(o.venue))throw new Error(`Stellar builder: \`steps.paths[${e}].hops[${t}]\` must have amountOut, pool, tokenIn, tokenOut, and a valid Soroban venue`)}if(1e6!==o)throw new Error(`Stellar builder: \`steps.paths[].splitPpm\` must sum to 1_000_000, got ${o}`);return t})(e),i.ScVal.scvBytes(Buffer.from(O(t).toXDR("base64"),"base64")));var t,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},z=e=>{if("string"==typeof e)return(e=>{const t=e.startsWith("0x")?e.slice(2):e,o=Buffer.from(t,"hex");return i.ScVal.scvBytes(o)})(e);if(e instanceof Uint8Array)return i.ScVal.scvBytes(Buffer.from(e));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function V(t,a,s){const i=t.controllerAddress??f(t.network),u=new r(i),l=new e(t.caller,t.sourceSequence);return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(u.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function W(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return V(e,"supply",[w(e.caller),v(o),y(r),B([...t.assets])])}function D(e,t){return W(e,{accountNonce:t.accountNonce,spokeId:t.spokeId,assets:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function C(e,t){return V(e,"borrow",[w(e.caller),v(t.accountNonce),B([...t.borrows]),A(t.to,w)])}function G(e,t){return C(e,{accountNonce:t.accountNonce,borrows:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function X(e,t){return V(e,"withdraw",[w(e.caller),v(t.accountNonce),B([...t.withdrawals]),A(t.to,w)])}function F(e,t){return X(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function M(e,t){return V(e,"repay",[w(e.caller),v(t.accountNonce),B([...t.payments])])}function H(e,t){return M(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function j(e,t){return V(e,"liquidate",[w(e.caller),v(t.accountNonce),B([...t.debtPayments])])}function Q(e,t){return V(e,"flash_loan",[w(e.caller),E(t.hubId,t.asset),g(t.amount),w(t.receiver),z(t.data)])}function Z(e,t){return V(e,"migrate_from_blend",[w(e.caller),v(t.accountId),y(t.spokeId),y(t.hubId),w(t.blendPool),T(t.collateralTokens.map(w)),T(t.supplyTokens.map(w)),(o=t.debtCaps.map((e=>({token:e.token,amount:e.cap}))),i.ScVal.scvVec(o.map((e=>{return t=e.token,o=e.amount,i.ScVal.scvVec([w(t),g(o)]);var t,o}))))]);var o}function J(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return V(e,"multiply",[w(e.caller),v(o),y(r),E(t.collateral.hubId,t.collateral.asset),g(t.debtToFlashLoan),E(t.debt.hubId,t.debt.asset),y(t.mode),L(t.steps),A(t.initialPayment,(e=>$(e.hubId,e.asset,e.amount))),A(t.convertSwap,L)])}function K(e,t){return V(e,"swap_debt",[w(e.caller),v(t.accountNonce),E(t.existingDebt.hubId,t.existingDebt.asset),g(t.newDebtAmount),E(t.newDebt.hubId,t.newDebt.asset),L(t.steps)])}function Y(e,t){return V(e,"swap_collateral",[w(e.caller),v(t.accountNonce),E(t.current.hubId,t.current.asset),g(t.fromAmount),E(t.newCollateral.hubId,t.newCollateral.asset),L(t.steps)])}function ee(e,t){return V(e,"repay_debt_with_collateral",[w(e.caller),v(t.accountNonce),E(t.collateral.hubId,t.collateral.asset),g(t.collateralAmount),E(t.debt.hubId,t.debt.asset),L(t.steps),S(t.closePosition)])}const te="/stellar-lending",oe=25,re=encodeURIComponent,ae=(e,t)=>e.fetchWithTimeout(`${te}/context`,t),ne=(e,t)=>e.fetchWithTimeout(`${te}/assets`,t),se=(e,t)=>e.fetchWithTimeout(`${te}/hubs`,t),ie=(e,t)=>e.fetchWithTimeout(`${te}/spokes`,t),ue=(e,t={},o)=>{const{hubId:r,spokeId:a,asset:n}=t;return e.fetchWithTimeout(`${te}/reserves`,{...o,params:{...void 0!==r?{hubId:r}:{},...void 0!==a?{spokeId:a}:{},...n?{asset:n}:{}}})},le=(e,t,o,r,a)=>e.fetchWithTimeout(`${te}/reserves/${t}/${o}/${re(r)}`,a),ce=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${te}/reserves/${t}/${o}/${re(r)}/holders`,{...n,params:{side:a}}),de=(e,t,o)=>e.fetchWithTimeout(`${te}/assets/${re(t)}`,o),pe=(e,t,o,r)=>e.fetchWithTimeout(`${te}/assets/${re(t)}/page`,{...r,params:{...o}}),me=(e,t,o,r)=>e.fetchWithTimeout(`${te}/assets/${re(t)}/markets`,{...r,params:{side:o}}),fe=(e,t,o)=>e.fetchWithTimeout(`${te}/hubs/${t}`,o),he=(e,t,o)=>e.fetchWithTimeout(`${te}/spokes/${t}`,o),_e=(e,t,o)=>e.fetchWithTimeout(`${te}/users/${re(t)}/positions`,o),be=(e,t,o={},r)=>{const{skip:a,top:n}=o;return e.fetchWithTimeout(`${te}/users/${re(t)}/activity`,{...r,params:{...void 0!==a?{skip:a}:{},...void 0!==n?{top:n}:{}}})},we=(e,t,o)=>e.fetchWithTimeout(`${te}/accounts/${re(t)}/positions`,o),ge=(e,t={},o)=>{const{top:r=oe,continuationToken:a}=t;return e.fetchWithTimeout(`${te}/governance/proposals`,{...o,params:{top:r,...a?{continuationToken:a}:{}}})},ye=(e,t,o,r)=>e.fetchWithTimeout(`${te}/assets/${re(t)}/graph`,{...r,params:{...o}}),ve=(e,t,o,r)=>e.fetchWithTimeout(`${te}/hubs/${t}/graph`,{...r,params:{...o}}),Se=(e,t,o,r)=>e.fetchWithTimeout(`${te}/spokes/${t}/graph`,{...r,params:{...o}}),ke=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${te}/reserves/${t}/${o}/${re(r)}/graph`,{...n,params:{...a}}),Ie=e=>({context:t=>ae(e,t),assets:t=>ne(e,t),hubs:t=>se(e,t),spokes:t=>ie(e,t),reserves:(t,o)=>{return void 0===(r=t)||"hubId"in r||"spokeId"in r||"asset"in r?ue(e,t,o):ue(e,{},t);var r},reserve:(t,o,r,a)=>le(e,t,o,r,a),reserveHolders:(t,o,r,a,n)=>ce(e,t,o,r,a,n),asset:(t,o)=>de(e,t,o),assetMarkets:(t,o,r)=>me(e,t,o,r),hub:(t,o)=>fe(e,t,o),spoke:(t,o)=>he(e,t,o),userPositions:(t,o)=>_e(e,t,o),userActivity:(t,o,r)=>be(e,t,o,r),accountPositions:(t,o)=>we(e,t,o),governanceProposals:(t,o)=>ge(e,t,o),assetGraph:(t,o,r)=>ye(e,t,o,r),hubGraph:(t,o,r)=>ve(e,t,o,r),spokeGraph:(t,o,r)=>Se(e,t,o,r),reserveGraph:(t,o,r,a,n)=>ke(e,t,o,r,a,n)}),Re={Single:0,PrimaryWithAnchor:1},Te="RedStonePriceFeed",xe=e=>N({base_borrow_rate:g(e.baseBorrowRateRay),max_borrow_rate:g(e.maxBorrowRateRay),max_utilization:g(e.maxUtilizationRay),mid_utilization:g(e.midUtilizationRay),optimal_utilization:g(e.optimalUtilizationRay),reserve_factor:y(e.reserveFactorBps),slope1:g(e.slope1Ray),slope2:g(e.slope2Ray),slope3:g(e.slope3Ray)}),Ae=e=>N({asset_decimals:y(e.assetDecimals),asset_id:w(e.assetId),base_borrow_rate:g(e.baseBorrowRateRay),flashloan_fee:y(e.flashloanFeeBps),is_flashloanable:S(e.isFlashloanable),max_borrow_rate:g(e.maxBorrowRateRay),max_utilization:g(e.maxUtilizationRay),mid_utilization:g(e.midUtilizationRay),optimal_utilization:g(e.optimalUtilizationRay),reserve_factor:y(e.reserveFactorBps),slope1:g(e.slope1Ray),slope2:g(e.slope2Ray),slope3:g(e.slope3Ray)}),Ee=e=>N({max_borrow_positions:y(e.maxBorrowPositions),max_supply_positions:y(e.maxSupplyPositions)}),$e=e=>{const t=e.kind;switch(t){case"Stellar":return T([I("Stellar"),w(e.value)]);case"Symbol":return T([I("Symbol"),I(e.value)]);case"String":return T([I("String"),k(e.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${t}"`)}},Be=(e,t)=>{if("Twap"===e){if("number"!=typeof t)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return T([I("Twap"),y(t)])}return T([I("Spot")])},Ne=e=>{const t=e.provider;if("ReflectorSep40"===t){if(!e.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return T([I("Reflector"),N({asset:$e(e.asset),contract:w(e.contract),read_mode:Be(e.readMode,e.twapRecords)})])}if(t===Te||"XoxnoPriceFeed"===t){const o=t===Te?"RedStone":"Xoxno";if("string"!=typeof e.feedId)throw new Error(`Stellar builder: ${o} oracle source requires \`feedId\``);if("number"!=typeof e.maxStaleSeconds)throw new Error(`Stellar builder: ${o} oracle source requires \`maxStaleSeconds\``);return T([I(o),N({contract:w(e.contract),feed_id:k(e.feedId),max_stale_seconds:v(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},Oe=e=>{const t=Re[e.strategy];if(void 0===t)throw new Error(`Stellar builder: unknown oracle strategy "${e.strategy}"`);return N({anchor:(o=e.anchor,T(null==o?[I("None")]:[I("Some"),Ne(o)])),max_price_stale_seconds:v(e.maxPriceStaleSeconds),max_sanity_price_wad:g(e.maxSanityPriceWad),min_sanity_price_wad:g(e.minSanityPriceWad),primary:Ne(e.primary),strategy:y(t),tolerance_bps:y(e.toleranceBps)});var o};function Pe(e,t){return V(e,"upgrade",[x(t.wasmHash)])}function Ue(e,t){return V(e,"migrate",[y(t.newVersion)])}function qe(e){return V(e,"pause",[])}function Le(e){return V(e,"unpause",[])}function ze(e,t){return V(e,"grant_role",[w(t.account),I(t.role)])}function Ve(e,t){return V(e,"revoke_role",[w(t.account),I(t.role)])}function We(e,t){return V(e,"transfer_ownership",[w(t.newOwner),y(t.liveUntilLedger)])}function De(e){return V(e,"accept_ownership",[])}function Ce(e,t){return V(e,"set_aggregator",[w(t.aggregator)])}function Ge(e,t){return V(e,"set_accumulator",[w(t.accumulator)])}function Xe(e,t){return V(e,"set_liquidity_pool_template",[x(t.wasmHash)])}function Fe(e,t){return V(e,"set_position_limits",[Ee(t)])}function Me(e,t){return V(e,"approve_token",[w(t.token)])}function He(e,t){return V(e,"revoke_token",[w(t.token)])}function je(e,t){return V(e,"set_market_oracle_config",[E(t.hubId,t.asset),Oe(t.config)])}function Qe(e,t){return V(e,"set_oracle_tolerance",[w(t.asset),N({lower_ratio_bps:y(t.lowerRatioBps),upper_ratio_bps:y(t.upperRatioBps)})])}function Ze(e,t){return V(e,"set_spoke_asset_flags",[y(t.spokeId),E(t.hubId,t.asset),S(t.paused),S(t.frozen)])}function Je(e,t){return V(e,"set_oracle_sanity_bounds",[w(t.asset),g(t.minPriceWad),g(t.maxPriceWad)])}function Ke(e,t){return V(e,"update_indexes",[w(e.caller),T(t.assets.map((e=>E(e.hubId,e.asset))))])}function Ye(e,t){return V(e,"renew_account",[w(e.caller),v(t.accountNonce)])}function et(e,t){return V(e,"create_liquidity_pool",[y(t.hubId),w(t.asset),Ae(t.params)])}function tt(e,t){return V(e,"upgrade_liquidity_pool_params",[E(t.hubId,t.asset),xe(t.params)])}function ot(e,t){return V(e,"claim_revenue",[w(e.caller),T(t.assets.map((e=>E(e.hubId,e.asset))))])}function rt(e,t){return V(e,"add_rewards",[w(e.caller),B(t.rewards)])}function at(e,t){return V(e,"update_account_threshold",[w(e.caller),S(t.hasRisks),T(t.accountNonces.map((e=>v(e))))])}const nt="00".repeat(32),st=e=>{if("string"==typeof e)return x(e);const t=Buffer.from(e);if(32!==t.length)throw new Error(`Stellar governance builder: expected a 32-byte salt (got ${t.length} bytes)`);return i.ScVal.scvBytes(t)},it=(e,...t)=>T([I(e),...t]),ut=e=>N({new_owner:w(e.newOwner),live_until_ledger:y(e.liveUntilLedger)}),lt=e=>N({asset:w(e.asset),bonus:y(e.bonus),borrow_cap:g(e.borrowCap),can_borrow:S(e.canBorrow),can_collateral:S(e.canCollateral),frozen:S(e.frozen),hub_id:y(e.hubId),paused:S(e.paused),liquidation_fees:y(e.liquidationFees),ltv:y(e.ltv),oracle_override:T([I("None")]),spoke_id:y(e.spokeId),supply_cap:g(e.supplyCap),threshold:y(e.threshold)}),ct=e=>N({account:w(e.account),role:I(e.role)});function dt(t,a,s){const i=t.governanceAddress??_(t.network),u=new r(i),l=new e(t.caller,t.sourceSequence);return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(u.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const pt=(e,t,o)=>dt(e,"propose",[w(e.caller),t,st(o)]),mt=(e,t,o)=>dt(e,"execute_self",[R(),t,st(o)]);function ft(e,t,o){return pt(e,it("SetAggregator",w(t.aggregator)),o)}function ht(e,t,o){return pt(e,it("SetAccumulator",w(t.accumulator)),o)}function _t(e,t,o){return pt(e,it("SetLiquidityPoolTemplate",x(t.wasmHash)),o)}function bt(e,t,o){return pt(e,it("SetPositionLimits",Ee(t)),o)}function wt(e,t){return pt(e,it("CreateHub"),t)}function gt(e,t){return pt(e,it("AddSpoke"),t)}function yt(e,t,o){return pt(e,it("RemoveSpoke",y(t.spokeId)),o)}function vt(e,t,o){return pt(e,it("AddAssetToSpoke",lt(t)),o)}function St(e,t,o){return pt(e,it("EditAssetInSpoke",lt(t)),o)}function kt(e,t,o){return pt(e,it("RemoveAssetFromSpoke",N({hub_asset:E((r=t).hubId,r.asset),spoke_id:y(r.spokeId)})),o);var r}function It(e,t,o){return pt(e,it("SetSpokeLiquidationCurve",N({hf_for_max_bonus_wad:g((r=t).hfForMaxBonusWad),liquidation_bonus_factor_bps:y(r.liquidationBonusFactorBps),spoke_id:y(r.spokeId),target_hf_wad:g(r.targetHfWad)})),o);var r}function Rt(e,t,o){return pt(e,it("SetPositionManager",w(t.manager),S(t.isActive)),o)}function Tt(e,t,o){return pt(e,it("SetMinBorrowCollateralUsd",g(t.floorWad)),o)}function xt(e,t,o){return pt(e,it("ApproveToken",w(t.token)),o)}function At(e,t,o){return pt(e,it("RevokeToken",w(t.token)),o)}function Et(e,t,o){return pt(e,it("ApproveBlendPool",w(t.pool)),o)}function $t(e,t,o){return pt(e,it("RevokeBlendPool",w(t.pool)),o)}function Bt(e,t,o){return pt(e,it("CreateLiquidityPool",N({asset:w((r=t).asset),hub_id:y(r.hubId),params:Ae(r.params)})),o);var r}function Nt(e,t,o){return pt(e,it("UpgradeLiquidityPoolParams",N({hub_asset:E((r=t).hubId,r.asset),params:xe(r.params)})),o);var r}function Ot(e,t){return pt(e,it("DeployPool"),t)}function Pt(e,t,o){return pt(e,it("UpgradePool",x(t.wasmHash)),o)}function Ut(e,t,o){return pt(e,it("UpgradeController",x(t.wasmHash)),o)}function qt(e,t,o){return pt(e,it("MigrateController",y(t.newVersion)),o)}function Lt(e,t,o){return pt(e,it("TransferCtrlOwnership",ut(t)),o)}function zt(e,t,o){return pt(e,it("ConfigureMarketOracle",N({cfg:Oe((r=t).config),hub_asset:E(r.hubId,r.asset)})),o);var r}function Vt(e,t,o){return pt(e,it("EditOracleTolerance",N({asset:w((r=t).asset),tolerance:y(r.tolerance)})),o);var r}function Wt(e,t,o){return pt(e,it("UpgradeGov",x(t.wasmHash)),o)}function Dt(e,t,o){return pt(e,it("UpdateGovDelay",y(t.newDelay)),o)}function Ct(e,t,o){return pt(e,it("GrantGovRole",ct(t)),o)}function Gt(e,t,o){return pt(e,it("RevokeGovRole",ct(t)),o)}function Xt(e,t,o){return pt(e,it("TransferGovOwnership",ut(t)),o)}function Ft(e,t){const o=T(t.argsXdr.map((e=>i.ScVal.fromXDR(e,"base64")))),r=st(t.predecessor??nt);return dt(e,"execute",[R(),w(t.target),I(t.functionName),o,r,st(t.salt)])}function Mt(e,t,o){return mt(e,it("UpgradeGov",x(t.wasmHash)),o)}function Ht(e,t,o){return mt(e,it("UpdateGovDelay",y(t.newDelay)),o)}function jt(e,t,o){return mt(e,it("GrantGovRole",ct(t)),o)}function Qt(e,t,o){return mt(e,it("RevokeGovRole",ct(t)),o)}function Zt(e,t,o){return mt(e,it("TransferGovOwnership",ut(t)),o)}function Jt(e,t){return dt(e,"set_spoke_asset_flags",[w(e.caller),y(t.spokeId),E(t.hubId,t.asset),S(t.paused),S(t.frozen)])}function Kt(e,t){return dt(e,"set_oracle_sanity_bounds",[w(e.caller),w(t.asset),g(t.minPriceWad),g(t.maxPriceWad)])}function Yt(e){return dt(e,"create_hub",[w(e.caller)])}function eo(e){return dt(e,"add_spoke",[w(e.caller)])}function to(e,t){return dt(e,"revoke_role_immediate",[w(t.account),I(t.role)])}const oo=e=>e.toXDR("base64"),ro=e=>i.ScVal.fromXDR(e,"base64"),ao=e=>e.map((e=>String(s(ro(e))))).join(":"),no=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),so=e=>Number(e),io=e=>String(e),uo=e=>null==e?void 0:no(e),lo=e=>null==e?void 0:io(e),co=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),po=["None","Multiply","Long","Short"],mo=["Single","PrimaryWithAnchor"],fo=["ReflectorSep40","RedStonePriceFeed"],ho=["Spot","Twap"],_o=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],bo=e=>Array.isArray(e)?e:[],wo=(e,t)=>{const o="Borrow"===t;return{action:(r=e[0],_o[so(r)]??no(r)),positionType:t,hubId:so(e[1]),asset:io(e[2]),scaledAmountRay:no(e[3]),indexRay:no(e[4]),amount:no(e[5]),liquidationThresholdBps:o?void 0:so(e[6]),liquidationBonusBps:o?void 0:so(e[7]),loanToValueBps:o?void 0:so(e[8]),liquidationFeesBps:o?void 0:so(e[9])};var r},go=e=>{return{owner:io(e[0]),spokeId:so(e[1]),mode:(t=e[2],po[so(t)]??"None")};var t},yo=(e,t)=>{const o=ho[so(e[`${t}_read_mode`])]??"Spot",r=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=r?{kind:"Stellar",value:io(r)}:null!=a?{kind:"Symbol",value:io(a)}:void 0;return{provider:fo[so(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:io(e[`${t}_contract`]),asset:n,feedId:lo(e[`${t}_feed_id`]),readMode:o,twapRecords:"Twap"===o?so(e[`${t}_twap_records`]):void 0,decimals:so(e[`${t}_decimals`]),resolutionSeconds:so(e[`${t}_resolution_seconds`]),maxStaleSeconds:so(e[`${t}_max_stale_seconds`])}},vo=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:io(e.base_token_id),quoteTokenId:io(e.quote_token_id),tolerance:{upperRatio:so(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:so(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:so(e.asset_decimals),maxPriceStaleSeconds:so(e.max_price_stale_seconds),strategy:mo[so(e.strategy)]??"Single",primary:yo(e,"primary"),anchor:t?yo(e,"anchor"):void 0,primaryQuoteToken:lo(e.primary_quote_token),anchorQuoteToken:lo(e.anchor_quote_token),minSanityPriceWad:uo(e.min_sanity_price_wad),maxSanityPriceWad:uo(e.max_sanity_price_wad)}},So={"market:create":e=>({topic:"market:create",data:{hubId:so(e.hub_id),baseAsset:io(e.base_asset),maxBorrowRate:no(e.max_borrow_rate),baseBorrowRate:no(e.base_borrow_rate),slope1:no(e.slope1),slope2:no(e.slope2),slope3:no(e.slope3),midUtilization:no(e.mid_utilization),optimalUtilization:no(e.optimal_utilization),maxUtilization:no(e.max_utilization),reserveFactor:so(e.reserve_factor),marketAddress:io(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:io(e.asset),maxBorrowRateRay:no(e.max_borrow_rate),baseBorrowRateRay:no(e.base_borrow_rate),slope1Ray:no(e.slope1),slope2Ray:no(e.slope2),slope3Ray:no(e.slope3),midUtilizationRay:no(e.mid_utilization),optimalUtilizationRay:no(e.optimal_utilization),maxUtilizationRay:no(e.max_utilization),reserveFactorBps:so(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:bo(e).map((e=>{return t=bo(e),{hubId:so(t[0]),asset:io(t[1]),timestamp:so(t[2]),supplyIndexRay:no(t[3]),borrowIndexRay:no(t[4]),cash:no(t[5]),suppliedRay:no(t[6]),borrowedRay:no(t[7]),revenueRay:no(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:bo(e).map((e=>{const t=e;return{hubId:so(t.hub_id),asset:io(t.asset),params:(o=t.params,{maxBorrowRateRay:no(o.max_borrow_rate),baseBorrowRateRay:no(o.base_borrow_rate),slope1Ray:no(o.slope1),slope2Ray:no(o.slope2),slope3Ray:no(o.slope3),midUtilizationRay:no(o.mid_utilization),optimalUtilizationRay:no(o.optimal_utilization),maxUtilizationRay:no(o.max_utilization),reserveFactorBps:so(o.reserve_factor),isFlashloanable:Boolean(o.is_flashloanable),flashloanFeeBps:so(o.flashloan_fee),assetId:io(o.asset_id),assetDecimals:so(o.asset_decimals)})};var o}))}}),"position:batch_update":e=>{const t=bo(e);return{topic:"position:batch_update",data:{accountId:no(t[0]),accountAttributes:go(bo(t[1])),updates:[...bo(t[2]).map((e=>wo(bo(e),"Deposit"))),...bo(t[3]).map((e=>wo(bo(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:so(e.hub_id),asset:io(e.asset),receiver:io(e.receiver),caller:io(e.caller),amount:no(e.amount),fee:no(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:io(e.asset),oracle:vo(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:io(e.liquidator),accountId:no(e.account_id),repaidUsdWad:no(e.repaid_usd_wad),bonusBps:no(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:no(e.account_id),totalBorrowUsdWad:no(e.total_borrow_usd_wad),totalCollateralUsdWad:no(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:io(e.token),amount:no(e.amount),usdValueWad:no(e.usd_value_wad),accountId:no(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:so(e.hub_id),asset:io(e.asset),amount:no(e.amount),fee:no(e.fee),amountSent:no(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:co(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:io(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:io(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:co(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:so(e.max_supply_positions),maxBorrowPositions:so(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:io(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:so(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:no(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:no(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:so(t.liquidation_bonus_factor_bps)}}}},ko=Object.freeze(Object.keys(So));function Io(e,t){const o=ao(e),r=So[o];return r?r(s(ro(t))):null}const Ro="XLENDXLM-a7c9f3",To=1e4;function xo(e){const t=BigInt(e).toString(16),o=t.length%2==0?t:`0${t}`;return`${Ro}-${o}`}function Ao(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function Eo(e,t=0){return 1e4*e+t}function $o(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Bo=(e,t,o)=>{const r=new URL(t,e.endsWith("/")?e:`${e}/`);if(o)for(const[e,t]of Object.entries(o))void 0!==t&&r.searchParams.set(e,String(t));return r.toString()},No=e=>e.baseUrl??p[e.network];async function Oo(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=Bo(No(t),"api/v1/quote",{from:e.from,to:e.to,amountIn:e.amountIn,amountOut:e.amountOut,maxHops:e.maxHops,maxSplits:e.maxSplits,slippage:e.slippage,includePaths:e.includePaths,sender:e.sender,router:e.router,platform:e.platform,fresh:e.fresh}),r=await fetch(o,t.fetchOptions);if(!r.ok){const e=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${o} — ${e}`)}return await r.json()}async function Po(e){const t=Bo(No(e),"api/v1/tokens"),o=await fetch(t,e.fetchOptions);if(!o.ok){const e=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${t} — ${e}`)}return await o.json()}const Uo=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,qo=e=>O(e).toXDR("base64");function Lo(t,a){const s=t.routerAddress??h(t.network),i=new r(s),u=new e(t.caller,t.sourceSequence),l=L(Uo(a,t.referralId));return{xdr:new n(u,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(i.call("execute_strategy",w(t.caller),g(t.totalIn),l)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function zo(e,t){return Lo(e,t)}function Vo(e,t={}){if("string"!=typeof e.amountOutMin)throw new Error("mapQuoteResponseToStrategyPayload: quote response is missing `amountOutMin`. Pass `slippage` when fetching the quote.");return{paths:e.paths?e.paths.map((e=>({hops:e.swaps.map(Co),splitPpm:e.splitPpm}))):[{hops:e.hops.map(Co),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Wo(e,t={}){const o=e;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Vo(e,t)}const Do=Vo,Co=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Go(e,t){const o=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${o}`)}async function Xo(e,t,o){const r=n.fromXDR(t,"base64");try{return(await e.prepareTransaction(r)).toXDR()}catch(e){if(o?.invokedContractId)throw Go(o.invokedContractId,e);throw e}}async function Fo(e,t,o){return Xo(e,t.xdr,o)}function Mo(e){if(e<=0||e>4)throw new Error(`Invalid PositionMode ${e} for Stellar — expected 1 (Normal) through 4 (Short). "None" (0) has no Stellar equivalent.`);return e-1}function Ho(e,t){return new Uint8Array(0)}const jo=e=>{const t=e.startsWith("0x")?e.slice(2):e;if(t.length%2!=0)throw new Error("buildStellarCctpForwardTx: hex input must have even length");return Buffer.from(t,"hex")};function Qo(t){const o=new e(t.caller,t.sourceSequence),a=new r(t.forwarderAddress).call("mint_and_forward",i.ScVal.scvBytes(jo(t.message)),i.ScVal.scvBytes(jo(t.attestation)));return{xdr:new n(o,{fee:t.fee??"10000000",networkPassphrase:m[t.network]}).addOperation(a).setTimeout(t.timeoutSeconds??120).build().toXDR()}}const Zo={1:{name:"AssetNotSupported",message:"This asset is not supported by the protocol."},2:{name:"AssetAlreadySupported",message:"This asset is already supported."},3:{name:"InvalidTicker",message:"Invalid asset ticker."},6:{name:"InvalidAsset",message:"Invalid asset address."},10:{name:"InvalidPoolTemplate",message:"The liquidity pool template hash is invalid."},11:{name:"InvalidExchangeSrc",message:"The oracle configuration is invalid."},12:{name:"PairNotActive",message:"No oracle is configured for this asset."},32:{name:"OwnerNotSet",message:"The contract owner has not been set."},39:{name:"InvalidTimelockDelay",message:"The timelock delay is out of the allowed range."},41:{name:"InvalidRole",message:"The caller does not hold the required role."},43:{name:"HubNotActive",message:"This hub is not active."},44:{name:"NotAuthorized",message:"The caller is not authorized to perform this action."},46:{name:"OperationNotCancellable",message:"This governance operation cannot be cancelled."},113:{name:"InvalidLiqThreshold",message:"LTV, liquidation threshold, or bonus is out of bounds."},116:{name:"InvalidBorrowParams",message:"Supply or borrow cap configuration is invalid."},117:{name:"InvalidUtilRange",message:"Interest-rate utilization breakpoints are invalid."},132:{name:"AssetDecimalsTooHigh",message:"Asset decimals exceed the protocol maximum (27)."},300:{name:"SpokeNotFound",message:"This spoke does not exist."},301:{name:"SpokeDeprecated",message:"This spoke has been deprecated."},307:{name:"AssetNotInSpoke",message:"This asset is not listed on the spoke."},308:{name:"AssetAlreadyInSpoke",message:"This asset is already listed in the spoke."},309:{name:"SpokeAssetInUse",message:"This spoke asset still has live positions; drain usage before removal."},315:{name:"SpokeAssetPaused",message:"This spoke asset is paused."},316:{name:"SpokeAssetFrozen",message:"This spoke asset is frozen."},220:{name:"InvalidOracleBase",message:"The oracle quote asset/market is missing or invalid."},221:{name:"InvalidOracleDecimals",message:"The oracle decimals value is invalid."},224:{name:"InvalidSanityBounds",message:"Oracle sanity bounds are invalid (require 0 < min < max)."},225:{name:"OracleCycleDetected",message:"A cycle was detected in the oracle quote chain."}};function Jo(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const o=Number(t[1]),r=Zo[o];return r?{code:o,...r}:null}export{l as STELLAR_AGGREGATOR_ROUTER,c as STELLAR_GOVERNANCE,nt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,u as STELLAR_LENDING_CONTROLLER,ko as STELLAR_LENDING_TOPICS,m as STELLAR_NETWORK_PASSPHRASE,p as STELLAR_QUOTE_URL,d as STELLAR_SOROBAN_RPC_URL,To as SYNTHETIC_EVENT_ORDER_STRIDE,Ro as XOXNO_LENDING_STELLAR_TICKER,Ho as buildSameTokenRepaySwapSteps,De as buildStellarAcceptOwnershipTx,rt as buildStellarAddRewardsTx,Me as buildStellarApproveTokenTx,zo as buildStellarBatchSwapTx,C as buildStellarBorrowBatchTx,G as buildStellarBorrowTx,Qo as buildStellarCctpForwardTx,ot as buildStellarClaimRevenueTx,et as buildStellarCreateLiquidityPoolTx,Lo as buildStellarExecuteStrategyTx,Q as buildStellarFlashLoanTx,eo as buildStellarGovernanceAddSpokeImmediateTx,Yt as buildStellarGovernanceCreateHubImmediateTx,Mt as buildStellarGovernanceExecuteGovernanceUpgradeTx,jt as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Qt as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,Zt as buildStellarGovernanceExecuteTransferGovOwnTx,Ft as buildStellarGovernanceExecuteTx,Ht as buildStellarGovernanceExecuteUpdateDelayTx,to as buildStellarGovernanceRevokeRoleImmediateTx,Kt as buildStellarGovernanceSetOracleSanityBoundsImmediateTx,Jt as buildStellarGovernanceSetSpokeAssetFlagsImmediateTx,ze as buildStellarGrantRoleTx,xo as buildStellarLendingIdentifier,j as buildStellarLiquidateTx,Z as buildStellarMigrateFromBlendTx,Ue as buildStellarMigrateTx,J as buildStellarMultiplyTx,qe as buildStellarPauseTx,vt as buildStellarProposeAddAssetToSpokeTx,gt as buildStellarProposeAddSpokeTx,Et as buildStellarProposeApproveBlendPoolTx,xt as buildStellarProposeApproveTokenTx,zt as buildStellarProposeConfigureMarketOracleTx,wt as buildStellarProposeCreateHubTx,Bt as buildStellarProposeCreateLiquidityPoolTx,Ot as buildStellarProposeDeployPoolTx,St as buildStellarProposeEditAssetInSpokeTx,Vt as buildStellarProposeEditOracleToleranceTx,Wt as buildStellarProposeGovernanceUpgradeTx,Ct as buildStellarProposeGrantGovernanceRoleTx,qt as buildStellarProposeMigrateControllerTx,kt as buildStellarProposeRemoveAssetFromSpokeTx,yt as buildStellarProposeRemoveSpokeTx,$t as buildStellarProposeRevokeBlendPoolTx,Gt as buildStellarProposeRevokeGovernanceRoleTx,At as buildStellarProposeRevokeTokenTx,ht as buildStellarProposeSetAccumulatorTx,ft as buildStellarProposeSetAggregatorTx,Tt as buildStellarProposeSetMinBorrowCollatTx,_t as buildStellarProposeSetPoolTemplateTx,bt as buildStellarProposeSetPositionLimitsTx,Rt as buildStellarProposeSetPositionManagerTx,It as buildStellarProposeSetSpokeLiquidationCurveTx,Lt as buildStellarProposeTransferCtrlOwnershipTx,Xt as buildStellarProposeTransferGovOwnTx,Dt as buildStellarProposeUpdateDelayTx,Ut as buildStellarProposeUpgradeControllerTx,Nt as buildStellarProposeUpgradePoolParamsTx,Pt as buildStellarProposeUpgradePoolTx,Ye as buildStellarRenewAccountTx,M as buildStellarRepayBatchTx,ee as buildStellarRepayDebtWithCollateralTx,H as buildStellarRepayTx,Ve as buildStellarRevokeRoleTx,He as buildStellarRevokeTokenTx,Ge as buildStellarSetAccumulatorTx,Ce as buildStellarSetAggregatorTx,Xe as buildStellarSetLiquidityPoolTemplateTx,je as buildStellarSetMarketOracleConfigTx,Je as buildStellarSetOracleSanityBoundsTx,Qe as buildStellarSetOracleToleranceTx,Fe as buildStellarSetPositionLimitsTx,Ze as buildStellarSetSpokeAssetFlagsTx,W as buildStellarSupplyBatchTx,D as buildStellarSupplyTx,Y as buildStellarSwapCollateralTx,K as buildStellarSwapDebtTx,We as buildStellarTransferOwnershipTx,Le as buildStellarUnpauseTx,at as buildStellarUpdateAccountThresholdTx,Ke as buildStellarUpdateIndexesTx,Pe as buildStellarUpgradeControllerTx,tt as buildStellarUpgradeLiquidityPoolParamsTx,X as buildStellarWithdrawBatchTx,F as buildStellarWithdrawTx,V as buildTx,Io as decodeStellarLendingEvent,xe as encodeInterestRateModel,Oe as encodeMarketOracleConfigInput,Ae as encodeMarketParamsRaw,Ne as encodeOracleSourceConfigInput,Ee as encodePositionLimits,qo as encodeStrategyPayloadToRouteXdr,Ao as extractEventOrder,we as getStellarAccountPositions,Oo as getStellarAggregatorQuote,h as getStellarAggregatorRouter,de as getStellarAsset,ye as getStellarAssetGraph,me as getStellarAssetMarkets,pe as getStellarAssetPage,ne as getStellarAssets,_ as getStellarGovernance,ge as getStellarGovernanceProposals,fe as getStellarHub,ve as getStellarHubGraph,se as getStellarHubs,ae as getStellarLendingContext,f as getStellarLendingController,Po as getStellarQuoteTokens,le as getStellarReserve,ke as getStellarReserveGraph,ce as getStellarReserveHolders,ue as getStellarReserves,he as getStellarSpoke,Se as getStellarSpokeGraph,ie as getStellarSpokes,be as getStellarUserActivity,_e as getStellarUserPositions,Do as mapQuoteResponseToAggregatorSwap,Vo as mapQuoteResponseToStrategyPayload,Wo as mapQuoteResponseToStrategySwap,Jo as mapSorobanError,$o as mapStellarPositionActivityType,Fo as prepareStellarBuiltTx,Xo as prepareStellarTxXdr,ao as stellarLendingDispatchKey,Ie as stellarLendingRead,Eo as syntheticEventOrder,Go as tagStellarInvokedContractError,oo as toBase64Xdr,Mo as toStellarPositionMode};
|