@xoxno/sdk-js 1.0.161 → 1.0.164
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.
|
@@ -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??""},c={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},u={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"},_={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 m(e){const t=c[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 y(e){const t=u[e];if(!t)throw new Error(`Stellar governance address not configured for network "${e}". Set STELLAR_GOVERNANCE_${e.toUpperCase()} env var.`);return t}const h=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],w=e=>new t(e).toScVal(),b=e=>new a(e).toI128(),g=e=>i.ScVal.scvU32(e),v=e=>new a("string"==typeof e?e:e.toString()).toU64(),S=e=>i.ScVal.scvBool(e),R=e=>i.ScVal.scvString(e),k=e=>i.ScVal.scvSymbol(e),x=()=>i.ScVal.scvVoid(),T=e=>i.ScVal.scvVec(e),E=(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)},I=(e,t)=>null==e?x():t(e),B=(e,t)=>O({asset:w(t),hub_id:g(e)}),$=(e,t,o)=>i.ScVal.scvVec([B(e,t),b(o)]),A=e=>i.ScVal.scvVec(e.map((e=>$(e.hubId,e.asset,e.amount)))),O=e=>{const t=Object.keys(e).sort().map((t=>new i.ScMapEntry({key:k(t),val:e[t]})));return i.ScVal.scvMap(t)},N=e=>{const t=e.paths.map((e=>{const t=e.hops.map((e=>{return O({amount_out:b(e.amountOut),pool:w(e.pool),token_in:w(e.tokenIn),token_out:w(e.tokenOut),venue:(t=e.venue,i.ScVal.scvVec([k(t)]))});var t}));return O({hops:i.ScVal.scvVec(t),split_ppm:g(e.splitPpm)})}));return O({paths:i.ScVal.scvVec(t),referral_id:v(e.referralId??0),token_in:w(e.tokenIn),token_out:w(e.tokenOut),total_min_out:b(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)},C=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},U=e=>{if("string"==typeof e)return P(C(e));if(e instanceof Uint8Array)return P(e);if(e&&"object"==typeof e)return"routeXdr"in(o=e)&&"string"==typeof o.routeXdr?P(C(e.routeXdr)):(e=>"swapXdr"in e&&"string"==typeof e.swapXdr)(e)?P(C(e.swapXdr)):(e=>"bytes"in e&&("string"==typeof e.bytes||e.bytes instanceof Uint8Array))(e)?"string"==typeof e.bytes?P(C(e.bytes)):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||!h.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(N(t).toXDR("base64"),"base64")));var t,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},q=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 L(t,a,s){const i=t.controllerAddress??f(t.network),l=new r(i),c=new e(t.caller,t.sourceSequence);return{xdr:new n(c,{fee:t.fee??o,networkPassphrase:_[t.network]}).addOperation(l.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function V(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return L(e,"supply",[w(e.caller),v(o),g(r),A([...t.assets])])}function z(e,t){return V(e,{accountNonce:t.accountNonce,spokeId:t.spokeId,assets:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function D(e,t){return L(e,"borrow",[w(e.caller),v(t.accountNonce),A([...t.borrows]),I(t.to,w)])}function G(e,t){return D(e,{accountNonce:t.accountNonce,borrows:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function M(e,t){return L(e,"withdraw",[w(e.caller),v(t.accountNonce),A([...t.withdrawals]),I(t.to,w)])}function W(e,t){return M(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function X(e,t){return L(e,"repay",[w(e.caller),v(t.accountNonce),A([...t.payments])])}function F(e,t){return X(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function H(e,t){return L(e,"liquidate",[w(e.caller),v(t.accountNonce),A([...t.debtPayments])])}function j(e,t){return L(e,"flash_loan",[w(e.caller),B(t.hubId,t.asset),b(t.amount),w(t.receiver),q(t.data)])}function Q(e,t){return L(e,"migrate_from_blend",[w(e.caller),v(t.accountId),g(t.spokeId),w(t.blendPool),T(t.collateralTokens.map(w)),T(t.supplyTokens.map(w)),(o=t.debtCaps.map((e=>({token:e.token,amount:e.cap}))),i.ScVal.scvVec(o.map((e=>{return t=e.token,o=e.amount,i.ScVal.scvVec([w(t),b(o)]);var t,o}))))]);var o}function Z(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return L(e,"multiply",[w(e.caller),v(o),g(r),B(t.collateral.hubId,t.collateral.asset),b(t.debtToFlashLoan),B(t.debt.hubId,t.debt.asset),g(t.mode),U(t.steps),I(t.initialPayment,(e=>$(e.hubId,e.asset,e.amount))),I(t.convertSwap,U)])}function J(e,t){return L(e,"swap_debt",[w(e.caller),v(t.accountNonce),B(t.existingDebt.hubId,t.existingDebt.asset),b(t.newDebtAmount),B(t.newDebt.hubId,t.newDebt.asset),U(t.steps)])}function K(e,t){return L(e,"swap_collateral",[w(e.caller),v(t.accountNonce),B(t.current.hubId,t.current.asset),b(t.fromAmount),B(t.newCollateral.hubId,t.newCollateral.asset),U(t.steps)])}function Y(e,t){return L(e,"repay_debt_with_collateral",[w(e.caller),v(t.accountNonce),B(t.collateral.hubId,t.collateral.asset),b(t.collateralAmount),B(t.debt.hubId,t.debt.asset),U(t.steps),S(t.closePosition)])}const ee="/stellar-lending",te=25,oe=encodeURIComponent,re=(e,t,o,r,a)=>e.fetchWithTimeout(`${ee}/reserves/${t}/${o}/${oe(r)}`,a),ae=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${ee}/reserves/${t}/${o}/${oe(r)}/holders`,{...n,params:{side:a}}),ne=(e,t,o)=>e.fetchWithTimeout(`${ee}/assets/${oe(t)}`,o),se=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/assets/${oe(t)}/markets`,{...r,params:{side:o}}),ie=(e,t,o)=>e.fetchWithTimeout(`${ee}/hubs/${t}`,o),le=(e,t,o)=>e.fetchWithTimeout(`${ee}/spokes/${t}`,o),ce=(e,t,o)=>e.fetchWithTimeout(`${ee}/users/${oe(t)}/positions`,o),ue=(e,t,o)=>e.fetchWithTimeout(`${ee}/accounts/${oe(t)}/positions`,o),pe=(e,t={},o)=>{const{top:r=te,continuationToken:a}=t;return e.fetchWithTimeout(`${ee}/governance/proposals`,{...o,params:{top:r,...a?{continuationToken:a}:{}}})},de=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/assets/${oe(t)}/graph`,{...r,params:{...o}}),_e=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/hubs/${t}/graph`,{...r,params:{...o}}),fe=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/spokes/${t}/graph`,{...r,params:{...o}}),me=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${ee}/reserves/${t}/${o}/${oe(r)}/graph`,{...n,params:{...a}}),ye=e=>({reserve:(t,o,r,a)=>re(e,t,o,r,a),reserveHolders:(t,o,r,a,n)=>ae(e,t,o,r,a,n),asset:(t,o)=>ne(e,t,o),assetMarkets:(t,o,r)=>se(e,t,o,r),hub:(t,o)=>ie(e,t,o),spoke:(t,o)=>le(e,t,o),userPositions:(t,o)=>ce(e,t,o),accountPositions:(t,o)=>ue(e,t,o),governanceProposals:(t,o)=>pe(e,t,o),assetGraph:(t,o,r)=>de(e,t,o,r),hubGraph:(t,o,r)=>_e(e,t,o,r),spokeGraph:(t,o,r)=>fe(e,t,o,r),reserveGraph:(t,o,r,a,n)=>me(e,t,o,r,a,n)}),he={Single:0,PrimaryWithAnchor:1},we=e=>O({base_borrow_rate_ray:b(e.baseBorrowRateRay),max_borrow_rate_ray:b(e.maxBorrowRateRay),max_utilization_ray:b(e.maxUtilizationRay),mid_utilization_ray:b(e.midUtilizationRay),optimal_utilization_ray:b(e.optimalUtilizationRay),reserve_factor_bps:g(e.reserveFactorBps),slope1_ray:b(e.slope1Ray),slope2_ray:b(e.slope2Ray),slope3_ray:b(e.slope3Ray)}),be=e=>O({asset_decimals:g(e.assetDecimals),asset_id:w(e.assetId),base_borrow_rate_ray:b(e.baseBorrowRateRay),borrow_cap:b(e.borrowCap),max_borrow_rate_ray:b(e.maxBorrowRateRay),max_utilization_ray:b(e.maxUtilizationRay),mid_utilization_ray:b(e.midUtilizationRay),optimal_utilization_ray:b(e.optimalUtilizationRay),reserve_factor_bps:g(e.reserveFactorBps),slope1_ray:b(e.slope1Ray),slope2_ray:b(e.slope2Ray),slope3_ray:b(e.slope3Ray),supply_cap:b(e.supplyCap)}),ge=e=>O({asset_decimals:g(0),e_mode_categories:T(e.eModeCategories.map((e=>g(e)))),flashloan_fee_bps:g(e.flashloanFeeBps),is_borrowable:S(e.isBorrowable),is_collateralizable:S(e.isCollateralizable),is_flashloanable:S(e.isFlashloanable),liquidation_bonus_bps:g(e.liquidationBonusBps),liquidation_fees_bps:g(e.liquidationFeesBps),liquidation_threshold_bps:g(e.liquidationThresholdBps),loan_to_value_bps:g(e.loanToValueBps)}),ve=e=>O({max_borrow_positions:g(e.maxBorrowPositions),max_supply_positions:g(e.maxSupplyPositions)}),Se=e=>{const t=e.kind;switch(t){case"Stellar":return T([k("Stellar"),w(e.value)]);case"Symbol":return T([k("Symbol"),k(e.value)]);case"String":return T([k("String"),R(e.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${t}"`)}},Re=(e,t)=>{if("Twap"===e){if("number"!=typeof t)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return T([k("Twap"),g(t)])}return T([k("Spot")])},ke=e=>{const t=e.provider;if("ReflectorSep40"===t){if(!e.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return T([k("Reflector"),O({asset:Se(e.asset),contract:w(e.contract),read_mode:Re(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([k("RedStone"),O({contract:w(e.contract),feed_id:R(e.feedId),max_stale_seconds:v(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},xe=e=>{const t=he[e.strategy];if(void 0===t)throw new Error(`Stellar builder: unknown oracle strategy "${e.strategy}"`);return O({anchor:(o=e.anchor,T(null==o?[k("None")]:[k("Some"),ke(o)])),max_price_stale_seconds:v(e.maxPriceStaleSeconds),max_sanity_price_wad:b(e.maxSanityPriceWad),min_sanity_price_wad:b(e.minSanityPriceWad),primary:ke(e.primary),strategy:g(t),tolerance_bps:g(e.toleranceBps)});var o};function Te(e,t){return L(e,"upgrade",[E(t.wasmHash)])}function Ee(e,t){return L(e,"migrate",[g(t.newVersion)])}function Ie(e){return L(e,"pause",[])}function Be(e){return L(e,"unpause",[])}function $e(e,t){return L(e,"grant_role",[w(t.account),k(t.role)])}function Ae(e,t){return L(e,"revoke_role",[w(t.account),k(t.role)])}function Oe(e,t){return L(e,"transfer_ownership",[w(t.newOwner),g(t.liveUntilLedger)])}function Ne(e){return L(e,"accept_ownership",[])}function Pe(e,t){return L(e,"set_aggregator",[w(t.aggregator)])}function Ce(e,t){return L(e,"set_accumulator",[w(t.accumulator)])}function Ue(e,t){return L(e,"set_liquidity_pool_template",[E(t.wasmHash)])}function qe(e,t){return L(e,"edit_asset_config",[w(t.asset),ge(t.config)])}function Le(e,t){return L(e,"set_position_limits",[ve(t)])}function Ve(e){return L(e,"add_e_mode_category",[])}function ze(e,t){return L(e,"remove_e_mode_category",[g(t.id)])}const De=e=>O({asset:w(e.asset),category_id:g(e.categoryId),can_collateral:S(e.canCollateral),can_borrow:S(e.canBorrow),ltv:g(e.ltv),threshold:g(e.threshold),bonus:g(e.bonus),supply_cap:b(e.supplyCap),borrow_cap:b(e.borrowCap)});function Ge(e,t){return L(e,"add_asset_to_e_mode_category",[De(t)])}function Me(e,t){return L(e,"edit_asset_in_e_mode_category",[De(t)])}function We(e,t){return L(e,"update_pool_caps",[w(t.asset),b(t.supplyCap),b(t.borrowCap)])}function Xe(e,t){return L(e,"remove_asset_from_e_mode",[w(t.asset),g(t.categoryId)])}function Fe(e,t){return L(e,"approve_token",[w(t.token)])}function He(e,t){return L(e,"revoke_token",[w(t.token)])}function je(e,t){return L(e,"configure_market_oracle",[w(e.caller),w(t.asset),xe(t.config)])}function Qe(e,t){return L(e,"edit_oracle_tolerance",[w(e.caller),w(t.asset),g(t.tolerance)])}function Ze(e,t){return L(e,"disable_token_oracle",[w(e.caller),w(t.asset)])}function Je(e,t){return L(e,"update_indexes",[w(e.caller),T(t.assets.map((e=>w(e))))])}function Ke(e,t){return L(e,"renew_account",[w(e.caller),v(t.accountNonce)])}function Ye(e,t){return L(e,"create_liquidity_pool",[w(t.asset),be(t.params),ge(t.config)])}function et(e,t){return L(e,"upgrade_liquidity_pool_params",[w(t.asset),we(t.params)])}function tt(e,t){return L(e,"upgrade_liquidity_pool",[w(t.asset),E(t.wasmHash)])}function ot(e,t){return L(e,"claim_revenue",[w(e.caller),T(t.assets.map((e=>w(e))))])}function rt(e,t){return L(e,"add_rewards",[w(e.caller),T(t.rewards.map((e=>T([w(e.token),b(e.amount)]))))])}function at(e,t){return L(e,"update_account_threshold",[w(e.caller),w(t.asset),S(t.hasRisks),T(t.accountNonces.map((e=>v(e))))])}const nt="00".repeat(32),st=e=>{if("string"==typeof e)return E(e);const t=Buffer.from(e);if(32!==t.length)throw new Error(`Stellar governance builder: expected a 32-byte salt (got ${t.length} bytes)`);return i.ScVal.scvBytes(t)},it=(e,...t)=>T([k(e),...t]),lt=e=>O({asset:w(e.asset),category_id:g(e.categoryId),can_collateral:S(e.canCollateral),can_borrow:S(e.canBorrow),ltv:g(e.ltv),threshold:g(e.threshold),bonus:g(e.bonus),supply_cap:b(e.supplyCap),borrow_cap:b(e.borrowCap)}),ct=e=>O({new_owner:w(e.newOwner),live_until_ledger:g(e.liveUntilLedger)}),ut=e=>O({account:w(e.account),role:k(e.role)});function pt(t,a,s){const i=t.governanceAddress??y(t.network),l=new r(i),c=new e(t.caller,t.sourceSequence);return{xdr:new n(c,{fee:t.fee??o,networkPassphrase:_[t.network]}).addOperation(l.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const dt=(e,t,o)=>pt(e,"propose",[w(e.caller),t,st(o)]),_t=(e,t,o)=>pt(e,"execute_self",[x(),t,st(o)]);function ft(e,t,o){return dt(e,it("SetAggregator",w(t.aggregator)),o)}function mt(e,t,o){return dt(e,it("SetAccumulator",w(t.accumulator)),o)}function yt(e,t,o){return dt(e,it("SetLiquidityPoolTemplate",E(t.wasmHash)),o)}function ht(e,t,o){return dt(e,it("EditAssetConfig",w(t.asset),ge(t.config)),o)}function wt(e,t,o){return dt(e,it("SetPositionLimits",ve(t)),o)}function bt(e,t,o){return dt(e,it("SetMinBorrowCollateralUsd",b(t.floorWad)),o)}function gt(e,t){return dt(e,it("AddEModeCategory"),t)}function vt(e,t,o){return dt(e,it("RemoveEModeCategory",g(t.id)),o)}function St(e,t,o){return dt(e,it("AddAssetToEModeCategory",lt(t)),o)}function Rt(e,t,o){return dt(e,it("EditAssetInEModeCategory",lt(t)),o)}function kt(e,t,o){return dt(e,it("UpdatePoolCaps",O({asset:w((r=t).asset),supply_cap:b(r.supplyCap),borrow_cap:b(r.borrowCap)})),o);var r}function xt(e,t,o){return dt(e,it("RemoveAssetFromEMode",O({asset:w((r=t).asset),category_id:g(r.categoryId)})),o);var r}function Tt(e,t,o){return dt(e,it("ApproveToken",w(t.token)),o)}function Et(e,t,o){return dt(e,it("RevokeToken",w(t.token)),o)}function It(e,t,o){return dt(e,it("ApproveBlendPool",w(t.pool)),o)}function Bt(e,t,o){return dt(e,it("RevokeBlendPool",w(t.pool)),o)}function $t(e,t,o){return dt(e,it("CreateLiquidityPool",O({asset:w((r=t).asset),params:be(r.params),config:ge(r.config)})),o);var r}function At(e,t,o){return dt(e,it("UpgradeLiquidityPoolParams",O({asset:w((r=t).asset),params:we(r.params)})),o);var r}function Ot(e,t){return dt(e,it("DeployPool"),t)}function Nt(e,t,o){return dt(e,it("UpgradePool",E(t.wasmHash)),o)}function Pt(e,t,o){return dt(e,it("DisableTokenOracle",w(t.asset)),o)}function Ct(e,t,o){return dt(e,it("UpgradeController",E(t.wasmHash)),o)}function Ut(e,t,o){return dt(e,it("MigrateController",g(t.newVersion)),o)}function qt(e,t,o){return dt(e,it("TransferCtrlOwnership",ct(t)),o)}function Lt(e,t,o){return dt(e,it("ConfigureMarketOracle",O({asset:w((r=t).asset),cfg:xe(r.config)})),o);var r}function Vt(e,t,o){return dt(e,it("EditOracleTolerance",O({asset:w((r=t).asset),tolerance:g(r.tolerance)})),o);var r}function zt(e,t,o){return dt(e,it("UpgradeGov",E(t.wasmHash)),o)}function Dt(e,t,o){return dt(e,it("UpdateGovDelay",g(t.newDelay)),o)}function Gt(e,t,o){return dt(e,it("GrantGovRole",ut(t)),o)}function Mt(e,t,o){return dt(e,it("RevokeGovRole",ut(t)),o)}function Wt(e,t,o){return dt(e,it("TransferGovOwnership",ct(t)),o)}function Xt(e,t){const o=T(t.argsXdr.map((e=>i.ScVal.fromXDR(e,"base64")))),r=st(t.predecessor??nt);return pt(e,"execute",[x(),w(t.target),k(t.functionName),o,r,st(t.salt)])}function Ft(e,t,o){return _t(e,it("UpgradeGov",E(t.wasmHash)),o)}function Ht(e,t,o){return _t(e,it("UpdateGovDelay",g(t.newDelay)),o)}function jt(e,t,o){return _t(e,it("GrantGovRole",ut(t)),o)}function Qt(e,t,o){return _t(e,it("RevokeGovRole",ut(t)),o)}function Zt(e,t,o){return _t(e,it("TransferGovOwnership",ct(t)),o)}const Jt=e=>e.toXDR("base64"),Kt=e=>i.ScVal.fromXDR(e,"base64"),Yt=e=>e.map((e=>String(s(Kt(e))))).join(":"),eo=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),to=e=>Number(e),oo=e=>String(e),ro=e=>null==e?void 0:eo(e),ao=e=>null==e?void 0:oo(e),no=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),so=["None","Multiply","Long","Short"],io=["Single","PrimaryWithAnchor"],lo=["ReflectorSep40","RedStonePriceFeed"],co=["Spot","Twap"],uo=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],po=e=>Array.isArray(e)?e:[],_o=e=>({loanToValueBps:to(e.loan_to_value_bps),liquidationThresholdBps:to(e.liquidation_threshold_bps),liquidationBonusBps:to(e.liquidation_bonus_bps),liquidationFeesBps:to(e.liquidation_fees_bps),isCollateralizable:Boolean(e.is_collateralizable),isBorrowable:Boolean(e.is_borrowable),isFlashloanable:Boolean(e.is_flashloanable),flashloanFeeBps:to(e.flashloan_fee_bps),eModeCategories:(e.e_mode_categories??[]).map(to)}),fo=(e,t)=>{const o="Borrow"===t;return{action:(r=e[0],uo[to(r)]??eo(r)),positionType:t,asset:oo(e[1]),scaledAmountRay:eo(e[2]),indexRay:eo(e[3]),amount:eo(e[4]),liquidationThresholdBps:o?void 0:to(e[5]),liquidationBonusBps:o?void 0:to(e[6]),loanToValueBps:o?void 0:to(e[7])};var r},mo=e=>{return{owner:oo(e[0]),eModeCategoryId:to(e[1]),mode:(t=e[2],so[to(t)]??"None")};var t},yo=(e,t)=>{const o=co[to(e[`${t}_read_mode`])]??"Spot",r=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=r?{kind:"Stellar",value:oo(r)}:null!=a?{kind:"Symbol",value:oo(a)}:void 0;return{provider:lo[to(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:oo(e[`${t}_contract`]),asset:n,feedId:ao(e[`${t}_feed_id`]),readMode:o,twapRecords:"Twap"===o?to(e[`${t}_twap_records`]):void 0,decimals:to(e[`${t}_decimals`]),resolutionSeconds:to(e[`${t}_resolution_seconds`]),maxStaleSeconds:to(e[`${t}_max_stale_seconds`])}},ho=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:oo(e.base_token_id),quoteTokenId:oo(e.quote_token_id),tolerance:{upperRatio:to(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:to(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:to(e.asset_decimals),maxPriceStaleSeconds:to(e.max_price_stale_seconds),strategy:io[to(e.strategy)]??"Single",primary:yo(e,"primary"),anchor:t?yo(e,"anchor"):void 0,primaryQuoteToken:ao(e.primary_quote_token),anchorQuoteToken:ao(e.anchor_quote_token),minSanityPriceWad:ro(e.min_sanity_price_wad),maxSanityPriceWad:ro(e.max_sanity_price_wad)}},wo={"market:create":e=>({topic:"market:create",data:{baseAsset:oo(e.base_asset),maxBorrowRate:eo(e.max_borrow_rate),baseBorrowRate:eo(e.base_borrow_rate),slope1:eo(e.slope1),slope2:eo(e.slope2),slope3:eo(e.slope3),midUtilization:eo(e.mid_utilization),optimalUtilization:eo(e.optimal_utilization),maxUtilization:ro(e.max_utilization),reserveFactor:to(e.reserve_factor),marketAddress:oo(e.market_address),config:_o(e.config)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:oo(e.asset),maxBorrowRateRay:eo(e.max_borrow_rate_ray),baseBorrowRateRay:eo(e.base_borrow_rate_ray),slope1Ray:eo(e.slope1_ray),slope2Ray:eo(e.slope2_ray),slope3Ray:eo(e.slope3_ray),midUtilizationRay:eo(e.mid_utilization_ray),optimalUtilizationRay:eo(e.optimal_utilization_ray),maxUtilizationRay:ro(e.max_utilization_ray),reserveFactorBps:to(e.reserve_factor_bps)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:po(e).map((e=>{return t=po(e),{asset:oo(t[0]),timestamp:to(t[1]),supplyIndexRay:eo(t[2]),borrowIndexRay:eo(t[3]),reservesRay:eo(t[4]),suppliedRay:eo(t[5]),borrowedRay:eo(t[6]),revenueRay:eo(t[7]),assetPriceWad:ro(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:po(e).map((e=>{const t=e;return{asset:oo(t.asset),params:(o=t.params,{maxBorrowRateRay:eo(o.max_borrow_rate_ray),baseBorrowRateRay:eo(o.base_borrow_rate_ray),slope1Ray:eo(o.slope1_ray),slope2Ray:eo(o.slope2_ray),slope3Ray:eo(o.slope3_ray),midUtilizationRay:eo(o.mid_utilization_ray),optimalUtilizationRay:eo(o.optimal_utilization_ray),maxUtilizationRay:ro(o.max_utilization_ray),reserveFactorBps:to(o.reserve_factor_bps),supplyCap:eo(o.supply_cap),borrowCap:eo(o.borrow_cap),assetId:ao(o.asset_id),assetDecimals:void 0===o.asset_decimals?void 0:to(o.asset_decimals)})};var o}))}}),"position:batch_update":e=>{const t=po(e);return{topic:"position:batch_update",data:{accountId:eo(t[0]),accountAttributes:mo(po(t[1])),updates:[...po(t[2]).map((e=>fo(po(e),"Deposit"))),...po(t[3]).map((e=>fo(po(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{asset:oo(e.asset),receiver:oo(e.receiver),caller:oo(e.caller),amount:eo(e.amount),fee:eo(e.fee)}}),"config:asset":e=>({topic:"config:asset",data:{asset:oo(e.asset),config:_o(e.config)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:oo(e.asset),oracle:ho(e.oracle)}}),"config:emode_category":e=>({topic:"config:emode_category",data:{category:{categoryId:to(e.category.category_id),isDeprecated:Boolean(e.category.is_deprecated)}}}),"config:emode_asset":e=>({topic:"config:emode_asset",data:{asset:oo(e.asset),config:{isCollateralizable:Boolean(e.config.is_collateralizable),isBorrowable:Boolean(e.config.is_borrowable),loanToValueBps:to(e.config.loan_to_value_bps),liquidationThresholdBps:to(e.config.liquidation_threshold_bps),liquidationBonusBps:to(e.config.liquidation_bonus_bps),supplyCap:eo(e.config.supply_cap),borrowCap:eo(e.config.borrow_cap)},categoryId:to(e.category_id)}}),"config:remove_emode_asset":e=>({topic:"config:remove_emode_asset",data:{asset:oo(e.asset),categoryId:to(e.category_id)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:eo(e.account_id),totalBorrowUsdWad:eo(e.total_borrow_usd_wad),totalCollateralUsdWad:eo(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:oo(e.token),amount:eo(e.amount),usdValueWad:eo(e.usd_value_wad),accountId:eo(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{asset:oo(e.asset),amount:eo(e.amount),fee:eo(e.fee),amountSent:eo(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:no(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:oo(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:oo(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:no(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:to(e.max_supply_positions),maxBorrowPositions:to(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:oo(e.asset)}})},bo=Object.freeze(Object.keys(wo));function go(e,t){const o=Yt(e),r=wo[o];return r?r(s(Kt(t))):null}const vo="XLENDXLM-a7c9f3",So=1e4;function Ro(e){const t=BigInt(e).toString(16),o=t.length%2==0?t:`0${t}`;return`${vo}-${o}`}function ko(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function xo(e,t=0){return 1e4*e+t}function To(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Eo=(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 Bo(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=Eo(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 $o(e){const t=Eo(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 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,Oo=e=>N(e).toXDR("base64");function No(t,a){const s=t.routerAddress??m(t.network),i=new r(s),l=new e(t.caller,t.sourceSequence),c=U(Ao(a,t.referralId));return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:_[t.network]}).addOperation(i.call("execute_strategy",w(t.caller),b(t.totalIn),c)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function Po(e,t){return No(e,t)}function Co(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(Lo),splitPpm:e.splitPpm}))):[{hops:e.hops.map(Lo),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Uo(e,t={}){const o=e;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Co(e,t)}const qo=Co,Lo=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Vo(e,t){const o=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${o}`)}async function zo(e,t,o){const r=n.fromXDR(t,"base64");try{return(await e.prepareTransaction(r)).toXDR()}catch(e){if(o?.invokedContractId)throw Vo(o.invokedContractId,e);throw e}}async function Do(e,t,o){return zo(e,t.xdr,o)}function Go(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 Mo(e,t){return{paths:[{hops:[{amountOut:"0",pool:e,tokenIn:e,tokenOut:e,venue:"Soroswap"}],splitPpm:1e6}],referralId:0,tokenIn:e,tokenOut:e,totalMinOut:t}}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 Xo(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:_[t.network]}).addOperation(a).setTimeout(t.timeoutSeconds??120).build().toXDR()}}export{c as STELLAR_AGGREGATOR_ROUTER,u as STELLAR_GOVERNANCE,nt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,l as STELLAR_LENDING_CONTROLLER,bo as STELLAR_LENDING_TOPICS,_ as STELLAR_NETWORK_PASSPHRASE,d as STELLAR_QUOTE_URL,p as STELLAR_SOROBAN_RPC_URL,So as SYNTHETIC_EVENT_ORDER_STRIDE,vo as XOXNO_LENDING_STELLAR_TICKER,Mo as buildSameTokenRepaySwapSteps,Ne as buildStellarAcceptOwnershipTx,Ge as buildStellarAddAssetToEModeCategoryTx,Ve as buildStellarAddEModeCategoryTx,rt as buildStellarAddRewardsTx,Fe as buildStellarApproveTokenTx,Po as buildStellarBatchSwapTx,D as buildStellarBorrowBatchTx,G as buildStellarBorrowTx,Xo as buildStellarCctpForwardTx,ot as buildStellarClaimRevenueTx,je as buildStellarConfigureMarketOracleTx,Ye as buildStellarCreateLiquidityPoolTx,Ze as buildStellarDisableTokenOracleTx,qe as buildStellarEditAssetConfigTx,Me as buildStellarEditAssetInEModeCategoryTx,Qe as buildStellarEditOracleToleranceTx,No as buildStellarExecuteStrategyTx,j as buildStellarFlashLoanTx,Ft as buildStellarGovernanceExecuteGovernanceUpgradeTx,jt as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Qt as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,Zt as buildStellarGovernanceExecuteTransferGovOwnTx,Xt as buildStellarGovernanceExecuteTx,Ht as buildStellarGovernanceExecuteUpdateDelayTx,$e as buildStellarGrantRoleTx,Ro as buildStellarLendingIdentifier,H as buildStellarLiquidateTx,Q as buildStellarMigrateFromBlendTx,Ee as buildStellarMigrateTx,Z as buildStellarMultiplyTx,Ie as buildStellarPauseTx,St as buildStellarProposeAddAssetToEModeTx,gt as buildStellarProposeAddEModeCategoryTx,It as buildStellarProposeApproveBlendPoolTx,Tt as buildStellarProposeApproveTokenTx,Lt as buildStellarProposeConfigureMarketOracleTx,$t as buildStellarProposeCreateLiquidityPoolTx,Ot as buildStellarProposeDeployPoolTx,Pt as buildStellarProposeDisableTokenOracleTx,ht as buildStellarProposeEditAssetConfigTx,Rt as buildStellarProposeEditAssetInEModeTx,Vt as buildStellarProposeEditOracleToleranceTx,zt as buildStellarProposeGovernanceUpgradeTx,Gt as buildStellarProposeGrantGovernanceRoleTx,Ut as buildStellarProposeMigrateControllerTx,xt as buildStellarProposeRemoveAssetFromEModeTx,vt as buildStellarProposeRemoveEModeCategoryTx,Bt as buildStellarProposeRevokeBlendPoolTx,Mt as buildStellarProposeRevokeGovernanceRoleTx,Et as buildStellarProposeRevokeTokenTx,mt as buildStellarProposeSetAccumulatorTx,ft as buildStellarProposeSetAggregatorTx,bt as buildStellarProposeSetMinBorrowCollatTx,yt as buildStellarProposeSetPoolTemplateTx,wt as buildStellarProposeSetPositionLimitsTx,qt as buildStellarProposeTransferCtrlOwnershipTx,Wt as buildStellarProposeTransferGovOwnTx,Dt as buildStellarProposeUpdateDelayTx,kt as buildStellarProposeUpdatePoolCapsTx,Ct as buildStellarProposeUpgradeControllerTx,At as buildStellarProposeUpgradePoolParamsTx,Nt as buildStellarProposeUpgradePoolTx,Xe as buildStellarRemoveAssetFromEModeTx,ze as buildStellarRemoveEModeCategoryTx,Ke as buildStellarRenewAccountTx,X as buildStellarRepayBatchTx,Y as buildStellarRepayDebtWithCollateralTx,F as buildStellarRepayTx,Ae as buildStellarRevokeRoleTx,He as buildStellarRevokeTokenTx,Ce as buildStellarSetAccumulatorTx,Pe as buildStellarSetAggregatorTx,Ue as buildStellarSetLiquidityPoolTemplateTx,Le as buildStellarSetPositionLimitsTx,V as buildStellarSupplyBatchTx,z as buildStellarSupplyTx,K as buildStellarSwapCollateralTx,J as buildStellarSwapDebtTx,Oe as buildStellarTransferOwnershipTx,Be as buildStellarUnpauseTx,at as buildStellarUpdateAccountThresholdTx,Je as buildStellarUpdateIndexesTx,We as buildStellarUpdatePoolCapsTx,Te as buildStellarUpgradeControllerTx,et as buildStellarUpgradeLiquidityPoolParamsTx,tt as buildStellarUpgradeLiquidityPoolTx,M as buildStellarWithdrawBatchTx,W as buildStellarWithdrawTx,L as buildTx,go as decodeStellarLendingEvent,ge as encodeAssetConfigRaw,we as encodeInterestRateModel,xe as encodeMarketOracleConfigInput,be as encodeMarketParamsRaw,ke as encodeOracleSourceConfigInput,ve as encodePositionLimits,Oo as encodeStrategyPayloadToRouteXdr,ko as extractEventOrder,ue as getStellarAccountPositions,Bo as getStellarAggregatorQuote,m as getStellarAggregatorRouter,ne as getStellarAsset,de as getStellarAssetGraph,se as getStellarAssetMarkets,y as getStellarGovernance,pe as getStellarGovernanceProposals,ie as getStellarHub,_e as getStellarHubGraph,f as getStellarLendingController,$o as getStellarQuoteTokens,re as getStellarReserve,me as getStellarReserveGraph,ae as getStellarReserveHolders,le as getStellarSpoke,fe as getStellarSpokeGraph,ce as getStellarUserPositions,qo as mapQuoteResponseToAggregatorSwap,Co as mapQuoteResponseToStrategyPayload,Uo as mapQuoteResponseToStrategySwap,To as mapStellarPositionActivityType,Do as prepareStellarBuiltTx,zo as prepareStellarTxXdr,Yt as stellarLendingDispatchKey,ye as stellarLendingRead,xo as syntheticEventOrder,Vo as tagStellarInvokedContractError,Jt as toBase64Xdr,Go 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 l={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},c={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},u={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"},_={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 m(e){const t=c[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 h(e){const t=u[e];if(!t)throw new Error(`Stellar governance address not configured for network "${e}". Set STELLAR_GOVERNANCE_${e.toUpperCase()} env var.`);return t}const y=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],w=e=>new t(e).toScVal(),b=e=>new a(e).toI128(),g=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(),x=e=>i.ScVal.scvVec(e),E=(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)},I=(e,t)=>null==e?T():t(e),B=(e,t)=>O({asset:w(t),hub_id:g(e)}),$=(e,t,o)=>i.ScVal.scvVec([B(e,t),b(o)]),A=e=>i.ScVal.scvVec(e.map((e=>$(e.hubId,e.asset,e.amount)))),O=e=>{const t=Object.keys(e).sort().map((t=>new i.ScMapEntry({key:R(t),val:e[t]})));return i.ScVal.scvMap(t)},N=e=>{const t=e.paths.map((e=>{const t=e.hops.map((e=>{return O({amount_out:b(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 O({hops:i.ScVal.scvVec(t),split_ppm:g(e.splitPpm)})}));return O({paths:i.ScVal.scvVec(t),referral_id:v(e.referralId??0),token_in:w(e.tokenIn),token_out:w(e.tokenOut),total_min_out:b(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)},C=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},U=e=>{if("string"==typeof e)return P(C(e));if(e instanceof Uint8Array)return P(e);if(e&&"object"==typeof e)return"routeXdr"in(o=e)&&"string"==typeof o.routeXdr?P(C(e.routeXdr)):(e=>"swapXdr"in e&&"string"==typeof e.swapXdr)(e)?P(C(e.swapXdr)):(e=>"bytes"in e&&("string"==typeof e.bytes||e.bytes instanceof Uint8Array))(e)?"string"==typeof e.bytes?P(C(e.bytes)):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||!y.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(N(t).toXDR("base64"),"base64")));var t,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},q=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 L(t,a,s){const i=t.controllerAddress??f(t.network),l=new r(i),c=new e(t.caller,t.sourceSequence);return{xdr:new n(c,{fee:t.fee??o,networkPassphrase:_[t.network]}).addOperation(l.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function V(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return L(e,"supply",[w(e.caller),v(o),g(r),A([...t.assets])])}function z(e,t){return V(e,{accountNonce:t.accountNonce,spokeId:t.spokeId,assets:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function D(e,t){return L(e,"borrow",[w(e.caller),v(t.accountNonce),A([...t.borrows]),I(t.to,w)])}function W(e,t){return D(e,{accountNonce:t.accountNonce,borrows:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function G(e,t){return L(e,"withdraw",[w(e.caller),v(t.accountNonce),A([...t.withdrawals]),I(t.to,w)])}function M(e,t){return G(e,{accountNonce:t.accountNonce,withdrawals:[{hubId:t.hubId,asset:t.asset,amount:t.amount}],to:t.to})}function X(e,t){return L(e,"repay",[w(e.caller),v(t.accountNonce),A([...t.payments])])}function F(e,t){return X(e,{accountNonce:t.accountNonce,payments:[{hubId:t.hubId,asset:t.asset,amount:t.amount}]})}function H(e,t){return L(e,"liquidate",[w(e.caller),v(t.accountNonce),A([...t.debtPayments])])}function j(e,t){return L(e,"flash_loan",[w(e.caller),B(t.hubId,t.asset),b(t.amount),w(t.receiver),q(t.data)])}function Q(e,t){return L(e,"migrate_from_blend",[w(e.caller),v(t.accountId),g(t.spokeId),w(t.blendPool),x(t.collateralTokens.map(w)),x(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),b(o)]);var t,o}))))]);var o}function Z(e,t){const o=t.accountNonce??0,r=t.spokeId??0;return L(e,"multiply",[w(e.caller),v(o),g(r),B(t.collateral.hubId,t.collateral.asset),b(t.debtToFlashLoan),B(t.debt.hubId,t.debt.asset),g(t.mode),U(t.steps),I(t.initialPayment,(e=>$(e.hubId,e.asset,e.amount))),I(t.convertSwap,U)])}function J(e,t){return L(e,"swap_debt",[w(e.caller),v(t.accountNonce),B(t.existingDebt.hubId,t.existingDebt.asset),b(t.newDebtAmount),B(t.newDebt.hubId,t.newDebt.asset),U(t.steps)])}function K(e,t){return L(e,"swap_collateral",[w(e.caller),v(t.accountNonce),B(t.current.hubId,t.current.asset),b(t.fromAmount),B(t.newCollateral.hubId,t.newCollateral.asset),U(t.steps)])}function Y(e,t){return L(e,"repay_debt_with_collateral",[w(e.caller),v(t.accountNonce),B(t.collateral.hubId,t.collateral.asset),b(t.collateralAmount),B(t.debt.hubId,t.debt.asset),U(t.steps),S(t.closePosition)])}const ee="/stellar-lending",te=25,oe=encodeURIComponent,re=(e,t)=>e.fetchWithTimeout(`${ee}/assets`,t),ae=(e,t)=>e.fetchWithTimeout(`${ee}/hubs`,t),ne=(e,t)=>e.fetchWithTimeout(`${ee}/spokes`,t),se=(e,t={},o)=>{const{hubId:r,spokeId:a,asset:n}=t;return e.fetchWithTimeout(`${ee}/reserves`,{...o,params:{...void 0!==r?{hubId:r}:{},...void 0!==a?{spokeId:a}:{},...n?{asset:n}:{}}})},ie=(e,t,o,r,a)=>e.fetchWithTimeout(`${ee}/reserves/${t}/${o}/${oe(r)}`,a),le=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${ee}/reserves/${t}/${o}/${oe(r)}/holders`,{...n,params:{side:a}}),ce=(e,t,o)=>e.fetchWithTimeout(`${ee}/assets/${oe(t)}`,o),ue=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/assets/${oe(t)}/markets`,{...r,params:{side:o}}),pe=(e,t,o)=>e.fetchWithTimeout(`${ee}/hubs/${t}`,o),de=(e,t,o)=>e.fetchWithTimeout(`${ee}/spokes/${t}`,o),_e=(e,t,o)=>e.fetchWithTimeout(`${ee}/users/${oe(t)}/positions`,o),fe=(e,t,o={},r)=>{const{skip:a,top:n}=o;return e.fetchWithTimeout(`${ee}/users/${oe(t)}/activity`,{...r,params:{...void 0!==a?{skip:a}:{},...void 0!==n?{top:n}:{}}})},me=(e,t,o)=>e.fetchWithTimeout(`${ee}/accounts/${oe(t)}/positions`,o),he=(e,t={},o)=>{const{top:r=te,continuationToken:a}=t;return e.fetchWithTimeout(`${ee}/governance/proposals`,{...o,params:{top:r,...a?{continuationToken:a}:{}}})},ye=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/assets/${oe(t)}/graph`,{...r,params:{...o}}),we=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/hubs/${t}/graph`,{...r,params:{...o}}),be=(e,t,o,r)=>e.fetchWithTimeout(`${ee}/spokes/${t}/graph`,{...r,params:{...o}}),ge=(e,t,o,r,a,n)=>e.fetchWithTimeout(`${ee}/reserves/${t}/${o}/${oe(r)}/graph`,{...n,params:{...a}}),ve=e=>({assets:t=>re(e,t),hubs:t=>ae(e,t),spokes:t=>ne(e,t),reserves:(t,o)=>se(e,t,o),reserve:(t,o,r,a)=>ie(e,t,o,r,a),reserveHolders:(t,o,r,a,n)=>le(e,t,o,r,a,n),asset:(t,o)=>ce(e,t,o),assetMarkets:(t,o,r)=>ue(e,t,o,r),hub:(t,o)=>pe(e,t,o),spoke:(t,o)=>de(e,t,o),userPositions:(t,o)=>_e(e,t,o),userActivity:(t,o,r)=>fe(e,t,o,r),accountPositions:(t,o)=>me(e,t,o),governanceProposals:(t,o)=>he(e,t,o),assetGraph:(t,o,r)=>ye(e,t,o,r),hubGraph:(t,o,r)=>we(e,t,o,r),spokeGraph:(t,o,r)=>be(e,t,o,r),reserveGraph:(t,o,r,a,n)=>ge(e,t,o,r,a,n)}),Se={Single:0,PrimaryWithAnchor:1},ke=e=>O({base_borrow_rate_ray:b(e.baseBorrowRateRay),max_borrow_rate_ray:b(e.maxBorrowRateRay),max_utilization_ray:b(e.maxUtilizationRay),mid_utilization_ray:b(e.midUtilizationRay),optimal_utilization_ray:b(e.optimalUtilizationRay),reserve_factor_bps:g(e.reserveFactorBps),slope1_ray:b(e.slope1Ray),slope2_ray:b(e.slope2Ray),slope3_ray:b(e.slope3Ray)}),Re=e=>O({asset_decimals:g(e.assetDecimals),asset_id:w(e.assetId),base_borrow_rate_ray:b(e.baseBorrowRateRay),borrow_cap:b(e.borrowCap),max_borrow_rate_ray:b(e.maxBorrowRateRay),max_utilization_ray:b(e.maxUtilizationRay),mid_utilization_ray:b(e.midUtilizationRay),optimal_utilization_ray:b(e.optimalUtilizationRay),reserve_factor_bps:g(e.reserveFactorBps),slope1_ray:b(e.slope1Ray),slope2_ray:b(e.slope2Ray),slope3_ray:b(e.slope3Ray),supply_cap:b(e.supplyCap)}),Te=e=>O({asset_decimals:g(0),e_mode_categories:x(e.eModeCategories.map((e=>g(e)))),flashloan_fee_bps:g(e.flashloanFeeBps),is_borrowable:S(e.isBorrowable),is_collateralizable:S(e.isCollateralizable),is_flashloanable:S(e.isFlashloanable),liquidation_bonus_bps:g(e.liquidationBonusBps),liquidation_fees_bps:g(e.liquidationFeesBps),liquidation_threshold_bps:g(e.liquidationThresholdBps),loan_to_value_bps:g(e.loanToValueBps)}),xe=e=>O({max_borrow_positions:g(e.maxBorrowPositions),max_supply_positions:g(e.maxSupplyPositions)}),Ee=e=>{const t=e.kind;switch(t){case"Stellar":return x([R("Stellar"),w(e.value)]);case"Symbol":return x([R("Symbol"),R(e.value)]);case"String":return x([R("String"),k(e.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${t}"`)}},Ie=(e,t)=>{if("Twap"===e){if("number"!=typeof t)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return x([R("Twap"),g(t)])}return x([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 x([R("Reflector"),O({asset:Ee(e.asset),contract:w(e.contract),read_mode:Ie(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 x([R("RedStone"),O({contract:w(e.contract),feed_id:k(e.feedId),max_stale_seconds:v(e.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${t}"`)},$e=e=>{const t=Se[e.strategy];if(void 0===t)throw new Error(`Stellar builder: unknown oracle strategy "${e.strategy}"`);return O({anchor:(o=e.anchor,x(null==o?[R("None")]:[R("Some"),Be(o)])),max_price_stale_seconds:v(e.maxPriceStaleSeconds),max_sanity_price_wad:b(e.maxSanityPriceWad),min_sanity_price_wad:b(e.minSanityPriceWad),primary:Be(e.primary),strategy:g(t),tolerance_bps:g(e.toleranceBps)});var o};function Ae(e,t){return L(e,"upgrade",[E(t.wasmHash)])}function Oe(e,t){return L(e,"migrate",[g(t.newVersion)])}function Ne(e){return L(e,"pause",[])}function Pe(e){return L(e,"unpause",[])}function Ce(e,t){return L(e,"grant_role",[w(t.account),R(t.role)])}function Ue(e,t){return L(e,"revoke_role",[w(t.account),R(t.role)])}function qe(e,t){return L(e,"transfer_ownership",[w(t.newOwner),g(t.liveUntilLedger)])}function Le(e){return L(e,"accept_ownership",[])}function Ve(e,t){return L(e,"set_aggregator",[w(t.aggregator)])}function ze(e,t){return L(e,"set_accumulator",[w(t.accumulator)])}function De(e,t){return L(e,"set_liquidity_pool_template",[E(t.wasmHash)])}function We(e,t){return L(e,"edit_asset_config",[w(t.asset),Te(t.config)])}function Ge(e,t){return L(e,"set_position_limits",[xe(t)])}function Me(e){return L(e,"add_e_mode_category",[])}function Xe(e,t){return L(e,"remove_e_mode_category",[g(t.id)])}const Fe=e=>O({asset:w(e.asset),category_id:g(e.categoryId),can_collateral:S(e.canCollateral),can_borrow:S(e.canBorrow),ltv:g(e.ltv),threshold:g(e.threshold),bonus:g(e.bonus),supply_cap:b(e.supplyCap),borrow_cap:b(e.borrowCap)});function He(e,t){return L(e,"add_asset_to_e_mode_category",[Fe(t)])}function je(e,t){return L(e,"edit_asset_in_e_mode_category",[Fe(t)])}function Qe(e,t){return L(e,"update_pool_caps",[w(t.asset),b(t.supplyCap),b(t.borrowCap)])}function Ze(e,t){return L(e,"remove_asset_from_e_mode",[w(t.asset),g(t.categoryId)])}function Je(e,t){return L(e,"approve_token",[w(t.token)])}function Ke(e,t){return L(e,"revoke_token",[w(t.token)])}function Ye(e,t){return L(e,"configure_market_oracle",[w(e.caller),w(t.asset),$e(t.config)])}function et(e,t){return L(e,"edit_oracle_tolerance",[w(e.caller),w(t.asset),g(t.tolerance)])}function tt(e,t){return L(e,"disable_token_oracle",[w(e.caller),w(t.asset)])}function ot(e,t){return L(e,"update_indexes",[w(e.caller),x(t.assets.map((e=>w(e))))])}function rt(e,t){return L(e,"renew_account",[w(e.caller),v(t.accountNonce)])}function at(e,t){return L(e,"create_liquidity_pool",[w(t.asset),Re(t.params),Te(t.config)])}function nt(e,t){return L(e,"upgrade_liquidity_pool_params",[w(t.asset),ke(t.params)])}function st(e,t){return L(e,"upgrade_liquidity_pool",[w(t.asset),E(t.wasmHash)])}function it(e,t){return L(e,"claim_revenue",[w(e.caller),x(t.assets.map((e=>w(e))))])}function lt(e,t){return L(e,"add_rewards",[w(e.caller),x(t.rewards.map((e=>x([w(e.token),b(e.amount)]))))])}function ct(e,t){return L(e,"update_account_threshold",[w(e.caller),w(t.asset),S(t.hasRisks),x(t.accountNonces.map((e=>v(e))))])}const ut="00".repeat(32),pt=e=>{if("string"==typeof e)return E(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)},dt=(e,...t)=>x([R(e),...t]),_t=e=>O({asset:w(e.asset),category_id:g(e.categoryId),can_collateral:S(e.canCollateral),can_borrow:S(e.canBorrow),ltv:g(e.ltv),threshold:g(e.threshold),bonus:g(e.bonus),supply_cap:b(e.supplyCap),borrow_cap:b(e.borrowCap)}),ft=e=>O({new_owner:w(e.newOwner),live_until_ledger:g(e.liveUntilLedger)}),mt=e=>O({account:w(e.account),role:R(e.role)});function ht(t,a,s){const i=t.governanceAddress??h(t.network),l=new r(i),c=new e(t.caller,t.sourceSequence);return{xdr:new n(c,{fee:t.fee??o,networkPassphrase:_[t.network]}).addOperation(l.call(a,...s)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const yt=(e,t,o)=>ht(e,"propose",[w(e.caller),t,pt(o)]),wt=(e,t,o)=>ht(e,"execute_self",[T(),t,pt(o)]);function bt(e,t,o){return yt(e,dt("SetAggregator",w(t.aggregator)),o)}function gt(e,t,o){return yt(e,dt("SetAccumulator",w(t.accumulator)),o)}function vt(e,t,o){return yt(e,dt("SetLiquidityPoolTemplate",E(t.wasmHash)),o)}function St(e,t,o){return yt(e,dt("EditAssetConfig",w(t.asset),Te(t.config)),o)}function kt(e,t,o){return yt(e,dt("SetPositionLimits",xe(t)),o)}function Rt(e,t,o){return yt(e,dt("SetMinBorrowCollateralUsd",b(t.floorWad)),o)}function Tt(e,t){return yt(e,dt("AddEModeCategory"),t)}function xt(e,t,o){return yt(e,dt("RemoveEModeCategory",g(t.id)),o)}function Et(e,t,o){return yt(e,dt("AddAssetToEModeCategory",_t(t)),o)}function It(e,t,o){return yt(e,dt("EditAssetInEModeCategory",_t(t)),o)}function Bt(e,t,o){return yt(e,dt("UpdatePoolCaps",O({asset:w((r=t).asset),supply_cap:b(r.supplyCap),borrow_cap:b(r.borrowCap)})),o);var r}function $t(e,t,o){return yt(e,dt("RemoveAssetFromEMode",O({asset:w((r=t).asset),category_id:g(r.categoryId)})),o);var r}function At(e,t,o){return yt(e,dt("ApproveToken",w(t.token)),o)}function Ot(e,t,o){return yt(e,dt("RevokeToken",w(t.token)),o)}function Nt(e,t,o){return yt(e,dt("ApproveBlendPool",w(t.pool)),o)}function Pt(e,t,o){return yt(e,dt("RevokeBlendPool",w(t.pool)),o)}function Ct(e,t,o){return yt(e,dt("CreateLiquidityPool",O({asset:w((r=t).asset),params:Re(r.params),config:Te(r.config)})),o);var r}function Ut(e,t,o){return yt(e,dt("UpgradeLiquidityPoolParams",O({asset:w((r=t).asset),params:ke(r.params)})),o);var r}function qt(e,t){return yt(e,dt("DeployPool"),t)}function Lt(e,t,o){return yt(e,dt("UpgradePool",E(t.wasmHash)),o)}function Vt(e,t,o){return yt(e,dt("DisableTokenOracle",w(t.asset)),o)}function zt(e,t,o){return yt(e,dt("UpgradeController",E(t.wasmHash)),o)}function Dt(e,t,o){return yt(e,dt("MigrateController",g(t.newVersion)),o)}function Wt(e,t,o){return yt(e,dt("TransferCtrlOwnership",ft(t)),o)}function Gt(e,t,o){return yt(e,dt("ConfigureMarketOracle",O({asset:w((r=t).asset),cfg:$e(r.config)})),o);var r}function Mt(e,t,o){return yt(e,dt("EditOracleTolerance",O({asset:w((r=t).asset),tolerance:g(r.tolerance)})),o);var r}function Xt(e,t,o){return yt(e,dt("UpgradeGov",E(t.wasmHash)),o)}function Ft(e,t,o){return yt(e,dt("UpdateGovDelay",g(t.newDelay)),o)}function Ht(e,t,o){return yt(e,dt("GrantGovRole",mt(t)),o)}function jt(e,t,o){return yt(e,dt("RevokeGovRole",mt(t)),o)}function Qt(e,t,o){return yt(e,dt("TransferGovOwnership",ft(t)),o)}function Zt(e,t){const o=x(t.argsXdr.map((e=>i.ScVal.fromXDR(e,"base64")))),r=pt(t.predecessor??ut);return ht(e,"execute",[T(),w(t.target),R(t.functionName),o,r,pt(t.salt)])}function Jt(e,t,o){return wt(e,dt("UpgradeGov",E(t.wasmHash)),o)}function Kt(e,t,o){return wt(e,dt("UpdateGovDelay",g(t.newDelay)),o)}function Yt(e,t,o){return wt(e,dt("GrantGovRole",mt(t)),o)}function eo(e,t,o){return wt(e,dt("RevokeGovRole",mt(t)),o)}function to(e,t,o){return wt(e,dt("TransferGovOwnership",ft(t)),o)}const oo=e=>e.toXDR("base64"),ro=e=>i.ScVal.fromXDR(e,"base64"),ao=e=>e.map((e=>String(s(ro(e))))).join(":"),no=e=>"bigint"==typeof e||"number"==typeof e?e.toString():String(e),so=e=>Number(e),io=e=>String(e),lo=e=>null==e?void 0:no(e),co=e=>null==e?void 0:io(e),uo=e=>e instanceof Uint8Array?Buffer.from(e).toString("hex"):Buffer.isBuffer(e)?e.toString("hex"):String(e),po=["None","Multiply","Long","Short"],_o=["Single","PrimaryWithAnchor"],fo=["ReflectorSep40","RedStonePriceFeed"],mo=["Spot","Twap"],ho=["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"],yo=e=>Array.isArray(e)?e:[],wo=e=>({loanToValueBps:so(e.loan_to_value_bps),liquidationThresholdBps:so(e.liquidation_threshold_bps),liquidationBonusBps:so(e.liquidation_bonus_bps),liquidationFeesBps:so(e.liquidation_fees_bps),isCollateralizable:Boolean(e.is_collateralizable),isBorrowable:Boolean(e.is_borrowable),isFlashloanable:Boolean(e.is_flashloanable),flashloanFeeBps:so(e.flashloan_fee_bps),eModeCategories:(e.e_mode_categories??[]).map(so)}),bo=(e,t)=>{const o="Borrow"===t;return{action:(r=e[0],ho[so(r)]??no(r)),positionType:t,asset:io(e[1]),scaledAmountRay:no(e[2]),indexRay:no(e[3]),amount:no(e[4]),liquidationThresholdBps:o?void 0:so(e[5]),liquidationBonusBps:o?void 0:so(e[6]),loanToValueBps:o?void 0:so(e[7])};var r},go=e=>{return{owner:io(e[0]),eModeCategoryId:so(e[1]),mode:(t=e[2],po[so(t)]??"None")};var t},vo=(e,t)=>{const o=mo[so(e[`${t}_read_mode`])]??"Spot",r=e[`${t}_asset`],a=e[`${t}_symbol`],n=null!=r?{kind:"Stellar",value:io(r)}:null!=a?{kind:"Symbol",value:io(a)}:void 0;return{provider:fo[so(e[`${t}_provider`])]??"ReflectorSep40",contractAddress:io(e[`${t}_contract`]),asset:n,feedId:co(e[`${t}_feed_id`]),readMode:o,twapRecords:"Twap"===o?so(e[`${t}_twap_records`]):void 0,decimals:so(e[`${t}_decimals`]),resolutionSeconds:so(e[`${t}_resolution_seconds`]),maxStaleSeconds:so(e[`${t}_max_stale_seconds`])}},So=e=>{const t=null!==e.anchor_provider&&void 0!==e.anchor_provider;return{baseTokenId:io(e.base_token_id),quoteTokenId:io(e.quote_token_id),tolerance:{upperRatio:so(e.upper_ratio_bps??e.tolerance?.upper_ratio_bps),lowerRatio:so(e.lower_ratio_bps??e.tolerance?.lower_ratio_bps)},assetDecimals:so(e.asset_decimals),maxPriceStaleSeconds:so(e.max_price_stale_seconds),strategy:_o[so(e.strategy)]??"Single",primary:vo(e,"primary"),anchor:t?vo(e,"anchor"):void 0,primaryQuoteToken:co(e.primary_quote_token),anchorQuoteToken:co(e.anchor_quote_token),minSanityPriceWad:lo(e.min_sanity_price_wad),maxSanityPriceWad:lo(e.max_sanity_price_wad)}},ko={"market:create":e=>({topic:"market:create",data:{baseAsset:io(e.base_asset),maxBorrowRate:no(e.max_borrow_rate),baseBorrowRate:no(e.base_borrow_rate),slope1:no(e.slope1),slope2:no(e.slope2),slope3:no(e.slope3),midUtilization:no(e.mid_utilization),optimalUtilization:no(e.optimal_utilization),maxUtilization:lo(e.max_utilization),reserveFactor:so(e.reserve_factor),marketAddress:io(e.market_address),config:wo(e.config)}}),"market:params_update":e=>({topic:"market:params_update",data:{asset:io(e.asset),maxBorrowRateRay:no(e.max_borrow_rate_ray),baseBorrowRateRay:no(e.base_borrow_rate_ray),slope1Ray:no(e.slope1_ray),slope2Ray:no(e.slope2_ray),slope3Ray:no(e.slope3_ray),midUtilizationRay:no(e.mid_utilization_ray),optimalUtilizationRay:no(e.optimal_utilization_ray),maxUtilizationRay:lo(e.max_utilization_ray),reserveFactorBps:so(e.reserve_factor_bps)}}),"market:batch_state_update":e=>({topic:"market:batch_state_update",data:{updates:yo(e).map((e=>{return t=yo(e),{asset:io(t[0]),timestamp:so(t[1]),supplyIndexRay:no(t[2]),borrowIndexRay:no(t[3]),reservesRay:no(t[4]),suppliedRay:no(t[5]),borrowedRay:no(t[6]),revenueRay:no(t[7]),assetPriceWad:lo(t[8])};var t}))}}),"market:batch_params_update":e=>({topic:"market:batch_params_update",data:{updates:yo(e).map((e=>{const t=e;return{asset:io(t.asset),params:(o=t.params,{maxBorrowRateRay:no(o.max_borrow_rate_ray),baseBorrowRateRay:no(o.base_borrow_rate_ray),slope1Ray:no(o.slope1_ray),slope2Ray:no(o.slope2_ray),slope3Ray:no(o.slope3_ray),midUtilizationRay:no(o.mid_utilization_ray),optimalUtilizationRay:no(o.optimal_utilization_ray),maxUtilizationRay:lo(o.max_utilization_ray),reserveFactorBps:so(o.reserve_factor_bps),supplyCap:no(o.supply_cap),borrowCap:no(o.borrow_cap),assetId:co(o.asset_id),assetDecimals:void 0===o.asset_decimals?void 0:so(o.asset_decimals)})};var o}))}}),"position:batch_update":e=>{const t=yo(e);return{topic:"position:batch_update",data:{accountId:no(t[0]),accountAttributes:go(yo(t[1])),updates:[...yo(t[2]).map((e=>bo(yo(e),"Deposit"))),...yo(t[3]).map((e=>bo(yo(e),"Borrow")))]}}},"position:flash_loan":e=>({topic:"position:flash_loan",data:{asset:io(e.asset),receiver:io(e.receiver),caller:io(e.caller),amount:no(e.amount),fee:no(e.fee)}}),"config:asset":e=>({topic:"config:asset",data:{asset:io(e.asset),config:wo(e.config)}}),"config:oracle":e=>({topic:"config:oracle",data:{asset:io(e.asset),oracle:So(e.oracle)}}),"config:emode_category":e=>({topic:"config:emode_category",data:{category:{categoryId:so(e.category.category_id),isDeprecated:Boolean(e.category.is_deprecated)}}}),"config:emode_asset":e=>({topic:"config:emode_asset",data:{asset:io(e.asset),config:{isCollateralizable:Boolean(e.config.is_collateralizable),isBorrowable:Boolean(e.config.is_borrowable),loanToValueBps:so(e.config.loan_to_value_bps),liquidationThresholdBps:so(e.config.liquidation_threshold_bps),liquidationBonusBps:so(e.config.liquidation_bonus_bps),supplyCap:no(e.config.supply_cap),borrowCap:no(e.config.borrow_cap)},categoryId:so(e.category_id)}}),"config:remove_emode_asset":e=>({topic:"config:remove_emode_asset",data:{asset:io(e.asset),categoryId:so(e.category_id)}}),"debt:bad_debt":e=>({topic:"debt:bad_debt",data:{accountId:no(e.account_id),totalBorrowUsdWad:no(e.total_borrow_usd_wad),totalCollateralUsdWad:no(e.total_collateral_usd_wad)}}),"strategy:initial_payment":e=>({topic:"strategy:initial_payment",data:{token:io(e.token),amount:no(e.amount),usdValueWad:no(e.usd_value_wad),accountId:no(e.account_id)}}),"strategy:fee":e=>({topic:"strategy:fee",data:{asset:io(e.asset),amount:no(e.amount),fee:no(e.fee),amountSent:no(e.amount_sent)}}),"config:approve_token":e=>({topic:"config:approve_token",data:{wasmHash:uo(e.wasm_hash),approved:Boolean(e.approved)}}),"config:aggregator":e=>({topic:"config:aggregator",data:{aggregator:io(e.aggregator)}}),"config:accumulator":e=>({topic:"config:accumulator",data:{accumulator:io(e.accumulator)}}),"config:pool_template":e=>({topic:"config:pool_template",data:{wasmHash:uo(e.wasm_hash)}}),"config:position_limits":e=>({topic:"config:position_limits",data:{maxSupplyPositions:so(e.max_supply_positions),maxBorrowPositions:so(e.max_borrow_positions)}}),"config:oracle_disabled":e=>({topic:"config:oracle_disabled",data:{asset:io(e.asset)}})},Ro=Object.freeze(Object.keys(ko));function To(e,t){const o=ao(e),r=ko[o];return r?r(s(ro(t))):null}const xo="XLENDXLM-a7c9f3",Eo=1e4;function Io(e){const t=BigInt(e).toString(16),o=t.length%2==0?t:`0${t}`;return`${xo}-${o}`}function Bo(e){const t=e.split("-");return t.length>=2&&parseInt(t[1],10)||0}function $o(e,t=0){return 1e4*e+t}function Ao(e){switch(e){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Oo=(e,t,o)=>{const r=new URL(t,e.endsWith("/")?e:`${e}/`);if(o)for(const[e,t]of Object.entries(o))void 0!==t&&r.searchParams.set(e,String(t));return r.toString()},No=e=>e.baseUrl??d[e.network];async function Po(e,t){if(null==e.amountIn==(null==e.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=Oo(No(t),"api/v1/quote",{from:e.from,to:e.to,amountIn:e.amountIn,amountOut:e.amountOut,maxHops:e.maxHops,maxSplits:e.maxSplits,slippage:e.slippage,includePaths:e.includePaths,sender:e.sender,router:e.router,platform:e.platform,fresh:e.fresh}),r=await fetch(o,t.fetchOptions);if(!r.ok){const e=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${o} — ${e}`)}return await r.json()}async function Co(e){const t=Oo(No(e),"api/v1/tokens"),o=await fetch(t,e.fetchOptions);if(!o.ok){const e=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${t} — ${e}`)}return await o.json()}const Uo=(e,t)=>(e=>Boolean(e&&"object"==typeof e&&!(e instanceof Uint8Array)&&"paths"in e))(e)&&void 0===e.referralId?{...e,referralId:t??0}:e,qo=e=>N(e).toXDR("base64");function Lo(t,a){const s=t.routerAddress??m(t.network),i=new r(s),l=new e(t.caller,t.sourceSequence),c=U(Uo(a,t.referralId));return{xdr:new n(l,{fee:t.fee??o,networkPassphrase:_[t.network]}).addOperation(i.call("execute_strategy",w(t.caller),b(t.totalIn),c)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function Vo(e,t){return Lo(e,t)}function zo(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(Go),splitPpm:e.splitPpm}))):[{hops:e.hops.map(Go),splitPpm:1e6}],referralId:t.referralId??0,tokenIn:e.from,tokenOut:e.to,totalMinOut:e.amountOutMin}}function Do(e,t={}){const o=e;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:zo(e,t)}const Wo=zo,Go=e=>({amountOut:e.amountOut,pool:e.address,tokenIn:e.from,tokenOut:e.to,venue:e.dex});function Mo(e,t){const o=t instanceof Error?t.message:String(t);return new Error(`[xoxno-invoked:${e}] ${o}`)}async function Xo(e,t,o){const r=n.fromXDR(t,"base64");try{return(await e.prepareTransaction(r)).toXDR()}catch(e){if(o?.invokedContractId)throw Mo(o.invokedContractId,e);throw e}}async function Fo(e,t,o){return Xo(e,t.xdr,o)}function Ho(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 jo(e,t){return{paths:[{hops:[{amountOut:"0",pool:e,tokenIn:e,tokenOut:e,venue:"Soroswap"}],splitPpm:1e6}],referralId:0,tokenIn:e,tokenOut:e,totalMinOut:t}}const Qo=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 Zo(t){const o=new e(t.caller,t.sourceSequence),a=new r(t.forwarderAddress).call("mint_and_forward",i.ScVal.scvBytes(Qo(t.message)),i.ScVal.scvBytes(Qo(t.attestation)));return{xdr:new n(o,{fee:t.fee??"10000000",networkPassphrase:_[t.network]}).addOperation(a).setTimeout(t.timeoutSeconds??120).build().toXDR()}}export{c as STELLAR_AGGREGATOR_ROUTER,u as STELLAR_GOVERNANCE,ut as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,l as STELLAR_LENDING_CONTROLLER,Ro as STELLAR_LENDING_TOPICS,_ as STELLAR_NETWORK_PASSPHRASE,d as STELLAR_QUOTE_URL,p as STELLAR_SOROBAN_RPC_URL,Eo as SYNTHETIC_EVENT_ORDER_STRIDE,xo as XOXNO_LENDING_STELLAR_TICKER,jo as buildSameTokenRepaySwapSteps,Le as buildStellarAcceptOwnershipTx,He as buildStellarAddAssetToEModeCategoryTx,Me as buildStellarAddEModeCategoryTx,lt as buildStellarAddRewardsTx,Je as buildStellarApproveTokenTx,Vo as buildStellarBatchSwapTx,D as buildStellarBorrowBatchTx,W as buildStellarBorrowTx,Zo as buildStellarCctpForwardTx,it as buildStellarClaimRevenueTx,Ye as buildStellarConfigureMarketOracleTx,at as buildStellarCreateLiquidityPoolTx,tt as buildStellarDisableTokenOracleTx,We as buildStellarEditAssetConfigTx,je as buildStellarEditAssetInEModeCategoryTx,et as buildStellarEditOracleToleranceTx,Lo as buildStellarExecuteStrategyTx,j as buildStellarFlashLoanTx,Jt as buildStellarGovernanceExecuteGovernanceUpgradeTx,Yt as buildStellarGovernanceExecuteGrantGovernanceRoleTx,eo as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,to as buildStellarGovernanceExecuteTransferGovOwnTx,Zt as buildStellarGovernanceExecuteTx,Kt as buildStellarGovernanceExecuteUpdateDelayTx,Ce as buildStellarGrantRoleTx,Io as buildStellarLendingIdentifier,H as buildStellarLiquidateTx,Q as buildStellarMigrateFromBlendTx,Oe as buildStellarMigrateTx,Z as buildStellarMultiplyTx,Ne as buildStellarPauseTx,Et as buildStellarProposeAddAssetToEModeTx,Tt as buildStellarProposeAddEModeCategoryTx,Nt as buildStellarProposeApproveBlendPoolTx,At as buildStellarProposeApproveTokenTx,Gt as buildStellarProposeConfigureMarketOracleTx,Ct as buildStellarProposeCreateLiquidityPoolTx,qt as buildStellarProposeDeployPoolTx,Vt as buildStellarProposeDisableTokenOracleTx,St as buildStellarProposeEditAssetConfigTx,It as buildStellarProposeEditAssetInEModeTx,Mt as buildStellarProposeEditOracleToleranceTx,Xt as buildStellarProposeGovernanceUpgradeTx,Ht as buildStellarProposeGrantGovernanceRoleTx,Dt as buildStellarProposeMigrateControllerTx,$t as buildStellarProposeRemoveAssetFromEModeTx,xt as buildStellarProposeRemoveEModeCategoryTx,Pt as buildStellarProposeRevokeBlendPoolTx,jt as buildStellarProposeRevokeGovernanceRoleTx,Ot as buildStellarProposeRevokeTokenTx,gt as buildStellarProposeSetAccumulatorTx,bt as buildStellarProposeSetAggregatorTx,Rt as buildStellarProposeSetMinBorrowCollatTx,vt as buildStellarProposeSetPoolTemplateTx,kt as buildStellarProposeSetPositionLimitsTx,Wt as buildStellarProposeTransferCtrlOwnershipTx,Qt as buildStellarProposeTransferGovOwnTx,Ft as buildStellarProposeUpdateDelayTx,Bt as buildStellarProposeUpdatePoolCapsTx,zt as buildStellarProposeUpgradeControllerTx,Ut as buildStellarProposeUpgradePoolParamsTx,Lt as buildStellarProposeUpgradePoolTx,Ze as buildStellarRemoveAssetFromEModeTx,Xe as buildStellarRemoveEModeCategoryTx,rt as buildStellarRenewAccountTx,X as buildStellarRepayBatchTx,Y as buildStellarRepayDebtWithCollateralTx,F as buildStellarRepayTx,Ue as buildStellarRevokeRoleTx,Ke as buildStellarRevokeTokenTx,ze as buildStellarSetAccumulatorTx,Ve as buildStellarSetAggregatorTx,De as buildStellarSetLiquidityPoolTemplateTx,Ge as buildStellarSetPositionLimitsTx,V as buildStellarSupplyBatchTx,z as buildStellarSupplyTx,K as buildStellarSwapCollateralTx,J as buildStellarSwapDebtTx,qe as buildStellarTransferOwnershipTx,Pe as buildStellarUnpauseTx,ct as buildStellarUpdateAccountThresholdTx,ot as buildStellarUpdateIndexesTx,Qe as buildStellarUpdatePoolCapsTx,Ae as buildStellarUpgradeControllerTx,nt as buildStellarUpgradeLiquidityPoolParamsTx,st as buildStellarUpgradeLiquidityPoolTx,G as buildStellarWithdrawBatchTx,M as buildStellarWithdrawTx,L as buildTx,To as decodeStellarLendingEvent,Te as encodeAssetConfigRaw,ke as encodeInterestRateModel,$e as encodeMarketOracleConfigInput,Re as encodeMarketParamsRaw,Be as encodeOracleSourceConfigInput,xe as encodePositionLimits,qo as encodeStrategyPayloadToRouteXdr,Bo as extractEventOrder,me as getStellarAccountPositions,Po as getStellarAggregatorQuote,m as getStellarAggregatorRouter,ce as getStellarAsset,ye as getStellarAssetGraph,ue as getStellarAssetMarkets,re as getStellarAssets,h as getStellarGovernance,he as getStellarGovernanceProposals,pe as getStellarHub,we as getStellarHubGraph,ae as getStellarHubs,f as getStellarLendingController,Co as getStellarQuoteTokens,ie as getStellarReserve,ge as getStellarReserveGraph,le as getStellarReserveHolders,se as getStellarReserves,de as getStellarSpoke,be as getStellarSpokeGraph,ne as getStellarSpokes,fe as getStellarUserActivity,_e as getStellarUserPositions,Wo as mapQuoteResponseToAggregatorSwap,zo as mapQuoteResponseToStrategyPayload,Do as mapQuoteResponseToStrategySwap,Ao as mapStellarPositionActivityType,Fo as prepareStellarBuiltTx,Xo as prepareStellarTxXdr,ao as stellarLendingDispatchKey,ve as stellarLendingRead,$o as syntheticEventOrder,Mo as tagStellarInvokedContractError,oo as toBase64Xdr,Ho as toStellarPositionMode};
|
|
@@ -11,8 +11,25 @@
|
|
|
11
11
|
* delegated to `XOXNOClient.fetchWithTimeout`, the same wrapper the generated
|
|
12
12
|
* SDK uses.
|
|
13
13
|
*/
|
|
14
|
+
import type { StellarAssetListItem, StellarHubListItem, StellarReserveListItem, StellarSpokeListItem, StellarUserActivityItem } from '@xoxno/types/stellar-lending';
|
|
14
15
|
import type { OurRequestInit, XOXNOClient } from '../../utils/api';
|
|
15
16
|
import type { StellarAccountPositions, StellarAsset, StellarAssetMarket, StellarGovernanceProposalsPage, StellarHub, StellarLendingHoldersSide, StellarLendingMarketSide, StellarMarketGraph, StellarMarketGraphQuery, StellarReserve, StellarSpoke, StellarTopHolders } from './lending-read-types';
|
|
17
|
+
/** Every asset, aggregated across hubs — rows for the Deposit/Borrow tables. */
|
|
18
|
+
export declare const getStellarAssets: (client: XOXNOClient, init?: OurRequestInit) => Promise<StellarAssetListItem[]>;
|
|
19
|
+
/** Every hub, aggregated over its hub-assets — rows for the All Hubs table. */
|
|
20
|
+
export declare const getStellarHubs: (client: XOXNOClient, init?: OurRequestInit) => Promise<StellarHubListItem[]>;
|
|
21
|
+
/** Every spoke, aggregated over its reserves — rows for the All Markets table. */
|
|
22
|
+
export declare const getStellarSpokes: (client: XOXNOClient, init?: OurRequestInit) => Promise<StellarSpokeListItem[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Reserve rows (asset in a spoke on a hub), optionally filtered. Filters are
|
|
25
|
+
* omitted from the query string when unset; api-v2 defaults `hubId`/`spokeId`
|
|
26
|
+
* to `-1` and `asset` to `''` (no filter).
|
|
27
|
+
*/
|
|
28
|
+
export declare const getStellarReserves: (client: XOXNOClient, params?: {
|
|
29
|
+
hubId?: number;
|
|
30
|
+
spokeId?: number;
|
|
31
|
+
asset?: string;
|
|
32
|
+
}, init?: OurRequestInit) => Promise<StellarReserveListItem[]>;
|
|
16
33
|
/** Reserve detail: one asset, in one spoke, on one hub. */
|
|
17
34
|
export declare const getStellarReserve: (client: XOXNOClient, spokeId: number, hubId: number, asset: string, init?: OurRequestInit) => Promise<StellarReserve>;
|
|
18
35
|
/** Top holders of a reserve, for one side (deposits or borrows). */
|
|
@@ -27,6 +44,15 @@ export declare const getStellarHub: (client: XOXNOClient, hubId: number, init?:
|
|
|
27
44
|
export declare const getStellarSpoke: (client: XOXNOClient, spokeId: number, init?: OurRequestInit) => Promise<StellarSpoke>;
|
|
28
45
|
/** All positions for an owner (cross-partition portfolio). */
|
|
29
46
|
export declare const getStellarUserPositions: (client: XOXNOClient, owner: string, init?: OurRequestInit) => Promise<StellarAccountPositions>;
|
|
47
|
+
/**
|
|
48
|
+
* A user's lending action feed (newest first), paged. `skip`/`top` are omitted
|
|
49
|
+
* from the query string when unset; api-v2 defaults `skip` to `0` and `top` to
|
|
50
|
+
* `50` (capped at `200`).
|
|
51
|
+
*/
|
|
52
|
+
export declare const getStellarUserActivity: (client: XOXNOClient, owner: string, params?: {
|
|
53
|
+
skip?: number;
|
|
54
|
+
top?: number;
|
|
55
|
+
}, init?: OurRequestInit) => Promise<StellarUserActivityItem[]>;
|
|
30
56
|
/** All positions for a single account (single-partition). */
|
|
31
57
|
export declare const getStellarAccountPositions: (client: XOXNOClient, accountId: string, init?: OurRequestInit) => Promise<StellarAccountPositions>;
|
|
32
58
|
/** Governance proposals (cursor-paginated). */
|
|
@@ -48,6 +74,14 @@ export declare const getStellarReserveGraph: (client: XOXNOClient, spokeId: numb
|
|
|
48
74
|
* client through every call.
|
|
49
75
|
*/
|
|
50
76
|
export declare const stellarLendingRead: (client: XOXNOClient) => {
|
|
77
|
+
assets: (init?: OurRequestInit) => Promise<StellarAssetListItem[]>;
|
|
78
|
+
hubs: (init?: OurRequestInit) => Promise<StellarHubListItem[]>;
|
|
79
|
+
spokes: (init?: OurRequestInit) => Promise<StellarSpokeListItem[]>;
|
|
80
|
+
reserves: (params?: {
|
|
81
|
+
hubId?: number;
|
|
82
|
+
spokeId?: number;
|
|
83
|
+
asset?: string;
|
|
84
|
+
}, init?: OurRequestInit) => Promise<StellarReserveListItem[]>;
|
|
51
85
|
reserve: (spokeId: number, hubId: number, asset: string, init?: OurRequestInit) => Promise<StellarReserve>;
|
|
52
86
|
reserveHolders: (spokeId: number, hubId: number, asset: string, side: StellarLendingHoldersSide, init?: OurRequestInit) => Promise<StellarTopHolders>;
|
|
53
87
|
asset: (asset: string, init?: OurRequestInit) => Promise<StellarAsset>;
|
|
@@ -55,6 +89,10 @@ export declare const stellarLendingRead: (client: XOXNOClient) => {
|
|
|
55
89
|
hub: (hubId: number, init?: OurRequestInit) => Promise<StellarHub>;
|
|
56
90
|
spoke: (spokeId: number, init?: OurRequestInit) => Promise<StellarSpoke>;
|
|
57
91
|
userPositions: (owner: string, init?: OurRequestInit) => Promise<StellarAccountPositions>;
|
|
92
|
+
userActivity: (owner: string, params?: {
|
|
93
|
+
skip?: number;
|
|
94
|
+
top?: number;
|
|
95
|
+
}, init?: OurRequestInit) => Promise<StellarUserActivityItem[]>;
|
|
58
96
|
accountPositions: (accountId: string, init?: OurRequestInit) => Promise<StellarAccountPositions>;
|
|
59
97
|
governanceProposals: (opts?: {
|
|
60
98
|
top?: number;
|
|
@@ -67,3 +105,4 @@ export declare const stellarLendingRead: (client: XOXNOClient) => {
|
|
|
67
105
|
};
|
|
68
106
|
export type StellarLendingRead = ReturnType<typeof stellarLendingRead>;
|
|
69
107
|
export * from './lending-read-types';
|
|
108
|
+
export type { StellarApyRange, StellarAssetListItem, StellarHubListItem, StellarReserveListItem, StellarSpokeListItem, StellarUserActivityItem, } from '@xoxno/types/stellar-lending';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xoxno/sdk-js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.164",
|
|
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.435"
|
|
118
118
|
},
|
|
119
119
|
"peerDependencies": {
|
|
120
120
|
"@stellar/stellar-sdk": ">=15.0.0 <17.0.0"
|