@xoxno/sdk-js 1.0.184 → 1.0.185
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/governance.d.ts +15 -0
- package/dist/cjs/sdk/stellar/lending-read-types.d.ts +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/sdk/stellar/governance.d.ts +15 -0
- package/dist/sdk/stellar/index.cjs +1 -1
- package/dist/sdk/stellar/index.esm.js +1 -1
- package/dist/sdk/stellar/lending-read-types.d.ts +1 -0
- package/package.json +2 -2
|
@@ -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:()=>l,STELLAR_QUOTE_URL:()=>s,STELLAR_SOROBAN_RPC_URL:()=>n,SYNTHETIC_EVENT_ORDER_STRIDE:()=>gr,XOXNO_LENDING_STELLAR_TICKER:()=>_r,buildSameTokenRepaySwapSteps:()=>Dr,buildStellarAcceptOwnershipTx:()=>Ue,buildStellarAddRewardsTx:()=>Ze,buildStellarApproveTokenTx:()=>Ve,buildStellarBatchSwapTx:()=>Or,buildStellarBorrowBatchTx:()=>G,buildStellarBorrowTx:()=>q,buildStellarCctpForwardTx:()=>zr,buildStellarClaimRevenueTx:()=>Ke,buildStellarCreateLiquidityPoolTx:()=>je,buildStellarDisableTokenOracleTx:()=>Xe,buildStellarExecuteStrategyTx:()=>Pr,buildStellarFlashLoanTx:()=>X,buildStellarGovernanceExecuteGovernanceUpgradeTx:()=>Xt,buildStellarGovernanceExecuteGrantGovernanceRoleTx:()=>Ht,buildStellarGovernanceExecuteRevokeGovernanceRoleTx:()=>jt,buildStellarGovernanceExecuteTransferGovOwnTx:()=>Qt,buildStellarGovernanceExecuteTx:()=>Mt,buildStellarGovernanceExecuteUpdateDelayTx:()=>Ft,buildStellarGrantRoleTx:()=>Le,buildStellarLendingIdentifier:()=>wr,buildStellarLiquidateTx:()=>M,buildStellarMigrateFromBlendTx:()=>F,buildStellarMigrateTx:()=>Pe,buildStellarMultiplyTx:()=>H,buildStellarPauseTx:()=>Oe,buildStellarProposeAddAssetToSpokeTx:()=>wt,buildStellarProposeAddSpokeTx:()=>_t,buildStellarProposeApproveBlendPoolTx:()=>Et,buildStellarProposeApproveTokenTx:()=>Rt,buildStellarProposeConfigureMarketOracleTx:()=>Ct,buildStellarProposeCreateHubTx:()=>St,buildStellarProposeCreateLiquidityPoolTx:()=>It,buildStellarProposeDeployPoolTx:()=>Ot,buildStellarProposeDisableTokenOracleTx:()=>Lt,buildStellarProposeEditAssetInSpokeTx:()=>Tt,buildStellarProposeEditOracleToleranceTx:()=>Gt,buildStellarProposeGovernanceUpgradeTx:()=>qt,buildStellarProposeGrantGovernanceRoleTx:()=>Vt,buildStellarProposeMigrateControllerTx:()=>$t,buildStellarProposeRemoveAssetFromSpokeTx:()=>yt,buildStellarProposeRemoveSpokeTx:()=>gt,buildStellarProposeRevokeBlendPoolTx:()=>At,buildStellarProposeRevokeGovernanceRoleTx:()=>zt,buildStellarProposeRevokeTokenTx:()=>kt,buildStellarProposeSetAccumulatorTx:()=>ft,buildStellarProposeSetAggregatorTx:()=>mt,buildStellarProposeSetMinBorrowCollatTx:()=>xt,buildStellarProposeSetPoolTemplateTx:()=>ht,buildStellarProposeSetPositionLimitsTx:()=>bt,buildStellarProposeSetPositionManagerTx:()=>vt,buildStellarProposeTransferCtrlOwnershipTx:()=>Ut,buildStellarProposeTransferGovOwnTx:()=>Wt,buildStellarProposeUpdateDelayTx:()=>Dt,buildStellarProposeUpgradeControllerTx:()=>Nt,buildStellarProposeUpgradePoolParamsTx:()=>Pt,buildStellarProposeUpgradePoolTx:()=>Bt,buildStellarRenewAccountTx:()=>He,buildStellarRepayBatchTx:()=>z,buildStellarRepayDebtWithCollateralTx:()=>K,buildStellarRepayTx:()=>W,buildStellarRevokeRoleTx:()=>Ne,buildStellarRevokeTokenTx:()=>ze,buildStellarSetAccumulatorTx:()=>Ge,buildStellarSetAggregatorTx:()=>Ce,buildStellarSetLiquidityPoolTemplateTx:()=>qe,buildStellarSetMarketOracleConfigTx:()=>We,buildStellarSetOracleToleranceTx:()=>Me,buildStellarSetPositionLimitsTx:()=>De,buildStellarSupplyBatchTx:()=>U,buildStellarSupplyTx:()=>C,buildStellarSwapCollateralTx:()=>Q,buildStellarSwapDebtTx:()=>j,buildStellarTransferOwnershipTx:()=>$e,buildStellarUnpauseTx:()=>Be,buildStellarUpdateAccountThresholdTx:()=>Ye,buildStellarUpdateIndexesTx:()=>Fe,buildStellarUpgradeControllerTx:()=>Ie,buildStellarUpgradeLiquidityPoolParamsTx:()=>Qe,buildStellarWithdrawBatchTx:()=>D,buildStellarWithdrawTx:()=>V,buildTx:()=>$,decodeStellarLendingEvent:()=>Sr,encodeInterestRateModel:()=>ye,encodeMarketOracleConfigInput:()=>Ae,encodeMarketParamsRaw:()=>ve,encodeOracleSourceConfigInput:()=>Ee,encodePositionLimits:()=>xe,encodeStrategyPayloadToRouteXdr:()=>Ir,extractEventOrder:()=>Tr,getStellarAccountPositions:()=>fe,getStellarAggregatorQuote:()=>kr,getStellarAggregatorRouter:()=>u,getStellarAsset:()=>le,getStellarAssetGraph:()=>be,getStellarAssetMarkets:()=>ue,getStellarAssetPage:()=>ie,getStellarAssets:()=>te,getStellarGovernance:()=>c,getStellarGovernanceProposals:()=>he,getStellarHub:()=>ce,getStellarHubGraph:()=>Se,getStellarHubs:()=>re,getStellarLendingContext:()=>ee,getStellarLendingController:()=>i,getStellarQuoteTokens:()=>Er,getStellarReserve:()=>ne,getStellarReserveGraph:()=>ge,getStellarReserveHolders:()=>se,getStellarReserves:()=>ae,getStellarSpoke:()=>de,getStellarSpokeGraph:()=>_e,getStellarSpokes:()=>oe,getStellarUserActivity:()=>me,getStellarUserPositions:()=>pe,mapQuoteResponseToAggregatorSwap:()=>Nr,mapQuoteResponseToStrategyPayload:()=>Br,mapQuoteResponseToStrategySwap:()=>Lr,mapSorobanError:()=>Mr,mapStellarPositionActivityType:()=>vr,prepareStellarBuiltTx:()=>Gr,prepareStellarTxXdr:()=>Cr,stellarLendingDispatchKey:()=>Yt,stellarLendingRead:()=>we,syntheticEventOrder:()=>yr,tagStellarInvokedContractError:()=>Ur,toBase64Xdr:()=>Kt,toStellarPositionMode:()=>qr});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"},l={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function i(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),b=e=>new d.ScInt("string"==typeof e?e:e.toString()).toU64(),S=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}))),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:b(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)")},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??i(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:l[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),b(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 G(e,t){return $(e,"borrow",[m(e.caller),b(t.accountNonce),E([...t.borrows]),v(t.to,m)])}function q(e,t){return G(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),b(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 z(e,t){return $(e,"repay",[m(e.caller),b(t.accountNonce),E([...t.payments])])}function W(e,t){return z(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function M(e,t){return $(e,"liquidate",[m(e.caller),b(t.accountNonce),E([...t.debtPayments])])}function X(e,t){return $(e,"flash_loan",[m(e.caller),R(t.hubId,t.asset),f(t.amount),m(t.receiver),N(t.data)])}function F(e,t){return $(e,"migrate_from_blend",[m(e.caller),b(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),b(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 $(e,"swap_debt",[m(e.caller),b(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 $(e,"swap_collateral",[m(e.caller),b(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 $(e,"repay_debt_with_collateral",[m(e.caller),b(t.accountNonce),R(t.collateral.hubId,t.collateral.asset),f(t.collateralAmount),R(t.debt.hubId,t.debt.asset),L(t.steps),S(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}}),le=(e,t,r)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}`,r),ie=(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}:{}}})},be=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/graph`,{...o,params:{...r}}),Se=(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)=>le(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)=>be(e,t,r,o),hubGraph:(t,r,o)=>Se(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=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)}),ve=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:S(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)}),xe=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}"`)}},ke=(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")])},Ee=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:ke(e.readMode,e.twapRecords)})])}if("RedStonePriceFeed"===t){if("string"!=typeof e.feedId)throw new Error("Stellar builder: RedStone oracle source requires `feedId`");if("number"!=typeof e.maxStaleSeconds)throw new Error("Stellar builder: RedStone oracle source requires `maxStaleSeconds`");return T([g("RedStone"),A({contract:m(e.contract),feed_id:_(e.feedId),max_stale_seconds:b(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},Ae=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"),Ee(r)])),max_price_stale_seconds:b(e.maxPriceStaleSeconds),max_sanity_price_wad:f(e.maxSanityPriceWad),min_sanity_price_wad:f(e.minSanityPriceWad),primary:Ee(e.primary),strategy:h(t),tolerance_bps:h(e.toleranceBps)});var r};function Ie(e,t){return $(e,"upgrade",[y(t.wasmHash)])}function Pe(e,t){return $(e,"migrate",[h(t.newVersion)])}function Oe(e){return $(e,"pause",[])}function Be(e){return $(e,"unpause",[])}function Le(e,t){return $(e,"grant_role",[m(t.account),g(t.role)])}function Ne(e,t){return $(e,"revoke_role",[m(t.account),g(t.role)])}function $e(e,t){return $(e,"transfer_ownership",[m(t.newOwner),h(t.liveUntilLedger)])}function Ue(e){return $(e,"accept_ownership",[])}function Ce(e,t){return $(e,"set_aggregator",[m(t.aggregator)])}function Ge(e,t){return $(e,"set_accumulator",[m(t.accumulator)])}function qe(e,t){return $(e,"set_liquidity_pool_template",[y(t.wasmHash)])}function De(e,t){return $(e,"set_position_limits",[xe(t)])}function Ve(e,t){return $(e,"approve_token",[m(t.token)])}function ze(e,t){return $(e,"revoke_token",[m(t.token)])}function We(e,t){return $(e,"set_market_oracle_config",[R(t.hubId,t.asset),Ae(t.config)])}function Me(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,"disable_token_oracle",[m(t.asset)])}function Fe(e,t){return $(e,"update_indexes",[m(e.caller),T(t.assets.map((e=>R(e.hubId,e.asset))))])}function He(e,t){return $(e,"renew_account",[m(e.caller),b(t.accountNonce)])}function je(e,t){return $(e,"create_liquidity_pool",[h(t.hubId),m(t.asset),ve(t.params)])}function Qe(e,t){return $(e,"upgrade_liquidity_pool_params",[R(t.hubId,t.asset),ye(t.params)])}function Ke(e,t){return $(e,"claim_revenue",[m(e.caller),T(t.assets.map((e=>R(e.hubId,e.asset))))])}function Ze(e,t){return $(e,"add_rewards",[m(e.caller),E(t.rewards)])}function Ye(e,t){return $(e,"update_account_threshold",[m(e.caller),S(t.hasRisks),T(t.accountNonces.map((e=>b(e))))])}const Je="00".repeat(32),et=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)},tt=(e,...t)=>T([g(e),...t]),rt=e=>A({asset:m(e.asset),hub_id:h(e.hubId),params:ve(e.params)}),ot=e=>A({hub_asset:R(e.hubId,e.asset),params:ye(e.params)}),at=e=>A({new_owner:m(e.newOwner),live_until_ledger:h(e.liveUntilLedger)}),nt=e=>A({cfg:Ae(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:S(e.canBorrow),can_collateral:S(e.canCollateral),frozen:S(e.frozen),hub_id:h(e.hubId),paused:S(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)}),lt=e=>A({hub_asset:R(e.hubId,e.asset),spoke_id:h(e.spokeId)}),it=e=>A({asset:m(e.asset),tolerance:h(e.tolerance)}),ut=e=>A({account:m(e.account),role:g(e.role)});function ct(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:l[e.network]}).addOperation(a.call(t,...r)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}const dt=(e,t,r)=>ct(e,"propose",[m(e.caller),t,et(r)]),pt=(e,t,r)=>ct(e,"execute_self",[w(),t,et(r)]);function mt(e,t,r){return dt(e,tt("SetAggregator",m(t.aggregator)),r)}function ft(e,t,r){return dt(e,tt("SetAccumulator",m(t.accumulator)),r)}function ht(e,t,r){return dt(e,tt("SetLiquidityPoolTemplate",y(t.wasmHash)),r)}function bt(e,t,r){return dt(e,tt("SetPositionLimits",xe(t)),r)}function St(e,t){return dt(e,tt("CreateHub"),t)}function _t(e,t){return dt(e,tt("AddSpoke"),t)}function gt(e,t,r){return dt(e,tt("RemoveSpoke",h(t.spokeId)),r)}function wt(e,t,r){return dt(e,tt("AddAssetToSpoke",st(t)),r)}function Tt(e,t,r){return dt(e,tt("EditAssetInSpoke",st(t)),r)}function yt(e,t,r){return dt(e,tt("RemoveAssetFromSpoke",lt(t)),r)}function vt(e,t,r){return dt(e,tt("SetPositionManager",m(t.manager),S(t.isActive)),r)}function xt(e,t,r){return dt(e,tt("SetMinBorrowCollateralUsd",f(t.floorWad)),r)}function Rt(e,t,r){return dt(e,tt("ApproveToken",m(t.token)),r)}function kt(e,t,r){return dt(e,tt("RevokeToken",m(t.token)),r)}function Et(e,t,r){return dt(e,tt("ApproveBlendPool",m(t.pool)),r)}function At(e,t,r){return dt(e,tt("RevokeBlendPool",m(t.pool)),r)}function It(e,t,r){return dt(e,tt("CreateLiquidityPool",rt(t)),r)}function Pt(e,t,r){return dt(e,tt("UpgradeLiquidityPoolParams",ot(t)),r)}function Ot(e,t){return dt(e,tt("DeployPool"),t)}function Bt(e,t,r){return dt(e,tt("UpgradePool",y(t.wasmHash)),r)}function Lt(e,t,r){return dt(e,tt("DisableTokenOracle",m(t.asset)),r)}function Nt(e,t,r){return dt(e,tt("UpgradeController",y(t.wasmHash)),r)}function $t(e,t,r){return dt(e,tt("MigrateController",h(t.newVersion)),r)}function Ut(e,t,r){return dt(e,tt("TransferCtrlOwnership",at(t)),r)}function Ct(e,t,r){return dt(e,tt("ConfigureMarketOracle",nt(t)),r)}function Gt(e,t,r){return dt(e,tt("EditOracleTolerance",it(t)),r)}function qt(e,t,r){return dt(e,tt("UpgradeGov",y(t.wasmHash)),r)}function Dt(e,t,r){return dt(e,tt("UpdateGovDelay",h(t.newDelay)),r)}function Vt(e,t,r){return dt(e,tt("GrantGovRole",ut(t)),r)}function zt(e,t,r){return dt(e,tt("RevokeGovRole",ut(t)),r)}function Wt(e,t,r){return dt(e,tt("TransferGovOwnership",at(t)),r)}function Mt(e,t){const r=T(t.argsXdr.map((e=>d.xdr.ScVal.fromXDR(e,"base64")))),o=et(t.predecessor??Je);return ct(e,"execute",[w(),m(t.target),g(t.functionName),r,o,et(t.salt)])}function Xt(e,t,r){return pt(e,tt("UpgradeGov",y(t.wasmHash)),r)}function Ft(e,t,r){return pt(e,tt("UpdateGovDelay",h(t.newDelay)),r)}function Ht(e,t,r){return pt(e,tt("GrantGovRole",ut(t)),r)}function jt(e,t,r){return pt(e,tt("RevokeGovRole",ut(t)),r)}function Qt(e,t,r){return pt(e,tt("TransferGovOwnership",at(t)),r)}const Kt=e=>e.toXDR("base64"),Zt=e=>d.xdr.ScVal.fromXDR(e,"base64"),Yt=e=>e.map((e=>String((0,d.scValToNative)(Zt(e))))).join(":"),Jt=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),er=e=>Number(e),tr=e=>String(e),rr=e=>null==e?void 0:Jt(e),or=e=>null==e?void 0:tr(e),ar=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),nr=["None","Multiply","Long","Short"],sr=["Single","PrimaryWithAnchor"],lr=["ReflectorSep40","RedStonePriceFeed"],ir=["Spot","Twap"],ur=["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"],cr=e=>Array.isArray(e)?e:[],dr=(e,t)=>{const r="Borrow"===t;return{action:(o=e[0],ur[er(o)]??Jt(o)),positionType:t,hubId:er(e[1]),asset:tr(e[2]),scaledAmountRay:Jt(e[3]),indexRay:Jt(e[4]),amount:Jt(e[5]),liquidationThresholdBps:r?void 0:er(e[6]),liquidationBonusBps:r?void 0:er(e[7]),loanToValueBps:r?void 0:er(e[8]),liquidationFeesBps:r?void 0:er(e[9])};var o},pr=e=>{return{owner:tr(e[0]),spokeId:er(e[1]),mode:(t=e[2],nr[er(t)]??"None")};var t},mr=(e,t)=>{const r=ir[er(e[`${t}_read_mode`])]??"Spot",o=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=o?{kind:"Stellar",value:tr(o)}:null!=a?{kind:"Symbol",value:tr(a)}:void 0;return{provider:lr[er(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:tr(e[`${t}_contract`]),asset:n,feedId:or(e[`${t}_feed_id`]),readMode:r,twapRecords:"Twap"===r?er(e[`${t}_twap_records`]):void 0,decimals:er(e[`${t}_decimals`]),resolutionSeconds:er(e[`${t}_resolution_seconds`]),maxStaleSeconds:er(e[`${t}_max_stale_seconds`])}},fr=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:tr(e.base_token_id),quoteTokenId:tr(e.quote_token_id),tolerance:{upperRatio:er(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:er(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:er(e.asset_decimals),maxPriceStaleSeconds:er(e.max_price_stale_seconds),strategy:sr[er(e.strategy)]??"Single",primary:mr(e,"primary"),anchor:t?mr(e,"anchor"):void 0,primaryQuoteToken:or(e.primary_quote_token),anchorQuoteToken:or(e.anchor_quote_token),minSanityPriceWad:rr(e.min_sanity_price_wad),maxSanityPriceWad:rr(e.max_sanity_price_wad)}},hr={"market:create":e=>({topic:"market:create",data:{hubId:er(e.hub_id),baseAsset:tr(e.base_asset),maxBorrowRate:Jt(e.max_borrow_rate),baseBorrowRate:Jt(e.base_borrow_rate),slope1:Jt(e.slope1),slope2:Jt(e.slope2),slope3:Jt(e.slope3),midUtilization:Jt(e.mid_utilization),optimalUtilization:Jt(e.optimal_utilization),maxUtilization:Jt(e.max_utilization),reserveFactor:er(e.reserve_factor),marketAddress:tr(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:tr(e.asset),maxBorrowRateRay:Jt(e.max_borrow_rate),baseBorrowRateRay:Jt(e.base_borrow_rate),slope1Ray:Jt(e.slope1),slope2Ray:Jt(e.slope2),slope3Ray:Jt(e.slope3),midUtilizationRay:Jt(e.mid_utilization),optimalUtilizationRay:Jt(e.optimal_utilization),maxUtilizationRay:Jt(e.max_utilization),reserveFactorBps:er(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:cr(e).map((e=>{return t=cr(e),{hubId:er(t[0]),asset:tr(t[1]),timestamp:er(t[2]),supplyIndexRay:Jt(t[3]),borrowIndexRay:Jt(t[4]),cash:Jt(t[5]),suppliedRay:Jt(t[6]),borrowedRay:Jt(t[7]),revenueRay:Jt(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:cr(e).map((e=>{const t=e;return{hubId:er(t.hub_id),asset:tr(t.asset),params:(r=t.params,{maxBorrowRateRay:Jt(r.max_borrow_rate),baseBorrowRateRay:Jt(r.base_borrow_rate),slope1Ray:Jt(r.slope1),slope2Ray:Jt(r.slope2),slope3Ray:Jt(r.slope3),midUtilizationRay:Jt(r.mid_utilization),optimalUtilizationRay:Jt(r.optimal_utilization),maxUtilizationRay:Jt(r.max_utilization),reserveFactorBps:er(r.reserve_factor),isFlashloanable:Boolean(r.is_flashloanable),flashloanFeeBps:er(r.flashloan_fee),assetId:tr(r.asset_id),assetDecimals:er(r.asset_decimals)})};var r}))}}),"position:batch_update":e=>{const t=cr(e);return{topic:"position:batch_update",data:{accountId:Jt(t[0]),accountAttributes:pr(cr(t[1])),updates:[...cr(t[2]).map((e=>dr(cr(e),"Deposit"))),...cr(t[3]).map((e=>dr(cr(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:er(e.hub_id),asset:tr(e.asset),receiver:tr(e.receiver),caller:tr(e.caller),amount:Jt(e.amount),fee:Jt(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:tr(e.asset),oracle:fr(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:tr(e.liquidator),accountId:Jt(e.account_id),repaidUsdWad:Jt(e.repaid_usd_wad),bonusBps:Jt(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:Jt(e.account_id),totalBorrowUsdWad:Jt(e.total_borrow_usd_wad),totalCollateralUsdWad:Jt(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:tr(e.token),amount:Jt(e.amount),usdValueWad:Jt(e.usd_value_wad),accountId:Jt(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:er(e.hub_id),asset:tr(e.asset),amount:Jt(e.amount),fee:Jt(e.fee),amountSent:Jt(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:ar(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:tr(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:tr(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:ar(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:er(e.max_supply_positions),maxBorrowPositions:er(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:tr(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:er(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:Jt(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:Jt(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:er(t.liquidation_bonus_factor_bps)}}}},br=Object.freeze(Object.keys(hr));function Sr(e,t){const r=Yt(e),o=hr[r];return o?o((0,d.scValToNative)(Zt(t))):null}const _r="XLENDXLM-a7c9f3",gr=1e4;function wr(e){const t=BigInt(e).toString(16),r=t.length%2==0?t:`0${t}`;return`${_r}-${r}`}function Tr(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function yr(e,t=0){return e*gr+t}function vr(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const xr=(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()},Rr=e=>e.baseUrl??s[e.network];async function kr(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const r=xr(Rr(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 Er(e){const t=xr(Rr(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 Ar=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,Ir=e=>I(e).toXDR("base64");function Pr(e,t){const r=e.routerAddress??u(e.network),o=new d.Contract(r),a=new d.Account(e.caller,e.sourceSequence),n=L(Ar(t,e.referralId));return{xdr:new d.TransactionBuilder(a,{fee:e.fee??d.BASE_FEE,networkPassphrase:l[e.network]}).addOperation(o.call("execute_strategy",m(e.caller),f(e.totalIn),n)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function Or(e,t){return Pr(e,t)}function Br(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($r),splitPpm:e.splitPpm}))):[{hops:e.hops.map($r),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Lr(e,t={}){const r=e;return"string"==typeof r.routeXdr&&r.routeXdr.length>0?{routeXdr:r.routeXdr}:Br(e,t)}const Nr=Br,$r=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Ur(e,t){const r=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${r}`)}async function Cr(e,t,r){const o=d.TransactionBuilder.fromXDR(t,"base64");try{return(await e.prepareTransaction(o)).toXDR()}catch(e){if(r?.invokedContractId)throw Ur(r.invokedContractId,e);throw e}}async function Gr(e,t,r){return Cr(e,t.xdr,r)}function qr(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 Dr(e,t){return new Uint8Array(0)}const Vr=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(Vr(e.message)),d.xdr.ScVal.scvBytes(Vr(e.attestation)));return{xdr:new d.TransactionBuilder(t,{fee:e.fee??"10000000",networkPassphrase:l[e.network]}).addOperation(r).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const Wr={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 Mr(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const r=Number(t[1]),o=Wr[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:()=>Je,STELLAR_LENDING_CONTROLLER:()=>r,STELLAR_LENDING_TOPICS:()=>_r,STELLAR_NETWORK_PASSPHRASE:()=>i,STELLAR_QUOTE_URL:()=>s,STELLAR_SOROBAN_RPC_URL:()=>n,SYNTHETIC_EVENT_ORDER_STRIDE:()=>Tr,XOXNO_LENDING_STELLAR_TICKER:()=>wr,buildSameTokenRepaySwapSteps:()=>Wr,buildStellarAcceptOwnershipTx:()=>Ue,buildStellarAddRewardsTx:()=>Ze,buildStellarApproveTokenTx:()=>Ve,buildStellarBatchSwapTx:()=>Lr,buildStellarBorrowBatchTx:()=>q,buildStellarBorrowTx:()=>G,buildStellarCctpForwardTx:()=>Mr,buildStellarClaimRevenueTx:()=>Ke,buildStellarCreateLiquidityPoolTx:()=>je,buildStellarDisableTokenOracleTx:()=>Xe,buildStellarExecuteStrategyTx:()=>Br,buildStellarFlashLoanTx:()=>X,buildStellarGovernanceExecuteGovernanceUpgradeTx:()=>Ht,buildStellarGovernanceExecuteGrantGovernanceRoleTx:()=>Qt,buildStellarGovernanceExecuteRevokeGovernanceRoleTx:()=>Kt,buildStellarGovernanceExecuteTransferGovOwnTx:()=>Zt,buildStellarGovernanceExecuteTx:()=>Ft,buildStellarGovernanceExecuteUpdateDelayTx:()=>jt,buildStellarGrantRoleTx:()=>Le,buildStellarLendingIdentifier:()=>yr,buildStellarLiquidateTx:()=>M,buildStellarMigrateFromBlendTx:()=>F,buildStellarMigrateTx:()=>Pe,buildStellarMultiplyTx:()=>H,buildStellarPauseTx:()=>Oe,buildStellarProposeAddAssetToSpokeTx:()=>Tt,buildStellarProposeAddSpokeTx:()=>gt,buildStellarProposeApproveBlendPoolTx:()=>It,buildStellarProposeApproveTokenTx:()=>Et,buildStellarProposeConfigureMarketOracleTx:()=>Gt,buildStellarProposeCreateHubTx:()=>_t,buildStellarProposeCreateLiquidityPoolTx:()=>Ot,buildStellarProposeDeployPoolTx:()=>Lt,buildStellarProposeDisableTokenOracleTx:()=>$t,buildStellarProposeEditAssetInSpokeTx:()=>yt,buildStellarProposeEditOracleToleranceTx:()=>Dt,buildStellarProposeGovernanceUpgradeTx:()=>Vt,buildStellarProposeGrantGovernanceRoleTx:()=>zt,buildStellarProposeMigrateControllerTx:()=>Ct,buildStellarProposeRemoveAssetFromSpokeTx:()=>vt,buildStellarProposeRemoveSpokeTx:()=>wt,buildStellarProposeRevokeBlendPoolTx:()=>Pt,buildStellarProposeRevokeGovernanceRoleTx:()=>Mt,buildStellarProposeRevokeTokenTx:()=>At,buildStellarProposeSetAccumulatorTx:()=>ht,buildStellarProposeSetAggregatorTx:()=>ft,buildStellarProposeSetMinBorrowCollatTx:()=>kt,buildStellarProposeSetPoolTemplateTx:()=>bt,buildStellarProposeSetPositionLimitsTx:()=>St,buildStellarProposeSetPositionManagerTx:()=>Rt,buildStellarProposeSetSpokeLiquidationCurveTx:()=>xt,buildStellarProposeTransferCtrlOwnershipTx:()=>qt,buildStellarProposeTransferGovOwnTx:()=>Xt,buildStellarProposeUpdateDelayTx:()=>Wt,buildStellarProposeUpgradeControllerTx:()=>Ut,buildStellarProposeUpgradePoolParamsTx:()=>Bt,buildStellarProposeUpgradePoolTx:()=>Nt,buildStellarRenewAccountTx:()=>He,buildStellarRepayBatchTx:()=>W,buildStellarRepayDebtWithCollateralTx:()=>K,buildStellarRepayTx:()=>z,buildStellarRevokeRoleTx:()=>Ne,buildStellarRevokeTokenTx:()=>We,buildStellarSetAccumulatorTx:()=>qe,buildStellarSetAggregatorTx:()=>Ce,buildStellarSetLiquidityPoolTemplateTx:()=>Ge,buildStellarSetMarketOracleConfigTx:()=>ze,buildStellarSetOracleToleranceTx:()=>Me,buildStellarSetPositionLimitsTx:()=>De,buildStellarSupplyBatchTx:()=>U,buildStellarSupplyTx:()=>C,buildStellarSwapCollateralTx:()=>Q,buildStellarSwapDebtTx:()=>j,buildStellarTransferOwnershipTx:()=>$e,buildStellarUnpauseTx:()=>Be,buildStellarUpdateAccountThresholdTx:()=>Ye,buildStellarUpdateIndexesTx:()=>Fe,buildStellarUpgradeControllerTx:()=>Ie,buildStellarUpgradeLiquidityPoolParamsTx:()=>Qe,buildStellarWithdrawBatchTx:()=>D,buildStellarWithdrawTx:()=>V,buildTx:()=>$,decodeStellarLendingEvent:()=>gr,encodeInterestRateModel:()=>ye,encodeMarketOracleConfigInput:()=>Ae,encodeMarketParamsRaw:()=>ve,encodeOracleSourceConfigInput:()=>Ee,encodePositionLimits:()=>xe,encodeStrategyPayloadToRouteXdr:()=>Or,extractEventOrder:()=>vr,getStellarAccountPositions:()=>fe,getStellarAggregatorQuote:()=>Ar,getStellarAggregatorRouter:()=>u,getStellarAsset:()=>ie,getStellarAssetGraph:()=>be,getStellarAssetMarkets:()=>ue,getStellarAssetPage:()=>le,getStellarAssets:()=>te,getStellarGovernance:()=>c,getStellarGovernanceProposals:()=>he,getStellarHub:()=>ce,getStellarHubGraph:()=>Se,getStellarHubs:()=>re,getStellarLendingContext:()=>ee,getStellarLendingController:()=>l,getStellarQuoteTokens:()=>Ir,getStellarReserve:()=>ne,getStellarReserveGraph:()=>ge,getStellarReserveHolders:()=>se,getStellarReserves:()=>ae,getStellarSpoke:()=>de,getStellarSpokeGraph:()=>_e,getStellarSpokes:()=>oe,getStellarUserActivity:()=>me,getStellarUserPositions:()=>pe,mapQuoteResponseToAggregatorSwap:()=>Ur,mapQuoteResponseToStrategyPayload:()=>Nr,mapQuoteResponseToStrategySwap:()=>$r,mapSorobanError:()=>Fr,mapStellarPositionActivityType:()=>Rr,prepareStellarBuiltTx:()=>Dr,prepareStellarTxXdr:()=>Gr,stellarLendingDispatchKey:()=>er,stellarLendingRead:()=>we,syntheticEventOrder:()=>xr,tagStellarInvokedContractError:()=>qr,toBase64Xdr:()=>Yt,toStellarPositionMode:()=>Vr});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),b=e=>new d.ScInt("string"==typeof e?e:e.toString()).toU64(),S=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}))),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:b(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)")},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),b(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 $(e,"borrow",[m(e.caller),b(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 $(e,"withdraw",[m(e.caller),b(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 $(e,"repay",[m(e.caller),b(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 $(e,"liquidate",[m(e.caller),b(t.accountNonce),E([...t.debtPayments])])}function X(e,t){return $(e,"flash_loan",[m(e.caller),R(t.hubId,t.asset),f(t.amount),m(t.receiver),N(t.data)])}function F(e,t){return $(e,"migrate_from_blend",[m(e.caller),b(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),b(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 $(e,"swap_debt",[m(e.caller),b(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 $(e,"swap_collateral",[m(e.caller),b(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 $(e,"repay_debt_with_collateral",[m(e.caller),b(t.accountNonce),R(t.collateral.hubId,t.collateral.asset),f(t.collateralAmount),R(t.debt.hubId,t.debt.asset),L(t.steps),S(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}:{}}})},be=(e,t,r,o)=>e.fetchWithTimeout(`${Z}/assets/${J(t)}/graph`,{...o,params:{...r}}),Se=(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)=>be(e,t,r,o),hubGraph:(t,r,o)=>Se(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=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)}),ve=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:S(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)}),xe=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}"`)}},ke=(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")])},Ee=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:ke(e.readMode,e.twapRecords)})])}if("RedStonePriceFeed"===t){if("string"!=typeof e.feedId)throw new Error("Stellar builder: RedStone oracle source requires `feedId`");if("number"!=typeof e.maxStaleSeconds)throw new Error("Stellar builder: RedStone oracle source requires `maxStaleSeconds`");return T([g("RedStone"),A({contract:m(e.contract),feed_id:_(e.feedId),max_stale_seconds:b(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},Ae=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"),Ee(r)])),max_price_stale_seconds:b(e.maxPriceStaleSeconds),max_sanity_price_wad:f(e.maxSanityPriceWad),min_sanity_price_wad:f(e.minSanityPriceWad),primary:Ee(e.primary),strategy:h(t),tolerance_bps:h(e.toleranceBps)});var r};function Ie(e,t){return $(e,"upgrade",[y(t.wasmHash)])}function Pe(e,t){return $(e,"migrate",[h(t.newVersion)])}function Oe(e){return $(e,"pause",[])}function Be(e){return $(e,"unpause",[])}function Le(e,t){return $(e,"grant_role",[m(t.account),g(t.role)])}function Ne(e,t){return $(e,"revoke_role",[m(t.account),g(t.role)])}function $e(e,t){return $(e,"transfer_ownership",[m(t.newOwner),h(t.liveUntilLedger)])}function Ue(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 Ge(e,t){return $(e,"set_liquidity_pool_template",[y(t.wasmHash)])}function De(e,t){return $(e,"set_position_limits",[xe(t)])}function Ve(e,t){return $(e,"approve_token",[m(t.token)])}function We(e,t){return $(e,"revoke_token",[m(t.token)])}function ze(e,t){return $(e,"set_market_oracle_config",[R(t.hubId,t.asset),Ae(t.config)])}function Me(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,"disable_token_oracle",[m(t.asset)])}function Fe(e,t){return $(e,"update_indexes",[m(e.caller),T(t.assets.map((e=>R(e.hubId,e.asset))))])}function He(e,t){return $(e,"renew_account",[m(e.caller),b(t.accountNonce)])}function je(e,t){return $(e,"create_liquidity_pool",[h(t.hubId),m(t.asset),ve(t.params)])}function Qe(e,t){return $(e,"upgrade_liquidity_pool_params",[R(t.hubId,t.asset),ye(t.params)])}function Ke(e,t){return $(e,"claim_revenue",[m(e.caller),T(t.assets.map((e=>R(e.hubId,e.asset))))])}function Ze(e,t){return $(e,"add_rewards",[m(e.caller),E(t.rewards)])}function Ye(e,t){return $(e,"update_account_threshold",[m(e.caller),S(t.hasRisks),T(t.accountNonces.map((e=>b(e))))])}const Je="00".repeat(32),et=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)},tt=(e,...t)=>T([g(e),...t]),rt=e=>A({asset:m(e.asset),hub_id:h(e.hubId),params:ve(e.params)}),ot=e=>A({hub_asset:R(e.hubId,e.asset),params:ye(e.params)}),at=e=>A({new_owner:m(e.newOwner),live_until_ledger:h(e.liveUntilLedger)}),nt=e=>A({cfg:Ae(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:S(e.canBorrow),can_collateral:S(e.canCollateral),frozen:S(e.frozen),hub_id:h(e.hubId),paused:S(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)}),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 bt(e,t,r){return pt(e,tt("SetLiquidityPoolTemplate",y(t.wasmHash)),r)}function St(e,t,r){return pt(e,tt("SetPositionLimits",xe(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 Tt(e,t,r){return pt(e,tt("AddAssetToSpoke",st(t)),r)}function yt(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),S(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 Nt(e,t,r){return pt(e,tt("UpgradePool",y(t.wasmHash)),r)}function $t(e,t,r){return pt(e,tt("DisableTokenOracle",m(t.asset)),r)}function Ut(e,t,r){return pt(e,tt("UpgradeController",y(t.wasmHash)),r)}function Ct(e,t,r){return pt(e,tt("MigrateController",h(t.newVersion)),r)}function qt(e,t,r){return pt(e,tt("TransferCtrlOwnership",at(t)),r)}function Gt(e,t,r){return pt(e,tt("ConfigureMarketOracle",nt(t)),r)}function Dt(e,t,r){return pt(e,tt("EditOracleTolerance",ut(t)),r)}function Vt(e,t,r){return pt(e,tt("UpgradeGov",y(t.wasmHash)),r)}function Wt(e,t,r){return pt(e,tt("UpdateGovDelay",h(t.newDelay)),r)}function zt(e,t,r){return pt(e,tt("GrantGovRole",ct(t)),r)}function Mt(e,t,r){return pt(e,tt("RevokeGovRole",ct(t)),r)}function Xt(e,t,r){return pt(e,tt("TransferGovOwnership",at(t)),r)}function Ft(e,t){const r=T(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 Ht(e,t,r){return mt(e,tt("UpgradeGov",y(t.wasmHash)),r)}function jt(e,t,r){return mt(e,tt("UpdateGovDelay",h(t.newDelay)),r)}function Qt(e,t,r){return mt(e,tt("GrantGovRole",ct(t)),r)}function Kt(e,t,r){return mt(e,tt("RevokeGovRole",ct(t)),r)}function Zt(e,t,r){return mt(e,tt("TransferGovOwnership",at(t)),r)}const Yt=e=>e.toXDR("base64"),Jt=e=>d.xdr.ScVal.fromXDR(e,"base64"),er=e=>e.map((e=>String((0,d.scValToNative)(Jt(e))))).join(":"),tr=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),rr=e=>Number(e),or=e=>String(e),ar=e=>null==e?void 0:tr(e),nr=e=>null==e?void 0:or(e),sr=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),ir=["None","Multiply","Long","Short"],lr=["Single","PrimaryWithAnchor"],ur=["ReflectorSep40","RedStonePriceFeed"],cr=["Spot","Twap"],dr=["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"],pr=e=>Array.isArray(e)?e:[],mr=(e,t)=>{const r="Borrow"===t;return{action:(o=e[0],dr[rr(o)]??tr(o)),positionType:t,hubId:rr(e[1]),asset:or(e[2]),scaledAmountRay:tr(e[3]),indexRay:tr(e[4]),amount:tr(e[5]),liquidationThresholdBps:r?void 0:rr(e[6]),liquidationBonusBps:r?void 0:rr(e[7]),loanToValueBps:r?void 0:rr(e[8]),liquidationFeesBps:r?void 0:rr(e[9])};var o},fr=e=>{return{owner:or(e[0]),spokeId:rr(e[1]),mode:(t=e[2],ir[rr(t)]??"None")};var t},hr=(e,t)=>{const r=cr[rr(e[`${t}_read_mode`])]??"Spot",o=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=o?{kind:"Stellar",value:or(o)}:null!=a?{kind:"Symbol",value:or(a)}:void 0;return{provider:ur[rr(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:or(e[`${t}_contract`]),asset:n,feedId:nr(e[`${t}_feed_id`]),readMode:r,twapRecords:"Twap"===r?rr(e[`${t}_twap_records`]):void 0,decimals:rr(e[`${t}_decimals`]),resolutionSeconds:rr(e[`${t}_resolution_seconds`]),maxStaleSeconds:rr(e[`${t}_max_stale_seconds`])}},br=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:or(e.base_token_id),quoteTokenId:or(e.quote_token_id),tolerance:{upperRatio:rr(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:rr(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:rr(e.asset_decimals),maxPriceStaleSeconds:rr(e.max_price_stale_seconds),strategy:lr[rr(e.strategy)]??"Single",primary:hr(e,"primary"),anchor:t?hr(e,"anchor"):void 0,primaryQuoteToken:nr(e.primary_quote_token),anchorQuoteToken:nr(e.anchor_quote_token),minSanityPriceWad:ar(e.min_sanity_price_wad),maxSanityPriceWad:ar(e.max_sanity_price_wad)}},Sr={"market:create":e=>({topic:"market:create",data:{hubId:rr(e.hub_id),baseAsset:or(e.base_asset),maxBorrowRate:tr(e.max_borrow_rate),baseBorrowRate:tr(e.base_borrow_rate),slope1:tr(e.slope1),slope2:tr(e.slope2),slope3:tr(e.slope3),midUtilization:tr(e.mid_utilization),optimalUtilization:tr(e.optimal_utilization),maxUtilization:tr(e.max_utilization),reserveFactor:rr(e.reserve_factor),marketAddress:or(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:or(e.asset),maxBorrowRateRay:tr(e.max_borrow_rate),baseBorrowRateRay:tr(e.base_borrow_rate),slope1Ray:tr(e.slope1),slope2Ray:tr(e.slope2),slope3Ray:tr(e.slope3),midUtilizationRay:tr(e.mid_utilization),optimalUtilizationRay:tr(e.optimal_utilization),maxUtilizationRay:tr(e.max_utilization),reserveFactorBps:rr(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:pr(e).map((e=>{return t=pr(e),{hubId:rr(t[0]),asset:or(t[1]),timestamp:rr(t[2]),supplyIndexRay:tr(t[3]),borrowIndexRay:tr(t[4]),cash:tr(t[5]),suppliedRay:tr(t[6]),borrowedRay:tr(t[7]),revenueRay:tr(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:pr(e).map((e=>{const t=e;return{hubId:rr(t.hub_id),asset:or(t.asset),params:(r=t.params,{maxBorrowRateRay:tr(r.max_borrow_rate),baseBorrowRateRay:tr(r.base_borrow_rate),slope1Ray:tr(r.slope1),slope2Ray:tr(r.slope2),slope3Ray:tr(r.slope3),midUtilizationRay:tr(r.mid_utilization),optimalUtilizationRay:tr(r.optimal_utilization),maxUtilizationRay:tr(r.max_utilization),reserveFactorBps:rr(r.reserve_factor),isFlashloanable:Boolean(r.is_flashloanable),flashloanFeeBps:rr(r.flashloan_fee),assetId:or(r.asset_id),assetDecimals:rr(r.asset_decimals)})};var r}))}}),"position:batch_update":e=>{const t=pr(e);return{topic:"position:batch_update",data:{accountId:tr(t[0]),accountAttributes:fr(pr(t[1])),updates:[...pr(t[2]).map((e=>mr(pr(e),"Deposit"))),...pr(t[3]).map((e=>mr(pr(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:rr(e.hub_id),asset:or(e.asset),receiver:or(e.receiver),caller:or(e.caller),amount:tr(e.amount),fee:tr(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:or(e.asset),oracle:br(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:or(e.liquidator),accountId:tr(e.account_id),repaidUsdWad:tr(e.repaid_usd_wad),bonusBps:tr(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:tr(e.account_id),totalBorrowUsdWad:tr(e.total_borrow_usd_wad),totalCollateralUsdWad:tr(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:or(e.token),amount:tr(e.amount),usdValueWad:tr(e.usd_value_wad),accountId:tr(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:rr(e.hub_id),asset:or(e.asset),amount:tr(e.amount),fee:tr(e.fee),amountSent:tr(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:sr(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:or(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:or(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:sr(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:rr(e.max_supply_positions),maxBorrowPositions:rr(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:or(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:rr(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:tr(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:tr(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:rr(t.liquidation_bonus_factor_bps)}}}},_r=Object.freeze(Object.keys(Sr));function gr(e,t){const r=er(e),o=Sr[r];return o?o((0,d.scValToNative)(Jt(t))):null}const wr="XLENDXLM-a7c9f3",Tr=1e4;function yr(e){const t=BigInt(e).toString(16),r=t.length%2==0?t:`0${t}`;return`${wr}-${r}`}function vr(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function xr(e,t=0){return e*Tr+t}function Rr(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const kr=(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()},Er=e=>e.baseUrl??s[e.network];async function Ar(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const r=kr(Er(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 Ir(e){const t=kr(Er(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 Pr=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,Or=e=>I(e).toXDR("base64");function Br(e,t){const r=e.routerAddress??u(e.network),o=new d.Contract(r),a=new d.Account(e.caller,e.sourceSequence),n=L(Pr(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 Lr(e,t){return Br(e,t)}function Nr(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(Cr),splitPpm:e.splitPpm}))):[{hops:e.hops.map(Cr),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}:Nr(e,t)}const Ur=Nr,Cr=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function qr(e,t){const r=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${r}`)}async function Gr(e,t,r){const o=d.TransactionBuilder.fromXDR(t,"base64");try{return(await e.prepareTransaction(o)).toXDR()}catch(e){if(r?.invokedContractId)throw qr(r.invokedContractId,e);throw e}}async function Dr(e,t,r){return Gr(e,t.xdr,r)}function Vr(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 Wr(e,t){return new Uint8Array(0)}const zr=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 Mr(e){const t=new d.Account(e.caller,e.sourceSequence),r=new d.Contract(e.forwarderAddress).call("mint_and_forward",d.xdr.ScVal.scvBytes(zr(e.message)),d.xdr.ScVal.scvBytes(zr(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 Xr={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 Fr(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const r=Number(t[1]),o=Xr[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 l={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},u={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=l[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=u[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),l=new r(i),u=new e(t.caller,t.sourceSequence);return{xdr:new n(u,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(l.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function D(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 W(e,t){return D(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 M(e,t){return X(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function F(e,t){return z(e,"repay",[w(e.caller),v(t.accountNonce),B([...t.payments])])}function H(e,t){return F(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),le=(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}:{}}})},ue=(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?le(e,t,o):le(e,{},t);var r},reserve:(t,o,r,a)=>ue(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=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)}),xe=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)}),Ae=e=>N({max_borrow_positions:y(e.maxBorrowPositions),max_supply_positions:y(e.maxSupplyPositions)}),Ee=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}"`)}},$e=(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")])},Be=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:Ee(e.asset),contract:w(e.contract),read_mode:$e(e.readMode,e.twapRecords)})])}if("RedStonePriceFeed"===t){if("string"!=typeof e.feedId)throw new Error("Stellar builder: RedStone oracle source requires `feedId`");if("number"!=typeof e.maxStaleSeconds)throw new Error("Stellar builder: RedStone oracle source requires `maxStaleSeconds`");return I([R("RedStone"),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}"`)},Ne=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"),Be(o)])),max_price_stale_seconds:v(e.maxPriceStaleSeconds),max_sanity_price_wad:g(e.maxSanityPriceWad),min_sanity_price_wad:g(e.minSanityPriceWad),primary:Be(e.primary),strategy:y(t),tolerance_bps:y(e.toleranceBps)});var o};function Oe(e,t){return z(e,"upgrade",[x(t.wasmHash)])}function Pe(e,t){return z(e,"migrate",[y(t.newVersion)])}function Ue(e){return z(e,"pause",[])}function qe(e){return z(e,"unpause",[])}function Le(e,t){return z(e,"grant_role",[w(t.account),R(t.role)])}function Ve(e,t){return z(e,"revoke_role",[w(t.account),R(t.role)])}function ze(e,t){return z(e,"transfer_ownership",[w(t.newOwner),y(t.liveUntilLedger)])}function De(e){return z(e,"accept_ownership",[])}function We(e,t){return z(e,"set_aggregator",[w(t.aggregator)])}function Ce(e,t){return z(e,"set_accumulator",[w(t.accumulator)])}function Ge(e,t){return z(e,"set_liquidity_pool_template",[x(t.wasmHash)])}function Xe(e,t){return z(e,"set_position_limits",[Ae(t)])}function Me(e,t){return z(e,"approve_token",[w(t.token)])}function Fe(e,t){return z(e,"revoke_token",[w(t.token)])}function He(e,t){return z(e,"set_market_oracle_config",[E(t.hubId,t.asset),Ne(t.config)])}function je(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 Qe(e,t){return z(e,"disable_token_oracle",[w(t.asset)])}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),xe(t.params)])}function Ye(e,t){return z(e,"upgrade_liquidity_pool_params",[E(t.hubId,t.asset),Ie(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)}),lt=e=>N({account:w(e.account),role:R(e.role)});function ut(t,a,s){const i=t.governanceAddress??_(t.network),l=new r(i),u=new e(t.caller,t.sourceSequence);return{xdr:new n(u,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(l.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const ct=(e,t,o)=>ut(e,"propose",[w(e.caller),t,at(o)]),pt=(e,t,o)=>ut(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",Ae(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("SetPositionManager",w(t.manager),S(t.isActive)),o)}function kt(e,t,o){return ct(e,nt("SetMinBorrowCollateralUsd",g(t.floorWad)),o)}function Rt(e,t,o){return ct(e,nt("ApproveToken",w(t.token)),o)}function Tt(e,t,o){return ct(e,nt("RevokeToken",w(t.token)),o)}function It(e,t,o){return ct(e,nt("ApproveBlendPool",w(t.pool)),o)}function xt(e,t,o){return ct(e,nt("RevokeBlendPool",w(t.pool)),o)}function At(e,t,o){return ct(e,nt("CreateLiquidityPool",N({asset:w((r=t).asset),hub_id:y(r.hubId),params:xe(r.params)})),o);var r}function Et(e,t,o){return ct(e,nt("UpgradeLiquidityPoolParams",N({hub_asset:E((r=t).hubId,r.asset),params:Ie(r.params)})),o);var r}function $t(e,t){return ct(e,nt("DeployPool"),t)}function Bt(e,t,o){return ct(e,nt("UpgradePool",x(t.wasmHash)),o)}function Nt(e,t,o){return ct(e,nt("DisableTokenOracle",w(t.asset)),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:Ne((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 Dt(e,t,o){return ct(e,nt("GrantGovRole",lt(t)),o)}function Wt(e,t,o){return ct(e,nt("RevokeGovRole",lt(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 ut(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 Mt(e,t,o){return pt(e,nt("UpdateGovDelay",y(t.newDelay)),o)}function Ft(e,t,o){return pt(e,nt("GrantGovRole",lt(t)),o)}function Ht(e,t,o){return pt(e,nt("RevokeGovRole",lt(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"],lo=["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"],uo=e=>Array.isArray(e)?e:[],co=(e,t)=>{const o="Borrow"===t;return{action:(r=e[0],lo[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:uo(e).map((e=>{return t=uo(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:uo(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=uo(e);return{topic:"position:batch_update",data:{accountId:Kt(t[0]),accountAttributes:po(uo(t[1])),updates:[...uo(t[2]).map((e=>co(uo(e),"Deposit"))),...uo(t[3]).map((e=>co(uo(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),l=new e(t.caller,t.sourceSequence),u=L(Ao(a,t.referralId));return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:m[t.network]}).addOperation(i.call("execute_strategy",w(t.caller),g(t.totalIn),u)).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 Do(e,t){return new Uint8Array(0)}const Wo=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(Wo(t.message)),i.ScVal.scvBytes(Wo(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{u as STELLAR_AGGREGATOR_ROUTER,c as STELLAR_GOVERNANCE,rt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,l 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,Do 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,Qe as buildStellarDisableTokenOracleTx,$o as buildStellarExecuteStrategyTx,Q as buildStellarFlashLoanTx,Xt as buildStellarGovernanceExecuteGovernanceUpgradeTx,Ft as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Ht as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,jt as buildStellarGovernanceExecuteTransferGovOwnTx,Gt as buildStellarGovernanceExecuteTx,Mt as buildStellarGovernanceExecuteUpdateDelayTx,Le as buildStellarGrantRoleTx,yo as buildStellarLendingIdentifier,j as buildStellarLiquidateTx,Z as buildStellarMigrateFromBlendTx,Pe as buildStellarMigrateTx,J as buildStellarMultiplyTx,Ue as buildStellarPauseTx,gt as buildStellarProposeAddAssetToSpokeTx,bt as buildStellarProposeAddSpokeTx,It as buildStellarProposeApproveBlendPoolTx,Rt as buildStellarProposeApproveTokenTx,qt as buildStellarProposeConfigureMarketOracleTx,_t as buildStellarProposeCreateHubTx,At as buildStellarProposeCreateLiquidityPoolTx,$t as buildStellarProposeDeployPoolTx,Nt as buildStellarProposeDisableTokenOracleTx,yt as buildStellarProposeEditAssetInSpokeTx,Lt as buildStellarProposeEditOracleToleranceTx,Vt as buildStellarProposeGovernanceUpgradeTx,Dt as buildStellarProposeGrantGovernanceRoleTx,Pt as buildStellarProposeMigrateControllerTx,vt as buildStellarProposeRemoveAssetFromSpokeTx,wt as buildStellarProposeRemoveSpokeTx,xt as buildStellarProposeRevokeBlendPoolTx,Wt as buildStellarProposeRevokeGovernanceRoleTx,Tt as buildStellarProposeRevokeTokenTx,mt as buildStellarProposeSetAccumulatorTx,dt as buildStellarProposeSetAggregatorTx,kt as buildStellarProposeSetMinBorrowCollatTx,ft as buildStellarProposeSetPoolTemplateTx,ht as buildStellarProposeSetPositionLimitsTx,St as buildStellarProposeSetPositionManagerTx,Ut as buildStellarProposeTransferCtrlOwnershipTx,Ct as buildStellarProposeTransferGovOwnTx,zt as buildStellarProposeUpdateDelayTx,Ot as buildStellarProposeUpgradeControllerTx,Et as buildStellarProposeUpgradePoolParamsTx,Bt as buildStellarProposeUpgradePoolTx,Je as buildStellarRenewAccountTx,F as buildStellarRepayBatchTx,ee as buildStellarRepayDebtWithCollateralTx,H as buildStellarRepayTx,Ve as buildStellarRevokeRoleTx,Fe as buildStellarRevokeTokenTx,Ce as buildStellarSetAccumulatorTx,We as buildStellarSetAggregatorTx,Ge as buildStellarSetLiquidityPoolTemplateTx,He as buildStellarSetMarketOracleConfigTx,je as buildStellarSetOracleToleranceTx,Xe as buildStellarSetPositionLimitsTx,D as buildStellarSupplyBatchTx,W as buildStellarSupplyTx,Y as buildStellarSwapCollateralTx,K as buildStellarSwapDebtTx,ze as buildStellarTransferOwnershipTx,qe as buildStellarUnpauseTx,ot as buildStellarUpdateAccountThresholdTx,Ze as buildStellarUpdateIndexesTx,Oe as buildStellarUpgradeControllerTx,Ye as buildStellarUpgradeLiquidityPoolParamsTx,X as buildStellarWithdrawBatchTx,M as buildStellarWithdrawTx,z as buildTx,bo as decodeStellarLendingEvent,Ie as encodeInterestRateModel,Ne as encodeMarketOracleConfigInput,xe as encodeMarketParamsRaw,Be as encodeOracleSourceConfigInput,Ae 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,ue as getStellarReserve,ke as getStellarReserveGraph,ce as getStellarReserveHolders,le 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??""},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=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)}),xe=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)}),Ae=e=>N({max_borrow_positions:y(e.maxBorrowPositions),max_supply_positions:y(e.maxSupplyPositions)}),Ee=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}"`)}},$e=(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")])},Be=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:Ee(e.asset),contract:w(e.contract),read_mode:$e(e.readMode,e.twapRecords)})])}if("RedStonePriceFeed"===t){if("string"!=typeof e.feedId)throw new Error("Stellar builder: RedStone oracle source requires `feedId`");if("number"!=typeof e.maxStaleSeconds)throw new Error("Stellar builder: RedStone oracle source requires `maxStaleSeconds`");return I([R("RedStone"),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}"`)},Ne=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"),Be(o)])),max_price_stale_seconds:v(e.maxPriceStaleSeconds),max_sanity_price_wad:g(e.maxSanityPriceWad),min_sanity_price_wad:g(e.minSanityPriceWad),primary:Be(e.primary),strategy:y(t),tolerance_bps:y(e.toleranceBps)});var o};function Oe(e,t){return z(e,"upgrade",[x(t.wasmHash)])}function Pe(e,t){return z(e,"migrate",[y(t.newVersion)])}function Ue(e){return z(e,"pause",[])}function qe(e){return z(e,"unpause",[])}function Le(e,t){return z(e,"grant_role",[w(t.account),R(t.role)])}function Ve(e,t){return z(e,"revoke_role",[w(t.account),R(t.role)])}function ze(e,t){return z(e,"transfer_ownership",[w(t.newOwner),y(t.liveUntilLedger)])}function We(e){return z(e,"accept_ownership",[])}function De(e,t){return z(e,"set_aggregator",[w(t.aggregator)])}function Ce(e,t){return z(e,"set_accumulator",[w(t.accumulator)])}function Ge(e,t){return z(e,"set_liquidity_pool_template",[x(t.wasmHash)])}function Xe(e,t){return z(e,"set_position_limits",[Ae(t)])}function Fe(e,t){return z(e,"approve_token",[w(t.token)])}function Me(e,t){return z(e,"revoke_token",[w(t.token)])}function He(e,t){return z(e,"set_market_oracle_config",[E(t.hubId,t.asset),Ne(t.config)])}function je(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 Qe(e,t){return z(e,"disable_token_oracle",[w(t.asset)])}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),xe(t.params)])}function Ye(e,t){return z(e,"upgrade_liquidity_pool_params",[E(t.hubId,t.asset),Ie(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",Ae(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:xe(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:Ie(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("DisableTokenOracle",w(t.asset)),o)}function Pt(e,t,o){return ct(e,nt("UpgradeController",x(t.wasmHash)),o)}function Ut(e,t,o){return ct(e,nt("MigrateController",y(t.newVersion)),o)}function qt(e,t,o){return ct(e,nt("TransferCtrlOwnership",st(t)),o)}function Lt(e,t,o){return ct(e,nt("ConfigureMarketOracle",N({cfg:Ne((r=t).config),hub_asset:E(r.hubId,r.asset)})),o);var r}function Vt(e,t,o){return ct(e,nt("EditOracleTolerance",N({asset:w((r=t).asset),tolerance:y(r.tolerance)})),o);var r}function zt(e,t,o){return ct(e,nt("UpgradeGov",x(t.wasmHash)),o)}function Wt(e,t,o){return ct(e,nt("UpdateGovDelay",y(t.newDelay)),o)}function Dt(e,t,o){return ct(e,nt("GrantGovRole",ut(t)),o)}function Ct(e,t,o){return ct(e,nt("RevokeGovRole",ut(t)),o)}function Gt(e,t,o){return ct(e,nt("TransferGovOwnership",st(t)),o)}function Xt(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 Ft(e,t,o){return pt(e,nt("UpgradeGov",x(t.wasmHash)),o)}function Mt(e,t,o){return pt(e,nt("UpdateGovDelay",y(t.newDelay)),o)}function Ht(e,t,o){return pt(e,nt("GrantGovRole",ut(t)),o)}function jt(e,t,o){return pt(e,nt("RevokeGovRole",ut(t)),o)}function Qt(e,t,o){return pt(e,nt("TransferGovOwnership",st(t)),o)}const Zt=e=>e.toXDR("base64"),Jt=e=>i.ScVal.fromXDR(e,"base64"),Kt=e=>e.map((e=>String(s(Jt(e))))).join(":"),Yt=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),eo=e=>Number(e),to=e=>String(e),oo=e=>null==e?void 0:Yt(e),ro=e=>null==e?void 0:to(e),ao=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),no=["None","Multiply","Long","Short"],so=["Single","PrimaryWithAnchor"],io=["ReflectorSep40","RedStonePriceFeed"],uo=["Spot","Twap"],lo=["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"],co=e=>Array.isArray(e)?e:[],po=(e,t)=>{const o="Borrow"===t;return{action:(r=e[0],lo[eo(r)]??Yt(r)),positionType:t,hubId:eo(e[1]),asset:to(e[2]),scaledAmountRay:Yt(e[3]),indexRay:Yt(e[4]),amount:Yt(e[5]),liquidationThresholdBps:o?void 0:eo(e[6]),liquidationBonusBps:o?void 0:eo(e[7]),loanToValueBps:o?void 0:eo(e[8]),liquidationFeesBps:o?void 0:eo(e[9])};var r},mo=e=>{return{owner:to(e[0]),spokeId:eo(e[1]),mode:(t=e[2],no[eo(t)]??"None")};var t},fo=(e,t)=>{const o=uo[eo(e[`${t}_read_mode`])]??"Spot",r=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=r?{kind:"Stellar",value:to(r)}:null!=a?{kind:"Symbol",value:to(a)}:void 0;return{provider:io[eo(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:to(e[`${t}_contract`]),asset:n,feedId:ro(e[`${t}_feed_id`]),readMode:o,twapRecords:"Twap"===o?eo(e[`${t}_twap_records`]):void 0,decimals:eo(e[`${t}_decimals`]),resolutionSeconds:eo(e[`${t}_resolution_seconds`]),maxStaleSeconds:eo(e[`${t}_max_stale_seconds`])}},ho=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:to(e.base_token_id),quoteTokenId:to(e.quote_token_id),tolerance:{upperRatio:eo(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:eo(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:eo(e.asset_decimals),maxPriceStaleSeconds:eo(e.max_price_stale_seconds),strategy:so[eo(e.strategy)]??"Single",primary:fo(e,"primary"),anchor:t?fo(e,"anchor"):void 0,primaryQuoteToken:ro(e.primary_quote_token),anchorQuoteToken:ro(e.anchor_quote_token),minSanityPriceWad:oo(e.min_sanity_price_wad),maxSanityPriceWad:oo(e.max_sanity_price_wad)}},_o={"market:create":e=>({topic:"market:create",data:{hubId:eo(e.hub_id),baseAsset:to(e.base_asset),maxBorrowRate:Yt(e.max_borrow_rate),baseBorrowRate:Yt(e.base_borrow_rate),slope1:Yt(e.slope1),slope2:Yt(e.slope2),slope3:Yt(e.slope3),midUtilization:Yt(e.mid_utilization),optimalUtilization:Yt(e.optimal_utilization),maxUtilization:Yt(e.max_utilization),reserveFactor:eo(e.reserve_factor),marketAddress:to(e.market_address)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:to(e.asset),maxBorrowRateRay:Yt(e.max_borrow_rate),baseBorrowRateRay:Yt(e.base_borrow_rate),slope1Ray:Yt(e.slope1),slope2Ray:Yt(e.slope2),slope3Ray:Yt(e.slope3),midUtilizationRay:Yt(e.mid_utilization),optimalUtilizationRay:Yt(e.optimal_utilization),maxUtilizationRay:Yt(e.max_utilization),reserveFactorBps:eo(e.reserve_factor)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:co(e).map((e=>{return t=co(e),{hubId:eo(t[0]),asset:to(t[1]),timestamp:eo(t[2]),supplyIndexRay:Yt(t[3]),borrowIndexRay:Yt(t[4]),cash:Yt(t[5]),suppliedRay:Yt(t[6]),borrowedRay:Yt(t[7]),revenueRay:Yt(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:co(e).map((e=>{const t=e;return{hubId:eo(t.hub_id),asset:to(t.asset),params:(o=t.params,{maxBorrowRateRay:Yt(o.max_borrow_rate),baseBorrowRateRay:Yt(o.base_borrow_rate),slope1Ray:Yt(o.slope1),slope2Ray:Yt(o.slope2),slope3Ray:Yt(o.slope3),midUtilizationRay:Yt(o.mid_utilization),optimalUtilizationRay:Yt(o.optimal_utilization),maxUtilizationRay:Yt(o.max_utilization),reserveFactorBps:eo(o.reserve_factor),isFlashloanable:Boolean(o.is_flashloanable),flashloanFeeBps:eo(o.flashloan_fee),assetId:to(o.asset_id),assetDecimals:eo(o.asset_decimals)})};var o}))}}),"position:batch_update":e=>{const t=co(e);return{topic:"position:batch_update",data:{accountId:Yt(t[0]),accountAttributes:mo(co(t[1])),updates:[...co(t[2]).map((e=>po(co(e),"Deposit"))),...co(t[3]).map((e=>po(co(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{hubId:eo(e.hub_id),asset:to(e.asset),receiver:to(e.receiver),caller:to(e.caller),amount:Yt(e.amount),fee:Yt(e.fee)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:to(e.asset),oracle:ho(e.oracle)}}),"position:liquidation":e=>({topic:"position:liquidation",data:{liquidator:to(e.liquidator),accountId:Yt(e.account_id),repaidUsdWad:Yt(e.repaid_usd_wad),bonusBps:Yt(e.bonus_bps)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:Yt(e.account_id),totalBorrowUsdWad:Yt(e.total_borrow_usd_wad),totalCollateralUsdWad:Yt(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:to(e.token),amount:Yt(e.amount),usdValueWad:Yt(e.usd_value_wad),accountId:Yt(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{hubId:eo(e.hub_id),asset:to(e.asset),amount:Yt(e.amount),fee:Yt(e.fee),amountSent:Yt(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:ao(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:to(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:to(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:ao(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:eo(e.max_supply_positions),maxBorrowPositions:eo(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:to(e.asset)}}),"config:spoke":e=>{const t=e.spoke;return{topic:"config:spoke",data:{spokeId:eo(t.spoke_id),isDeprecated:Boolean(t.is_deprecated),liquidationTargetHfWad:Yt(t.liquidation_target_hf_wad),healthFactorForMaxBonusWad:Yt(t.hf_for_max_bonus_wad),liquidationBonusFactorBps:eo(t.liquidation_bonus_factor_bps)}}}},bo=Object.freeze(Object.keys(_o));function wo(e,t){const o=Kt(e),r=_o[o];return r?r(s(Jt(t))):null}const go="XLENDXLM-a7c9f3",yo=1e4;function vo(e){const t=BigInt(e).toString(16),o=t.length%2==0?t:`0${t}`;return`${go}-${o}`}function So(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function ko(e,t=0){return 1e4*e+t}function Ro(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const To=(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()},Io=e=>e.baseUrl??d[e.network];async function xo(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=To(Io(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 Ao(e){const t=To(Io(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 Eo=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,$o=e=>O(e).toXDR("base64");function Bo(t,a){const s=t.routerAddress??h(t.network),i=new r(s),u=new e(t.caller,t.sourceSequence),l=L(Eo(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 No(e,t){return Bo(e,t)}function Oo(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(qo),splitPpm:e.splitPpm}))):[{hops:e.hops.map(qo),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Po(e,t={}){const o=e;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Oo(e,t)}const Uo=Oo,qo=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Lo(e,t){const o=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${o}`)}async function Vo(e,t,o){const r=n.fromXDR(t,"base64");try{return(await e.prepareTransaction(r)).toXDR()}catch(e){if(o?.invokedContractId)throw Lo(o.invokedContractId,e);throw e}}async function zo(e,t,o){return Vo(e,t.xdr,o)}function Wo(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 Do(e,t){return new Uint8Array(0)}const Co=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 Go(t){const o=new e(t.caller,t.sourceSequence),a=new r(t.forwarderAddress).call("mint_and_forward",i.ScVal.scvBytes(Co(t.message)),i.ScVal.scvBytes(Co(t.attestation)));return{xdr:new n(o,{fee:t.fee??"10000000",networkPassphrase:m[t.network]}).addOperation(a).setTimeout(t.timeoutSeconds??120).build().toXDR()}}const Xo={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 Fo(e){const t=e.match(/Error\(Contract,\s*#(\d+)\)/);if(!t)return null;const o=Number(t[1]),r=Xo[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,bo as STELLAR_LENDING_TOPICS,m as STELLAR_NETWORK_PASSPHRASE,d as STELLAR_QUOTE_URL,p as STELLAR_SOROBAN_RPC_URL,yo as SYNTHETIC_EVENT_ORDER_STRIDE,go as XOXNO_LENDING_STELLAR_TICKER,Do as buildSameTokenRepaySwapSteps,We as buildStellarAcceptOwnershipTx,tt as buildStellarAddRewardsTx,Fe as buildStellarApproveTokenTx,No as buildStellarBatchSwapTx,C as buildStellarBorrowBatchTx,G as buildStellarBorrowTx,Go as buildStellarCctpForwardTx,et as buildStellarClaimRevenueTx,Ke as buildStellarCreateLiquidityPoolTx,Qe as buildStellarDisableTokenOracleTx,Bo as buildStellarExecuteStrategyTx,Q as buildStellarFlashLoanTx,Ft as buildStellarGovernanceExecuteGovernanceUpgradeTx,Ht as buildStellarGovernanceExecuteGrantGovernanceRoleTx,jt as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,Qt as buildStellarGovernanceExecuteTransferGovOwnTx,Xt as buildStellarGovernanceExecuteTx,Mt as buildStellarGovernanceExecuteUpdateDelayTx,Le as buildStellarGrantRoleTx,vo as buildStellarLendingIdentifier,j as buildStellarLiquidateTx,Z as buildStellarMigrateFromBlendTx,Pe as buildStellarMigrateTx,J as buildStellarMultiplyTx,Ue as buildStellarPauseTx,gt as buildStellarProposeAddAssetToSpokeTx,bt as buildStellarProposeAddSpokeTx,xt as buildStellarProposeApproveBlendPoolTx,Tt as buildStellarProposeApproveTokenTx,Lt as buildStellarProposeConfigureMarketOracleTx,_t as buildStellarProposeCreateHubTx,Et as buildStellarProposeCreateLiquidityPoolTx,Bt as buildStellarProposeDeployPoolTx,Ot as buildStellarProposeDisableTokenOracleTx,yt as buildStellarProposeEditAssetInSpokeTx,Vt as buildStellarProposeEditOracleToleranceTx,zt as buildStellarProposeGovernanceUpgradeTx,Dt as buildStellarProposeGrantGovernanceRoleTx,Ut as buildStellarProposeMigrateControllerTx,vt as buildStellarProposeRemoveAssetFromSpokeTx,wt as buildStellarProposeRemoveSpokeTx,At as buildStellarProposeRevokeBlendPoolTx,Ct 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,qt as buildStellarProposeTransferCtrlOwnershipTx,Gt as buildStellarProposeTransferGovOwnTx,Wt as buildStellarProposeUpdateDelayTx,Pt as buildStellarProposeUpgradeControllerTx,$t as buildStellarProposeUpgradePoolParamsTx,Nt as buildStellarProposeUpgradePoolTx,Je as buildStellarRenewAccountTx,M as buildStellarRepayBatchTx,ee as buildStellarRepayDebtWithCollateralTx,H as buildStellarRepayTx,Ve as buildStellarRevokeRoleTx,Me as buildStellarRevokeTokenTx,Ce as buildStellarSetAccumulatorTx,De as buildStellarSetAggregatorTx,Ge as buildStellarSetLiquidityPoolTemplateTx,He as buildStellarSetMarketOracleConfigTx,je as buildStellarSetOracleToleranceTx,Xe as buildStellarSetPositionLimitsTx,W as buildStellarSupplyBatchTx,D as buildStellarSupplyTx,Y as buildStellarSwapCollateralTx,K as buildStellarSwapDebtTx,ze as buildStellarTransferOwnershipTx,qe as buildStellarUnpauseTx,ot as buildStellarUpdateAccountThresholdTx,Ze as buildStellarUpdateIndexesTx,Oe as buildStellarUpgradeControllerTx,Ye as buildStellarUpgradeLiquidityPoolParamsTx,X as buildStellarWithdrawBatchTx,F as buildStellarWithdrawTx,z as buildTx,wo as decodeStellarLendingEvent,Ie as encodeInterestRateModel,Ne as encodeMarketOracleConfigInput,xe as encodeMarketParamsRaw,Be as encodeOracleSourceConfigInput,Ae as encodePositionLimits,$o as encodeStrategyPayloadToRouteXdr,So as extractEventOrder,we as getStellarAccountPositions,xo 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,Ao 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,Uo as mapQuoteResponseToAggregatorSwap,Oo as mapQuoteResponseToStrategyPayload,Po as mapQuoteResponseToStrategySwap,Fo as mapSorobanError,Ro as mapStellarPositionActivityType,zo as prepareStellarBuiltTx,Vo as prepareStellarTxXdr,Kt as stellarLendingDispatchKey,Re as stellarLendingRead,ko as syntheticEventOrder,Lo as tagStellarInvokedContractError,Zt as toBase64Xdr,Wo as toStellarPositionMode};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xoxno/sdk-js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.185",
|
|
4
4
|
"description": "The SDK to interact with the XOXNO Protocol!",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"dependencies": {
|
|
115
115
|
"@multiversx/sdk-core": "^15.3.2",
|
|
116
116
|
"@multiversx/sdk-network-providers": "^2.9.3",
|
|
117
|
-
"@xoxno/types": "1.0.
|
|
117
|
+
"@xoxno/types": "^1.0.459"
|
|
118
118
|
},
|
|
119
119
|
"peerDependencies": {
|
|
120
120
|
"@stellar/stellar-sdk": ">=15.0.0 <17.0.0"
|