@xoxno/sdk-js 1.0.130 → 1.0.131
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/README.md +9 -0
- package/dist/index.bundled.d.cts +308 -125
- package/dist/index.bundled.d.ts +308 -125
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/sdk/stellar/admin.d.ts +1 -1
- package/dist/sdk/stellar/contracts.d.ts +14 -0
- package/dist/sdk/stellar/governance.d.ts +165 -0
- package/dist/sdk/stellar/index.d.ts +1 -0
- package/dist/sdk/stellar/lending.d.ts +7 -0
- package/dist/sdk/swagger.d.ts +146 -124
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis);import{Account as t,Address as e,BASE_FEE as o,Contract as r,ScInt as u,TransactionBuilder as n,scValToNative as i,xdr as a}from"@stellar/stellar-sdk";const s="https://api.xoxno.com",p="erd1qqqqqqqqqqqqqpgq705fxpfrjne0tl3ece0rrspykq88mynn4kxs2cg43s",d="erd1qqqqqqqqqqqqqpgqd9rvv2n378e27jcts8vfwynpx0gfl5ufz6hqhfy0u0",c="erd1qqqqqqqqqqqqqpgq8xwzu82v8ex3h4ayl5lsvxqxnhecpwyvwe0sf2qj4e";var l;!function(t){t.MAINNET="1",t.DEVNET="D"}(l||(l={}));class y{apiUrl;chain;init;config;constructor({chain:t=l.MAINNET,apiUrl:e=s,...o}={}){this.apiUrl=e??{[l.MAINNET]:s,[l.DEVNET]:"https://devnet-api.xoxno.com"}[t],this.chain=t,this.init=o,this.config=t==l.MAINNET?{mediaUrl:"https://media.xoxno.com",gatewayUrl:"https://gateway.xoxno.com",XO_SC:"erd1qqqqqqqqqqqqqpgq6wegs2xkypfpync8mn2sa5cmpqjlvrhwz5nqgepyg8",FM_SC:p,DR_SC:d,KG_SC:c,Staking_SC:"erd1qqqqqqqqqqqqqpgqvpkd3g3uwludduv3797j54qt6c888wa59w2shntt6z",Manager_SC:"erd1qqqqqqqqqqqqqpgqg9fa0dmpn8fu3fnleeqn5zt8rl8mdqjkys5s2gtas7",P2P_SC:"erd1qqqqqqqqqqqqqpgq47y8hnct68v6asjv6gxem6h9rumn9frzah0skhxxt6"}:{mediaUrl:"https://devnet-media.xoxno.com",gatewayUrl:"https://devnet-gateway.xoxno.com",XO_SC:"erd1qqqqqqqqqqqqqpgql0dnz6n5hpuw8cptlt00khd0nn4ja8eadsfq2xrqw4",FM_SC:p,DR_SC:d,KG_SC:c,Staking_SC:"erd1qqqqqqqqqqqqqpgqsc5hnewwpep8qq0d7kjjzrquapuucrygah0s85zres",Manager_SC:"erd1qqqqqqqqqqqqqpgqluclyhfsa2uw7q9cjwd8knk989hg57u8ah0slq2nlr",P2P_SC:"erd1qqqqqqqqqqqqqpgqfja7ukpngrun78ueq583l0vd6aj4ekhrah0sa9wyrv"}}fetchWithTimeout=async(t,{params:e,...o}={})=>{const{next:r,cache:u,debug:n,...i}=this.init,{next:a,cache:s,debug:p,headers:d,method:c="GET",...l}=o,y=d?.Authorization,f="Bearer undefined"===y?void 0:y,m={...d,Referer:"https://xoxno.sdk","User-Agent":"XOXNO/1.0/SDK",..."PUT"===c?{}:{"Content-Type":"application/json"},...f?{Authorization:f}:{}},b=Object.entries(e??{}).flatMap((([t,e])=>Array.isArray(e)?e.map((e=>`${t}=${encodeURIComponent(e)}`)):`${t}=${encodeURIComponent(e)}`)).join("&"),_=`${this.apiUrl}${t}${b.length?`?${b}`:""}`,{revalidate:g,...q}=r??{},{revalidate:h,...w}=a??{},v="GET"!==c||f?void 0:h??g,A="GET"!==c||f||v?void 0:s??u,S={...i,...l,method:c,...Object.keys(m).length?{headers:m}:{},cache:A,next:{...q,...w,revalidate:v}};(p??n)&&console.debug("SDK fetch: ",_,S);const T=await fetch(_,S).catch((t=>{if(t instanceof Error&&!t.message.match(/^http(s?):\/\//))throw new Error(`${_}: ${t.message}`);throw t})),k=await T.text();if(!T.ok){let t;try{t=JSON.parse(k)}catch{t={message:k}}const e=[_,T.status,T.statusText,t.message].filter(Boolean).join(";;");throw new Error(e)}try{return JSON.parse(k)}catch{return k}}}const f=t=>{const e=/^0x[a-fA-F0-9]{1,64}-[a-zA-Z0-9_]+-[a-zA-Z0-9_]+(<.+>)?$/.test(decodeURIComponent(t)),o=/^[A-Z0-9]{3,10}-[a-z0-9]{6}$/.test(t);return e||o},m=t=>{const e=/^0x[a-fA-F0-9]{1,64}$/.test(t),o=/^[A-Za-z0-9]{3,10}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2,7}(?:-\d+(?:-[A-Za-z0-9]+)?)?$/.test(t);return e||o};class b extends Error{constructor(t){super(`Invalid collection ticker: ${t}`)}}class _ extends Error{constructor(t){super(`Invalid address: ${t}`)}}Error,Error;const g=t=>!!t&&(t.startsWith("erd1")&&62===t.length||/^0x[a-fA-F0-9]{40,64}$/.test(t)||/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(t)||/^G[A-Z2-7]{55}$/.test(t)),q={"/liquid/xoxno/rate":{input:{},output:{}},"/liquid/xoxno/liquid-supply":{input:{},output:{}},"/liquid/xoxno/staked":{input:{},output:{}},"/user/login":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/:address/network-account":{input:{},output:{}},"/user/:address/token-inventory":{input:{},output:{}},"/user/network-account":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/me/profile":{input:{},output:{},securityMode:"requiredAny"},"/user/:address/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/me":{input:{},output:{},securityMode:"requiredAny"},"/user/me/settings":{input:{},output:{},securityMode:"optionalAny"},"/user/me/settings/notification-preferences":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"optionalAny"}},"/user/me/settings/email":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredJwt"}},"/user/me/settings/phone":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/me/settings/billing":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/me/settings/verify-email":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/buy/signature":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/upload-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/reset-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/reset-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:tag/creator/is-registered":{input:{},output:{}},"/user/:address/creator/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/upload-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/reset-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/reset-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/favorite/collections":{input:{},output:{}},"/user/favorite/:favoriteId":{input:{},output:{},securityMode:"requiredAny"},"/user/:address/follow":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/favorite/users":{input:{},output:{}},"/tokens":{input:{},output:{}},"/tokens/swap":{input:{},output:{}},"/stellar/tokens":{input:{},output:{}},"/tokens/restricted":{input:{},output:{}},"/tokens/usd-price":{input:{},output:{}},"/tokens/egld/fiat-price":{input:{},output:{}},"/tokens/xoxno/info":{input:{},output:{}},"/liquid/xoxno/stats":{input:{},output:{}},"/liquid/egld/stats":{input:{},output:{}},"/liquid/sui/stats":{input:{},output:{}},"/analytics/marketplace-unique-users":{input:{},output:{}},"/liquid/egld/rate":{input:{},output:{}},"/liquid/egld/liquid-supply":{input:{},output:{}},"/liquid/egld/staked":{input:{},output:{}},"/liquid/egld/pending-fees":{input:{},output:{}},"/liquid/egld/pending-undelegate":{input:{},output:{}},"/liquid/egld/pending-delegate":{input:{},output:{}},"/liquid/egld/execute-delegate":{input:{},output:{}},"/liquid/egld/execute-undelegate":{input:{},output:{}},"/liquid/egld/protocol-apr":{input:{},output:{}},"/liquid/egld/providers":{input:{},output:{}},"/user/:address/delegation":{input:{},output:{}},"/lending/market/:token/profile":{input:{},output:{}},"/lending/market/query":{input:{},output:{}},"/user/lending/:address":{input:{},output:{}},"/lending/market/indexes":{input:{},output:{}},"/user/lending/position/:identifier":{input:{},output:{}},"/lending/pnl":{input:{},output:{}},"/user/lending/pnl/:address":{input:{},output:{}},"/user/lending/summary/:identifier":{input:{},output:{}},"/user/lending/image/:nonce":{input:{},output:{}},"/lending/market/emode-categories":{input:{},output:{}},"/lending/market/:token/emode-categories":{input:{},output:{}},"/lending/market/:token/analytics":{input:{},output:{}},"/lending/market/:token/average":{input:{},output:{}},"/lending/leaderboard":{input:{},output:{}},"/lending/leaderboard/liquidate":{input:{},output:{}},"/lending/leaderboard/clean-bad-debt":{input:{},output:{}},"/lending/stats":{input:{},output:{}},"/lending/market/prices":{input:{},output:{}},"/nft/query":{input:{},output:{}},"/nft/:identifier/like":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/inventory-summary":{input:{},output:{}},"/user/:address/offers":{input:{},output:{}},"/nft/offer/query":{input:{},output:{}},"/nft/offer/:identifier":{input:{},output:{}},"/user/:address/favorite/nfts":{input:{},output:{}},"/collection/:collection/attributes":{input:{},output:{}},"/nft/:identifier/offers":{input:{},output:{}},"/collection/:collection/ranks":{input:{},output:{}},"/collection/:collection/listings":{input:{},output:{}},"/nft/pinned":{input:{},output:{}},"/nft/sign-withdraw":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/sign-offer":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/sign-mint":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/nft/:identifier":{input:{},output:{}},"/collection/:collection/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/floor-price":{input:{},output:{}},"/collection/floor-price":{input:{},output:{}},"/collection/pinned":{input:{},output:{}},"/collection/pinned-drops":{input:{},output:{}},"/collection/:collection/pinned-drops":{input:{},output:{}},"/collection/:collection/pinned":{input:{},output:{}},"/collection/:collection/follow":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/query":{input:{},output:{}},"/collection/drops/query":{input:{},output:{}},"/collection/:collection/drop-info":{input:{},output:{},securityMode:"optionalAny"},"/collection/:creatorTag/:collectionTag/drop-info":{input:{},output:{},securityMode:"optionalAny"},"/collection/:collection/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/upload-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/reset-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/reset-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/holders":{input:{},output:{}},"/collection/:collection/holders/export":{input:{},output:{}},"/collection/:collection/owner":{input:{},output:{}},"/collection/:collection/stats":{input:{},output:{}},"/collection/stats/query":{input:{},output:{}},"/collection/global-offer/query":{input:{},output:{}},"/user/:address/creator/listing":{input:{},output:{}},"/user/:address/creator/details":{input:{},output:{}},"/launchpad/:scAddress/shareholders/royalties":{input:{},output:{}},"/launchpad/:scAddress/shareholders/collection/:collectionTag":{input:{},output:{}},"/pool/:poolId/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/pool/:poolId/whitelist":{input:{},output:{}},"/pool/:poolId/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/staking/available-pools":{input:{},output:{}},"/user/:address/staking/owned-collections":{input:{},output:{}},"/user/:address/staking/owned-pools":{input:{},output:{}},"/user/:address/staking/summary":{input:{},output:{}},"/user/:address/staking/creator":{input:{},output:{}},"/user/:address/staking/collection/:collection":{input:{},output:{}},"/user/:address/staking/pool/:poolId/nfts":{input:{},output:{}},"/collection/:collection/staking/summary":{input:{},output:{},securityMode:"optionalAny"},"/collection/:collection/staking/delegators":{input:{},output:{}},"/collection/staking/explore":{input:{},output:{}},"/user/:creatorTag/owned-services":{input:{},output:{}},"/search":{input:{},output:{}},"/user/search":{input:{},output:{}},"/collection/search":{input:{},output:{}},"/collection/drops/search":{input:{},output:{}},"/nft/search/query":{input:{},output:{}},"/lending/market-sc":{input:{},output:{}},"/lending/active-accounts":{input:{},output:{}},"/lending/account/:nonce/attributes":{input:{},output:{}},"/lending/account/:nonce/positions":{input:{},output:{}},"/lending/market/:token/price/egld":{input:{},output:{}},"/faucet":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/notifications":{input:{},output:{},securityMode:"requiredAny"},"/user/notifications/unread-count":{input:{},output:{},securityMode:"requiredAny"},"/user/notifications/clear":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/notifications/read":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/device/register":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/mobile/device/:deviceId":{input:{},output:{},securityMode:"requiredWeb2",DELETE:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/mobile/history":{input:{},output:{},securityMode:"requiredAny"},"/mobile/history/unread-count":{input:{},output:{},securityMode:"requiredAny"},"/mobile/history/:notificationId/read":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/history/read-all":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/history/clear-all":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/history/clear-id/:notificationId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/event/:eventId/update":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/event/:eventId/reminder":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/creator/marketing":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/user/:userId/direct":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/stellar/challenge":{input:{},output:{}},"/user/native-token":{input:{},output:{}},"/user/web2":{input:{},output:{},securityMode:"requiredWeb2"},"/user/web2/session-cookie":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/wallet":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/wallet-switch":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/wallet-link":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/:index/wallet-link":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/shards":{input:{},output:{},securityMode:"requiredWeb2"},"/activity/query":{input:{},output:{}},"/activity/:identifier":{input:{},output:{}},"/analytics/volume":{input:{},output:{}},"/collection/:collection/analytics/volume":{input:{},output:{}},"/user/:address/analytics/volume":{input:{},output:{}},"/analytics/overview":{input:{},output:{}},"/user/stats":{input:{},output:{}},"/user/xoxno-drop":{input:{},output:{}},"/user/me/xoxno-drop":{input:{},output:{},securityMode:"requiredAny"},"/transactions/:txHash":{input:{},output:{}},"/transactions/:txHash/status":{input:{},output:{}},"/transaction/cost":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/transactions":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/transactions/batch":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/perp/exchange/acceptTerms":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/sendAsset":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/sendExternalAsset":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/deposit":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/withdraw":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/order":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/tradingview/bars/:symbol":{input:{},output:{}},"/tradingview/coin/:symbol":{input:{},output:{}},"/perp/coin/:symbol":{input:{},output:{}},"/perp/coin/spot/:symbol":{input:{},output:{}},"/perp/coins":{input:{},output:{}},"/perp/legal-check/:address":{input:{},output:{}},"/perp/coins/spot":{input:{},output:{}},"/perp/orderbook/:symbol":{input:{},output:{}},"/perp/trades/:symbol":{input:{},output:{}},"/perp/stats/spot/:symbol":{input:{},output:{}},"/perp/stats/:symbol":{input:{},output:{}},"/perp/subscribe":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/perp/unsubscribe":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/chat/message":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/conversation":{input:{},output:{},securityMode:"requiredAny"},"/user/chat/conversation/:conversationId":{input:{},output:{},securityMode:"requiredAny",DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/conversation-summary":{input:{},output:{},securityMode:"requiredAny"},"/user/chat/conversation/:conversationId/message/:messageId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/block":{input:{},output:{},securityMode:"requiredAny"},"/user/chat/block/:address":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/token":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/hatom/user/:address":{input:{},output:{}},"/countries":{input:{},output:{}},"/event":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId":{input:{},output:{},securityMode:"optionalAny",PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/profile/query":{input:{},output:{}},"/event/:eventId/profile":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/background":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/description":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/description/image":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/description/image/:imageId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/register":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/ticket":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/ticket/:ticketId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"},POST:{input:{},output:{},body:{}}},"/event/:eventId/stage":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/stage/:stageId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/calculate-prices":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/event/:eventId/validate-discount":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/:address/creator/events":{input:{},output:{},securityMode:"optionalAny"},"/event/:eventId/invite":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/invite/query":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/invite/:inviteId":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/voucher/query":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/questions":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/question":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/question/:questionId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/guest/query":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/guest/:address":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/guest-export":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/role":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},securityMode:"requiredAny"},"/event/:eventId/role/:roleId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/guest":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/roleOf/:address":{input:{},output:{},securityMode:"requiredAny"},"/user/me/event":{input:{},output:{},securityMode:"requiredAny"},"/user/me/events/past":{input:{},output:{},securityMode:"requiredAny"},"/user/me/events/hosted":{input:{},output:{},securityMode:"requiredAny"},"/user/me/events/upcoming":{input:{},output:{},securityMode:"requiredAny"},"/user/me/event/badge":{input:{},output:{},securityMode:"requiredAny"},"/user/me/event/badge/payload":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/scan":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/voucher":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/voucher/:voucherCode":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/manual-check-in":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/answered-questions/:address":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/guest/approve":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/google-pass/:address":{input:{},output:{}},"/event/profile/location":{input:{},output:{}},"/event/:eventId/referral-config":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referral-config/:configId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referral-configs":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/referral":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referral/:referralCode":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referrals":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/referrals/self-serviced":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/notify-attendees":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/notify/global-broadcast":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/stellar/aggregator/quote":{input:{},output:{}}},h=["PATCH","POST","DELETE","PUT"],w={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},v={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},A={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"},T={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function k(t){const e=w[t];if(!e)throw new Error(`Stellar lending controller address not configured for network "${t}". Set STELLAR_LENDING_CONTROLLER_${t.toUpperCase()} env var.`);return e}function M(t){const e=v[t];if(!e)throw new Error(`Stellar aggregator router address not configured for network "${t}". Set STELLAR_AGGREGATOR_ROUTER_${t.toUpperCase()} env var.`);return e}const x=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],E=t=>new e(t).toScVal(),P=t=>new u(t).toI128(),O=t=>a.ScVal.scvU32(t),I=t=>new u("string"==typeof t?t:t.toString()).toU64(),R=t=>a.ScVal.scvBool(t),B=t=>a.ScVal.scvString(t),U=t=>a.ScVal.scvSymbol(t),C=t=>a.ScVal.scvVec(t),N=(t,e=32)=>{const o=t.startsWith("0x")?t.slice(2):t,r=Buffer.from(o,"hex");if(r.length!==e)throw new Error(`Stellar builder: expected a ${e}-byte BytesN (got ${r.length} bytes from "${t}")`);return a.ScVal.scvBytes(r)},$=(t,e)=>null==t?a.ScVal.scvVoid():e(t),z=(t,e)=>a.ScVal.scvVec([E(t),P(e)]),D=t=>a.ScVal.scvVec(t.map((t=>z(t.token,t.amount)))),L=t=>{const e=Object.keys(t).sort().map((e=>new a.ScMapEntry({key:U(e),val:t[e]})));return a.ScVal.scvMap(e)},j=t=>{const e=t.paths.map((t=>{const e=t.hops.map((t=>{return L({amount_out:P(t.amountOut),pool:E(t.pool),token_in:E(t.tokenIn),token_out:E(t.tokenOut),venue:(e=t.venue,a.ScVal.scvVec([U(e)]))});var e}));return L({hops:a.ScVal.scvVec(e),split_ppm:O(t.splitPpm)})}));return L({paths:a.ScVal.scvVec(e),referral_id:I(t.referralId??0),token_in:E(t.tokenIn),token_out:E(t.tokenOut),total_min_out:P(t.totalMinOut)})},V=t=>{const e=Buffer.from(t);if(0===e.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return a.ScVal.scvBytes(e)},W=t=>{const e=t.trim();if(e.startsWith("0x")){const t=e.slice(2);if(!((o=t).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(t,"hex")}var o;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(e))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const r=Buffer.from(e,"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},X=t=>{if("string"==typeof t)return V(W(t));if(t instanceof Uint8Array)return V(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?V(W(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?V(W(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?V(W(t.bytes)):V(t.bytes):(e=(t=>{if(!t||"object"!=typeof t)throw new Error("Stellar builder: decoded strategy `steps` must be a StrategyPayload ({ paths, tokenIn, tokenOut, totalMinOut })");const e=t;if(!Array.isArray(e.paths)||0===e.paths.length)throw new Error("Stellar builder: `steps.paths` must be a non-empty array of strategy paths");if("string"!=typeof e.tokenIn)throw new Error("Stellar builder: `steps.tokenIn` must be a contract address");if("string"!=typeof e.tokenOut)throw new Error("Stellar builder: `steps.tokenOut` must be a contract address");if("string"!=typeof e.totalMinOut)throw new Error("Stellar builder: `steps.totalMinOut` must be an i128 decimal string");let o=0;for(const[t,r]of e.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[${t}]\` must have splitPpm > 0 and a non-empty hops array`);o+=r.splitPpm;for(const[e,o]of r.hops.entries())if(!o||"string"!=typeof o.amountOut||"string"!=typeof o.pool||"string"!=typeof o.tokenIn||"string"!=typeof o.tokenOut||!x.includes(o.venue))throw new Error(`Stellar builder: \`steps.paths[${t}].hops[${e}]\` 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 e})(t),a.ScVal.scvBytes(Buffer.from(j(e).toXDR("base64"),"base64")));var e,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},H=t=>{if("string"==typeof t)return(t=>{const e=t.startsWith("0x")?t.slice(2):t,o=Buffer.from(e,"hex");return a.ScVal.scvBytes(o)})(t);if(t instanceof Uint8Array)return a.ScVal.scvBytes(Buffer.from(t));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function F(e,u,i){const a=e.controllerAddress??k(e.network),s=new r(a),p=new t(e.caller,e.sourceSequence);return{xdr:new n(p,{fee:e.fee??o,networkPassphrase:T[e.network]}).addOperation(s.call(u,...i)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function G(t,e){const o=e.accountNonce??0,r=e.eModeCategory??0,u=D([...e.assets]);return F(t,"supply",[E(t.caller),I(o),O(r),u])}function Z(t,e){return G(t,{accountNonce:e.accountNonce,eModeCategory:e.eModeCategory,assets:[{token:e.token,amount:e.amount}]})}function Q(t,e){const o=D([...e.borrows]);return F(t,"borrow",[E(t.caller),I(e.accountNonce),o])}function J(t,e){return Q(t,{accountNonce:e.accountNonce,borrows:[{token:e.token,amount:e.amount}]})}function K(t,e){const o=D([...e.withdrawals]);return F(t,"withdraw",[E(t.caller),I(e.accountNonce),o,$(e.to,E)])}function Y(t,e){return K(t,{accountNonce:e.accountNonce,withdrawals:[{token:e.token,amount:e.amount}]})}function tt(t,e){const o=D([...e.payments]);return F(t,"repay",[E(t.caller),I(e.accountNonce),o])}function et(t,e){return tt(t,{accountNonce:e.accountNonce,payments:[{token:e.token,amount:e.amount}]})}function ot(t,e){const o=D(e.debtPayments.map((t=>({token:t.token,amount:t.amount}))));return F(t,"liquidate",[E(t.caller),I(e.accountNonce),o])}function rt(t,e){return F(t,"flash_loan",[E(t.caller),E(e.asset),P(e.amount),E(e.receiver),H(e.data)])}function ut(t,e){const o=e.accountNonce??0;return F(t,"multiply",[E(t.caller),I(o),O(e.eModeCategory),E(e.collateralToken),P(e.debtToFlashLoan),E(e.debtToken),O(e.mode),X(e.steps),$(e.initialPayment,(t=>z(t.token,t.amount))),$(e.convertSwap,X)])}function nt(t,e){return F(t,"swap_debt",[E(t.caller),I(e.accountNonce),E(e.existingDebtToken),P(e.newDebtAmount),E(e.newDebtToken),X(e.steps)])}function it(t,e){return F(t,"swap_collateral",[E(t.caller),I(e.accountNonce),E(e.currentCollateral),P(e.fromAmount),E(e.newCollateral),X(e.steps)])}function at(t,e){return F(t,"repay_debt_with_collateral",[E(t.caller),I(e.accountNonce),E(e.collateralToken),P(e.collateralAmount),E(e.debtToken),X(e.steps),R(e.closePosition)])}const st={Single:0,PrimaryWithAnchor:1},pt=t=>L({base_borrow_rate_ray:P(t.baseBorrowRateRay),max_borrow_rate_ray:P(t.maxBorrowRateRay),max_utilization_ray:P(t.maxUtilizationRay),mid_utilization_ray:P(t.midUtilizationRay),optimal_utilization_ray:P(t.optimalUtilizationRay),reserve_factor_bps:O(t.reserveFactorBps),slope1_ray:P(t.slope1Ray),slope2_ray:P(t.slope2Ray),slope3_ray:P(t.slope3Ray)}),dt=t=>L({asset_decimals:O(t.assetDecimals),asset_id:E(t.assetId),base_borrow_rate_ray:P(t.baseBorrowRateRay),max_borrow_rate_ray:P(t.maxBorrowRateRay),max_utilization_ray:P(t.maxUtilizationRay),mid_utilization_ray:P(t.midUtilizationRay),optimal_utilization_ray:P(t.optimalUtilizationRay),reserve_factor_bps:O(t.reserveFactorBps),slope1_ray:P(t.slope1Ray),slope2_ray:P(t.slope2Ray),slope3_ray:P(t.slope3Ray)}),ct=t=>L({borrow_cap:P(t.borrowCap),e_mode_categories:C(t.eModeCategories.map((t=>O(t)))),flashloan_fee_bps:O(t.flashloanFeeBps),is_borrowable:R(t.isBorrowable),is_collateralizable:R(t.isCollateralizable),is_flashloanable:R(t.isFlashloanable),is_isolated_asset:R(t.isIsolatedAsset),is_siloed_borrowing:R(t.isSiloedBorrowing),isolation_borrow_enabled:R(t.isolationBorrowEnabled),isolation_debt_ceiling_usd_wad:P(t.isolationDebtCeilingUsdWad),liquidation_bonus_bps:O(t.liquidationBonusBps),liquidation_fees_bps:O(t.liquidationFeesBps),liquidation_threshold_bps:O(t.liquidationThresholdBps),loan_to_value_bps:O(t.loanToValueBps),min_collat_floor_usd_wad:P(t.minCollatFloorUsdWad),min_debt_floor_usd_wad:P(t.minDebtFloorUsdWad),supply_cap:P(t.supplyCap)}),lt=t=>L({max_borrow_positions:O(t.maxBorrowPositions),max_supply_positions:O(t.maxSupplyPositions)}),yt=t=>{const e=t.kind;switch(e){case"Stellar":return C([U("Stellar"),E(t.value)]);case"Symbol":return C([U("Symbol"),U(t.value)]);case"String":return C([U("String"),B(t.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${e}"`)}},ft=(t,e)=>{if("Twap"===t){if("number"!=typeof e)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return C([U("Twap"),O(e)])}return C([U("Spot")])},mt=t=>{const e=t.provider;if("ReflectorSep40"===e){if(!t.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return C([U("Reflector"),L({asset:yt(t.asset),contract:E(t.contract),read_mode:ft(t.readMode,t.twapRecords)})])}if("RedStonePriceFeed"===e){if("string"!=typeof t.feedId)throw new Error("Stellar builder: RedStone oracle source requires `feedId`");if("number"!=typeof t.maxStaleSeconds)throw new Error("Stellar builder: RedStone oracle source requires `maxStaleSeconds`");return C([U("RedStone"),L({contract:E(t.contract),feed_id:B(t.feedId),max_stale_seconds:I(t.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${e}"`)},bt=t=>{const e=st[t.strategy];if(void 0===e)throw new Error(`Stellar builder: unknown oracle strategy "${t.strategy}"`);return L({anchor:(o=t.anchor,C(null==o?[U("None")]:[U("Some"),mt(o)])),first_tolerance_bps:O(t.firstToleranceBps),last_tolerance_bps:O(t.lastToleranceBps),max_price_stale_seconds:I(t.maxPriceStaleSeconds),max_sanity_price_wad:P(t.maxSanityPriceWad),min_sanity_price_wad:P(t.minSanityPriceWad),primary:mt(t.primary),strategy:O(e)});var o};function _t(t,e){return F(t,"upgrade",[N(e.wasmHash)])}function gt(t,e){return F(t,"migrate",[O(e.newVersion)])}function qt(t){return F(t,"pause",[])}function ht(t){return F(t,"unpause",[])}function wt(t,e){return F(t,"grant_role",[E(e.account),U(e.role)])}function vt(t,e){return F(t,"revoke_role",[E(e.account),U(e.role)])}function At(t,e){return F(t,"transfer_ownership",[E(e.newOwner),O(e.liveUntilLedger)])}function St(t){return F(t,"accept_ownership",[])}function Tt(t,e){return F(t,"set_aggregator",[E(e.aggregator)])}function kt(t,e){return F(t,"set_accumulator",[E(e.accumulator)])}function Mt(t,e){return F(t,"set_liquidity_pool_template",[N(e.wasmHash)])}function xt(t,e){return F(t,"edit_asset_config",[E(e.asset),ct(e.config)])}function Et(t,e){return F(t,"set_position_limits",[lt(e)])}function Pt(t,e){return F(t,"add_e_mode_category",[O(e.ltv),O(e.threshold),O(e.bonus)])}function Ot(t,e){return F(t,"edit_e_mode_category",[O(e.id),O(e.ltv),O(e.threshold),O(e.bonus)])}function It(t,e){return F(t,"remove_e_mode_category",[O(e.id)])}function Rt(t,e){return F(t,"add_asset_to_e_mode_category",[E(e.asset),O(e.categoryId),R(e.canCollateral),R(e.canBorrow)])}function Bt(t,e){return F(t,"edit_asset_in_e_mode_category",[E(e.asset),O(e.categoryId),R(e.canCollateral),R(e.canBorrow)])}function Ut(t,e){return F(t,"remove_asset_from_e_mode",[E(e.asset),O(e.categoryId)])}function Ct(t,e){return F(t,"approve_token",[E(e.token)])}function Nt(t,e){return F(t,"revoke_token",[E(e.token)])}function $t(t,e){return F(t,"configure_market_oracle",[E(t.caller),E(e.asset),bt(e.config)])}function zt(t,e){return F(t,"edit_oracle_tolerance",[E(t.caller),E(e.asset),O(e.firstTolerance),O(e.lastTolerance)])}function Dt(t,e){return F(t,"disable_token_oracle",[E(t.caller),E(e.asset)])}function Lt(t,e){return F(t,"update_indexes",[E(t.caller),C(e.assets.map((t=>E(t))))])}function jt(t,e){return F(t,"renew_account",[E(t.caller),I(e.accountNonce)])}function Vt(t,e){return F(t,"create_liquidity_pool",[E(e.asset),dt(e.params),ct(e.config)])}function Wt(t,e){return F(t,"upgrade_liquidity_pool_params",[E(e.asset),pt(e.params)])}function Xt(t,e){return F(t,"upgrade_liquidity_pool",[E(e.asset),N(e.wasmHash)])}function Ht(t,e){return F(t,"claim_revenue",[E(t.caller),C(e.assets.map((t=>E(t))))])}function Ft(t,e){return F(t,"add_rewards",[E(t.caller),C(e.rewards.map((t=>C([E(t.token),P(t.amount)]))))])}function Gt(t,e){return F(t,"update_account_threshold",[E(t.caller),E(e.asset),R(e.hasRisks),C(e.accountNonces.map((t=>I(t))))])}const Zt=t=>t.toXDR("base64"),Qt=t=>a.ScVal.fromXDR(t,"base64"),Jt=t=>t.map((t=>String(i(Qt(t))))).join(":"),Kt=t=>"bigint"==typeof t||"number"==typeof t?t.toString():String(t),Yt=t=>Number(t),te=t=>String(t),ee=t=>null==t?void 0:Kt(t),oe=t=>null==t?void 0:te(t),re=t=>t instanceof Uint8Array?Buffer.from(t).toString("hex"):Buffer.isBuffer(t)?t.toString("hex"):String(t),ue=["None","Multiply","Long","Short"],ne=["Single","PrimaryWithAnchor"],ie=["ReflectorSep40","RedStonePriceFeed"],ae=["Spot","Twap"],se=["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"],pe=t=>Array.isArray(t)?t:[],de=t=>({loanToValueBps:Yt(t.loan_to_value_bps),liquidationThresholdBps:Yt(t.liquidation_threshold_bps),liquidationBonusBps:Yt(t.liquidation_bonus_bps),liquidationFeesBps:Yt(t.liquidation_fees_bps),isCollateralizable:Boolean(t.is_collateralizable),isBorrowable:Boolean(t.is_borrowable),isIsolatedAsset:Boolean(t.is_isolated_asset),isSiloedBorrowing:Boolean(t.is_siloed_borrowing),isFlashloanable:Boolean(t.is_flashloanable),isolationBorrowEnabled:Boolean(t.isolation_borrow_enabled),isolationDebtCeilingUsdWad:Kt(t.isolation_debt_ceiling_usd_wad),flashloanFeeBps:Yt(t.flashloan_fee_bps),borrowCap:Kt(t.borrow_cap),supplyCap:Kt(t.supply_cap),minCollatFloorUsdWad:Kt(t.min_collat_floor_usd_wad),minDebtFloorUsdWad:Kt(t.min_debt_floor_usd_wad),eModeCategories:(t.e_mode_categories??[]).map(Yt)}),ce=(t,e)=>{const o="Borrow"===e;return{action:(r=t[0],se[Yt(r)]??Kt(r)),positionType:e,asset:te(t[1]),scaledAmountRay:Kt(t[2]),indexRay:Kt(t[3]),amount:Kt(t[4]),liquidationThresholdBps:o?void 0:Yt(t[5]),liquidationBonusBps:o?void 0:Yt(t[6]),loanToValueBps:o?void 0:Yt(t[7])};var r},le=t=>{return{owner:te(t[0]),isIsolatedPosition:Boolean(t[2]),eModeCategoryId:Yt(t[1]),mode:(e=t[3],ue[Yt(e)]??"None"),isolatedToken:oe(t[4])};var e},ye=(t,e)=>{const o=ae[Yt(t[`${e}_read_mode`])]??"Spot",r=t[`${e}_asset`],u=t[`${e}_symbol`],n=null!=r?{kind:"Stellar",value:te(r)}:null!=u?{kind:"Symbol",value:te(u)}:void 0;return{provider:ie[Yt(t[`${e}_provider`])]??"ReflectorSep40",contractAddress:te(t[`${e}_contract`]),asset:n,feedId:oe(t[`${e}_feed_id`]),readMode:o,twapRecords:"Twap"===o?Yt(t[`${e}_twap_records`]):void 0,decimals:Yt(t[`${e}_decimals`]),resolutionSeconds:Yt(t[`${e}_resolution_seconds`]),maxStaleSeconds:Yt(t[`${e}_max_stale_seconds`])}},fe=t=>{const e=null!==t.anchor_provider&&void 0!==t.anchor_provider;return{baseTokenId:te(t.base_token_id),quoteTokenId:te(t.quote_token_id),tolerance:{firstUpperRatio:Yt(t.first_upper_ratio_bps??t.tolerance?.first_upper_ratio_bps),firstLowerRatio:Yt(t.first_lower_ratio_bps??t.tolerance?.first_lower_ratio_bps),lastUpperRatio:Yt(t.last_upper_ratio_bps??t.tolerance?.last_upper_ratio_bps),lastLowerRatio:Yt(t.last_lower_ratio_bps??t.tolerance?.last_lower_ratio_bps)},assetDecimals:Yt(t.asset_decimals),maxPriceStaleSeconds:Yt(t.max_price_stale_seconds),strategy:ne[Yt(t.strategy)]??"Single",primary:ye(t,"primary"),anchor:e?ye(t,"anchor"):void 0,primaryQuoteToken:oe(t.primary_quote_token),anchorQuoteToken:oe(t.anchor_quote_token),minSanityPriceWad:ee(t.min_sanity_price_wad),maxSanityPriceWad:ee(t.max_sanity_price_wad)}},me={"market:create":t=>({topic:"market:create",data:{baseAsset:te(t.base_asset),maxBorrowRate:Kt(t.max_borrow_rate),baseBorrowRate:Kt(t.base_borrow_rate),slope1:Kt(t.slope1),slope2:Kt(t.slope2),slope3:Kt(t.slope3),midUtilization:Kt(t.mid_utilization),optimalUtilization:Kt(t.optimal_utilization),maxUtilization:ee(t.max_utilization),reserveFactor:Yt(t.reserve_factor),marketAddress:te(t.market_address),config:de(t.config)}}),"market:params_update":t=>({topic:"market:params_update",data:{asset:te(t.asset),maxBorrowRateRay:Kt(t.max_borrow_rate_ray),baseBorrowRateRay:Kt(t.base_borrow_rate_ray),slope1Ray:Kt(t.slope1_ray),slope2Ray:Kt(t.slope2_ray),slope3Ray:Kt(t.slope3_ray),midUtilizationRay:Kt(t.mid_utilization_ray),optimalUtilizationRay:Kt(t.optimal_utilization_ray),maxUtilizationRay:ee(t.max_utilization_ray),reserveFactorBps:Yt(t.reserve_factor_bps)}}),"market:batch_state_update":t=>({topic:"market:batch_state_update",data:{updates:pe(t).map((t=>{return e=pe(t),{asset:te(e[0]),timestamp:Yt(e[1]),supplyIndexRay:Kt(e[2]),borrowIndexRay:Kt(e[3]),reservesRay:Kt(e[4]),suppliedRay:Kt(e[5]),borrowedRay:Kt(e[6]),revenueRay:Kt(e[7]),assetPriceWad:ee(e[8])};var e}))}}),"position:batch_update":t=>{const e=pe(t);return{topic:"position:batch_update",data:{accountId:Kt(e[0]),accountAttributes:le(pe(e[1])),updates:[...pe(e[2]).map((t=>ce(pe(t),"Deposit"))),...pe(e[3]).map((t=>ce(pe(t),"Borrow")))]}}},"position:flash_loan":t=>({topic:"position:flash_loan",data:{asset:te(t.asset),receiver:te(t.receiver),caller:te(t.caller),amount:Kt(t.amount),fee:Kt(t.fee)}}),"config:asset":t=>({topic:"config:asset",data:{asset:te(t.asset),config:de(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:te(t.asset),oracle:fe(t.oracle)}}),"config:emode_category":t=>({topic:"config:emode_category",data:{category:{categoryId:Yt(t.category.category_id),loanToValueBps:Yt(t.category.loan_to_value_bps),liquidationThresholdBps:Yt(t.category.liquidation_threshold_bps),liquidationBonusBps:Yt(t.category.liquidation_bonus_bps),isDeprecated:Boolean(t.category.is_deprecated)}}}),"config:emode_asset":t=>({topic:"config:emode_asset",data:{asset:te(t.asset),config:{isCollateralizable:Boolean(t.config.is_collateralizable),isBorrowable:Boolean(t.config.is_borrowable)},categoryId:Yt(t.category_id)}}),"config:remove_emode_asset":t=>({topic:"config:remove_emode_asset",data:{asset:te(t.asset),categoryId:Yt(t.category_id)}}),"debt:ceiling_update":t=>({topic:"debt:ceiling_update",data:{asset:te(t.asset),totalDebtUsdWad:Kt(t.total_debt_usd_wad)}}),"debt:ceiling_batch_update":t=>({topic:"debt:ceiling_batch_update",data:{updates:pe(t).map((t=>{const e=pe(t);return{asset:te(e[0]),totalDebtUsdWad:Kt(e[1])}}))}}),"debt:bad_debt":t=>({topic:"debt:bad_debt",data:{accountId:Kt(t.account_id),totalBorrowUsdWad:Kt(t.total_borrow_usd_wad),totalCollateralUsdWad:Kt(t.total_collateral_usd_wad)}}),"strategy:initial_payment":t=>({topic:"strategy:initial_payment",data:{token:te(t.token),amount:Kt(t.amount),usdValueWad:Kt(t.usd_value_wad),accountId:Kt(t.account_id)}}),"config:approve_token":t=>({topic:"config:approve_token",data:{wasmHash:re(t.wasm_hash),approved:Boolean(t.approved)}}),"config:aggregator":t=>({topic:"config:aggregator",data:{aggregator:te(t.aggregator)}}),"config:accumulator":t=>({topic:"config:accumulator",data:{accumulator:te(t.accumulator)}}),"config:pool_template":t=>({topic:"config:pool_template",data:{wasmHash:re(t.wasm_hash)}}),"config:position_limits":t=>({topic:"config:position_limits",data:{maxSupplyPositions:Yt(t.max_supply_positions),maxBorrowPositions:Yt(t.max_borrow_positions)}}),"config:oracle_disabled":t=>({topic:"config:oracle_disabled",data:{asset:te(t.asset)}}),"oracle:twap_degraded":t=>({topic:"oracle:twap_degraded",data:{oracle:te(t.oracle),reasonCode:Yt(t.reason_code)}})},be=Object.freeze(Object.keys(me));function _e(t,e){const o=Jt(t),r=me[o];return r?r(i(Qt(e))):null}const ge="XLENDXLM-a7c9f3",qe=1e4;function he(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${ge}-${o}`}function we(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function ve(t,e=0){return 1e4*t+e}function Ae(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const Se=(t,e,o)=>{const r=new URL(e,t.endsWith("/")?t:`${t}/`);if(o)for(const[t,e]of Object.entries(o))void 0!==e&&r.searchParams.set(t,String(e));return r.toString()},Te=t=>t.baseUrl??S[t.network];async function ke(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=Se(Te(e),"api/v1/quote",{from:t.from,to:t.to,amountIn:t.amountIn,amountOut:t.amountOut,maxHops:t.maxHops,maxSplits:t.maxSplits,slippage:t.slippage,includePaths:t.includePaths,sender:t.sender,router:t.router,platform:t.platform,fresh:t.fresh}),r=await fetch(o,e.fetchOptions);if(!r.ok){const t=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${o} — ${t}`)}return await r.json()}async function Me(t){const e=Se(Te(t),"api/v1/tokens"),o=await fetch(e,t.fetchOptions);if(!o.ok){const t=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${e} — ${t}`)}return await o.json()}const xe=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,Ee=t=>j(t).toXDR("base64");function Pe(e,u){const i=e.routerAddress??M(e.network),a=new r(i),s=new t(e.caller,e.sourceSequence),p=X(xe(u,e.referralId));return{xdr:new n(s,{fee:e.fee??o,networkPassphrase:T[e.network]}).addOperation(a.call("execute_strategy",E(e.caller),P(e.totalIn),p)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function Oe(t,e){return Pe(t,e)}function Ie(t,e={}){if("string"!=typeof t.amountOutMin)throw new Error("mapQuoteResponseToStrategyPayload: quote response is missing `amountOutMin`. Pass `slippage` when fetching the quote.");return{paths:t.paths?t.paths.map((t=>({hops:t.swaps.map(Ue),splitPpm:t.splitPpm}))):[{hops:t.hops.map(Ue),splitPpm:1e6}],referralId:e.referralId??0,tokenIn:t.from,tokenOut:t.to,totalMinOut:t.amountOutMin}}function Re(t,e={}){const o=t;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Ie(t,e)}const Be=Ie,Ue=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function Ce(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function Ne(t,e,o){const r=n.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw Ce(o.invokedContractId,t);throw t}}async function $e(t,e,o){return Ne(t,e.xdr,o)}function ze(t){if(t<=0||t>4)throw new Error(`Invalid PositionMode ${t} for Stellar — expected 1 (Normal) through 4 (Short). "None" (0) has no Stellar equivalent.`);return t-1}function De(t,e){return{paths:[{hops:[{amountOut:"0",pool:t,tokenIn:t,tokenOut:t,venue:"Soroswap"}],splitPpm:1e6}],referralId:0,tokenIn:t,tokenOut:t,totalMinOut:e}}const Le=t=>{const e=t.startsWith("0x")?t.slice(2):t;if(e.length%2!=0)throw new Error("buildStellarCctpForwardTx: hex input must have even length");return Buffer.from(e,"hex")};function je(e){const o=new t(e.caller,e.sourceSequence),u=new r(e.forwarderAddress).call("mint_and_forward",a.ScVal.scvBytes(Le(e.message)),a.ScVal.scvBytes(Le(e.attestation)));return{xdr:new n(o,{fee:e.fee??"10000000",networkPassphrase:T[e.network]}).addOperation(u).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const Ve=t=>t.replace(/-([a-z])/g,((t,e)=>e.toUpperCase()));function We(t,e,o,r){const{input:u,output:n,...i}=e,a=async(e={})=>{const u={...o,...e},n=t.replace(/:([a-zA-Z_]+)/g,((t,e)=>`${u[e]}`)),i=[...t.matchAll(/:([a-zA-Z_]+)/g)].map((t=>t[1])),a=Object.fromEntries(Object.entries(u).filter((([t])=>!i.includes(t)))),s=/:address[^A-Z]/.test(t)||"address"in a,p=/:collection[^A-Z]/.test(t)||"collection"in a;if(s){const t=u.address;if(!g(t))throw new _(t)}if(p){const t=u.collection;if(Array.isArray(t)?t.some((t=>!f(t))):!f(t))throw new b(t)}const d=Object.fromEntries(Object.entries(a).map((([t,e])=>[t,e instanceof FormData?e:"filter"===t||"body"===t?JSON.stringify(e):Array.isArray(e)?e.join(","):e]))),{body:c,auth:l,method:y,headers:m,cache:q,next:h,debug:w,continuationToken:v,...A}=d,S=l?`Bearer ${l}`:void 0,T={...m,...S?{Authorization:S}:{},...v?{"X-Continuation-Token":String(v)}:{}},k={...h,tags:[...h?.tags??[],n]};return r.fetchWithTimeout(n,{method:y,params:A,body:c,headers:T,cache:q,debug:w,...k?{next:k}:{}})},s=(t={})=>a(t);for(const t of Object.keys(i))h.includes(t)&&(s[t]=e=>a({...e,method:e.method??t.toUpperCase()}));return s}function Xe(t){const e=function(){const t={static:{},params:{},leaves:[]};for(const[e,o]of Object.entries(q)){const r=e.split("/").filter(Boolean);let u=t;for(const t of r)if(t.startsWith(":")){const e=Ve(t.slice(1));u=u.params[e]||={static:{},params:{},leaves:[]}}else{const e=Ve(t);u=u.static[e]||={static:{},params:{},leaves:[]}}u.leaves.push({rawPath:e,def:o})}return t}(),o=(e,r)=>{const u=e.leaves.length,n=Object.keys(e.static).length,i=Object.keys(e.params).length;let a;if(1===u&&n+i>0){const{rawPath:o,def:u}=e.leaves[0];a=We(o,u,r,t)}else{a={};for(const{rawPath:o,def:u}of e.leaves)a[Ve(o.split("/").pop().replace(/^:/,""))]=We(o,u,r,t)}for(const[t,u]of Object.entries(e.static)){const e=o(u,r);let n=e;if(e&&"object"==typeof e&&t in e&&"function"==typeof e[t]){const o=e[t],r=Object.fromEntries(Object.entries(e).filter((([e])=>e!==t)));1===o.length||(Object.assign(o,r),n=o)}void 0===a[t]?a[t]=n:"function"==typeof a[t]?Object.assign(a[t],n):"function"==typeof n?(Object.assign(n,a[t]),a[t]=n):Object.assign(a[t],n)}for(const[t,u]of Object.entries(e.params)){const e=e=>{const n=o(u,{...r,[t]:e});if(n&&"object"==typeof n&&1===Object.keys(n).length&&t in n&&"function"==typeof n[t]){const e=n[t],o=(...t)=>e(...t);return Object.assign(o,e)}return n};if(a[t]){const o=a[t];a[t]=t=>({...o(t),...e(t)})}else a[t]=e}return a};return o(e,{})}export{l as Chain,v as STELLAR_AGGREGATOR_ROUTER,w as STELLAR_LENDING_CONTROLLER,be as STELLAR_LENDING_TOPICS,T as STELLAR_NETWORK_PASSPHRASE,S as STELLAR_QUOTE_URL,A as STELLAR_SOROBAN_RPC_URL,qe as SYNTHETIC_EVENT_ORDER_STRIDE,y as XOXNOClient,ge as XOXNO_LENDING_STELLAR_TICKER,De as buildSameTokenRepaySwapSteps,Xe as buildSdk,St as buildStellarAcceptOwnershipTx,Rt as buildStellarAddAssetToEModeCategoryTx,Pt as buildStellarAddEModeCategoryTx,Ft as buildStellarAddRewardsTx,Ct as buildStellarApproveTokenTx,Oe as buildStellarBatchSwapTx,Q as buildStellarBorrowBatchTx,J as buildStellarBorrowTx,je as buildStellarCctpForwardTx,Ht as buildStellarClaimRevenueTx,$t as buildStellarConfigureMarketOracleTx,Vt as buildStellarCreateLiquidityPoolTx,Dt as buildStellarDisableTokenOracleTx,xt as buildStellarEditAssetConfigTx,Bt as buildStellarEditAssetInEModeCategoryTx,Ot as buildStellarEditEModeCategoryTx,zt as buildStellarEditOracleToleranceTx,Pe as buildStellarExecuteStrategyTx,rt as buildStellarFlashLoanTx,wt as buildStellarGrantRoleTx,he as buildStellarLendingIdentifier,ot as buildStellarLiquidateTx,gt as buildStellarMigrateTx,ut as buildStellarMultiplyTx,qt as buildStellarPauseTx,Ut as buildStellarRemoveAssetFromEModeTx,It as buildStellarRemoveEModeCategoryTx,jt as buildStellarRenewAccountTx,tt as buildStellarRepayBatchTx,at as buildStellarRepayDebtWithCollateralTx,et as buildStellarRepayTx,vt as buildStellarRevokeRoleTx,Nt as buildStellarRevokeTokenTx,kt as buildStellarSetAccumulatorTx,Tt as buildStellarSetAggregatorTx,Mt as buildStellarSetLiquidityPoolTemplateTx,Et as buildStellarSetPositionLimitsTx,G as buildStellarSupplyBatchTx,Z as buildStellarSupplyTx,it as buildStellarSwapCollateralTx,nt as buildStellarSwapDebtTx,At as buildStellarTransferOwnershipTx,ht as buildStellarUnpauseTx,Gt as buildStellarUpdateAccountThresholdTx,Lt as buildStellarUpdateIndexesTx,_t as buildStellarUpgradeControllerTx,Wt as buildStellarUpgradeLiquidityPoolParamsTx,Xt as buildStellarUpgradeLiquidityPoolTx,K as buildStellarWithdrawBatchTx,Y as buildStellarWithdrawTx,F as buildTx,_e as decodeStellarLendingEvent,ct as encodeAssetConfigRaw,pt as encodeInterestRateModel,bt as encodeMarketOracleConfigInput,dt as encodeMarketParamsRaw,mt as encodeOracleSourceConfigInput,lt as encodePositionLimits,Ee as encodeStrategyPayloadToRouteXdr,we as extractEventOrder,ke as getStellarAggregatorQuote,M as getStellarAggregatorRouter,k as getStellarLendingController,Me as getStellarQuoteTokens,f as isValidCollectionTicker,m as isValidNftIdentifier,Be as mapQuoteResponseToAggregatorSwap,Ie as mapQuoteResponseToStrategyPayload,Re as mapQuoteResponseToStrategySwap,Ae as mapStellarPositionActivityType,$e as prepareStellarBuiltTx,Ne as prepareStellarTxXdr,Jt as stellarLendingDispatchKey,ve as syntheticEventOrder,Ce as tagStellarInvokedContractError,Zt as toBase64Xdr,ze as toStellarPositionMode};
|
|
1
|
+
"undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis);import{Account as t,Address as e,BASE_FEE as o,Contract as r,ScInt as n,TransactionBuilder as u,scValToNative as i,xdr as a}from"@stellar/stellar-sdk";const s="https://api.xoxno.com",p="erd1qqqqqqqqqqqqqpgq705fxpfrjne0tl3ece0rrspykq88mynn4kxs2cg43s",c="erd1qqqqqqqqqqqqqpgqd9rvv2n378e27jcts8vfwynpx0gfl5ufz6hqhfy0u0",d="erd1qqqqqqqqqqqqqpgq8xwzu82v8ex3h4ayl5lsvxqxnhecpwyvwe0sf2qj4e";var l;!function(t){t.MAINNET="1",t.DEVNET="D"}(l||(l={}));class y{apiUrl;chain;init;config;constructor({chain:t=l.MAINNET,apiUrl:e=s,...o}={}){this.apiUrl=e??{[l.MAINNET]:s,[l.DEVNET]:"https://devnet-api.xoxno.com"}[t],this.chain=t,this.init=o,this.config=t==l.MAINNET?{mediaUrl:"https://media.xoxno.com",gatewayUrl:"https://gateway.xoxno.com",XO_SC:"erd1qqqqqqqqqqqqqpgq6wegs2xkypfpync8mn2sa5cmpqjlvrhwz5nqgepyg8",FM_SC:p,DR_SC:c,KG_SC:d,Staking_SC:"erd1qqqqqqqqqqqqqpgqvpkd3g3uwludduv3797j54qt6c888wa59w2shntt6z",Manager_SC:"erd1qqqqqqqqqqqqqpgqg9fa0dmpn8fu3fnleeqn5zt8rl8mdqjkys5s2gtas7",P2P_SC:"erd1qqqqqqqqqqqqqpgq47y8hnct68v6asjv6gxem6h9rumn9frzah0skhxxt6"}:{mediaUrl:"https://devnet-media.xoxno.com",gatewayUrl:"https://devnet-gateway.xoxno.com",XO_SC:"erd1qqqqqqqqqqqqqpgql0dnz6n5hpuw8cptlt00khd0nn4ja8eadsfq2xrqw4",FM_SC:p,DR_SC:c,KG_SC:d,Staking_SC:"erd1qqqqqqqqqqqqqpgqsc5hnewwpep8qq0d7kjjzrquapuucrygah0s85zres",Manager_SC:"erd1qqqqqqqqqqqqqpgqluclyhfsa2uw7q9cjwd8knk989hg57u8ah0slq2nlr",P2P_SC:"erd1qqqqqqqqqqqqqpgqfja7ukpngrun78ueq583l0vd6aj4ekhrah0sa9wyrv"}}fetchWithTimeout=async(t,{params:e,...o}={})=>{const{next:r,cache:n,debug:u,...i}=this.init,{next:a,cache:s,debug:p,headers:c,method:d="GET",...l}=o,y=c?.Authorization,f="Bearer undefined"===y?void 0:y,_={...c,Referer:"https://xoxno.sdk","User-Agent":"XOXNO/1.0/SDK",..."PUT"===d?{}:{"Content-Type":"application/json"},...f?{Authorization:f}:{}},m=Object.entries(e??{}).flatMap((([t,e])=>Array.isArray(e)?e.map((e=>`${t}=${encodeURIComponent(e)}`)):`${t}=${encodeURIComponent(e)}`)).join("&"),g=`${this.apiUrl}${t}${m.length?`?${m}`:""}`,{revalidate:b,...q}=r??{},{revalidate:h,...w}=a??{},v="GET"!==d||f?void 0:h??b,A="GET"!==d||f||v?void 0:s??n,S={...i,...l,method:d,...Object.keys(_).length?{headers:_}:{},cache:A,next:{...q,...w,revalidate:v}};(p??u)&&console.debug("SDK fetch: ",g,S);const T=await fetch(g,S).catch((t=>{if(t instanceof Error&&!t.message.match(/^http(s?):\/\//))throw new Error(`${g}: ${t.message}`);throw t})),k=await T.text();if(!T.ok){let t;try{t=JSON.parse(k)}catch{t={message:k}}const e=[g,T.status,T.statusText,t.message].filter(Boolean).join(";;");throw new Error(e)}try{return JSON.parse(k)}catch{return k}}}const f=t=>{const e=/^0x[a-fA-F0-9]{1,64}-[a-zA-Z0-9_]+-[a-zA-Z0-9_]+(<.+>)?$/.test(decodeURIComponent(t)),o=/^[A-Z0-9]{3,10}-[a-z0-9]{6}$/.test(t);return e||o},_=t=>{const e=/^0x[a-fA-F0-9]{1,64}$/.test(t),o=/^[A-Za-z0-9]{3,10}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2,7}(?:-\d+(?:-[A-Za-z0-9]+)?)?$/.test(t);return e||o};class m extends Error{constructor(t){super(`Invalid collection ticker: ${t}`)}}class g extends Error{constructor(t){super(`Invalid address: ${t}`)}}Error,Error;const b=t=>!!t&&(t.startsWith("erd1")&&62===t.length||/^0x[a-fA-F0-9]{40,64}$/.test(t)||/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(t)||/^G[A-Z2-7]{55}$/.test(t)),q={"/liquid/xoxno/rate":{input:{},output:{}},"/liquid/xoxno/liquid-supply":{input:{},output:{}},"/liquid/xoxno/staked":{input:{},output:{}},"/user/login":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/:address/network-account":{input:{},output:{}},"/user/:address/token-inventory":{input:{},output:{}},"/user/network-account":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/me/profile":{input:{},output:{},securityMode:"requiredAny"},"/user/:address/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/me":{input:{},output:{},securityMode:"requiredAny"},"/user/me/settings":{input:{},output:{},securityMode:"optionalAny"},"/user/me/settings/notification-preferences":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"optionalAny"}},"/user/me/settings/email":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredJwt"}},"/user/me/settings/phone":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/me/settings/billing":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/me/settings/verify-email":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/buy/signature":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/upload-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/reset-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/reset-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:tag/creator/is-registered":{input:{},output:{}},"/user/:address/creator/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/upload-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/reset-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/creator/reset-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/favorite/collections":{input:{},output:{}},"/user/favorite/:favoriteId":{input:{},output:{},securityMode:"requiredAny"},"/user/:address/follow":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/favorite/users":{input:{},output:{}},"/tokens":{input:{},output:{}},"/tokens/swap":{input:{},output:{}},"/stellar/tokens":{input:{},output:{}},"/tokens/restricted":{input:{},output:{}},"/tokens/usd-price":{input:{},output:{}},"/tokens/egld/fiat-price":{input:{},output:{}},"/tokens/xoxno/info":{input:{},output:{}},"/liquid/xoxno/stats":{input:{},output:{}},"/liquid/egld/stats":{input:{},output:{}},"/liquid/sui/stats":{input:{},output:{}},"/analytics/marketplace-unique-users":{input:{},output:{}},"/liquid/egld/rate":{input:{},output:{}},"/liquid/egld/liquid-supply":{input:{},output:{}},"/liquid/egld/staked":{input:{},output:{}},"/liquid/egld/pending-fees":{input:{},output:{}},"/liquid/egld/pending-undelegate":{input:{},output:{}},"/liquid/egld/pending-delegate":{input:{},output:{}},"/liquid/egld/execute-delegate":{input:{},output:{}},"/liquid/egld/execute-undelegate":{input:{},output:{}},"/liquid/egld/protocol-apr":{input:{},output:{}},"/liquid/egld/providers":{input:{},output:{}},"/user/:address/delegation":{input:{},output:{}},"/lending/market/:token/profile":{input:{},output:{}},"/lending/market/query":{input:{},output:{}},"/lending/governance/proposals":{input:{},output:{}},"/lending/governance/proposal/:id":{input:{},output:{}},"/user/lending/:address":{input:{},output:{}},"/lending/market/indexes":{input:{},output:{}},"/user/lending/position/:identifier":{input:{},output:{}},"/lending/pnl":{input:{},output:{}},"/user/lending/pnl/:address":{input:{},output:{}},"/user/lending/summary/:identifier":{input:{},output:{}},"/user/lending/image/:nonce":{input:{},output:{}},"/lending/market/emode-categories":{input:{},output:{}},"/lending/market/:token/emode-categories":{input:{},output:{}},"/lending/market/:token/analytics":{input:{},output:{}},"/lending/market/:token/average":{input:{},output:{}},"/lending/leaderboard":{input:{},output:{}},"/lending/leaderboard/liquidate":{input:{},output:{}},"/lending/leaderboard/clean-bad-debt":{input:{},output:{}},"/lending/stats":{input:{},output:{}},"/lending/market/prices":{input:{},output:{}},"/nft/query":{input:{},output:{}},"/nft/:identifier/like":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/inventory-summary":{input:{},output:{}},"/user/:address/offers":{input:{},output:{}},"/nft/offer/query":{input:{},output:{}},"/nft/offer/:identifier":{input:{},output:{}},"/user/:address/favorite/nfts":{input:{},output:{}},"/collection/:collection/attributes":{input:{},output:{}},"/nft/:identifier/offers":{input:{},output:{}},"/collection/:collection/ranks":{input:{},output:{}},"/collection/:collection/listings":{input:{},output:{}},"/nft/pinned":{input:{},output:{}},"/nft/sign-withdraw":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/sign-offer":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/sign-mint":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/nft/:identifier":{input:{},output:{}},"/collection/:collection/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/floor-price":{input:{},output:{}},"/collection/floor-price":{input:{},output:{}},"/collection/pinned":{input:{},output:{}},"/collection/pinned-drops":{input:{},output:{}},"/collection/:collection/pinned-drops":{input:{},output:{}},"/collection/:collection/pinned":{input:{},output:{}},"/collection/:collection/follow":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/query":{input:{},output:{}},"/collection/drops/query":{input:{},output:{}},"/collection/:collection/drop-info":{input:{},output:{},securityMode:"optionalAny"},"/collection/:creatorTag/:collectionTag/drop-info":{input:{},output:{},securityMode:"optionalAny"},"/collection/:collection/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/upload-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/reset-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/reset-banner":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/collection/:collection/holders":{input:{},output:{}},"/collection/:collection/holders/export":{input:{},output:{}},"/collection/:collection/owner":{input:{},output:{}},"/collection/:collection/stats":{input:{},output:{}},"/collection/stats/query":{input:{},output:{}},"/collection/global-offer/query":{input:{},output:{}},"/user/:address/creator/listing":{input:{},output:{}},"/user/:address/creator/details":{input:{},output:{}},"/launchpad/:scAddress/shareholders/royalties":{input:{},output:{}},"/launchpad/:scAddress/shareholders/collection/:collectionTag":{input:{},output:{}},"/pool/:poolId/profile":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/pool/:poolId/whitelist":{input:{},output:{}},"/pool/:poolId/upload-picture":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/:address/staking/available-pools":{input:{},output:{}},"/user/:address/staking/owned-collections":{input:{},output:{}},"/user/:address/staking/owned-pools":{input:{},output:{}},"/user/:address/staking/summary":{input:{},output:{}},"/user/:address/staking/creator":{input:{},output:{}},"/user/:address/staking/collection/:collection":{input:{},output:{}},"/user/:address/staking/pool/:poolId/nfts":{input:{},output:{}},"/collection/:collection/staking/summary":{input:{},output:{},securityMode:"optionalAny"},"/collection/:collection/staking/delegators":{input:{},output:{}},"/collection/staking/explore":{input:{},output:{}},"/user/:creatorTag/owned-services":{input:{},output:{}},"/search":{input:{},output:{}},"/user/search":{input:{},output:{}},"/collection/search":{input:{},output:{}},"/collection/drops/search":{input:{},output:{}},"/nft/search/query":{input:{},output:{}},"/lending/market-sc":{input:{},output:{}},"/lending/active-accounts":{input:{},output:{}},"/lending/account/:nonce/attributes":{input:{},output:{}},"/lending/account/:nonce/positions":{input:{},output:{}},"/lending/market/:token/price/egld":{input:{},output:{}},"/faucet":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/notifications":{input:{},output:{},securityMode:"requiredAny"},"/user/notifications/unread-count":{input:{},output:{},securityMode:"requiredAny"},"/user/notifications/clear":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/notifications/read":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/device/register":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/mobile/device/:deviceId":{input:{},output:{},securityMode:"requiredWeb2",DELETE:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/mobile/history":{input:{},output:{},securityMode:"requiredAny"},"/mobile/history/unread-count":{input:{},output:{},securityMode:"requiredAny"},"/mobile/history/:notificationId/read":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/history/read-all":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/history/clear-all":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/mobile/history/clear-id/:notificationId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/event/:eventId/update":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/event/:eventId/reminder":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/creator/marketing":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/eventNotifications/user/:userId/direct":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/stellar/challenge":{input:{},output:{}},"/user/native-token":{input:{},output:{}},"/user/web2":{input:{},output:{},securityMode:"requiredWeb2"},"/user/web2/session-cookie":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/wallet":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/wallet-switch":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/wallet-link":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/:index/wallet-link":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredWeb2"}},"/user/web2/shards":{input:{},output:{},securityMode:"requiredWeb2"},"/activity/query":{input:{},output:{}},"/activity/:identifier":{input:{},output:{}},"/analytics/volume":{input:{},output:{}},"/collection/:collection/analytics/volume":{input:{},output:{}},"/collections/analytics/volume":{input:{},output:{}},"/user/:address/analytics/volume":{input:{},output:{}},"/analytics/overview":{input:{},output:{}},"/user/stats":{input:{},output:{}},"/user/xoxno-drop":{input:{},output:{}},"/user/me/xoxno-drop":{input:{},output:{},securityMode:"requiredAny"},"/transactions/:txHash":{input:{},output:{}},"/transactions/:txHash/status":{input:{},output:{}},"/transaction/cost":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/transactions":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/transactions/batch":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/chat/message":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/conversation":{input:{},output:{},securityMode:"requiredAny"},"/user/chat/conversation/:conversationId":{input:{},output:{},securityMode:"requiredAny",DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/conversation-summary":{input:{},output:{},securityMode:"requiredAny"},"/user/chat/conversation/:conversationId/message/:messageId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/block":{input:{},output:{},securityMode:"requiredAny"},"/user/chat/block/:address":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/user/chat/token":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/hatom/user/:address":{input:{},output:{}},"/countries":{input:{},output:{}},"/event":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId":{input:{},output:{},securityMode:"optionalAny",PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/profile/query":{input:{},output:{}},"/event/:eventId/profile":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/background":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/description":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/description/image":{input:{},output:{},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/description/image/:imageId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/register":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/ticket":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/ticket/:ticketId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},PUT:{input:{},output:{},body:{},securityMode:"requiredAny"},POST:{input:{},output:{},body:{}}},"/event/:eventId/stage":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/stage/:stageId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/calculate-prices":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/event/:eventId/validate-discount":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/user/:address/creator/events":{input:{},output:{},securityMode:"optionalAny"},"/event/:eventId/invite":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/invite/query":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/invite/:inviteId":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/voucher/query":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/questions":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/question":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/question/:questionId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/guest/query":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/guest/:address":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/guest-export":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/role":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},securityMode:"requiredAny"},"/event/:eventId/role/:roleId":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/guest":{input:{},output:{},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/roleOf/:address":{input:{},output:{},securityMode:"requiredAny"},"/user/me/event":{input:{},output:{},securityMode:"requiredAny"},"/user/me/events/past":{input:{},output:{},securityMode:"requiredAny"},"/user/me/events/hosted":{input:{},output:{},securityMode:"requiredAny"},"/user/me/events/upcoming":{input:{},output:{},securityMode:"requiredAny"},"/user/me/event/badge":{input:{},output:{},securityMode:"requiredAny"},"/user/me/event/badge/payload":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/scan":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/voucher":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/voucher/:voucherCode":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/manual-check-in":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/answered-questions/:address":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/guest/approve":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/google-pass/:address":{input:{},output:{}},"/event/profile/location":{input:{},output:{}},"/event/:eventId/referral-config":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referral-config/:configId":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referral-configs":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/referral":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referral/:referralCode":{input:{},output:{},PATCH:{input:{},output:{},body:{},securityMode:"requiredAny"},DELETE:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/event/:eventId/referrals":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/referrals/self-serviced":{input:{},output:{},securityMode:"requiredAny"},"/event/:eventId/notify-attendees":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/notify/global-broadcast":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/stellar/aggregator/quote":{input:{},output:{}},"/perp/exchange/acceptTerms":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/sendAsset":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/sendExternalAsset":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/deposit":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/withdraw":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/perp/exchange/order":{input:{},output:{},POST:{input:{},output:{},body:{},securityMode:"requiredAny"}},"/tradingview/bars/:symbol":{input:{},output:{}},"/tradingview/coin/:symbol":{input:{},output:{}},"/perp/coin/:symbol":{input:{},output:{}},"/perp/coin/spot/:symbol":{input:{},output:{}},"/perp/coins":{input:{},output:{}},"/perp/legal-check/:address":{input:{},output:{}},"/perp/coins/spot":{input:{},output:{}},"/perp/orderbook/:symbol":{input:{},output:{}},"/perp/trades/:symbol":{input:{},output:{}},"/perp/stats/spot/:symbol":{input:{},output:{}},"/perp/stats/:symbol":{input:{},output:{}},"/perp/subscribe":{input:{},output:{},POST:{input:{},output:{},body:{}}},"/perp/unsubscribe":{input:{},output:{},POST:{input:{},output:{},body:{}}}},h=["PATCH","POST","DELETE","PUT"],w={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},v={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??""},S={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},T={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"},k={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function M(t){const e=w[t];if(!e)throw new Error(`Stellar lending controller address not configured for network "${t}". Set STELLAR_LENDING_CONTROLLER_${t.toUpperCase()} env var.`);return e}function x(t){const e=v[t];if(!e)throw new Error(`Stellar aggregator router address not configured for network "${t}". Set STELLAR_AGGREGATOR_ROUTER_${t.toUpperCase()} env var.`);return e}function E(t){const e=A[t];if(!e)throw new Error(`Stellar governance address not configured for network "${t}". Set STELLAR_GOVERNANCE_${t.toUpperCase()} env var.`);return e}const P=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],O=t=>new e(t).toScVal(),I=t=>new n(t).toI128(),R=t=>a.ScVal.scvU32(t),B=t=>new n("string"==typeof t?t:t.toString()).toU64(),U=t=>a.ScVal.scvBool(t),C=t=>a.ScVal.scvString(t),N=t=>a.ScVal.scvSymbol(t),L=()=>a.ScVal.scvVoid(),$=t=>a.ScVal.scvVec(t),z=(t,e=32)=>{const o=t.startsWith("0x")?t.slice(2):t,r=Buffer.from(o,"hex");if(r.length!==e)throw new Error(`Stellar builder: expected a ${e}-byte BytesN (got ${r.length} bytes from "${t}")`);return a.ScVal.scvBytes(r)},D=(t,e)=>null==t?L():e(t),j=(t,e)=>a.ScVal.scvVec([O(t),I(e)]),V=t=>a.ScVal.scvVec(t.map((t=>j(t.token,t.amount)))),H=t=>{const e=Object.keys(t).sort().map((e=>new a.ScMapEntry({key:N(e),val:t[e]})));return a.ScVal.scvMap(e)},W=t=>{const e=t.paths.map((t=>{const e=t.hops.map((t=>{return H({amount_out:I(t.amountOut),pool:O(t.pool),token_in:O(t.tokenIn),token_out:O(t.tokenOut),venue:(e=t.venue,a.ScVal.scvVec([N(e)]))});var e}));return H({hops:a.ScVal.scvVec(e),split_ppm:R(t.splitPpm)})}));return H({paths:a.ScVal.scvVec(e),referral_id:B(t.referralId??0),token_in:O(t.tokenIn),token_out:O(t.tokenOut),total_min_out:I(t.totalMinOut)})},X=t=>{const e=Buffer.from(t);if(0===e.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return a.ScVal.scvBytes(e)},F=t=>{const e=t.trim();if(e.startsWith("0x")){const t=e.slice(2);if(!((o=t).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(t,"hex")}var o;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(e))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const r=Buffer.from(e,"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},G=t=>{if("string"==typeof t)return X(F(t));if(t instanceof Uint8Array)return X(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?X(F(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?X(F(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?X(F(t.bytes)):X(t.bytes):(e=(t=>{if(!t||"object"!=typeof t)throw new Error("Stellar builder: decoded strategy `steps` must be a StrategyPayload ({ paths, tokenIn, tokenOut, totalMinOut })");const e=t;if(!Array.isArray(e.paths)||0===e.paths.length)throw new Error("Stellar builder: `steps.paths` must be a non-empty array of strategy paths");if("string"!=typeof e.tokenIn)throw new Error("Stellar builder: `steps.tokenIn` must be a contract address");if("string"!=typeof e.tokenOut)throw new Error("Stellar builder: `steps.tokenOut` must be a contract address");if("string"!=typeof e.totalMinOut)throw new Error("Stellar builder: `steps.totalMinOut` must be an i128 decimal string");let o=0;for(const[t,r]of e.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[${t}]\` must have splitPpm > 0 and a non-empty hops array`);o+=r.splitPpm;for(const[e,o]of r.hops.entries())if(!o||"string"!=typeof o.amountOut||"string"!=typeof o.pool||"string"!=typeof o.tokenIn||"string"!=typeof o.tokenOut||!P.includes(o.venue))throw new Error(`Stellar builder: \`steps.paths[${t}].hops[${e}]\` 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 e})(t),a.ScVal.scvBytes(Buffer.from(W(e).toXDR("base64"),"base64")));var e,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},Z=t=>{if("string"==typeof t)return(t=>{const e=t.startsWith("0x")?t.slice(2):t,o=Buffer.from(e,"hex");return a.ScVal.scvBytes(o)})(t);if(t instanceof Uint8Array)return a.ScVal.scvBytes(Buffer.from(t));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function Q(e,n,i){const a=e.controllerAddress??M(e.network),s=new r(a),p=new t(e.caller,e.sourceSequence);return{xdr:new u(p,{fee:e.fee??o,networkPassphrase:k[e.network]}).addOperation(s.call(n,...i)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function J(t,e){const o=e.accountNonce??0,r=e.eModeCategory??0,n=V([...e.assets]);return Q(t,"supply",[O(t.caller),B(o),R(r),n])}function K(t,e){return J(t,{accountNonce:e.accountNonce,eModeCategory:e.eModeCategory,assets:[{token:e.token,amount:e.amount}]})}function Y(t,e){const o=V([...e.borrows]);return Q(t,"borrow",[O(t.caller),B(e.accountNonce),o])}function tt(t,e){return Y(t,{accountNonce:e.accountNonce,borrows:[{token:e.token,amount:e.amount}]})}function et(t,e){const o=V([...e.withdrawals]);return Q(t,"withdraw",[O(t.caller),B(e.accountNonce),o,D(e.to,O)])}function ot(t,e){return et(t,{accountNonce:e.accountNonce,withdrawals:[{token:e.token,amount:e.amount}]})}function rt(t,e){const o=V([...e.payments]);return Q(t,"repay",[O(t.caller),B(e.accountNonce),o])}function nt(t,e){return rt(t,{accountNonce:e.accountNonce,payments:[{token:e.token,amount:e.amount}]})}function ut(t,e){const o=V(e.debtPayments.map((t=>({token:t.token,amount:t.amount}))));return Q(t,"liquidate",[O(t.caller),B(e.accountNonce),o])}function it(t,e){return Q(t,"flash_loan",[O(t.caller),O(e.asset),I(e.amount),O(e.receiver),Z(e.data)])}function at(t,e){const o=e.accountNonce??0;return Q(t,"multiply",[O(t.caller),B(o),R(e.eModeCategory),O(e.collateralToken),I(e.debtToFlashLoan),O(e.debtToken),R(e.mode),G(e.steps),D(e.initialPayment,(t=>j(t.token,t.amount))),D(e.convertSwap,G)])}function st(t,e){return Q(t,"swap_debt",[O(t.caller),B(e.accountNonce),O(e.existingDebtToken),I(e.newDebtAmount),O(e.newDebtToken),G(e.steps)])}function pt(t,e){return Q(t,"swap_collateral",[O(t.caller),B(e.accountNonce),O(e.currentCollateral),I(e.fromAmount),O(e.newCollateral),G(e.steps)])}function ct(t,e){return Q(t,"repay_debt_with_collateral",[O(t.caller),B(e.accountNonce),O(e.collateralToken),I(e.collateralAmount),O(e.debtToken),G(e.steps),U(e.closePosition)])}const dt={Single:0,PrimaryWithAnchor:1},lt=t=>H({base_borrow_rate_ray:I(t.baseBorrowRateRay),max_borrow_rate_ray:I(t.maxBorrowRateRay),max_utilization_ray:I(t.maxUtilizationRay),mid_utilization_ray:I(t.midUtilizationRay),optimal_utilization_ray:I(t.optimalUtilizationRay),reserve_factor_bps:R(t.reserveFactorBps),slope1_ray:I(t.slope1Ray),slope2_ray:I(t.slope2Ray),slope3_ray:I(t.slope3Ray)}),yt=t=>H({asset_decimals:R(t.assetDecimals),asset_id:O(t.assetId),base_borrow_rate_ray:I(t.baseBorrowRateRay),max_borrow_rate_ray:I(t.maxBorrowRateRay),max_utilization_ray:I(t.maxUtilizationRay),mid_utilization_ray:I(t.midUtilizationRay),optimal_utilization_ray:I(t.optimalUtilizationRay),reserve_factor_bps:R(t.reserveFactorBps),slope1_ray:I(t.slope1Ray),slope2_ray:I(t.slope2Ray),slope3_ray:I(t.slope3Ray)}),ft=t=>H({borrow_cap:I(t.borrowCap),e_mode_categories:$(t.eModeCategories.map((t=>R(t)))),flashloan_fee_bps:R(t.flashloanFeeBps),is_borrowable:U(t.isBorrowable),is_collateralizable:U(t.isCollateralizable),is_flashloanable:U(t.isFlashloanable),is_isolated_asset:U(t.isIsolatedAsset),is_siloed_borrowing:U(t.isSiloedBorrowing),isolation_borrow_enabled:U(t.isolationBorrowEnabled),isolation_debt_ceiling_usd_wad:I(t.isolationDebtCeilingUsdWad),liquidation_bonus_bps:R(t.liquidationBonusBps),liquidation_fees_bps:R(t.liquidationFeesBps),liquidation_threshold_bps:R(t.liquidationThresholdBps),loan_to_value_bps:R(t.loanToValueBps),supply_cap:I(t.supplyCap)}),_t=t=>H({max_borrow_positions:R(t.maxBorrowPositions),max_supply_positions:R(t.maxSupplyPositions)}),mt=t=>{const e=t.kind;switch(e){case"Stellar":return $([N("Stellar"),O(t.value)]);case"Symbol":return $([N("Symbol"),N(t.value)]);case"String":return $([N("String"),C(t.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${e}"`)}},gt=(t,e)=>{if("Twap"===t){if("number"!=typeof e)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return $([N("Twap"),R(e)])}return $([N("Spot")])},bt=t=>{const e=t.provider;if("ReflectorSep40"===e){if(!t.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return $([N("Reflector"),H({asset:mt(t.asset),contract:O(t.contract),read_mode:gt(t.readMode,t.twapRecords)})])}if("RedStonePriceFeed"===e){if("string"!=typeof t.feedId)throw new Error("Stellar builder: RedStone oracle source requires `feedId`");if("number"!=typeof t.maxStaleSeconds)throw new Error("Stellar builder: RedStone oracle source requires `maxStaleSeconds`");return $([N("RedStone"),H({contract:O(t.contract),feed_id:C(t.feedId),max_stale_seconds:B(t.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${e}"`)},qt=t=>{const e=dt[t.strategy];if(void 0===e)throw new Error(`Stellar builder: unknown oracle strategy "${t.strategy}"`);return H({anchor:(o=t.anchor,$(null==o?[N("None")]:[N("Some"),bt(o)])),first_tolerance_bps:R(t.firstToleranceBps),last_tolerance_bps:R(t.lastToleranceBps),max_price_stale_seconds:B(t.maxPriceStaleSeconds),max_sanity_price_wad:I(t.maxSanityPriceWad),min_sanity_price_wad:I(t.minSanityPriceWad),primary:bt(t.primary),strategy:R(e)});var o};function ht(t,e){return Q(t,"upgrade",[z(e.wasmHash)])}function wt(t,e){return Q(t,"migrate",[R(e.newVersion)])}function vt(t){return Q(t,"pause",[])}function At(t){return Q(t,"unpause",[])}function St(t,e){return Q(t,"grant_role",[O(e.account),N(e.role)])}function Tt(t,e){return Q(t,"revoke_role",[O(e.account),N(e.role)])}function kt(t,e){return Q(t,"transfer_ownership",[O(e.newOwner),R(e.liveUntilLedger)])}function Mt(t){return Q(t,"accept_ownership",[])}function xt(t,e){return Q(t,"set_aggregator",[O(e.aggregator)])}function Et(t,e){return Q(t,"set_accumulator",[O(e.accumulator)])}function Pt(t,e){return Q(t,"set_liquidity_pool_template",[z(e.wasmHash)])}function Ot(t,e){return Q(t,"edit_asset_config",[O(e.asset),ft(e.config)])}function It(t,e){return Q(t,"set_position_limits",[_t(e)])}function Rt(t,e){return Q(t,"add_e_mode_category",[R(e.ltv),R(e.threshold),R(e.bonus)])}function Bt(t,e){return Q(t,"edit_e_mode_category",[R(e.id),R(e.ltv),R(e.threshold),R(e.bonus)])}function Ut(t,e){return Q(t,"remove_e_mode_category",[R(e.id)])}function Ct(t,e){return Q(t,"add_asset_to_e_mode_category",[O(e.asset),R(e.categoryId),U(e.canCollateral),U(e.canBorrow)])}function Nt(t,e){return Q(t,"edit_asset_in_e_mode_category",[O(e.asset),R(e.categoryId),U(e.canCollateral),U(e.canBorrow)])}function Lt(t,e){return Q(t,"remove_asset_from_e_mode",[O(e.asset),R(e.categoryId)])}function $t(t,e){return Q(t,"approve_token",[O(e.token)])}function zt(t,e){return Q(t,"revoke_token",[O(e.token)])}function Dt(t,e){return Q(t,"configure_market_oracle",[O(t.caller),O(e.asset),qt(e.config)])}function jt(t,e){return Q(t,"edit_oracle_tolerance",[O(t.caller),O(e.asset),R(e.firstTolerance),R(e.lastTolerance)])}function Vt(t,e){return Q(t,"disable_token_oracle",[O(t.caller),O(e.asset)])}function Ht(t,e){return Q(t,"update_indexes",[O(t.caller),$(e.assets.map((t=>O(t))))])}function Wt(t,e){return Q(t,"renew_account",[O(t.caller),B(e.accountNonce)])}function Xt(t,e){return Q(t,"create_liquidity_pool",[O(e.asset),yt(e.params),ft(e.config)])}function Ft(t,e){return Q(t,"upgrade_liquidity_pool_params",[O(e.asset),lt(e.params)])}function Gt(t,e){return Q(t,"upgrade_liquidity_pool",[O(e.asset),z(e.wasmHash)])}function Zt(t,e){return Q(t,"claim_revenue",[O(t.caller),$(e.assets.map((t=>O(t))))])}function Qt(t,e){return Q(t,"add_rewards",[O(t.caller),$(e.rewards.map((t=>$([O(t.token),I(t.amount)]))))])}function Jt(t,e){return Q(t,"update_account_threshold",[O(t.caller),O(e.asset),U(e.hasRisks),$(e.accountNonces.map((t=>B(t))))])}const Kt="00".repeat(32),Yt=t=>{if("string"==typeof t)return z(t);const e=Buffer.from(t);if(32!==e.length)throw new Error(`Stellar governance builder: expected a 32-byte salt (got ${e.length} bytes)`);return a.ScVal.scvBytes(e)};function te(e,n,i){const a=e.governanceAddress??E(e.network),s=new r(a),p=new t(e.caller,e.sourceSequence);return{xdr:new u(p,{fee:e.fee??o,networkPassphrase:k[e.network]}).addOperation(s.call(n,...i)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}const ee=(t,e,o,r)=>te(t,e,[O(t.caller),...o,Yt(r)]),oe=(t,e,o,r)=>te(t,e,[L(),...o,Yt(r)]);function re(t,e,o){return ee(t,"propose_set_aggregator",[O(e.aggregator)],o)}function ne(t,e,o){return ee(t,"propose_set_accumulator",[O(e.accumulator)],o)}function ue(t,e,o){return ee(t,"propose_set_pool_template",[z(e.wasmHash)],o)}function ie(t,e,o){return ee(t,"propose_edit_asset_config",[O(e.asset),ft(e.config)],o)}function ae(t,e,o){return ee(t,"propose_set_position_limits",[_t(e)],o)}function se(t,e,o){return ee(t,"propose_set_min_borrow_collat",[I(e.floorWad)],o)}function pe(t,e,o){return ee(t,"propose_add_e_mode_category",[R(e.ltv),R(e.threshold),R(e.bonus)],o)}function ce(t,e,o){return ee(t,"propose_edit_e_mode_category",[R(e.id),R(e.ltv),R(e.threshold),R(e.bonus)],o)}function de(t,e,o){return ee(t,"propose_remove_e_mode_category",[R(e.id)],o)}function le(t,e,o){return ee(t,"propose_add_asset_to_e_mode",[O(e.asset),R(e.categoryId),U(e.canCollateral),U(e.canBorrow)],o)}function ye(t,e,o){return ee(t,"propose_edit_asset_in_e_mode",[O(e.asset),R(e.categoryId),U(e.canCollateral),U(e.canBorrow)],o)}function fe(t,e,o){return ee(t,"propose_remove_asset_from_e_mode",[O(e.asset),R(e.categoryId)],o)}function _e(t,e,o){return ee(t,"propose_approve_token",[O(e.token)],o)}function me(t,e,o){return ee(t,"propose_revoke_token",[O(e.token)],o)}function ge(t,e,o){return ee(t,"propose_create_liquidity_pool",[O(e.asset),yt(e.params),ft(e.config)],o)}function be(t,e,o){return ee(t,"propose_upgrade_pool_params",[O(e.asset),lt(e.params)],o)}function qe(t,e){return ee(t,"propose_deploy_pool",[],e)}function he(t,e,o){return ee(t,"propose_upgrade_pool",[z(e.wasmHash)],o)}function we(t,e,o){return ee(t,"propose_grant_controller_role",[O(e.account),N(e.role)],o)}function ve(t,e,o){return ee(t,"propose_revoke_controller_role",[O(e.account),N(e.role)],o)}function Ae(t,e,o){return ee(t,"propose_upgrade_controller",[z(e.wasmHash)],o)}function Se(t,e,o){return ee(t,"propose_migrate_controller",[R(e.newVersion)],o)}function Te(t,e,o){return ee(t,"propose_transfer_ctrl_ownership",[O(e.newOwner),R(e.liveUntilLedger)],o)}function ke(t,e,o){return ee(t,"propose_configure_market_oracle",[O(e.asset),qt(e.config)],o)}function Me(t,e,o){return ee(t,"propose_edit_oracle_tolerance",[O(e.asset),R(e.firstTolerance),R(e.lastTolerance)],o)}function xe(t,e,o){return ee(t,"propose_governance_upgrade",[z(e.wasmHash)],o)}function Ee(t,e,o){return ee(t,"propose_update_delay",[R(e.newDelay)],o)}function Pe(t,e,o){return ee(t,"propose_grant_governance_role",[O(e.account),N(e.role)],o)}function Oe(t,e,o){return ee(t,"propose_revoke_governance_role",[O(e.account),N(e.role)],o)}function Ie(t,e,o){return ee(t,"propose_transfer_gov_own",[O(e.newOwner),R(e.liveUntilLedger)],o)}function Re(t,e){const o=$(e.argsXdr.map((t=>a.ScVal.fromXDR(t,"base64")))),r=Yt(e.predecessor??Kt);return te(t,"execute",[L(),O(e.target),N(e.functionName),o,r,Yt(e.salt)])}function Be(t,e,o){return oe(t,"execute_governance_upgrade",[z(e.wasmHash)],o)}function Ue(t,e,o){return oe(t,"execute_update_delay",[R(e.newDelay)],o)}function Ce(t,e,o){return oe(t,"execute_grant_governance_role",[O(e.account),N(e.role)],o)}function Ne(t,e,o){return oe(t,"execute_revoke_governance_role",[O(e.account),N(e.role)],o)}function Le(t,e,o){return oe(t,"execute_transfer_gov_own",[O(e.newOwner),R(e.liveUntilLedger)],o)}const $e=t=>t.toXDR("base64"),ze=t=>a.ScVal.fromXDR(t,"base64"),De=t=>t.map((t=>String(i(ze(t))))).join(":"),je=t=>"bigint"==typeof t||"number"==typeof t?t.toString():String(t),Ve=t=>Number(t),He=t=>String(t),We=t=>null==t?void 0:je(t),Xe=t=>null==t?void 0:He(t),Fe=t=>t instanceof Uint8Array?Buffer.from(t).toString("hex"):Buffer.isBuffer(t)?t.toString("hex"):String(t),Ge=["None","Multiply","Long","Short"],Ze=["Single","PrimaryWithAnchor"],Qe=["ReflectorSep40","RedStonePriceFeed"],Je=["Spot","Twap"],Ke=["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"],Ye=t=>Array.isArray(t)?t:[],to=t=>({loanToValueBps:Ve(t.loan_to_value_bps),liquidationThresholdBps:Ve(t.liquidation_threshold_bps),liquidationBonusBps:Ve(t.liquidation_bonus_bps),liquidationFeesBps:Ve(t.liquidation_fees_bps),isCollateralizable:Boolean(t.is_collateralizable),isBorrowable:Boolean(t.is_borrowable),isIsolatedAsset:Boolean(t.is_isolated_asset),isSiloedBorrowing:Boolean(t.is_siloed_borrowing),isFlashloanable:Boolean(t.is_flashloanable),isolationBorrowEnabled:Boolean(t.isolation_borrow_enabled),isolationDebtCeilingUsdWad:je(t.isolation_debt_ceiling_usd_wad),flashloanFeeBps:Ve(t.flashloan_fee_bps),borrowCap:je(t.borrow_cap),supplyCap:je(t.supply_cap),eModeCategories:(t.e_mode_categories??[]).map(Ve)}),eo=(t,e)=>{const o="Borrow"===e;return{action:(r=t[0],Ke[Ve(r)]??je(r)),positionType:e,asset:He(t[1]),scaledAmountRay:je(t[2]),indexRay:je(t[3]),amount:je(t[4]),liquidationThresholdBps:o?void 0:Ve(t[5]),liquidationBonusBps:o?void 0:Ve(t[6]),loanToValueBps:o?void 0:Ve(t[7])};var r},oo=t=>{return{owner:He(t[0]),isIsolatedPosition:Boolean(t[2]),eModeCategoryId:Ve(t[1]),mode:(e=t[3],Ge[Ve(e)]??"None"),isolatedToken:Xe(t[4])};var e},ro=(t,e)=>{const o=Je[Ve(t[`${e}_read_mode`])]??"Spot",r=t[`${e}_asset`],n=t[`${e}_symbol`],u=null!=r?{kind:"Stellar",value:He(r)}:null!=n?{kind:"Symbol",value:He(n)}:void 0;return{provider:Qe[Ve(t[`${e}_provider`])]??"ReflectorSep40",contractAddress:He(t[`${e}_contract`]),asset:u,feedId:Xe(t[`${e}_feed_id`]),readMode:o,twapRecords:"Twap"===o?Ve(t[`${e}_twap_records`]):void 0,decimals:Ve(t[`${e}_decimals`]),resolutionSeconds:Ve(t[`${e}_resolution_seconds`]),maxStaleSeconds:Ve(t[`${e}_max_stale_seconds`])}},no=t=>{const e=null!==t.anchor_provider&&void 0!==t.anchor_provider;return{baseTokenId:He(t.base_token_id),quoteTokenId:He(t.quote_token_id),tolerance:{firstUpperRatio:Ve(t.first_upper_ratio_bps??t.tolerance?.first_upper_ratio_bps),firstLowerRatio:Ve(t.first_lower_ratio_bps??t.tolerance?.first_lower_ratio_bps),lastUpperRatio:Ve(t.last_upper_ratio_bps??t.tolerance?.last_upper_ratio_bps),lastLowerRatio:Ve(t.last_lower_ratio_bps??t.tolerance?.last_lower_ratio_bps)},assetDecimals:Ve(t.asset_decimals),maxPriceStaleSeconds:Ve(t.max_price_stale_seconds),strategy:Ze[Ve(t.strategy)]??"Single",primary:ro(t,"primary"),anchor:e?ro(t,"anchor"):void 0,primaryQuoteToken:Xe(t.primary_quote_token),anchorQuoteToken:Xe(t.anchor_quote_token),minSanityPriceWad:We(t.min_sanity_price_wad),maxSanityPriceWad:We(t.max_sanity_price_wad)}},uo={"market:create":t=>({topic:"market:create",data:{baseAsset:He(t.base_asset),maxBorrowRate:je(t.max_borrow_rate),baseBorrowRate:je(t.base_borrow_rate),slope1:je(t.slope1),slope2:je(t.slope2),slope3:je(t.slope3),midUtilization:je(t.mid_utilization),optimalUtilization:je(t.optimal_utilization),maxUtilization:We(t.max_utilization),reserveFactor:Ve(t.reserve_factor),marketAddress:He(t.market_address),config:to(t.config)}}),"market:params_update":t=>({topic:"market:params_update",data:{asset:He(t.asset),maxBorrowRateRay:je(t.max_borrow_rate_ray),baseBorrowRateRay:je(t.base_borrow_rate_ray),slope1Ray:je(t.slope1_ray),slope2Ray:je(t.slope2_ray),slope3Ray:je(t.slope3_ray),midUtilizationRay:je(t.mid_utilization_ray),optimalUtilizationRay:je(t.optimal_utilization_ray),maxUtilizationRay:We(t.max_utilization_ray),reserveFactorBps:Ve(t.reserve_factor_bps)}}),"market:batch_state_update":t=>({topic:"market:batch_state_update",data:{updates:Ye(t).map((t=>{return e=Ye(t),{asset:He(e[0]),timestamp:Ve(e[1]),supplyIndexRay:je(e[2]),borrowIndexRay:je(e[3]),reservesRay:je(e[4]),suppliedRay:je(e[5]),borrowedRay:je(e[6]),revenueRay:je(e[7]),assetPriceWad:We(e[8])};var e}))}}),"position:batch_update":t=>{const e=Ye(t);return{topic:"position:batch_update",data:{accountId:je(e[0]),accountAttributes:oo(Ye(e[1])),updates:[...Ye(e[2]).map((t=>eo(Ye(t),"Deposit"))),...Ye(e[3]).map((t=>eo(Ye(t),"Borrow")))]}}},"position:flash_loan":t=>({topic:"position:flash_loan",data:{asset:He(t.asset),receiver:He(t.receiver),caller:He(t.caller),amount:je(t.amount),fee:je(t.fee)}}),"config:asset":t=>({topic:"config:asset",data:{asset:He(t.asset),config:to(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:He(t.asset),oracle:no(t.oracle)}}),"config:emode_category":t=>({topic:"config:emode_category",data:{category:{categoryId:Ve(t.category.category_id),loanToValueBps:Ve(t.category.loan_to_value_bps),liquidationThresholdBps:Ve(t.category.liquidation_threshold_bps),liquidationBonusBps:Ve(t.category.liquidation_bonus_bps),isDeprecated:Boolean(t.category.is_deprecated)}}}),"config:emode_asset":t=>({topic:"config:emode_asset",data:{asset:He(t.asset),config:{isCollateralizable:Boolean(t.config.is_collateralizable),isBorrowable:Boolean(t.config.is_borrowable)},categoryId:Ve(t.category_id)}}),"config:remove_emode_asset":t=>({topic:"config:remove_emode_asset",data:{asset:He(t.asset),categoryId:Ve(t.category_id)}}),"debt:ceiling_update":t=>({topic:"debt:ceiling_update",data:{asset:He(t.asset),totalDebtUsdWad:je(t.total_debt_usd_wad)}}),"debt:ceiling_batch_update":t=>({topic:"debt:ceiling_batch_update",data:{updates:Ye(t).map((t=>{const e=Ye(t);return{asset:He(e[0]),totalDebtUsdWad:je(e[1])}}))}}),"debt:bad_debt":t=>({topic:"debt:bad_debt",data:{accountId:je(t.account_id),totalBorrowUsdWad:je(t.total_borrow_usd_wad),totalCollateralUsdWad:je(t.total_collateral_usd_wad)}}),"strategy:initial_payment":t=>({topic:"strategy:initial_payment",data:{token:He(t.token),amount:je(t.amount),usdValueWad:je(t.usd_value_wad),accountId:je(t.account_id)}}),"config:approve_token":t=>({topic:"config:approve_token",data:{wasmHash:Fe(t.wasm_hash),approved:Boolean(t.approved)}}),"config:aggregator":t=>({topic:"config:aggregator",data:{aggregator:He(t.aggregator)}}),"config:accumulator":t=>({topic:"config:accumulator",data:{accumulator:He(t.accumulator)}}),"config:pool_template":t=>({topic:"config:pool_template",data:{wasmHash:Fe(t.wasm_hash)}}),"config:position_limits":t=>({topic:"config:position_limits",data:{maxSupplyPositions:Ve(t.max_supply_positions),maxBorrowPositions:Ve(t.max_borrow_positions)}}),"config:oracle_disabled":t=>({topic:"config:oracle_disabled",data:{asset:He(t.asset)}}),"oracle:twap_degraded":t=>({topic:"oracle:twap_degraded",data:{oracle:He(t.oracle),reasonCode:Ve(t.reason_code)}})},io=Object.freeze(Object.keys(uo));function ao(t,e){const o=De(t),r=uo[o];return r?r(i(ze(e))):null}const so="XLENDXLM-a7c9f3",po=1e4;function co(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${so}-${o}`}function lo(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function yo(t,e=0){return 1e4*t+e}function fo(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const _o=(t,e,o)=>{const r=new URL(e,t.endsWith("/")?t:`${t}/`);if(o)for(const[t,e]of Object.entries(o))void 0!==e&&r.searchParams.set(t,String(e));return r.toString()},mo=t=>t.baseUrl??T[t.network];async function go(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=_o(mo(e),"api/v1/quote",{from:t.from,to:t.to,amountIn:t.amountIn,amountOut:t.amountOut,maxHops:t.maxHops,maxSplits:t.maxSplits,slippage:t.slippage,includePaths:t.includePaths,sender:t.sender,router:t.router,platform:t.platform,fresh:t.fresh}),r=await fetch(o,e.fetchOptions);if(!r.ok){const t=await r.text().catch((()=>""));throw new Error(`Stellar quote server responded ${r.status} ${r.statusText} for ${o} — ${t}`)}return await r.json()}async function bo(t){const e=_o(mo(t),"api/v1/tokens"),o=await fetch(e,t.fetchOptions);if(!o.ok){const t=await o.text().catch((()=>""));throw new Error(`Stellar quote server responded ${o.status} ${o.statusText} for ${e} — ${t}`)}return await o.json()}const qo=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,ho=t=>W(t).toXDR("base64");function wo(e,n){const i=e.routerAddress??x(e.network),a=new r(i),s=new t(e.caller,e.sourceSequence),p=G(qo(n,e.referralId));return{xdr:new u(s,{fee:e.fee??o,networkPassphrase:k[e.network]}).addOperation(a.call("execute_strategy",O(e.caller),I(e.totalIn),p)).setTimeout(e.timeoutSeconds??300).build().toXDR()}}function vo(t,e){return wo(t,e)}function Ao(t,e={}){if("string"!=typeof t.amountOutMin)throw new Error("mapQuoteResponseToStrategyPayload: quote response is missing `amountOutMin`. Pass `slippage` when fetching the quote.");return{paths:t.paths?t.paths.map((t=>({hops:t.swaps.map(ko),splitPpm:t.splitPpm}))):[{hops:t.hops.map(ko),splitPpm:1e6}],referralId:e.referralId??0,tokenIn:t.from,tokenOut:t.to,totalMinOut:t.amountOutMin}}function So(t,e={}){const o=t;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Ao(t,e)}const To=Ao,ko=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function Mo(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function xo(t,e,o){const r=u.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw Mo(o.invokedContractId,t);throw t}}async function Eo(t,e,o){return xo(t,e.xdr,o)}function Po(t){if(t<=0||t>4)throw new Error(`Invalid PositionMode ${t} for Stellar — expected 1 (Normal) through 4 (Short). "None" (0) has no Stellar equivalent.`);return t-1}function Oo(t,e){return{paths:[{hops:[{amountOut:"0",pool:t,tokenIn:t,tokenOut:t,venue:"Soroswap"}],splitPpm:1e6}],referralId:0,tokenIn:t,tokenOut:t,totalMinOut:e}}const Io=t=>{const e=t.startsWith("0x")?t.slice(2):t;if(e.length%2!=0)throw new Error("buildStellarCctpForwardTx: hex input must have even length");return Buffer.from(e,"hex")};function Ro(e){const o=new t(e.caller,e.sourceSequence),n=new r(e.forwarderAddress).call("mint_and_forward",a.ScVal.scvBytes(Io(e.message)),a.ScVal.scvBytes(Io(e.attestation)));return{xdr:new u(o,{fee:e.fee??"10000000",networkPassphrase:k[e.network]}).addOperation(n).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const Bo=t=>t.replace(/-([a-z])/g,((t,e)=>e.toUpperCase()));function Uo(t,e,o,r){const{input:n,output:u,...i}=e,a=async(e={})=>{const n={...o,...e},u=t.replace(/:([a-zA-Z_]+)/g,((t,e)=>`${n[e]}`)),i=[...t.matchAll(/:([a-zA-Z_]+)/g)].map((t=>t[1])),a=Object.fromEntries(Object.entries(n).filter((([t])=>!i.includes(t)))),s=/:address[^A-Z]/.test(t)||"address"in a,p=/:collection[^A-Z]/.test(t)||"collection"in a;if(s){const t=n.address;if(!b(t))throw new g(t)}if(p){const t=n.collection;if(Array.isArray(t)?t.some((t=>!f(t))):!f(t))throw new m(t)}const c=Object.fromEntries(Object.entries(a).map((([t,e])=>[t,e instanceof FormData?e:"filter"===t||"body"===t?JSON.stringify(e):Array.isArray(e)?e.join(","):e]))),{body:d,auth:l,method:y,headers:_,cache:q,next:h,debug:w,continuationToken:v,...A}=c,S=l?`Bearer ${l}`:void 0,T={..._,...S?{Authorization:S}:{},...v?{"X-Continuation-Token":String(v)}:{}},k={...h,tags:[...h?.tags??[],u]};return r.fetchWithTimeout(u,{method:y,params:A,body:d,headers:T,cache:q,debug:w,...k?{next:k}:{}})},s=(t={})=>a(t);for(const t of Object.keys(i))h.includes(t)&&(s[t]=e=>a({...e,method:e.method??t.toUpperCase()}));return s}function Co(t){const e=function(){const t={static:{},params:{},leaves:[]};for(const[e,o]of Object.entries(q)){const r=e.split("/").filter(Boolean);let n=t;for(const t of r)if(t.startsWith(":")){const e=Bo(t.slice(1));n=n.params[e]||={static:{},params:{},leaves:[]}}else{const e=Bo(t);n=n.static[e]||={static:{},params:{},leaves:[]}}n.leaves.push({rawPath:e,def:o})}return t}(),o=(e,r)=>{const n=e.leaves.length,u=Object.keys(e.static).length,i=Object.keys(e.params).length;let a;if(1===n&&u+i>0){const{rawPath:o,def:n}=e.leaves[0];a=Uo(o,n,r,t)}else{a={};for(const{rawPath:o,def:n}of e.leaves)a[Bo(o.split("/").pop().replace(/^:/,""))]=Uo(o,n,r,t)}for(const[t,n]of Object.entries(e.static)){const e=o(n,r);let u=e;if(e&&"object"==typeof e&&t in e&&"function"==typeof e[t]){const o=e[t],r=Object.fromEntries(Object.entries(e).filter((([e])=>e!==t)));1===o.length||(Object.assign(o,r),u=o)}void 0===a[t]?a[t]=u:"function"==typeof a[t]?Object.assign(a[t],u):"function"==typeof u?(Object.assign(u,a[t]),a[t]=u):Object.assign(a[t],u)}for(const[t,n]of Object.entries(e.params)){const e=e=>{const u=o(n,{...r,[t]:e});if(u&&"object"==typeof u&&1===Object.keys(u).length&&t in u&&"function"==typeof u[t]){const e=u[t],o=(...t)=>e(...t);return Object.assign(o,e)}return u};if(a[t]){const o=a[t];a[t]=t=>({...o(t),...e(t)})}else a[t]=e}return a};return o(e,{})}export{l as Chain,v as STELLAR_AGGREGATOR_ROUTER,A as STELLAR_GOVERNANCE,Kt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,w as STELLAR_LENDING_CONTROLLER,io as STELLAR_LENDING_TOPICS,k as STELLAR_NETWORK_PASSPHRASE,T as STELLAR_QUOTE_URL,S as STELLAR_SOROBAN_RPC_URL,po as SYNTHETIC_EVENT_ORDER_STRIDE,y as XOXNOClient,so as XOXNO_LENDING_STELLAR_TICKER,Oo as buildSameTokenRepaySwapSteps,Co as buildSdk,Mt as buildStellarAcceptOwnershipTx,Ct as buildStellarAddAssetToEModeCategoryTx,Rt as buildStellarAddEModeCategoryTx,Qt as buildStellarAddRewardsTx,$t as buildStellarApproveTokenTx,vo as buildStellarBatchSwapTx,Y as buildStellarBorrowBatchTx,tt as buildStellarBorrowTx,Ro as buildStellarCctpForwardTx,Zt as buildStellarClaimRevenueTx,Dt as buildStellarConfigureMarketOracleTx,Xt as buildStellarCreateLiquidityPoolTx,Vt as buildStellarDisableTokenOracleTx,Ot as buildStellarEditAssetConfigTx,Nt as buildStellarEditAssetInEModeCategoryTx,Bt as buildStellarEditEModeCategoryTx,jt as buildStellarEditOracleToleranceTx,wo as buildStellarExecuteStrategyTx,it as buildStellarFlashLoanTx,Be as buildStellarGovernanceExecuteGovernanceUpgradeTx,Ce as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Ne as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,Le as buildStellarGovernanceExecuteTransferGovOwnTx,Re as buildStellarGovernanceExecuteTx,Ue as buildStellarGovernanceExecuteUpdateDelayTx,St as buildStellarGrantRoleTx,co as buildStellarLendingIdentifier,ut as buildStellarLiquidateTx,wt as buildStellarMigrateTx,at as buildStellarMultiplyTx,vt as buildStellarPauseTx,le as buildStellarProposeAddAssetToEModeTx,pe as buildStellarProposeAddEModeCategoryTx,_e as buildStellarProposeApproveTokenTx,ke as buildStellarProposeConfigureMarketOracleTx,ge as buildStellarProposeCreateLiquidityPoolTx,qe as buildStellarProposeDeployPoolTx,ie as buildStellarProposeEditAssetConfigTx,ye as buildStellarProposeEditAssetInEModeTx,ce as buildStellarProposeEditEModeCategoryTx,Me as buildStellarProposeEditOracleToleranceTx,xe as buildStellarProposeGovernanceUpgradeTx,we as buildStellarProposeGrantControllerRoleTx,Pe as buildStellarProposeGrantGovernanceRoleTx,Se as buildStellarProposeMigrateControllerTx,fe as buildStellarProposeRemoveAssetFromEModeTx,de as buildStellarProposeRemoveEModeCategoryTx,ve as buildStellarProposeRevokeControllerRoleTx,Oe as buildStellarProposeRevokeGovernanceRoleTx,me as buildStellarProposeRevokeTokenTx,ne as buildStellarProposeSetAccumulatorTx,re as buildStellarProposeSetAggregatorTx,se as buildStellarProposeSetMinBorrowCollatTx,ue as buildStellarProposeSetPoolTemplateTx,ae as buildStellarProposeSetPositionLimitsTx,Te as buildStellarProposeTransferCtrlOwnershipTx,Ie as buildStellarProposeTransferGovOwnTx,Ee as buildStellarProposeUpdateDelayTx,Ae as buildStellarProposeUpgradeControllerTx,be as buildStellarProposeUpgradePoolParamsTx,he as buildStellarProposeUpgradePoolTx,Lt as buildStellarRemoveAssetFromEModeTx,Ut as buildStellarRemoveEModeCategoryTx,Wt as buildStellarRenewAccountTx,rt as buildStellarRepayBatchTx,ct as buildStellarRepayDebtWithCollateralTx,nt as buildStellarRepayTx,Tt as buildStellarRevokeRoleTx,zt as buildStellarRevokeTokenTx,Et as buildStellarSetAccumulatorTx,xt as buildStellarSetAggregatorTx,Pt as buildStellarSetLiquidityPoolTemplateTx,It as buildStellarSetPositionLimitsTx,J as buildStellarSupplyBatchTx,K as buildStellarSupplyTx,pt as buildStellarSwapCollateralTx,st as buildStellarSwapDebtTx,kt as buildStellarTransferOwnershipTx,At as buildStellarUnpauseTx,Jt as buildStellarUpdateAccountThresholdTx,Ht as buildStellarUpdateIndexesTx,ht as buildStellarUpgradeControllerTx,Ft as buildStellarUpgradeLiquidityPoolParamsTx,Gt as buildStellarUpgradeLiquidityPoolTx,et as buildStellarWithdrawBatchTx,ot as buildStellarWithdrawTx,Q as buildTx,ao as decodeStellarLendingEvent,ft as encodeAssetConfigRaw,lt as encodeInterestRateModel,qt as encodeMarketOracleConfigInput,yt as encodeMarketParamsRaw,bt as encodeOracleSourceConfigInput,_t as encodePositionLimits,ho as encodeStrategyPayloadToRouteXdr,lo as extractEventOrder,go as getStellarAggregatorQuote,x as getStellarAggregatorRouter,E as getStellarGovernance,M as getStellarLendingController,bo as getStellarQuoteTokens,f as isValidCollectionTicker,_ as isValidNftIdentifier,To as mapQuoteResponseToAggregatorSwap,Ao as mapQuoteResponseToStrategyPayload,So as mapQuoteResponseToStrategySwap,fo as mapStellarPositionActivityType,Eo as prepareStellarBuiltTx,xo as prepareStellarTxXdr,De as stellarLendingDispatchKey,yo as syntheticEventOrder,Mo as tagStellarInvokedContractError,$e as toBase64Xdr,Po as toStellarPositionMode};
|
|
@@ -16,7 +16,7 @@ import { xdr } from '@stellar/stellar-sdk';
|
|
|
16
16
|
export declare const encodeInterestRateModel: (m: InterestRateModelDto) => xdr.ScVal;
|
|
17
17
|
/** `MarketParamsRaw` — `InterestRateModel` plus the pool asset identity. */
|
|
18
18
|
export declare const encodeMarketParamsRaw: (p: MarketParamsRawDto) => xdr.ScVal;
|
|
19
|
-
/** `AssetConfigRaw` —
|
|
19
|
+
/** `AssetConfigRaw` — 15 risk/limit fields. */
|
|
20
20
|
export declare const encodeAssetConfigRaw: (c: AssetConfigRawDto) => xdr.ScVal;
|
|
21
21
|
/** `PositionLimits` — per-account supply/borrow position caps. */
|
|
22
22
|
export declare const encodePositionLimits: (l: PositionLimitsDto) => xdr.ScVal;
|
|
@@ -24,6 +24,15 @@ export declare const STELLAR_LENDING_CONTROLLER: Record<StellarNetwork, string>;
|
|
|
24
24
|
* - STELLAR_AGGREGATOR_ROUTER_TESTNET
|
|
25
25
|
*/
|
|
26
26
|
export declare const STELLAR_AGGREGATOR_ROUTER: Record<StellarNetwork, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Stellar governance (timelock) contract addresses per network. Owns the
|
|
29
|
+
* controller's admin surface: PROPOSER-gated `propose_*` scheduling and the
|
|
30
|
+
* open `execute` / `execute_*` lifecycle.
|
|
31
|
+
* Env vars:
|
|
32
|
+
* - STELLAR_GOVERNANCE_MAINNET
|
|
33
|
+
* - STELLAR_GOVERNANCE_TESTNET
|
|
34
|
+
*/
|
|
35
|
+
export declare const STELLAR_GOVERNANCE: Record<StellarNetwork, string>;
|
|
27
36
|
/**
|
|
28
37
|
* Default Soroban RPC URLs per network.
|
|
29
38
|
* Overridable at runtime via the `sorobanRpcUrl` option on each builder.
|
|
@@ -54,3 +63,8 @@ export declare function getStellarLendingController(network: StellarNetwork): st
|
|
|
54
63
|
* Used by `buildStellarExecuteStrategyTx` for direct user -> router swaps.
|
|
55
64
|
*/
|
|
56
65
|
export declare function getStellarAggregatorRouter(network: StellarNetwork): string;
|
|
66
|
+
/**
|
|
67
|
+
* Assert a governance address is configured for the target network. Used by
|
|
68
|
+
* the governance `propose_*` / `execute` / `execute_*` builders.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getStellarGovernance(network: StellarNetwork): string;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stellar lending governance (timelock) transaction builders. Each builder
|
|
3
|
+
* returns an unsigned `BuiltStellarTx` XDR targeting the governance contract
|
|
4
|
+
* (`opts.governanceAddress`, or env via `getStellarGovernance(network)`).
|
|
5
|
+
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* - An admin holding the PROPOSER role calls a `propose_*` method. The
|
|
8
|
+
* leading arg is `proposer = opts.caller` (an `Address`); the remaining
|
|
9
|
+
* args mirror the matching controller setter exactly; the trailing arg is
|
|
10
|
+
* a `salt: BytesN<32>`. Validation runs at propose time; the call returns
|
|
11
|
+
* the operation id (`BytesN<32>`).
|
|
12
|
+
* - After the timelock delay, ANYONE executes. Controller-targeted ops go
|
|
13
|
+
* through the generic `execute(executor, target, function, args,
|
|
14
|
+
* predecessor, salt)`; governance-self ops go through typed `execute_*`.
|
|
15
|
+
* Open execution passes `executor = None` (Soroban `Option::None`, encoded
|
|
16
|
+
* as `scvVoid` — mirrors the lending `withdraw` builder's optional `to`).
|
|
17
|
+
* - `predecessor` is ALWAYS the 32-zero-byte `BytesN<32>` in this system.
|
|
18
|
+
*
|
|
19
|
+
* Builders are RPC-free and deterministic (synthetic `Account(caller,
|
|
20
|
+
* sourceSequence)`), exactly like the lending / admin builders. The returned
|
|
21
|
+
* XDR still needs `rpc.Server.prepareTransaction` before signing.
|
|
22
|
+
*/
|
|
23
|
+
import type { PositionLimitsDto } from '@xoxno/types';
|
|
24
|
+
import { type ConfigureMarketOracleArgs, type CreateLiquidityPoolArgs, type EditAssetConfigArgs, type EditOracleToleranceArgs, type EModeAssetArgs, type EModeCategoryEditArgs, type RemoveEModeAssetArgs, type RoleGrantArgs, type TransferOwnershipArgs, type UpgradeLiquidityPoolParamsArgs } from './admin';
|
|
25
|
+
import type { BuiltStellarTx, StellarBuilderOptions } from './lending';
|
|
26
|
+
/**
|
|
27
|
+
* A `salt: BytesN<32>` for a governance proposal/execution. Accepts a 32-byte
|
|
28
|
+
* hex string (optionally `0x`-prefixed) or a 32-byte `Buffer`/`Uint8Array`.
|
|
29
|
+
*/
|
|
30
|
+
export type StellarGovernanceSalt = string | Buffer | Uint8Array;
|
|
31
|
+
/** The 32-zero-byte `BytesN<32>` predecessor used for every op in this system. */
|
|
32
|
+
export declare const STELLAR_GOVERNANCE_ZERO_PREDECESSOR: string;
|
|
33
|
+
export interface AddEModeCategoryArgs {
|
|
34
|
+
ltv: number;
|
|
35
|
+
threshold: number;
|
|
36
|
+
bonus: number;
|
|
37
|
+
}
|
|
38
|
+
export interface RemoveEModeCategoryArgs {
|
|
39
|
+
id: number;
|
|
40
|
+
}
|
|
41
|
+
export interface UpgradeArgs {
|
|
42
|
+
wasmHash: string;
|
|
43
|
+
}
|
|
44
|
+
export interface MigrateArgs {
|
|
45
|
+
newVersion: number;
|
|
46
|
+
}
|
|
47
|
+
export interface UpdateDelayArgs {
|
|
48
|
+
newDelay: number;
|
|
49
|
+
}
|
|
50
|
+
/** propose_set_aggregator(proposer, addr: Address, salt) */
|
|
51
|
+
export declare function buildStellarProposeSetAggregatorTx(opts: StellarBuilderOptions, args: {
|
|
52
|
+
aggregator: string;
|
|
53
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
54
|
+
/** propose_set_accumulator(proposer, addr: Address, salt) */
|
|
55
|
+
export declare function buildStellarProposeSetAccumulatorTx(opts: StellarBuilderOptions, args: {
|
|
56
|
+
accumulator: string;
|
|
57
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
58
|
+
/** propose_set_pool_template(proposer, hash: BytesN<32>, salt) */
|
|
59
|
+
export declare function buildStellarProposeSetPoolTemplateTx(opts: StellarBuilderOptions, args: {
|
|
60
|
+
wasmHash: string;
|
|
61
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
62
|
+
/** propose_edit_asset_config(proposer, asset: Address, cfg: AssetConfigRaw, salt) */
|
|
63
|
+
export declare function buildStellarProposeEditAssetConfigTx(opts: StellarBuilderOptions, args: EditAssetConfigArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
64
|
+
/** propose_set_position_limits(proposer, limits: PositionLimits, salt) */
|
|
65
|
+
export declare function buildStellarProposeSetPositionLimitsTx(opts: StellarBuilderOptions, args: PositionLimitsDto, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
66
|
+
/** propose_set_min_borrow_collat(proposer, floor_wad: i128, salt) */
|
|
67
|
+
export declare function buildStellarProposeSetMinBorrowCollatTx(opts: StellarBuilderOptions, args: {
|
|
68
|
+
floorWad: string;
|
|
69
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
70
|
+
/** propose_add_e_mode_category(proposer, ltv: u32, threshold: u32, bonus: u32, salt) */
|
|
71
|
+
export declare function buildStellarProposeAddEModeCategoryTx(opts: StellarBuilderOptions, args: AddEModeCategoryArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
72
|
+
/** propose_edit_e_mode_category(proposer, id: u32, ltv: u32, threshold: u32, bonus: u32, salt) */
|
|
73
|
+
export declare function buildStellarProposeEditEModeCategoryTx(opts: StellarBuilderOptions, args: EModeCategoryEditArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
74
|
+
/** propose_remove_e_mode_category(proposer, id: u32, salt) */
|
|
75
|
+
export declare function buildStellarProposeRemoveEModeCategoryTx(opts: StellarBuilderOptions, args: RemoveEModeCategoryArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
76
|
+
/** propose_add_asset_to_e_mode(proposer, asset, category_id, can_collateral, can_borrow, salt) */
|
|
77
|
+
export declare function buildStellarProposeAddAssetToEModeTx(opts: StellarBuilderOptions, args: EModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
78
|
+
/** propose_edit_asset_in_e_mode(proposer, asset, category_id, can_collateral, can_borrow, salt) */
|
|
79
|
+
export declare function buildStellarProposeEditAssetInEModeTx(opts: StellarBuilderOptions, args: EModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
80
|
+
/** propose_remove_asset_from_e_mode(proposer, asset: Address, category_id: u32, salt) */
|
|
81
|
+
export declare function buildStellarProposeRemoveAssetFromEModeTx(opts: StellarBuilderOptions, args: RemoveEModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
82
|
+
/** propose_approve_token(proposer, token: Address, salt) */
|
|
83
|
+
export declare function buildStellarProposeApproveTokenTx(opts: StellarBuilderOptions, args: {
|
|
84
|
+
token: string;
|
|
85
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
86
|
+
/** propose_revoke_token(proposer, token: Address, salt) */
|
|
87
|
+
export declare function buildStellarProposeRevokeTokenTx(opts: StellarBuilderOptions, args: {
|
|
88
|
+
token: string;
|
|
89
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
90
|
+
/** propose_create_liquidity_pool(proposer, asset, params: MarketParamsRaw, config: AssetConfigRaw, salt) */
|
|
91
|
+
export declare function buildStellarProposeCreateLiquidityPoolTx(opts: StellarBuilderOptions, args: CreateLiquidityPoolArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
92
|
+
/** propose_upgrade_pool_params(proposer, asset, params: InterestRateModel, salt) */
|
|
93
|
+
export declare function buildStellarProposeUpgradePoolParamsTx(opts: StellarBuilderOptions, args: UpgradeLiquidityPoolParamsArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
94
|
+
/** propose_deploy_pool(proposer, salt) */
|
|
95
|
+
export declare function buildStellarProposeDeployPoolTx(opts: StellarBuilderOptions, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
96
|
+
/** propose_upgrade_pool(proposer, new_wasm_hash: BytesN<32>, salt) */
|
|
97
|
+
export declare function buildStellarProposeUpgradePoolTx(opts: StellarBuilderOptions, args: {
|
|
98
|
+
wasmHash: string;
|
|
99
|
+
}, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
100
|
+
/** propose_grant_controller_role(proposer, account: Address, role: Symbol, salt) */
|
|
101
|
+
export declare function buildStellarProposeGrantControllerRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
102
|
+
/** propose_revoke_controller_role(proposer, account: Address, role: Symbol, salt) */
|
|
103
|
+
export declare function buildStellarProposeRevokeControllerRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
104
|
+
/** propose_upgrade_controller(proposer, new_wasm_hash: BytesN<32>, salt) */
|
|
105
|
+
export declare function buildStellarProposeUpgradeControllerTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
106
|
+
/** propose_migrate_controller(proposer, new_version: u32, salt) */
|
|
107
|
+
export declare function buildStellarProposeMigrateControllerTx(opts: StellarBuilderOptions, args: MigrateArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
108
|
+
/** propose_transfer_ctrl_ownership(proposer, new_owner: Address, live_until_ledger: u32, salt) */
|
|
109
|
+
export declare function buildStellarProposeTransferCtrlOwnershipTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
110
|
+
/**
|
|
111
|
+
* propose_configure_market_oracle(proposer, asset, cfg: MarketOracleConfigInput, salt)
|
|
112
|
+
*
|
|
113
|
+
* The SDK passes the oracle INPUT args verbatim; the contract resolves the
|
|
114
|
+
* input to a resolved config at propose time (do NOT resolve in the SDK).
|
|
115
|
+
*/
|
|
116
|
+
export declare function buildStellarProposeConfigureMarketOracleTx(opts: StellarBuilderOptions, args: ConfigureMarketOracleArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
117
|
+
/** propose_edit_oracle_tolerance(proposer, asset, first_tolerance_bps: u32, last_tolerance_bps: u32, salt) */
|
|
118
|
+
export declare function buildStellarProposeEditOracleToleranceTx(opts: StellarBuilderOptions, args: EditOracleToleranceArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
119
|
+
/** propose_governance_upgrade(proposer, new_wasm_hash: BytesN<32>, salt) */
|
|
120
|
+
export declare function buildStellarProposeGovernanceUpgradeTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
121
|
+
/** propose_update_delay(proposer, new_delay: u32, salt) */
|
|
122
|
+
export declare function buildStellarProposeUpdateDelayTx(opts: StellarBuilderOptions, args: UpdateDelayArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
123
|
+
/** propose_grant_governance_role(proposer, account: Address, role: Symbol, salt) */
|
|
124
|
+
export declare function buildStellarProposeGrantGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
125
|
+
/** propose_revoke_governance_role(proposer, account: Address, role: Symbol, salt) */
|
|
126
|
+
export declare function buildStellarProposeRevokeGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
127
|
+
/** propose_transfer_gov_own(proposer, new_owner: Address, live_until_ledger: u32, salt) */
|
|
128
|
+
export declare function buildStellarProposeTransferGovOwnTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
129
|
+
export interface StellarGovernanceExecuteArgs {
|
|
130
|
+
/** Controller (or other) contract the scheduled op targets. */
|
|
131
|
+
target: string;
|
|
132
|
+
/** Controller method name → Soroban `Symbol`. */
|
|
133
|
+
functionName: string;
|
|
134
|
+
/**
|
|
135
|
+
* The controller-call args, each a base64 ScVal XDR string. These must be the
|
|
136
|
+
* SAME ScVals the matching `propose_*` scheduled (the timelock hashes them
|
|
137
|
+
* into the op id), in the controller method's arg order. Reconstructed via
|
|
138
|
+
* `xdr.ScVal.fromXDR(s, 'base64')`.
|
|
139
|
+
*/
|
|
140
|
+
argsXdr: string[];
|
|
141
|
+
/** `salt: BytesN<32>` — the same salt used at propose time. */
|
|
142
|
+
salt: StellarGovernanceSalt;
|
|
143
|
+
/**
|
|
144
|
+
* `predecessor: BytesN<32>` — defaults to the 32-zero-byte value used for
|
|
145
|
+
* every op in this system. Override only if a non-zero predecessor is used.
|
|
146
|
+
*/
|
|
147
|
+
predecessor?: StellarGovernanceSalt;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Generic `execute(executor, target, function, args, predecessor, salt)` for a
|
|
151
|
+
* controller-targeted op. `executor = None` (open execution), `target` is the
|
|
152
|
+
* controller `Address`, `function` is a `Symbol`, `args` is the `Vec<Val>`
|
|
153
|
+
* reconstructed from `argsXdr`, `predecessor` defaults to 32 zero bytes.
|
|
154
|
+
*/
|
|
155
|
+
export declare function buildStellarGovernanceExecuteTx(opts: StellarBuilderOptions, args: StellarGovernanceExecuteArgs): BuiltStellarTx;
|
|
156
|
+
/** execute_governance_upgrade(executor=None, new_wasm_hash: BytesN<32>, salt) */
|
|
157
|
+
export declare function buildStellarGovernanceExecuteGovernanceUpgradeTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
158
|
+
/** execute_update_delay(executor=None, new_delay: u32, salt) */
|
|
159
|
+
export declare function buildStellarGovernanceExecuteUpdateDelayTx(opts: StellarBuilderOptions, args: UpdateDelayArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
160
|
+
/** execute_grant_governance_role(executor=None, account: Address, role: Symbol, salt) */
|
|
161
|
+
export declare function buildStellarGovernanceExecuteGrantGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
162
|
+
/** execute_revoke_governance_role(executor=None, account: Address, role: Symbol, salt) */
|
|
163
|
+
export declare function buildStellarGovernanceExecuteRevokeGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
164
|
+
/** execute_transfer_gov_own(executor=None, new_owner: Address, live_until_ledger: u32, salt) */
|
|
165
|
+
export declare function buildStellarGovernanceExecuteTransferGovOwnTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
|
|
@@ -39,6 +39,13 @@ export interface StellarBuilderOptions {
|
|
|
39
39
|
* preview/staging deployments.
|
|
40
40
|
*/
|
|
41
41
|
controllerAddress?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Override the governance (timelock) contract address. Normally resolved from
|
|
44
|
+
* env via `getStellarGovernance(network)` — override is for tests and
|
|
45
|
+
* preview/staging deployments. Required (env or override) for the governance
|
|
46
|
+
* `propose_*` / `execute` / `execute_*` builders.
|
|
47
|
+
*/
|
|
48
|
+
governanceAddress?: string;
|
|
42
49
|
/** Base fee in stroops (default BASE_FEE = "100"). */
|
|
43
50
|
fee?: string;
|
|
44
51
|
/** Tx timeout in seconds (default 300). */
|