@xoxno/sdk-js 1.0.129 → 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/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,_={...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("&"),m=`${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(_).length?{headers:_}:{},cache:A,next:{...q,...w,revalidate:v}};(p??n)&&console.debug("SDK fetch: ",m,S);const T=await fetch(m,S).catch((t=>{if(t instanceof Error&&!t.message.match(/^http(s?):\/\//))throw new Error(`${m}: ${t.message}`);throw t})),k=await T.text();if(!T.ok){let t;try{t=JSON.parse(k)}catch{t={message:k}}const e=[m,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 b extends Error{constructor(t){super(`Invalid collection ticker: ${t}`)}}class m 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)})},W=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)},V=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 W(V(t));if(t instanceof Uint8Array)return W(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?W(V(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?W(V(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?W(V(t.bytes)):W(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")])},_t=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"),_t(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:_t(t.primary),strategy:O(e)});var o};function mt(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 Wt(t,e){return F(t,"create_liquidity_pool",[E(e.asset),dt(e.params),ct(e.config)])}function Vt(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=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)}),pe=t=>{const e=(o=t.position_type,2===Yt(o)?"Borrow":"Deposit");var o;const r="Borrow"===e;return{action:te(t.action),positionType:e,asset:te(t.asset),scaledAmountRay:Kt(t.scaled_amount_ray),indexRay:Kt(t.index_ray),amount:Kt(t.amount),assetPriceWad:ee(t.asset_price_wad),liquidationThresholdBps:r?void 0:Yt(t.liquidation_threshold_bps),liquidationBonusBps:r?void 0:Yt(t.liquidation_bonus_bps),loanToValueBps:r?void 0:Yt(t.loan_to_value_bps)}},de=(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`])}},ce=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:de(t,"primary"),anchor:e?de(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)}},le={"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:se(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:(t.updates??[]).map((t=>({asset:te(t.asset),timestamp:Yt(t.timestamp),supplyIndexRay:Kt(t.supply_index_ray),borrowIndexRay:Kt(t.borrow_index_ray),reservesRay:Kt(t.reserves_ray),suppliedRay:Kt(t.supplied_ray),borrowedRay:Kt(t.borrowed_ray),revenueRay:Kt(t.revenue_ray),assetPriceWad:ee(t.asset_price_wad)})))}}),"position:batch_update":t=>{return{topic:"position:batch_update",data:{accountId:Kt(t.account_id),accountAttributes:{owner:te(t.account_attributes.owner),isIsolatedPosition:Boolean(t.account_attributes.is_isolated_position),eModeCategoryId:Yt(t.account_attributes.e_mode_category_id),mode:(e=t.account_attributes.mode,ue[Yt(e)]??"None"),isolatedToken:oe(t.account_attributes.isolated_token)},updates:(t.updates??[]).map(pe)}};var e},"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:se(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:te(t.asset),oracle:ce(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:(t.updates??[]).map((t=>({asset:te(t.asset),totalDebtUsdWad:Kt(t.total_debt_usd_wad)})))}}),"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)}})},ye=Object.freeze(Object.keys(le));function fe(t,e){const o=Jt(t),r=le[o];return r?r(i(Qt(e))):null}const _e="XLENDXLM-a7c9f3",be=1e4;function me(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${_e}-${o}`}function ge(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function qe(t,e=0){return 1e4*t+e}function he(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const we=(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()},ve=t=>t.baseUrl??S[t.network];async function Ae(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=we(ve(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 Se(t){const e=we(ve(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 Te=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,ke=t=>j(t).toXDR("base64");function Me(e,u){const i=e.routerAddress??M(e.network),a=new r(i),s=new t(e.caller,e.sourceSequence),p=X(Te(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 xe(t,e){return Me(t,e)}function Ee(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(Ie),splitPpm:t.splitPpm}))):[{hops:t.hops.map(Ie),splitPpm:1e6}],referralId:e.referralId??0,tokenIn:t.from,tokenOut:t.to,totalMinOut:t.amountOutMin}}function Pe(t,e={}){const o=t;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Ee(t,e)}const Oe=Ee,Ie=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function Re(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function Be(t,e,o){const r=n.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw Re(o.invokedContractId,t);throw t}}async function Ue(t,e,o){return Be(t,e.xdr,o)}function Ce(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 Ne(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 $e=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 ze(e){const o=new t(e.caller,e.sourceSequence),u=new r(e.forwarderAddress).call("mint_and_forward",a.ScVal.scvBytes($e(e.message)),a.ScVal.scvBytes($e(e.attestation)));return{xdr:new n(o,{fee:e.fee??"10000000",networkPassphrase:T[e.network]}).addOperation(u).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const De=t=>t.replace(/-([a-z])/g,((t,e)=>e.toUpperCase()));function Le(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 m(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:_,cache:q,next:h,debug:w,continuationToken:v,...A}=d,S=l?`Bearer ${l}`:void 0,T={..._,...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 je(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=De(t.slice(1));u=u.params[e]||={static:{},params:{},leaves:[]}}else{const e=De(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=Le(o,u,r,t)}else{a={};for(const{rawPath:o,def:u}of e.leaves)a[De(o.split("/").pop().replace(/^:/,""))]=Le(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,ye as STELLAR_LENDING_TOPICS,T as STELLAR_NETWORK_PASSPHRASE,S as STELLAR_QUOTE_URL,A as STELLAR_SOROBAN_RPC_URL,be as SYNTHETIC_EVENT_ORDER_STRIDE,y as XOXNOClient,_e as XOXNO_LENDING_STELLAR_TICKER,Ne as buildSameTokenRepaySwapSteps,je as buildSdk,St as buildStellarAcceptOwnershipTx,Rt as buildStellarAddAssetToEModeCategoryTx,Pt as buildStellarAddEModeCategoryTx,Ft as buildStellarAddRewardsTx,Ct as buildStellarApproveTokenTx,xe as buildStellarBatchSwapTx,Q as buildStellarBorrowBatchTx,J as buildStellarBorrowTx,ze as buildStellarCctpForwardTx,Ht as buildStellarClaimRevenueTx,$t as buildStellarConfigureMarketOracleTx,Wt as buildStellarCreateLiquidityPoolTx,Dt as buildStellarDisableTokenOracleTx,xt as buildStellarEditAssetConfigTx,Bt as buildStellarEditAssetInEModeCategoryTx,Ot as buildStellarEditEModeCategoryTx,zt as buildStellarEditOracleToleranceTx,Me as buildStellarExecuteStrategyTx,rt as buildStellarFlashLoanTx,wt as buildStellarGrantRoleTx,me 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,mt as buildStellarUpgradeControllerTx,Vt as buildStellarUpgradeLiquidityPoolParamsTx,Xt as buildStellarUpgradeLiquidityPoolTx,K as buildStellarWithdrawBatchTx,Y as buildStellarWithdrawTx,F as buildTx,fe as decodeStellarLendingEvent,ct as encodeAssetConfigRaw,pt as encodeInterestRateModel,bt as encodeMarketOracleConfigInput,dt as encodeMarketParamsRaw,_t as encodeOracleSourceConfigInput,lt as encodePositionLimits,ke as encodeStrategyPayloadToRouteXdr,ge as extractEventOrder,Ae as getStellarAggregatorQuote,M as getStellarAggregatorRouter,k as getStellarLendingController,Se as getStellarQuoteTokens,f as isValidCollectionTicker,_ as isValidNftIdentifier,Oe as mapQuoteResponseToAggregatorSwap,Ee as mapQuoteResponseToStrategyPayload,Pe as mapQuoteResponseToStrategySwap,he as mapStellarPositionActivityType,Ue as prepareStellarBuiltTx,Be as prepareStellarTxXdr,Jt as stellarLendingDispatchKey,qe as syntheticEventOrder,Re as tagStellarInvokedContractError,Zt as toBase64Xdr,Ce 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};
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * Decoder tests locked against captured event XDR.
3
3
  *
4
- * `fixtures/lending-events.json` holds every controller `#[contractevent]`'s
5
- * topics + `data` serialized to base64 XDR, exactly as Soroban RPC `getEvents`
6
- * delivers them.
4
+ * `fixtures/lending-events.json` holds the map-encoded controller
5
+ * `#[contractevent]`s' topics + `data` serialized to base64 XDR, exactly as
6
+ * Soroban RPC `getEvents` delivers them. The three vec-encoded ABI v2 topics
7
+ * (`position:batch_update`, `market:batch_state_update`,
8
+ * `debt:ceiling_batch_update`) are constructed below with ScVal builders so
9
+ * the wire field order stays explicit.
7
10
  */
8
11
  export {};
@@ -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` — 17 risk/limit fields. */
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;
@@ -7,10 +7,15 @@
7
7
  * already delivers `topic[]` and `value` as base64 XDR — pass them straight
8
8
  * through.
9
9
  *
10
- * Each contractevent `data` serializes as an `ScMap` keyed by field name, so
10
+ * Most contractevent `data` serializes as an `ScMap` keyed by field name, so
11
11
  * `scValToNative` yields a snake_case-keyed object with `bigint` for i128/u64,
12
12
  * `number` for u32, strkey strings for addresses, strings for symbols, `null`
13
13
  * for absent `Option`s, and arrays for `Vec`s.
14
+ *
15
+ * The three hot topics (`position:batch_update`, `market:batch_state_update`,
16
+ * `debt:ceiling_batch_update`) use the vec-encoded ABI v2 instead: `data` is an
17
+ * `ScVec` whose field order IS the ABI, so `scValToNative` yields nested arrays
18
+ * decoded positionally.
14
19
  */
15
20
  import type { StellarLendingDecodedEvent } from '@xoxno/types';
16
21
  /**
@@ -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;
@@ -1,6 +1,7 @@
1
1
  export * from './contracts';
2
2
  export * from './lending';
3
3
  export * from './admin';
4
+ export * from './governance';
4
5
  export * from './events';
5
6
  export * from './quote';
6
7
  export * from './swap';
@@ -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). */