@xoxno/sdk-js 1.0.155 → 1.0.158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -539,6 +539,9 @@ sdk.lending.market.token("...").emodeCategories(...); // LendingEModeCategoryPro
539
539
  // GET /lending/market/:token/analytics
540
540
  sdk.lending.market.token("...").analytics(...); // LendingMarketAnalyticsGraph[]
541
541
 
542
+ // GET /lending/stats/history
543
+ sdk.lending.stats.history(...); // LendingStatsHistory
544
+
542
545
  // GET /lending/market/:token/average
543
546
  sdk.lending.market.token("...").average(...); // LendingMarketAverageGraph[]
544
547
 
@@ -4,18 +4,23 @@
4
4
  * (`opts.governanceAddress`, or env via `getStellarGovernance(network)`).
5
5
  *
6
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>`).
7
+ * - An admin holding the PROPOSER role calls the single `propose(proposer,
8
+ * op: AdminOperation, salt)` entrypoint. `proposer = opts.caller`; `op` is
9
+ * the serialized `AdminOperation` enum identifying the target setter and its
10
+ * args; `salt: BytesN<32>` is trailing. Validation runs at propose time and
11
+ * the call returns the operation id (`BytesN<32>`).
12
12
  * - After the timelock delay, ANYONE executes. Controller-targeted ops go
13
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`).
14
+ * predecessor, salt)`; governance-self ops go through `execute_self(executor,
15
+ * op: AdminOperation, salt)`. Open execution passes `executor = None`
16
+ * (Soroban `Option::None`, encoded as `scvVoid`).
17
17
  * - `predecessor` is ALWAYS the 32-zero-byte `BytesN<32>` in this system.
18
18
  *
19
+ * The on-chain scheduled `Operation` (target, function, args) is byte-identical
20
+ * to the pre-enum typed proposers, so the operation id, the generic `execute`
21
+ * path, and event indexing are unchanged. The `AdminOperation` enum only changes
22
+ * the `propose` / `execute_self` call encoding, which these builders own.
23
+ *
19
24
  * Builders are RPC-free and deterministic (synthetic `Account(caller,
20
25
  * sourceSequence)`), exactly like the lending / admin builders. The returned
21
26
  * XDR still needs `rpc.Server.prepareTransaction` before signing.
@@ -42,84 +47,92 @@ export interface MigrateArgs {
42
47
  export interface UpdateDelayArgs {
43
48
  newDelay: number;
44
49
  }
45
- /** propose_set_aggregator(proposer, addr: Address, salt) */
50
+ /** propose(SetAggregator(addr)) */
46
51
  export declare function buildStellarProposeSetAggregatorTx(opts: StellarBuilderOptions, args: {
47
52
  aggregator: string;
48
53
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
49
- /** propose_set_accumulator(proposer, addr: Address, salt) */
54
+ /** propose(SetAccumulator(addr)) */
50
55
  export declare function buildStellarProposeSetAccumulatorTx(opts: StellarBuilderOptions, args: {
51
56
  accumulator: string;
52
57
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
53
- /** propose_set_pool_template(proposer, hash: BytesN<32>, salt) */
58
+ /** propose(SetLiquidityPoolTemplate(hash)) */
54
59
  export declare function buildStellarProposeSetPoolTemplateTx(opts: StellarBuilderOptions, args: {
55
60
  wasmHash: string;
56
61
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
57
- /** propose_edit_asset_config(proposer, asset: Address, cfg: AssetConfigRaw, salt) */
62
+ /** propose(EditAssetConfig(asset, cfg)) */
58
63
  export declare function buildStellarProposeEditAssetConfigTx(opts: StellarBuilderOptions, args: EditAssetConfigArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
59
- /** propose_set_position_limits(proposer, limits: PositionLimits, salt) */
64
+ /** propose(SetPositionLimits(limits)) */
60
65
  export declare function buildStellarProposeSetPositionLimitsTx(opts: StellarBuilderOptions, args: PositionLimitsDto, salt: StellarGovernanceSalt): BuiltStellarTx;
61
- /** propose_set_min_borrow_collat(proposer, floor_wad: i128, salt) */
66
+ /** propose(SetMinBorrowCollateralUsd(floor_wad)) */
62
67
  export declare function buildStellarProposeSetMinBorrowCollatTx(opts: StellarBuilderOptions, args: {
63
68
  floorWad: string;
64
69
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
65
- /** propose_add_e_mode_category(proposer, salt) — risk params are per-asset */
70
+ /** propose(AddEModeCategory) — risk params are per-asset */
66
71
  export declare function buildStellarProposeAddEModeCategoryTx(opts: StellarBuilderOptions, salt: StellarGovernanceSalt): BuiltStellarTx;
67
- /** propose_remove_e_mode_category(proposer, id: u32, salt) */
72
+ /** propose(RemoveEModeCategory(id)) */
68
73
  export declare function buildStellarProposeRemoveEModeCategoryTx(opts: StellarBuilderOptions, args: RemoveEModeCategoryArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
69
- /** propose_add_asset_to_e_mode(proposer, asset, category_id, can_collateral, can_borrow, ltv, threshold, bonus, supply_cap, borrow_cap, salt) */
74
+ /** propose(AddAssetToEModeCategory(EModeAssetArgs)) */
70
75
  export declare function buildStellarProposeAddAssetToEModeTx(opts: StellarBuilderOptions, args: EModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
71
- /** propose_edit_asset_in_e_mode(proposer, asset, category_id, can_collateral, can_borrow, ltv, threshold, bonus, supply_cap, borrow_cap, salt) */
76
+ /** propose(EditAssetInEModeCategory(EModeAssetArgs)) */
72
77
  export declare function buildStellarProposeEditAssetInEModeTx(opts: StellarBuilderOptions, args: EModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
73
- /** propose_update_pool_caps(proposer, asset, supply_cap, borrow_cap, salt) */
78
+ /** propose(UpdatePoolCaps(PoolCapsArgs)) */
74
79
  export declare function buildStellarProposeUpdatePoolCapsTx(opts: StellarBuilderOptions, args: UpdatePoolCapsArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
75
- /** propose_remove_asset_from_e_mode(proposer, asset: Address, category_id: u32, salt) */
80
+ /** propose(RemoveAssetFromEMode(RemoveAssetFromEModeArgs)) */
76
81
  export declare function buildStellarProposeRemoveAssetFromEModeTx(opts: StellarBuilderOptions, args: RemoveEModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
77
- /** propose_approve_token(proposer, token: Address, salt) */
82
+ /** propose(ApproveToken(token)) */
78
83
  export declare function buildStellarProposeApproveTokenTx(opts: StellarBuilderOptions, args: {
79
84
  token: string;
80
85
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
81
- /** propose_revoke_token(proposer, token: Address, salt) */
86
+ /** propose(RevokeToken(token)) */
82
87
  export declare function buildStellarProposeRevokeTokenTx(opts: StellarBuilderOptions, args: {
83
88
  token: string;
84
89
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
85
- /** propose_create_liquidity_pool(proposer, asset, params: MarketParamsRaw, config: AssetConfigRaw, salt) */
90
+ /** propose(ApproveBlendPool(pool)) */
91
+ export declare function buildStellarProposeApproveBlendPoolTx(opts: StellarBuilderOptions, args: {
92
+ pool: string;
93
+ }, salt: StellarGovernanceSalt): BuiltStellarTx;
94
+ /** propose(RevokeBlendPool(pool)) */
95
+ export declare function buildStellarProposeRevokeBlendPoolTx(opts: StellarBuilderOptions, args: {
96
+ pool: string;
97
+ }, salt: StellarGovernanceSalt): BuiltStellarTx;
98
+ /** propose(CreateLiquidityPool(CreatePoolArgs)) */
86
99
  export declare function buildStellarProposeCreateLiquidityPoolTx(opts: StellarBuilderOptions, args: CreateLiquidityPoolArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
87
- /** propose_upgrade_pool_params(proposer, asset, params: InterestRateModel, salt) */
100
+ /** propose(UpgradeLiquidityPoolParams(UpgradePoolParamsArgs)) */
88
101
  export declare function buildStellarProposeUpgradePoolParamsTx(opts: StellarBuilderOptions, args: UpgradeLiquidityPoolParamsArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
89
- /** propose_deploy_pool(proposer, salt) */
102
+ /** propose(DeployPool) */
90
103
  export declare function buildStellarProposeDeployPoolTx(opts: StellarBuilderOptions, salt: StellarGovernanceSalt): BuiltStellarTx;
91
- /** propose_upgrade_pool(proposer, new_wasm_hash: BytesN<32>, salt) */
104
+ /** propose(UpgradePool(hash)) */
92
105
  export declare function buildStellarProposeUpgradePoolTx(opts: StellarBuilderOptions, args: {
93
106
  wasmHash: string;
94
107
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
95
- /** propose_grant_controller_role(proposer, account: Address, role: Symbol, salt) */
96
- export declare function buildStellarProposeGrantControllerRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
97
- /** propose_revoke_controller_role(proposer, account: Address, role: Symbol, salt) */
98
- export declare function buildStellarProposeRevokeControllerRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
99
- /** propose_upgrade_controller(proposer, new_wasm_hash: BytesN<32>, salt) */
108
+ /** propose(DisableTokenOracle(asset)) */
109
+ export declare function buildStellarProposeDisableTokenOracleTx(opts: StellarBuilderOptions, args: {
110
+ asset: string;
111
+ }, salt: StellarGovernanceSalt): BuiltStellarTx;
112
+ /** propose(UpgradeController(hash)) */
100
113
  export declare function buildStellarProposeUpgradeControllerTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
101
- /** propose_migrate_controller(proposer, new_version: u32, salt) */
114
+ /** propose(MigrateController(new_version)) */
102
115
  export declare function buildStellarProposeMigrateControllerTx(opts: StellarBuilderOptions, args: MigrateArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
103
- /** propose_transfer_ctrl_ownership(proposer, new_owner: Address, live_until_ledger: u32, salt) */
116
+ /** propose(TransferCtrlOwnership(TransferOwnershipArgs)) */
104
117
  export declare function buildStellarProposeTransferCtrlOwnershipTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
105
118
  /**
106
- * propose_configure_market_oracle(proposer, asset, cfg: MarketOracleConfigInput, salt)
119
+ * propose(ConfigureMarketOracle(ConfigureOracleArgs))
107
120
  *
108
121
  * The SDK passes the oracle INPUT args verbatim; the contract resolves the
109
122
  * input to a resolved config at propose time (do NOT resolve in the SDK).
110
123
  */
111
124
  export declare function buildStellarProposeConfigureMarketOracleTx(opts: StellarBuilderOptions, args: ConfigureMarketOracleArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
112
- /** propose_edit_oracle_tolerance(proposer, asset, first_tolerance_bps: u32, last_tolerance_bps: u32, salt) */
125
+ /** propose(EditOracleTolerance(EditToleranceArgs)) */
113
126
  export declare function buildStellarProposeEditOracleToleranceTx(opts: StellarBuilderOptions, args: EditOracleToleranceArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
114
- /** propose_governance_upgrade(proposer, new_wasm_hash: BytesN<32>, salt) */
127
+ /** propose(UpgradeGov(hash)) */
115
128
  export declare function buildStellarProposeGovernanceUpgradeTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
116
- /** propose_update_delay(proposer, new_delay: u32, salt) */
129
+ /** propose(UpdateGovDelay(new_delay)) */
117
130
  export declare function buildStellarProposeUpdateDelayTx(opts: StellarBuilderOptions, args: UpdateDelayArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
118
- /** propose_grant_governance_role(proposer, account: Address, role: Symbol, salt) */
131
+ /** propose(GrantGovRole(RoleArgs)) */
119
132
  export declare function buildStellarProposeGrantGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
120
- /** propose_revoke_governance_role(proposer, account: Address, role: Symbol, salt) */
133
+ /** propose(RevokeGovRole(RoleArgs)) */
121
134
  export declare function buildStellarProposeRevokeGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
122
- /** propose_transfer_gov_own(proposer, new_owner: Address, live_until_ledger: u32, salt) */
135
+ /** propose(TransferGovOwnership(TransferOwnershipArgs)) */
123
136
  export declare function buildStellarProposeTransferGovOwnTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
124
137
  export interface StellarGovernanceExecuteArgs {
125
138
  /** Controller (or other) contract the scheduled op targets. */
@@ -128,8 +141,8 @@ export interface StellarGovernanceExecuteArgs {
128
141
  functionName: string;
129
142
  /**
130
143
  * The controller-call args, each a base64 ScVal XDR string. These must be the
131
- * SAME ScVals the matching `propose_*` scheduled (the timelock hashes them
132
- * into the op id), in the controller method's arg order. Reconstructed via
144
+ * SAME ScVals the matching proposal scheduled (the timelock hashes them into
145
+ * the op id), in the controller method's arg order. Reconstructed via
133
146
  * `xdr.ScVal.fromXDR(s, 'base64')`.
134
147
  */
135
148
  argsXdr: string[];
@@ -146,15 +159,19 @@ export interface StellarGovernanceExecuteArgs {
146
159
  * controller-targeted op. `executor = None` (open execution), `target` is the
147
160
  * controller `Address`, `function` is a `Symbol`, `args` is the `Vec<Val>`
148
161
  * reconstructed from `argsXdr`, `predecessor` defaults to 32 zero bytes.
162
+ *
163
+ * Unchanged by the AdminOperation refactor: the scheduled `Operation` is
164
+ * byte-identical, so callers reconstruct `(target, function, argsXdr)` from the
165
+ * indexed proposal exactly as before.
149
166
  */
150
167
  export declare function buildStellarGovernanceExecuteTx(opts: StellarBuilderOptions, args: StellarGovernanceExecuteArgs): BuiltStellarTx;
151
- /** execute_governance_upgrade(executor=None, new_wasm_hash: BytesN<32>, salt) */
168
+ /** execute_self(executor=None, UpgradeGov(hash), salt) */
152
169
  export declare function buildStellarGovernanceExecuteGovernanceUpgradeTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
153
- /** execute_update_delay(executor=None, new_delay: u32, salt) */
170
+ /** execute_self(executor=None, UpdateGovDelay(new_delay), salt) */
154
171
  export declare function buildStellarGovernanceExecuteUpdateDelayTx(opts: StellarBuilderOptions, args: UpdateDelayArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
155
- /** execute_grant_governance_role(executor=None, account: Address, role: Symbol, salt) */
172
+ /** execute_self(executor=None, GrantGovRole(RoleArgs), salt) */
156
173
  export declare function buildStellarGovernanceExecuteGrantGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
157
- /** execute_revoke_governance_role(executor=None, account: Address, role: Symbol, salt) */
174
+ /** execute_self(executor=None, RevokeGovRole(RoleArgs), salt) */
158
175
  export declare function buildStellarGovernanceExecuteRevokeGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
159
- /** execute_transfer_gov_own(executor=None, new_owner: Address, live_until_ledger: u32, salt) */
176
+ /** execute_self(executor=None, TransferGovOwnership(TransferOwnershipArgs), salt) */
160
177
  export declare function buildStellarGovernanceExecuteTransferGovOwnTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
@@ -1,4 +1,4 @@
1
- import type { PublicOnly, RateType, LoginAccessDto, LoginRequestDto, UserNetworkInfoDto, UserTokenInventoryResponseDto, UserProfileDoc, UserProfileEditDto, UserProfileDto, UserSettingsDoc, NotificationPreferencesPostDto, SetEmailDto, SetPhoneDto, UserBillingDetails, VerifyEmailDto, TradesilvaniaSignature, SuccessDto, CreatorProfileDto, CreatorProfileDoc, CreatorProfileEditDto, CollectionStatsFilter, CollectionStatsPaginated, CheckLikeStatusResponseDto, UserFavoriteResponseDto, TokenDataDocHydrated, XoxnoInfo, XoxnoLiquidStatsDto, AnalyticsMarketplaceUniqueUsers, ProtocolAprType, ProviderDto, DelegationDataOutput, LendingMarketProfile, LendingMarketProfileFilter, LendingMarketProfileQuery, LendingGovernanceProposalFilter, LendingGovernanceProposalQuery, LendingGovernanceProposalDoc, LendingAccountProfile, LendingIndexesDto, LendingAccountPnl, LendingAccountSummary, LendingEModeCategoryProfile, LendingMarketAnalyticsGraph, LendingMarketAverageGraph, LendingPositionStatus, LendingOverallStats, NftDocFilter, NftPaginated, LikeNftDto, InventorySummaryDtoHydrated, NftOfferPaginated, NftOfferDocFilter, NftOfferDocHydrated, ValueFp, TraitInfo, CollectionRanksDTO, ListingsResponseDto, NftDocHydrated, SignDataDto, SignWithdrawDto, SignAcceptGlobalOfferDto, SignMintDto, NftDocFull, CollectionProfileDoc, CollectionProfileEditDto, FloorPriceDto, PinnedCollectionDto, CollectionMintProfileDocHydrated, CollectionPinnedStatusDto, FollowCollectionDto, CollectionProfileFilter, CollectionProfilePaginated, CollectionMintProfileFilter, CollectionMintProfilePaginated, CollectionMintProfileDocWithStages, CollectionHoldersDto, CollectionHoldersExportDto, CollectionOwnerDto, CollectionStatsDocHydrated, CollectionOffersFilter, GlobalOfferPaginated, CreatorDetailsDto, ShareholderDto, StakingSummary, StakingPoolDoc, StakingEditDto, OwnedCollectionsDto, UserStakingSummaryDto, StakingCreatorDoc, StakingUserPoolNfts, StakingExploreDtoHydrated, OwnedServicesDto, FilterQueryDto, GlobalSearchResourcesPaginated, LendingNftAttributes, LendingTokenPriceDto, NotificationPaginated, PushNotificationCountResponse, NotificationDoc, MobileDeviceDoc, MobileDeviceRegistrationDto, PushNotificationResponse, PushNotificationDoc, NotificationSuccessResponseDto, EventNotificationDto, CreatorMarketingNotificationDto, StellarChallengeResponseDto, Web2UserDoc, SuccessWithMessageDto, NativeWalletDto, SwitchWalletDto, Web2WalletDto, Web2UserShardsDto, NftActivityFilter, NftActivityPaginated, NftActivityDocHydrated, VolumeGraph, AnalyticsVolumeDto, UserAnalyticsDto, GlobalAnalyticsOverviewResponseDto, UserStatsDto, AirdropDtoHydrated, TransactionDetailed, TransactionProcessStatus, TransactionCostData, TransactionCreate, TransactionSendResult, ChatMessageDocHydrated, SendChatMessageDto, UserConversationPaginated, ChatMessagePaginated, GlobalConversationSummaryDto, UserBlockPaginated, WebSocketTokenDto, UserInfo, EventProfile, EventProfileCreateDto, EventProfileEditDto, EventProfileFilter, EventProfileQuery, EventRegistrationResponseDto, EventGuestRegistrationDto, EventTicketProfileDoc, EventTicketProfileCreateDto, EventTicketProfileEditDto, EventStageProfileDoc, EventStageProfileCreateDto, EventStageProfileEditDto, TicketPricesResponse, TicketCalculationRequestDto, DiscountCodeValidationResponse, EventInvitationDoc, EventInvitationCreateDto, EventInvitationFilter, EventInvitationQuery, EventInvitation, EventAcceptInvitation, EventClaimInvitationDto, EventVoucherFilter, EventVoucherQuery, EventQuestionDoc, EventQuestionCreateDto, EventQuestionEditDto, EventGuestFilter, EventGuestProfileQuery, EventGuestProfile, EventGuestExport, EventUserRole, EventUserRoleCreateDto, EventUserRoleEditDto, EventUserRoleDoc, BageQRData, TicketValidationResult, EventCheckInQR, EventVoucherDoc, EventVoucherCreateDto, EventVoucherEditDto, ManualCheckInDto, AnsweredQuestionWithDetails, EventGuestApproveDto, EventCountGroupedByCountry, EventReferralConfigDoc, EventReferralConfigCreateDto, EventReferralConfigEditDto, EventReferralConfigFilter, EventReferralConfigPaginated, EventReferralDoc, EventReferralCreateDto, EventReferralEditDto, EventReferralFilter, EventReferralPaginated, BlendUserPosition, SoroswapQuoteResponseDto, PerpOrderResponse, BarDto, SymbolInfoDto, PerpCoinExtended, PerpSpotCoinExtended, PerpCoinExtendedSlim, PerpLegalCheck, PerpSpotCoinExtendedSlim, L2BookPerpResponseSingle, TradesPerpResponseSingle, ActiveSpotAssetCtx, ActivePerpAssetCtx, PerpEvent } from '@xoxno/types';
1
+ import type { PublicOnly, RateType, LoginAccessDto, LoginRequestDto, UserNetworkInfoDto, UserTokenInventoryResponseDto, UserProfileDoc, UserProfileEditDto, UserProfileDto, UserSettingsDoc, NotificationPreferencesPostDto, SetEmailDto, SetPhoneDto, UserBillingDetails, VerifyEmailDto, TradesilvaniaSignature, SuccessDto, CreatorProfileDto, CreatorProfileDoc, CreatorProfileEditDto, CollectionStatsFilter, CollectionStatsPaginated, CheckLikeStatusResponseDto, UserFavoriteResponseDto, TokenDataDocHydrated, XoxnoInfo, XoxnoLiquidStatsDto, AnalyticsMarketplaceUniqueUsers, ProtocolAprType, ProviderDto, DelegationDataOutput, LendingMarketProfile, LendingMarketProfileFilter, LendingMarketProfileQuery, LendingGovernanceProposalFilter, LendingGovernanceProposalQuery, LendingGovernanceProposalDoc, LendingAccountProfile, LendingIndexesDto, LendingAccountPnl, LendingAccountSummary, LendingEModeCategoryProfile, LendingMarketAnalyticsGraph, LendingStatsHistory, LendingMarketAverageGraph, LendingPositionStatus, LendingOverallStats, NftDocFilter, NftPaginated, LikeNftDto, InventorySummaryDtoHydrated, NftOfferPaginated, NftOfferDocFilter, NftOfferDocHydrated, ValueFp, TraitInfo, CollectionRanksDTO, ListingsResponseDto, NftDocHydrated, SignDataDto, SignWithdrawDto, SignAcceptGlobalOfferDto, SignMintDto, NftDocFull, CollectionProfileDoc, CollectionProfileEditDto, FloorPriceDto, PinnedCollectionDto, CollectionMintProfileDocHydrated, CollectionPinnedStatusDto, FollowCollectionDto, CollectionProfileFilter, CollectionProfilePaginated, CollectionMintProfileFilter, CollectionMintProfilePaginated, CollectionMintProfileDocWithStages, CollectionHoldersDto, CollectionHoldersExportDto, CollectionOwnerDto, CollectionStatsDocHydrated, CollectionOffersFilter, GlobalOfferPaginated, CreatorDetailsDto, ShareholderDto, StakingSummary, StakingPoolDoc, StakingEditDto, OwnedCollectionsDto, UserStakingSummaryDto, StakingCreatorDoc, StakingUserPoolNfts, StakingExploreDtoHydrated, OwnedServicesDto, FilterQueryDto, GlobalSearchResourcesPaginated, LendingNftAttributes, LendingTokenPriceDto, NotificationPaginated, PushNotificationCountResponse, NotificationDoc, MobileDeviceDoc, MobileDeviceRegistrationDto, PushNotificationResponse, PushNotificationDoc, NotificationSuccessResponseDto, EventNotificationDto, CreatorMarketingNotificationDto, StellarChallengeResponseDto, Web2UserDoc, SuccessWithMessageDto, NativeWalletDto, SwitchWalletDto, Web2WalletDto, Web2UserShardsDto, NftActivityFilter, NftActivityPaginated, NftActivityDocHydrated, VolumeGraph, AnalyticsVolumeDto, UserAnalyticsDto, GlobalAnalyticsOverviewResponseDto, UserStatsDto, AirdropDtoHydrated, TransactionDetailed, TransactionProcessStatus, TransactionCostData, TransactionCreate, TransactionSendResult, ChatMessageDocHydrated, SendChatMessageDto, UserConversationPaginated, ChatMessagePaginated, GlobalConversationSummaryDto, UserBlockPaginated, WebSocketTokenDto, UserInfo, EventProfile, EventProfileCreateDto, EventProfileEditDto, EventProfileFilter, EventProfileQuery, EventRegistrationResponseDto, EventGuestRegistrationDto, EventTicketProfileDoc, EventTicketProfileCreateDto, EventTicketProfileEditDto, EventStageProfileDoc, EventStageProfileCreateDto, EventStageProfileEditDto, TicketPricesResponse, TicketCalculationRequestDto, DiscountCodeValidationResponse, EventInvitationDoc, EventInvitationCreateDto, EventInvitationFilter, EventInvitationQuery, EventInvitation, EventAcceptInvitation, EventClaimInvitationDto, EventVoucherFilter, EventVoucherQuery, EventQuestionDoc, EventQuestionCreateDto, EventQuestionEditDto, EventGuestFilter, EventGuestProfileQuery, EventGuestProfile, EventGuestExport, EventUserRole, EventUserRoleCreateDto, EventUserRoleEditDto, EventUserRoleDoc, BageQRData, TicketValidationResult, EventCheckInQR, EventVoucherDoc, EventVoucherCreateDto, EventVoucherEditDto, ManualCheckInDto, AnsweredQuestionWithDetails, EventGuestApproveDto, EventCountGroupedByCountry, EventReferralConfigDoc, EventReferralConfigCreateDto, EventReferralConfigEditDto, EventReferralConfigFilter, EventReferralConfigPaginated, EventReferralDoc, EventReferralCreateDto, EventReferralEditDto, EventReferralFilter, EventReferralPaginated, BlendUserPosition, SoroswapQuoteResponseDto, PerpOrderResponse, BarDto, SymbolInfoDto, PerpCoinExtended, PerpSpotCoinExtended, PerpCoinExtendedSlim, PerpLegalCheck, PerpSpotCoinExtendedSlim, L2BookPerpResponseSingle, TradesPerpResponseSingle, ActiveSpotAssetCtx, ActivePerpAssetCtx, PerpEvent } from '@xoxno/types';
2
2
  import type { ActivityChain, TokenCategory, LendingPositionOrderByColumn, KustoOrderDirection, OfferType, StakingStatus, UserStatsOrderByColumn } from '@xoxno/types/enums';
3
3
  export declare const endpoints: {
4
4
  readonly "/liquid/xoxno/rate": {
@@ -434,6 +434,15 @@ export declare const endpoints: {
434
434
  };
435
435
  readonly output: LendingMarketAnalyticsGraph[];
436
436
  };
437
+ readonly "/lending/stats/history": {
438
+ readonly input: {
439
+ startTime?: string;
440
+ endTime?: string;
441
+ bin?: string;
442
+ chain?: ActivityChain[];
443
+ };
444
+ readonly output: LendingStatsHistory;
445
+ };
437
446
  readonly "/lending/market/:token/average": {
438
447
  readonly input: {};
439
448
  readonly output: LendingMarketAverageGraph[];
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis),(()=>{"use strict";var t={d:(e,o)=>{for(var r in o)t.o(o,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Chain:()=>i,STELLAR_AGGREGATOR_ROUTER:()=>b,STELLAR_GOVERNANCE:()=>m,STELLAR_GOVERNANCE_ZERO_PREDECESSOR:()=>Ft,STELLAR_LENDING_CONTROLLER:()=>_,STELLAR_LENDING_TOPICS:()=>oo,STELLAR_NETWORK_PASSPHRASE:()=>S,STELLAR_QUOTE_URL:()=>q,STELLAR_SOROBAN_RPC_URL:()=>g,SYNTHETIC_EVENT_ORDER_STRIDE:()=>uo,XOXNOClient:()=>a,XOXNO_LENDING_STELLAR_TICKER:()=>no,buildSameTokenRepaySwapSteps:()=>Eo,buildSdk:()=>Io,buildStellarAcceptOwnershipTx:()=>Tt,buildStellarAddAssetToEModeCategoryTx:()=>Rt,buildStellarAddEModeCategoryTx:()=>Pt,buildStellarAddRewardsTx:()=>Ht,buildStellarApproveTokenTx:()=>Bt,buildStellarBatchSwapTx:()=>go,buildStellarBorrowBatchTx:()=>F,buildStellarBorrowTx:()=>Z,buildStellarCctpForwardTx:()=>Po,buildStellarClaimRevenueTx:()=>Xt,buildStellarConfigureMarketOracleTx:()=>Ut,buildStellarCreateLiquidityPoolTx:()=>jt,buildStellarDisableTokenOracleTx:()=>Dt,buildStellarEditAssetConfigTx:()=>Et,buildStellarEditAssetInEModeCategoryTx:()=>Ot,buildStellarEditOracleToleranceTx:()=>Nt,buildStellarExecuteStrategyTx:()=>mo,buildStellarFlashLoanTx:()=>et,buildStellarGovernanceExecuteGovernanceUpgradeTx:()=>Me,buildStellarGovernanceExecuteGrantGovernanceRoleTx:()=>Oe,buildStellarGovernanceExecuteRevokeGovernanceRoleTx:()=>Ie,buildStellarGovernanceExecuteTransferGovOwnTx:()=>Ce,buildStellarGovernanceExecuteTx:()=>Pe,buildStellarGovernanceExecuteUpdateDelayTx:()=>Re,buildStellarGrantRoleTx:()=>St,buildStellarLendingIdentifier:()=>io,buildStellarLiquidateTx:()=>tt,buildStellarMigrateFromBlendTx:()=>ot,buildStellarMigrateTx:()=>mt,buildStellarMultiplyTx:()=>rt,buildStellarPauseTx:()=>gt,buildStellarProposeAddAssetToEModeTx:()=>ae,buildStellarProposeAddEModeCategoryTx:()=>ue,buildStellarProposeApproveTokenTx:()=>de,buildStellarProposeConfigureMarketOracleTx:()=>he,buildStellarProposeCreateLiquidityPoolTx:()=>ye,buildStellarProposeDeployPoolTx:()=>_e,buildStellarProposeEditAssetConfigTx:()=>oe,buildStellarProposeEditAssetInEModeTx:()=>se,buildStellarProposeEditOracleToleranceTx:()=>Te,buildStellarProposeGovernanceUpgradeTx:()=>we,buildStellarProposeGrantControllerRoleTx:()=>me,buildStellarProposeGrantGovernanceRoleTx:()=>Ae,buildStellarProposeMigrateControllerTx:()=>Se,buildStellarProposeRemoveAssetFromEModeTx:()=>le,buildStellarProposeRemoveEModeCategoryTx:()=>ie,buildStellarProposeRevokeControllerRoleTx:()=>ge,buildStellarProposeRevokeGovernanceRoleTx:()=>Ee,buildStellarProposeRevokeTokenTx:()=>ce,buildStellarProposeSetAccumulatorTx:()=>te,buildStellarProposeSetAggregatorTx:()=>Yt,buildStellarProposeSetMinBorrowCollatTx:()=>ne,buildStellarProposeSetPoolTemplateTx:()=>ee,buildStellarProposeSetPositionLimitsTx:()=>re,buildStellarProposeTransferCtrlOwnershipTx:()=>ve,buildStellarProposeTransferGovOwnTx:()=>ke,buildStellarProposeUpdateDelayTx:()=>xe,buildStellarProposeUpdatePoolCapsTx:()=>pe,buildStellarProposeUpgradeControllerTx:()=>qe,buildStellarProposeUpgradePoolParamsTx:()=>fe,buildStellarProposeUpgradePoolTx:()=>be,buildStellarRemoveAssetFromEModeTx:()=>Ct,buildStellarRemoveEModeCategoryTx:()=>Mt,buildStellarRenewAccountTx:()=>zt,buildStellarRepayBatchTx:()=>J,buildStellarRepayDebtWithCollateralTx:()=>it,buildStellarRepayTx:()=>Y,buildStellarRevokeRoleTx:()=>vt,buildStellarRevokeTokenTx:()=>Lt,buildStellarSetAccumulatorTx:()=>xt,buildStellarSetAggregatorTx:()=>wt,buildStellarSetLiquidityPoolTemplateTx:()=>At,buildStellarSetPositionLimitsTx:()=>kt,buildStellarSupplyBatchTx:()=>H,buildStellarSupplyTx:()=>W,buildStellarSwapCollateralTx:()=>ut,buildStellarSwapDebtTx:()=>nt,buildStellarTransferOwnershipTx:()=>ht,buildStellarUnpauseTx:()=>qt,buildStellarUpdateAccountThresholdTx:()=>Wt,buildStellarUpdateIndexesTx:()=>$t,buildStellarUpdatePoolCapsTx:()=>It,buildStellarUpgradeControllerTx:()=>bt,buildStellarUpgradeLiquidityPoolParamsTx:()=>Gt,buildStellarUpgradeLiquidityPoolTx:()=>Vt,buildStellarWithdrawBatchTx:()=>Q,buildStellarWithdrawTx:()=>K,buildTx:()=>X,decodeStellarLendingEvent:()=>ro,encodeAssetConfigRaw:()=>lt,encodeInterestRateModel:()=>st,encodeMarketOracleConfigInput:()=>_t,encodeMarketParamsRaw:()=>pt,encodeOracleSourceConfigInput:()=>ft,encodePositionLimits:()=>dt,encodeStrategyPayloadToRouteXdr:()=>bo,extractEventOrder:()=>ao,getStellarAggregatorQuote:()=>yo,getStellarAggregatorRouter:()=>h,getStellarGovernance:()=>T,getStellarLendingController:()=>v,getStellarQuoteTokens:()=>fo,isValidCollectionTicker:()=>s,isValidNftIdentifier:()=>p,mapQuoteResponseToAggregatorSwap:()=>vo,mapQuoteResponseToStrategyPayload:()=>qo,mapQuoteResponseToStrategySwap:()=>So,mapStellarPositionActivityType:()=>po,prepareStellarBuiltTx:()=>xo,prepareStellarTxXdr:()=>wo,stellarLendingDispatchKey:()=>Ue,syntheticEventOrder:()=>so,tagStellarInvokedContractError:()=>To,toBase64Xdr:()=>Be,toStellarPositionMode:()=>Ao});const o="https://api.xoxno.com",r="erd1qqqqqqqqqqqqqpgq705fxpfrjne0tl3ece0rrspykq88mynn4kxs2cg43s",n="erd1qqqqqqqqqqqqqpgqd9rvv2n378e27jcts8vfwynpx0gfl5ufz6hqhfy0u0",u="erd1qqqqqqqqqqqqqpgq8xwzu82v8ex3h4ayl5lsvxqxnhecpwyvwe0sf2qj4e";var i;!function(t){t.MAINNET="1",t.DEVNET="D"}(i||(i={}));class a{apiUrl;chain;init;config;constructor({chain:t=i.MAINNET,apiUrl:e=o,...a}={}){this.apiUrl=e??{[i.MAINNET]:o,[i.DEVNET]:"https://devnet-api.xoxno.com"}[t],this.chain=t,this.init=a,this.config=t==i.MAINNET?{mediaUrl:"https://media.xoxno.com",gatewayUrl:"https://gateway.xoxno.com",XO_SC:"erd1qqqqqqqqqqqqqpgq6wegs2xkypfpync8mn2sa5cmpqjlvrhwz5nqgepyg8",FM_SC:r,DR_SC:n,KG_SC:u,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:r,DR_SC:n,KG_SC:u,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:l,method:d="GET",...c}=o,y=l?.Authorization,f="Bearer undefined"===y?void 0:y,_={...l,Referer:"https://xoxno.sdk","User-Agent":"XOXNO/1.0/SDK",..."PUT"===d?{}:{"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:S,...v}=a??{},h="GET"!==d||f?void 0:S??g,T="GET"!==d||f||h?void 0:s??n,w={...i,...c,method:d,...Object.keys(_).length?{headers:_}:{},cache:T,next:{...q,...v,revalidate:h}};(p??u)&&console.debug("SDK fetch: ",m,w);const x=await fetch(m,w).catch((t=>{if(t instanceof Error&&!t.message.match(/^http(s?):\/\//))throw Object.assign(new Error(`${m}: ${t.message}`),{cause:t});throw t})),A=await x.text();if(!x.ok){let t;try{t=JSON.parse(A)}catch{t={message:A}}const e=[m,x.status,x.statusText,t.message].filter(Boolean).join(";;");throw new Error(e)}try{return JSON.parse(A)}catch{return A}}}const s=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},p=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 l extends Error{constructor(t){super(`Invalid collection ticker: ${t}`)}}class d extends Error{constructor(t){super(`Invalid address: ${t}`)}}Error,Error;const c=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)),y={"/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"}},"/user/blend/:address":{input:{},output:{}},"/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:{}}}},f=["PATCH","POST","DELETE","PUT"],_={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},b={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},m={mainnet:process.env.STELLAR_GOVERNANCE_MAINNET??"",testnet:process.env.STELLAR_GOVERNANCE_TESTNET??""},g={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},q={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"},S={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function v(t){const e=_[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 h(t){const e=b[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 T(t){const e=m[t];if(!e)throw new Error(`Stellar governance address not configured for network "${t}". Set STELLAR_GOVERNANCE_${t.toUpperCase()} env var.`);return e}const w=require("@stellar/stellar-sdk"),x=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],A=t=>new w.Address(t).toScVal(),E=t=>new w.ScInt(t).toI128(),k=t=>w.xdr.ScVal.scvU32(t),P=t=>new w.ScInt("string"==typeof t?t:t.toString()).toU64(),M=t=>w.xdr.ScVal.scvBool(t),R=t=>w.xdr.ScVal.scvString(t),O=t=>w.xdr.ScVal.scvSymbol(t),I=()=>w.xdr.ScVal.scvVoid(),C=t=>w.xdr.ScVal.scvVec(t),B=(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 w.xdr.ScVal.scvBytes(r)},L=(t,e)=>null==t?I():e(t),U=(t,e)=>w.xdr.ScVal.scvVec([A(t),E(e)]),N=t=>w.xdr.ScVal.scvVec(t.map((t=>U(t.token,t.amount)))),D=t=>{const e=Object.keys(t).sort().map((e=>new w.xdr.ScMapEntry({key:O(e),val:t[e]})));return w.xdr.ScVal.scvMap(e)},$=t=>{const e=t.paths.map((t=>{const e=t.hops.map((t=>{return D({amount_out:E(t.amountOut),pool:A(t.pool),token_in:A(t.tokenIn),token_out:A(t.tokenOut),venue:(e=t.venue,w.xdr.ScVal.scvVec([O(e)]))});var e}));return D({hops:w.xdr.ScVal.scvVec(e),split_ppm:k(t.splitPpm)})}));return D({paths:w.xdr.ScVal.scvVec(e),referral_id:P(t.referralId??0),token_in:A(t.tokenIn),token_out:A(t.tokenOut),total_min_out:E(t.totalMinOut)})},z=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 w.xdr.ScVal.scvBytes(e)},j=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 z(j(t));if(t instanceof Uint8Array)return z(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?z(j(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?z(j(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?z(j(t.bytes)):z(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),w.xdr.ScVal.scvBytes(Buffer.from($(e).toXDR("base64"),"base64")));var e,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},V=t=>{if("string"==typeof t)return(t=>{const e=t.startsWith("0x")?t.slice(2):t,o=Buffer.from(e,"hex");return w.xdr.ScVal.scvBytes(o)})(t);if(t instanceof Uint8Array)return w.xdr.ScVal.scvBytes(Buffer.from(t));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function X(t,e,o){const r=t.controllerAddress??v(t.network),n=new w.Contract(r),u=new w.Account(t.caller,t.sourceSequence);return{xdr:new w.TransactionBuilder(u,{fee:t.fee??w.BASE_FEE,networkPassphrase:S[t.network]}).addOperation(n.call(e,...o)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function H(t,e){const o=e.accountNonce??0,r=e.eModeCategory??0,n=N([...e.assets]);return X(t,"supply",[A(t.caller),P(o),k(r),n])}function W(t,e){return H(t,{accountNonce:e.accountNonce,eModeCategory:e.eModeCategory,assets:[{token:e.token,amount:e.amount}]})}function F(t,e){const o=N([...e.borrows]);return X(t,"borrow",[A(t.caller),P(e.accountNonce),o])}function Z(t,e){return F(t,{accountNonce:e.accountNonce,borrows:[{token:e.token,amount:e.amount}]})}function Q(t,e){const o=N([...e.withdrawals]);return X(t,"withdraw",[A(t.caller),P(e.accountNonce),o,L(e.to,A)])}function K(t,e){return Q(t,{accountNonce:e.accountNonce,withdrawals:[{token:e.token,amount:e.amount}]})}function J(t,e){const o=N([...e.payments]);return X(t,"repay",[A(t.caller),P(e.accountNonce),o])}function Y(t,e){return J(t,{accountNonce:e.accountNonce,payments:[{token:e.token,amount:e.amount}]})}function tt(t,e){const o=N(e.debtPayments.map((t=>({token:t.token,amount:t.amount}))));return X(t,"liquidate",[A(t.caller),P(e.accountNonce),o])}function et(t,e){return X(t,"flash_loan",[A(t.caller),A(e.asset),E(e.amount),A(e.receiver),V(e.data)])}function ot(t,e){return X(t,"migrate_from_blend",[A(t.caller),P(e.accountId),k(e.eModeCategory),A(e.blendPool),C(e.collateralTokens.map(A)),C(e.supplyTokens.map(A)),N(e.debtCaps.map((t=>({token:t.token,amount:t.cap}))))])}function rt(t,e){const o=e.accountNonce??0;return X(t,"multiply",[A(t.caller),P(o),k(e.eModeCategory),A(e.collateralToken),E(e.debtToFlashLoan),A(e.debtToken),k(e.mode),G(e.steps),L(e.initialPayment,(t=>U(t.token,t.amount))),L(e.convertSwap,G)])}function nt(t,e){return X(t,"swap_debt",[A(t.caller),P(e.accountNonce),A(e.existingDebtToken),E(e.newDebtAmount),A(e.newDebtToken),G(e.steps)])}function ut(t,e){return X(t,"swap_collateral",[A(t.caller),P(e.accountNonce),A(e.currentCollateral),E(e.fromAmount),A(e.newCollateral),G(e.steps)])}function it(t,e){return X(t,"repay_debt_with_collateral",[A(t.caller),P(e.accountNonce),A(e.collateralToken),E(e.collateralAmount),A(e.debtToken),G(e.steps),M(e.closePosition)])}const at={Single:0,PrimaryWithAnchor:1},st=t=>D({base_borrow_rate_ray:E(t.baseBorrowRateRay),max_borrow_rate_ray:E(t.maxBorrowRateRay),max_utilization_ray:E(t.maxUtilizationRay),mid_utilization_ray:E(t.midUtilizationRay),optimal_utilization_ray:E(t.optimalUtilizationRay),reserve_factor_bps:k(t.reserveFactorBps),slope1_ray:E(t.slope1Ray),slope2_ray:E(t.slope2Ray),slope3_ray:E(t.slope3Ray)}),pt=t=>D({asset_decimals:k(t.assetDecimals),asset_id:A(t.assetId),base_borrow_rate_ray:E(t.baseBorrowRateRay),borrow_cap:E(t.borrowCap),max_borrow_rate_ray:E(t.maxBorrowRateRay),max_utilization_ray:E(t.maxUtilizationRay),mid_utilization_ray:E(t.midUtilizationRay),optimal_utilization_ray:E(t.optimalUtilizationRay),reserve_factor_bps:k(t.reserveFactorBps),slope1_ray:E(t.slope1Ray),slope2_ray:E(t.slope2Ray),slope3_ray:E(t.slope3Ray),supply_cap:E(t.supplyCap)}),lt=t=>D({asset_decimals:k(0),e_mode_categories:C(t.eModeCategories.map((t=>k(t)))),flashloan_fee_bps:k(t.flashloanFeeBps),is_borrowable:M(t.isBorrowable),is_collateralizable:M(t.isCollateralizable),is_flashloanable:M(t.isFlashloanable),liquidation_bonus_bps:k(t.liquidationBonusBps),liquidation_fees_bps:k(t.liquidationFeesBps),liquidation_threshold_bps:k(t.liquidationThresholdBps),loan_to_value_bps:k(t.loanToValueBps)}),dt=t=>D({max_borrow_positions:k(t.maxBorrowPositions),max_supply_positions:k(t.maxSupplyPositions)}),ct=t=>{const e=t.kind;switch(e){case"Stellar":return C([O("Stellar"),A(t.value)]);case"Symbol":return C([O("Symbol"),O(t.value)]);case"String":return C([O("String"),R(t.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${e}"`)}},yt=(t,e)=>{if("Twap"===t){if("number"!=typeof e)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return C([O("Twap"),k(e)])}return C([O("Spot")])},ft=t=>{const e=t.provider;if("ReflectorSep40"===e){if(!t.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return C([O("Reflector"),D({asset:ct(t.asset),contract:A(t.contract),read_mode:yt(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([O("RedStone"),D({contract:A(t.contract),feed_id:R(t.feedId),max_stale_seconds:P(t.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${e}"`)},_t=t=>{const e=at[t.strategy];if(void 0===e)throw new Error(`Stellar builder: unknown oracle strategy "${t.strategy}"`);return D({anchor:(o=t.anchor,C(null==o?[O("None")]:[O("Some"),ft(o)])),first_tolerance_bps:k(t.firstToleranceBps),last_tolerance_bps:k(t.lastToleranceBps),max_price_stale_seconds:P(t.maxPriceStaleSeconds),max_sanity_price_wad:E(t.maxSanityPriceWad),min_sanity_price_wad:E(t.minSanityPriceWad),primary:ft(t.primary),strategy:k(e)});var o};function bt(t,e){return X(t,"upgrade",[B(e.wasmHash)])}function mt(t,e){return X(t,"migrate",[k(e.newVersion)])}function gt(t){return X(t,"pause",[])}function qt(t){return X(t,"unpause",[])}function St(t,e){return X(t,"grant_role",[A(e.account),O(e.role)])}function vt(t,e){return X(t,"revoke_role",[A(e.account),O(e.role)])}function ht(t,e){return X(t,"transfer_ownership",[A(e.newOwner),k(e.liveUntilLedger)])}function Tt(t){return X(t,"accept_ownership",[])}function wt(t,e){return X(t,"set_aggregator",[A(e.aggregator)])}function xt(t,e){return X(t,"set_accumulator",[A(e.accumulator)])}function At(t,e){return X(t,"set_liquidity_pool_template",[B(e.wasmHash)])}function Et(t,e){return X(t,"edit_asset_config",[A(e.asset),lt(e.config)])}function kt(t,e){return X(t,"set_position_limits",[dt(e)])}function Pt(t){return X(t,"add_e_mode_category",[])}function Mt(t,e){return X(t,"remove_e_mode_category",[k(e.id)])}function Rt(t,e){return X(t,"add_asset_to_e_mode_category",[A(e.asset),k(e.categoryId),M(e.canCollateral),M(e.canBorrow),k(e.ltv),k(e.threshold),k(e.bonus),E(e.supplyCap),E(e.borrowCap)])}function Ot(t,e){return X(t,"edit_asset_in_e_mode_category",[A(e.asset),k(e.categoryId),M(e.canCollateral),M(e.canBorrow),k(e.ltv),k(e.threshold),k(e.bonus),E(e.supplyCap),E(e.borrowCap)])}function It(t,e){return X(t,"update_pool_caps",[A(e.asset),E(e.supplyCap),E(e.borrowCap)])}function Ct(t,e){return X(t,"remove_asset_from_e_mode",[A(e.asset),k(e.categoryId)])}function Bt(t,e){return X(t,"approve_token",[A(e.token)])}function Lt(t,e){return X(t,"revoke_token",[A(e.token)])}function Ut(t,e){return X(t,"configure_market_oracle",[A(t.caller),A(e.asset),_t(e.config)])}function Nt(t,e){return X(t,"edit_oracle_tolerance",[A(t.caller),A(e.asset),k(e.firstTolerance),k(e.lastTolerance)])}function Dt(t,e){return X(t,"disable_token_oracle",[A(t.caller),A(e.asset)])}function $t(t,e){return X(t,"update_indexes",[A(t.caller),C(e.assets.map((t=>A(t))))])}function zt(t,e){return X(t,"renew_account",[A(t.caller),P(e.accountNonce)])}function jt(t,e){return X(t,"create_liquidity_pool",[A(e.asset),pt(e.params),lt(e.config)])}function Gt(t,e){return X(t,"upgrade_liquidity_pool_params",[A(e.asset),st(e.params)])}function Vt(t,e){return X(t,"upgrade_liquidity_pool",[A(e.asset),B(e.wasmHash)])}function Xt(t,e){return X(t,"claim_revenue",[A(t.caller),C(e.assets.map((t=>A(t))))])}function Ht(t,e){return X(t,"add_rewards",[A(t.caller),C(e.rewards.map((t=>C([A(t.token),E(t.amount)]))))])}function Wt(t,e){return X(t,"update_account_threshold",[A(t.caller),A(e.asset),M(e.hasRisks),C(e.accountNonces.map((t=>P(t))))])}const Ft="00".repeat(32),Zt=t=>{if("string"==typeof t)return B(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 w.xdr.ScVal.scvBytes(e)};function Qt(t,e,o){const r=t.governanceAddress??T(t.network),n=new w.Contract(r),u=new w.Account(t.caller,t.sourceSequence);return{xdr:new w.TransactionBuilder(u,{fee:t.fee??w.BASE_FEE,networkPassphrase:S[t.network]}).addOperation(n.call(e,...o)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const Kt=(t,e,o,r)=>Qt(t,e,[A(t.caller),...o,Zt(r)]),Jt=(t,e,o,r)=>Qt(t,e,[I(),...o,Zt(r)]);function Yt(t,e,o){return Kt(t,"propose_set_aggregator",[A(e.aggregator)],o)}function te(t,e,o){return Kt(t,"propose_set_accumulator",[A(e.accumulator)],o)}function ee(t,e,o){return Kt(t,"propose_set_pool_template",[B(e.wasmHash)],o)}function oe(t,e,o){return Kt(t,"propose_edit_asset_config",[A(e.asset),lt(e.config)],o)}function re(t,e,o){return Kt(t,"propose_set_position_limits",[dt(e)],o)}function ne(t,e,o){return Kt(t,"propose_set_min_borrow_collat",[E(e.floorWad)],o)}function ue(t,e){return Kt(t,"propose_add_e_mode_category",[],e)}function ie(t,e,o){return Kt(t,"propose_remove_e_mode_category",[k(e.id)],o)}function ae(t,e,o){return Kt(t,"propose_add_asset_to_e_mode",[A(e.asset),k(e.categoryId),M(e.canCollateral),M(e.canBorrow),k(e.ltv),k(e.threshold),k(e.bonus),E(e.supplyCap),E(e.borrowCap)],o)}function se(t,e,o){return Kt(t,"propose_edit_asset_in_e_mode",[A(e.asset),k(e.categoryId),M(e.canCollateral),M(e.canBorrow),k(e.ltv),k(e.threshold),k(e.bonus),E(e.supplyCap),E(e.borrowCap)],o)}function pe(t,e,o){return Kt(t,"propose_update_pool_caps",[A(e.asset),E(e.supplyCap),E(e.borrowCap)],o)}function le(t,e,o){return Kt(t,"propose_remove_asset_from_e_mode",[A(e.asset),k(e.categoryId)],o)}function de(t,e,o){return Kt(t,"propose_approve_token",[A(e.token)],o)}function ce(t,e,o){return Kt(t,"propose_revoke_token",[A(e.token)],o)}function ye(t,e,o){return Kt(t,"propose_create_liquidity_pool",[A(e.asset),pt(e.params),lt(e.config)],o)}function fe(t,e,o){return Kt(t,"propose_upgrade_pool_params",[A(e.asset),st(e.params)],o)}function _e(t,e){return Kt(t,"propose_deploy_pool",[],e)}function be(t,e,o){return Kt(t,"propose_upgrade_pool",[B(e.wasmHash)],o)}function me(t,e,o){return Kt(t,"propose_grant_controller_role",[A(e.account),O(e.role)],o)}function ge(t,e,o){return Kt(t,"propose_revoke_controller_role",[A(e.account),O(e.role)],o)}function qe(t,e,o){return Kt(t,"propose_upgrade_controller",[B(e.wasmHash)],o)}function Se(t,e,o){return Kt(t,"propose_migrate_controller",[k(e.newVersion)],o)}function ve(t,e,o){return Kt(t,"propose_transfer_ctrl_ownership",[A(e.newOwner),k(e.liveUntilLedger)],o)}function he(t,e,o){return Kt(t,"propose_configure_market_oracle",[A(e.asset),_t(e.config)],o)}function Te(t,e,o){return Kt(t,"propose_edit_oracle_tolerance",[A(e.asset),k(e.firstTolerance),k(e.lastTolerance)],o)}function we(t,e,o){return Kt(t,"propose_governance_upgrade",[B(e.wasmHash)],o)}function xe(t,e,o){return Kt(t,"propose_update_delay",[k(e.newDelay)],o)}function Ae(t,e,o){return Kt(t,"propose_grant_governance_role",[A(e.account),O(e.role)],o)}function Ee(t,e,o){return Kt(t,"propose_revoke_governance_role",[A(e.account),O(e.role)],o)}function ke(t,e,o){return Kt(t,"propose_transfer_gov_own",[A(e.newOwner),k(e.liveUntilLedger)],o)}function Pe(t,e){const o=C(e.argsXdr.map((t=>w.xdr.ScVal.fromXDR(t,"base64")))),r=Zt(e.predecessor??Ft);return Qt(t,"execute",[I(),A(e.target),O(e.functionName),o,r,Zt(e.salt)])}function Me(t,e,o){return Jt(t,"execute_governance_upgrade",[B(e.wasmHash)],o)}function Re(t,e,o){return Jt(t,"execute_update_delay",[k(e.newDelay)],o)}function Oe(t,e,o){return Jt(t,"execute_grant_governance_role",[A(e.account),O(e.role)],o)}function Ie(t,e,o){return Jt(t,"execute_revoke_governance_role",[A(e.account),O(e.role)],o)}function Ce(t,e,o){return Jt(t,"execute_transfer_gov_own",[A(e.newOwner),k(e.liveUntilLedger)],o)}const Be=t=>t.toXDR("base64"),Le=t=>w.xdr.ScVal.fromXDR(t,"base64"),Ue=t=>t.map((t=>String((0,w.scValToNative)(Le(t))))).join(":"),Ne=t=>"bigint"==typeof t||"number"==typeof t?t.toString():String(t),De=t=>Number(t),$e=t=>String(t),ze=t=>null==t?void 0:Ne(t),je=t=>null==t?void 0:$e(t),Ge=t=>t instanceof Uint8Array?Buffer.from(t).toString("hex"):Buffer.isBuffer(t)?t.toString("hex"):String(t),Ve=["None","Multiply","Long","Short"],Xe=["Single","PrimaryWithAnchor"],He=["ReflectorSep40","RedStonePriceFeed"],We=["Spot","Twap"],Fe=["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"],Ze=t=>Array.isArray(t)?t:[],Qe=t=>({loanToValueBps:De(t.loan_to_value_bps),liquidationThresholdBps:De(t.liquidation_threshold_bps),liquidationBonusBps:De(t.liquidation_bonus_bps),liquidationFeesBps:De(t.liquidation_fees_bps),isCollateralizable:Boolean(t.is_collateralizable),isBorrowable:Boolean(t.is_borrowable),isFlashloanable:Boolean(t.is_flashloanable),flashloanFeeBps:De(t.flashloan_fee_bps),eModeCategories:(t.e_mode_categories??[]).map(De)}),Ke=(t,e)=>{const o="Borrow"===e;return{action:(r=t[0],Fe[De(r)]??Ne(r)),positionType:e,asset:$e(t[1]),scaledAmountRay:Ne(t[2]),indexRay:Ne(t[3]),amount:Ne(t[4]),liquidationThresholdBps:o?void 0:De(t[5]),liquidationBonusBps:o?void 0:De(t[6]),loanToValueBps:o?void 0:De(t[7])};var r},Je=t=>{return{owner:$e(t[0]),eModeCategoryId:De(t[1]),mode:(e=t[2],Ve[De(e)]??"None")};var e},Ye=(t,e)=>{const o=We[De(t[`${e}_read_mode`])]??"Spot",r=t[`${e}_asset`],n=t[`${e}_symbol`],u=null!=r?{kind:"Stellar",value:$e(r)}:null!=n?{kind:"Symbol",value:$e(n)}:void 0;return{provider:He[De(t[`${e}_provider`])]??"ReflectorSep40",contractAddress:$e(t[`${e}_contract`]),asset:u,feedId:je(t[`${e}_feed_id`]),readMode:o,twapRecords:"Twap"===o?De(t[`${e}_twap_records`]):void 0,decimals:De(t[`${e}_decimals`]),resolutionSeconds:De(t[`${e}_resolution_seconds`]),maxStaleSeconds:De(t[`${e}_max_stale_seconds`])}},to=t=>{const e=null!==t.anchor_provider&&void 0!==t.anchor_provider;return{baseTokenId:$e(t.base_token_id),quoteTokenId:$e(t.quote_token_id),tolerance:{firstUpperRatio:De(t.first_upper_ratio_bps??t.tolerance?.first_upper_ratio_bps),firstLowerRatio:De(t.first_lower_ratio_bps??t.tolerance?.first_lower_ratio_bps),lastUpperRatio:De(t.last_upper_ratio_bps??t.tolerance?.last_upper_ratio_bps),lastLowerRatio:De(t.last_lower_ratio_bps??t.tolerance?.last_lower_ratio_bps)},assetDecimals:De(t.asset_decimals),maxPriceStaleSeconds:De(t.max_price_stale_seconds),strategy:Xe[De(t.strategy)]??"Single",primary:Ye(t,"primary"),anchor:e?Ye(t,"anchor"):void 0,primaryQuoteToken:je(t.primary_quote_token),anchorQuoteToken:je(t.anchor_quote_token),minSanityPriceWad:ze(t.min_sanity_price_wad),maxSanityPriceWad:ze(t.max_sanity_price_wad)}},eo={"market:create":t=>({topic:"market:create",data:{baseAsset:$e(t.base_asset),maxBorrowRate:Ne(t.max_borrow_rate),baseBorrowRate:Ne(t.base_borrow_rate),slope1:Ne(t.slope1),slope2:Ne(t.slope2),slope3:Ne(t.slope3),midUtilization:Ne(t.mid_utilization),optimalUtilization:Ne(t.optimal_utilization),maxUtilization:ze(t.max_utilization),reserveFactor:De(t.reserve_factor),marketAddress:$e(t.market_address),config:Qe(t.config)}}),"market:params_update":t=>({topic:"market:params_update",data:{asset:$e(t.asset),maxBorrowRateRay:Ne(t.max_borrow_rate_ray),baseBorrowRateRay:Ne(t.base_borrow_rate_ray),slope1Ray:Ne(t.slope1_ray),slope2Ray:Ne(t.slope2_ray),slope3Ray:Ne(t.slope3_ray),midUtilizationRay:Ne(t.mid_utilization_ray),optimalUtilizationRay:Ne(t.optimal_utilization_ray),maxUtilizationRay:ze(t.max_utilization_ray),reserveFactorBps:De(t.reserve_factor_bps)}}),"market:batch_state_update":t=>({topic:"market:batch_state_update",data:{updates:Ze(t).map((t=>{return e=Ze(t),{asset:$e(e[0]),timestamp:De(e[1]),supplyIndexRay:Ne(e[2]),borrowIndexRay:Ne(e[3]),reservesRay:Ne(e[4]),suppliedRay:Ne(e[5]),borrowedRay:Ne(e[6]),revenueRay:Ne(e[7]),assetPriceWad:ze(e[8])};var e}))}}),"market:batch_params_update":t=>({topic:"market:batch_params_update",data:{updates:Ze(t).map((t=>{const e=t;return{asset:$e(e.asset),params:(o=e.params,{maxBorrowRateRay:Ne(o.max_borrow_rate_ray),baseBorrowRateRay:Ne(o.base_borrow_rate_ray),slope1Ray:Ne(o.slope1_ray),slope2Ray:Ne(o.slope2_ray),slope3Ray:Ne(o.slope3_ray),midUtilizationRay:Ne(o.mid_utilization_ray),optimalUtilizationRay:Ne(o.optimal_utilization_ray),maxUtilizationRay:ze(o.max_utilization_ray),reserveFactorBps:De(o.reserve_factor_bps),supplyCap:Ne(o.supply_cap),borrowCap:Ne(o.borrow_cap),assetId:je(o.asset_id),assetDecimals:void 0===o.asset_decimals?void 0:De(o.asset_decimals)})};var o}))}}),"position:batch_update":t=>{const e=Ze(t);return{topic:"position:batch_update",data:{accountId:Ne(e[0]),accountAttributes:Je(Ze(e[1])),updates:[...Ze(e[2]).map((t=>Ke(Ze(t),"Deposit"))),...Ze(e[3]).map((t=>Ke(Ze(t),"Borrow")))]}}},"position:flash_loan":t=>({topic:"position:flash_loan",data:{asset:$e(t.asset),receiver:$e(t.receiver),caller:$e(t.caller),amount:Ne(t.amount),fee:Ne(t.fee)}}),"config:asset":t=>({topic:"config:asset",data:{asset:$e(t.asset),config:Qe(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:$e(t.asset),oracle:to(t.oracle)}}),"config:emode_category":t=>({topic:"config:emode_category",data:{category:{categoryId:De(t.category.category_id),isDeprecated:Boolean(t.category.is_deprecated)}}}),"config:emode_asset":t=>({topic:"config:emode_asset",data:{asset:$e(t.asset),config:{isCollateralizable:Boolean(t.config.is_collateralizable),isBorrowable:Boolean(t.config.is_borrowable),loanToValueBps:De(t.config.loan_to_value_bps),liquidationThresholdBps:De(t.config.liquidation_threshold_bps),liquidationBonusBps:De(t.config.liquidation_bonus_bps),supplyCap:Ne(t.config.supply_cap),borrowCap:Ne(t.config.borrow_cap)},categoryId:De(t.category_id)}}),"config:remove_emode_asset":t=>({topic:"config:remove_emode_asset",data:{asset:$e(t.asset),categoryId:De(t.category_id)}}),"debt:bad_debt":t=>({topic:"debt:bad_debt",data:{accountId:Ne(t.account_id),totalBorrowUsdWad:Ne(t.total_borrow_usd_wad),totalCollateralUsdWad:Ne(t.total_collateral_usd_wad)}}),"strategy:initial_payment":t=>({topic:"strategy:initial_payment",data:{token:$e(t.token),amount:Ne(t.amount),usdValueWad:Ne(t.usd_value_wad),accountId:Ne(t.account_id)}}),"strategy:fee":t=>({topic:"strategy:fee",data:{asset:$e(t.asset),amount:Ne(t.amount),fee:Ne(t.fee),amountSent:Ne(t.amount_sent)}}),"config:approve_token":t=>({topic:"config:approve_token",data:{wasmHash:Ge(t.wasm_hash),approved:Boolean(t.approved)}}),"config:aggregator":t=>({topic:"config:aggregator",data:{aggregator:$e(t.aggregator)}}),"config:accumulator":t=>({topic:"config:accumulator",data:{accumulator:$e(t.accumulator)}}),"config:pool_template":t=>({topic:"config:pool_template",data:{wasmHash:Ge(t.wasm_hash)}}),"config:position_limits":t=>({topic:"config:position_limits",data:{maxSupplyPositions:De(t.max_supply_positions),maxBorrowPositions:De(t.max_borrow_positions)}}),"config:oracle_disabled":t=>({topic:"config:oracle_disabled",data:{asset:$e(t.asset)}}),"oracle:twap_degraded":t=>({topic:"oracle:twap_degraded",data:{oracle:$e(t.oracle),reasonCode:De(t.reason_code)}})},oo=Object.freeze(Object.keys(eo));function ro(t,e){const o=Ue(t),r=eo[o];return r?r((0,w.scValToNative)(Le(e))):null}const no="XLENDXLM-a7c9f3",uo=1e4;function io(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${no}-${o}`}function ao(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function so(t,e=0){return t*uo+e}function po(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const lo=(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()},co=t=>t.baseUrl??q[t.network];async function yo(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=lo(co(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 fo(t){const e=lo(co(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 _o=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,bo=t=>$(t).toXDR("base64");function mo(t,e){const o=t.routerAddress??h(t.network),r=new w.Contract(o),n=new w.Account(t.caller,t.sourceSequence),u=G(_o(e,t.referralId));return{xdr:new w.TransactionBuilder(n,{fee:t.fee??w.BASE_FEE,networkPassphrase:S[t.network]}).addOperation(r.call("execute_strategy",A(t.caller),E(t.totalIn),u)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function go(t,e){return mo(t,e)}function qo(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(ho),splitPpm:t.splitPpm}))):[{hops:t.hops.map(ho),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}:qo(t,e)}const vo=qo,ho=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function To(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function wo(t,e,o){const r=w.TransactionBuilder.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw To(o.invokedContractId,t);throw t}}async function xo(t,e,o){return wo(t,e.xdr,o)}function Ao(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 Eo(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 ko=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 Po(t){const e=new w.Account(t.caller,t.sourceSequence),o=new w.Contract(t.forwarderAddress).call("mint_and_forward",w.xdr.ScVal.scvBytes(ko(t.message)),w.xdr.ScVal.scvBytes(ko(t.attestation)));return{xdr:new w.TransactionBuilder(e,{fee:t.fee??"10000000",networkPassphrase:S[t.network]}).addOperation(o).setTimeout(t.timeoutSeconds??120).build().toXDR()}}const Mo=t=>t.replace(/-([a-z])/g,((t,e)=>e.toUpperCase())),Ro=()=>({static:{},params:{},leaves:[]});function Oo(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)))),p=/:address[^A-Z]/.test(t)||"address"in a,y=/:collection[^A-Z]/.test(t)||"collection"in a;if(p){const t=n.address;if(!c(t))throw new d(t)}if(y){const t=n.collection;if(Array.isArray(t)?t.some((t=>!s(t))):!s(t))throw new l(t)}const f=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:_,auth:b,method:m,headers:g,cache:q,next:S,debug:v,continuationToken:h,...T}=f,w=b?`Bearer ${b}`:void 0,x={...g,...w?{Authorization:w}:{},...h?{"X-Continuation-Token":String(h)}:{}},A={...S,tags:[...S?.tags??[],u]};return r.fetchWithTimeout(u,{method:m,params:T,body:_,headers:x,cache:q,debug:v,...A?{next:A}:{}})},p=(t={})=>a(t);for(const t of Object.keys(i))f.includes(t)&&(p[t]=e=>a({...e,method:e.method??t.toUpperCase()}));return p}function Io(t){const e=function(){const t=Ro();for(const[e,o]of Object.entries(y)){const r=e.split("/").filter(Boolean);let n=t;for(const t of r)if(t.startsWith(":")){const e=Mo(t.slice(1));n=n.params[e]||=Ro()}else{const e=Mo(t);n=n.static[e]||=Ro()}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=Oo(o,n,r,t)}else{a={};for(const{rawPath:o,def:n}of e.leaves)a[Mo(o.split("/").pop().replace(/^:/,""))]=Oo(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,{})}module.exports=e})();
1
+ "undefined"!=typeof globalThis&&void 0===globalThis.self&&(globalThis.self=globalThis),(()=>{"use strict";var t={d:(e,o)=>{for(var r in o)t.o(o,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Chain:()=>i,STELLAR_AGGREGATOR_ROUTER:()=>m,STELLAR_GOVERNANCE:()=>g,STELLAR_GOVERNANCE_ZERO_PREDECESSOR:()=>Ft,STELLAR_LENDING_CONTROLLER:()=>b,STELLAR_LENDING_TOPICS:()=>fo,STELLAR_NETWORK_PASSPHRASE:()=>S,STELLAR_QUOTE_URL:()=>q,STELLAR_SOROBAN_RPC_URL:()=>_,SYNTHETIC_EVENT_ORDER_STRIDE:()=>go,XOXNOClient:()=>a,XOXNO_LENDING_STELLAR_TICKER:()=>mo,buildSameTokenRepaySwapSteps:()=>No,buildSdk:()=>Vo,buildStellarAcceptOwnershipTx:()=>ht,buildStellarAddAssetToEModeCategoryTx:()=>Rt,buildStellarAddEModeCategoryTx:()=>Pt,buildStellarAddRewardsTx:()=>Ht,buildStellarApproveTokenTx:()=>Ut,buildStellarBatchSwapTx:()=>Po,buildStellarBorrowBatchTx:()=>F,buildStellarBorrowTx:()=>Z,buildStellarCctpForwardTx:()=>$o,buildStellarClaimRevenueTx:()=>Xt,buildStellarConfigureMarketOracleTx:()=>Lt,buildStellarCreateLiquidityPoolTx:()=>Gt,buildStellarDisableTokenOracleTx:()=>Dt,buildStellarEditAssetConfigTx:()=>Et,buildStellarEditAssetInEModeCategoryTx:()=>Ot,buildStellarEditOracleToleranceTx:()=>Nt,buildStellarExecuteStrategyTx:()=>ko,buildStellarFlashLoanTx:()=>et,buildStellarGovernanceExecuteGovernanceUpgradeTx:()=>ze,buildStellarGovernanceExecuteGrantGovernanceRoleTx:()=>je,buildStellarGovernanceExecuteRevokeGovernanceRoleTx:()=>Ve,buildStellarGovernanceExecuteTransferGovOwnTx:()=>Xe,buildStellarGovernanceExecuteTx:()=>$e,buildStellarGovernanceExecuteUpdateDelayTx:()=>Ge,buildStellarGrantRoleTx:()=>St,buildStellarLendingIdentifier:()=>_o,buildStellarLiquidateTx:()=>tt,buildStellarMigrateFromBlendTx:()=>ot,buildStellarMigrateTx:()=>gt,buildStellarMultiplyTx:()=>rt,buildStellarPauseTx:()=>_t,buildStellarProposeAddAssetToEModeTx:()=>ge,buildStellarProposeAddEModeCategoryTx:()=>be,buildStellarProposeApproveBlendPoolTx:()=>he,buildStellarProposeApproveTokenTx:()=>Te,buildStellarProposeConfigureMarketOracleTx:()=>Ie,buildStellarProposeCreateLiquidityPoolTx:()=>Ae,buildStellarProposeDeployPoolTx:()=>Ee,buildStellarProposeDisableTokenOracleTx:()=>Pe,buildStellarProposeEditAssetConfigTx:()=>ce,buildStellarProposeEditAssetInEModeTx:()=>_e,buildStellarProposeEditOracleToleranceTx:()=>Ce,buildStellarProposeGovernanceUpgradeTx:()=>Ue,buildStellarProposeGrantGovernanceRoleTx:()=>Le,buildStellarProposeMigrateControllerTx:()=>Re,buildStellarProposeRemoveAssetFromEModeTx:()=>Se,buildStellarProposeRemoveEModeCategoryTx:()=>me,buildStellarProposeRevokeBlendPoolTx:()=>we,buildStellarProposeRevokeGovernanceRoleTx:()=>Ne,buildStellarProposeRevokeTokenTx:()=>ve,buildStellarProposeSetAccumulatorTx:()=>le,buildStellarProposeSetAggregatorTx:()=>pe,buildStellarProposeSetMinBorrowCollatTx:()=>fe,buildStellarProposeSetPoolTemplateTx:()=>de,buildStellarProposeSetPositionLimitsTx:()=>ye,buildStellarProposeTransferCtrlOwnershipTx:()=>Oe,buildStellarProposeTransferGovOwnTx:()=>De,buildStellarProposeUpdateDelayTx:()=>Be,buildStellarProposeUpdatePoolCapsTx:()=>qe,buildStellarProposeUpgradeControllerTx:()=>Me,buildStellarProposeUpgradePoolParamsTx:()=>xe,buildStellarProposeUpgradePoolTx:()=>ke,buildStellarRemoveAssetFromEModeTx:()=>Ct,buildStellarRemoveEModeCategoryTx:()=>Mt,buildStellarRenewAccountTx:()=>zt,buildStellarRepayBatchTx:()=>J,buildStellarRepayDebtWithCollateralTx:()=>it,buildStellarRepayTx:()=>Y,buildStellarRevokeRoleTx:()=>Tt,buildStellarRevokeTokenTx:()=>Bt,buildStellarSetAccumulatorTx:()=>At,buildStellarSetAggregatorTx:()=>wt,buildStellarSetLiquidityPoolTemplateTx:()=>xt,buildStellarSetPositionLimitsTx:()=>kt,buildStellarSupplyBatchTx:()=>H,buildStellarSupplyTx:()=>W,buildStellarSwapCollateralTx:()=>ut,buildStellarSwapDebtTx:()=>nt,buildStellarTransferOwnershipTx:()=>vt,buildStellarUnpauseTx:()=>qt,buildStellarUpdateAccountThresholdTx:()=>Wt,buildStellarUpdateIndexesTx:()=>$t,buildStellarUpdatePoolCapsTx:()=>It,buildStellarUpgradeControllerTx:()=>mt,buildStellarUpgradeLiquidityPoolParamsTx:()=>jt,buildStellarUpgradeLiquidityPoolTx:()=>Vt,buildStellarWithdrawBatchTx:()=>Q,buildStellarWithdrawTx:()=>K,buildTx:()=>X,decodeStellarLendingEvent:()=>bo,encodeAssetConfigRaw:()=>lt,encodeInterestRateModel:()=>st,encodeMarketOracleConfigInput:()=>bt,encodeMarketParamsRaw:()=>pt,encodeOracleSourceConfigInput:()=>ft,encodePositionLimits:()=>dt,encodeStrategyPayloadToRouteXdr:()=>Eo,extractEventOrder:()=>qo,getStellarAggregatorQuote:()=>wo,getStellarAggregatorRouter:()=>v,getStellarGovernance:()=>h,getStellarLendingController:()=>T,getStellarQuoteTokens:()=>Ao,isValidCollectionTicker:()=>s,isValidNftIdentifier:()=>p,mapQuoteResponseToAggregatorSwap:()=>Oo,mapQuoteResponseToStrategyPayload:()=>Mo,mapQuoteResponseToStrategySwap:()=>Ro,mapStellarPositionActivityType:()=>To,prepareStellarBuiltTx:()=>Bo,prepareStellarTxXdr:()=>Uo,stellarLendingDispatchKey:()=>Fe,syntheticEventOrder:()=>So,tagStellarInvokedContractError:()=>Co,toBase64Xdr:()=>He,toStellarPositionMode:()=>Lo});const o="https://api.xoxno.com",r="erd1qqqqqqqqqqqqqpgq705fxpfrjne0tl3ece0rrspykq88mynn4kxs2cg43s",n="erd1qqqqqqqqqqqqqpgqd9rvv2n378e27jcts8vfwynpx0gfl5ufz6hqhfy0u0",u="erd1qqqqqqqqqqqqqpgq8xwzu82v8ex3h4ayl5lsvxqxnhecpwyvwe0sf2qj4e";var i;!function(t){t.MAINNET="1",t.DEVNET="D"}(i||(i={}));class a{apiUrl;chain;init;config;constructor({chain:t=i.MAINNET,apiUrl:e=o,...a}={}){this.apiUrl=e??{[i.MAINNET]:o,[i.DEVNET]:"https://devnet-api.xoxno.com"}[t],this.chain=t,this.init=a,this.config=t==i.MAINNET?{mediaUrl:"https://media.xoxno.com",gatewayUrl:"https://gateway.xoxno.com",XO_SC:"erd1qqqqqqqqqqqqqpgq6wegs2xkypfpync8mn2sa5cmpqjlvrhwz5nqgepyg8",FM_SC:r,DR_SC:n,KG_SC:u,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:r,DR_SC:n,KG_SC:u,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:l,method:d="GET",...c}=o,y=l?.Authorization,f="Bearer undefined"===y?void 0:y,b={...l,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:_,...q}=r??{},{revalidate:S,...T}=a??{},v="GET"!==d||f?void 0:S??_,h="GET"!==d||f||v?void 0:s??n,w={...i,...c,method:d,...Object.keys(b).length?{headers:b}:{},cache:h,next:{...q,...T,revalidate:v}};(p??u)&&console.debug("SDK fetch: ",g,w);const A=await fetch(g,w).catch((t=>{if(t instanceof Error&&!t.message.match(/^http(s?):\/\//))throw Object.assign(new Error(`${g}: ${t.message}`),{cause:t});throw t})),x=await A.text();if(!A.ok){let t;try{t=JSON.parse(x)}catch{t={message:x}}const e=[g,A.status,A.statusText,t.message].filter(Boolean).join(";;");throw new Error(e)}try{return JSON.parse(x)}catch{return x}}}const s=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},p=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 l extends Error{constructor(t){super(`Invalid collection ticker: ${t}`)}}class d extends Error{constructor(t){super(`Invalid address: ${t}`)}}Error,Error;const c=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)),y={"/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/stats/history":{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"}},"/user/blend/:address":{input:{},output:{}},"/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:{}}}},f=["PATCH","POST","DELETE","PUT"],b={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},m={mainnet:process.env.STELLAR_AGGREGATOR_ROUTER_MAINNET??"",testnet:process.env.STELLAR_AGGREGATOR_ROUTER_TESTNET??""},g={mainnet:process.env.STELLAR_GOVERNANCE_MAINNET??"",testnet:process.env.STELLAR_GOVERNANCE_TESTNET??""},_={mainnet:"https://soroban-rpc.stellar.org",testnet:"https://soroban-testnet.stellar.org"},q={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"},S={mainnet:"Public Global Stellar Network ; September 2015",testnet:"Test SDF Network ; September 2015"};function T(t){const e=b[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 v(t){const e=m[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 h(t){const e=g[t];if(!e)throw new Error(`Stellar governance address not configured for network "${t}". Set STELLAR_GOVERNANCE_${t.toUpperCase()} env var.`);return e}const w=require("@stellar/stellar-sdk"),A=["Soroswap","Aquarius","Phoenix","Sushi","CometDex"],x=t=>new w.Address(t).toScVal(),E=t=>new w.ScInt(t).toI128(),k=t=>w.xdr.ScVal.scvU32(t),P=t=>new w.ScInt("string"==typeof t?t:t.toString()).toU64(),M=t=>w.xdr.ScVal.scvBool(t),R=t=>w.xdr.ScVal.scvString(t),O=t=>w.xdr.ScVal.scvSymbol(t),I=()=>w.xdr.ScVal.scvVoid(),C=t=>w.xdr.ScVal.scvVec(t),U=(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 w.xdr.ScVal.scvBytes(r)},B=(t,e)=>null==t?I():e(t),L=(t,e)=>w.xdr.ScVal.scvVec([x(t),E(e)]),N=t=>w.xdr.ScVal.scvVec(t.map((t=>L(t.token,t.amount)))),D=t=>{const e=Object.keys(t).sort().map((e=>new w.xdr.ScMapEntry({key:O(e),val:t[e]})));return w.xdr.ScVal.scvMap(e)},$=t=>{const e=t.paths.map((t=>{const e=t.hops.map((t=>{return D({amount_out:E(t.amountOut),pool:x(t.pool),token_in:x(t.tokenIn),token_out:x(t.tokenOut),venue:(e=t.venue,w.xdr.ScVal.scvVec([O(e)]))});var e}));return D({hops:w.xdr.ScVal.scvVec(e),split_ppm:k(t.splitPpm)})}));return D({paths:w.xdr.ScVal.scvVec(e),referral_id:P(t.referralId??0),token_in:x(t.tokenIn),token_out:x(t.tokenOut),total_min_out:E(t.totalMinOut)})},z=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 w.xdr.ScVal.scvBytes(e)},G=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},j=t=>{if("string"==typeof t)return z(G(t));if(t instanceof Uint8Array)return z(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?z(G(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?z(G(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?z(G(t.bytes)):z(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||!A.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),w.xdr.ScVal.scvBytes(Buffer.from($(e).toXDR("base64"),"base64")));var e,o;throw new Error("Stellar builder: `steps` must be opaque strategy bytes (`routeXdr`, base64/hex string, or Uint8Array)")},V=t=>{if("string"==typeof t)return(t=>{const e=t.startsWith("0x")?t.slice(2):t,o=Buffer.from(e,"hex");return w.xdr.ScVal.scvBytes(o)})(t);if(t instanceof Uint8Array)return w.xdr.ScVal.scvBytes(Buffer.from(t));throw new Error("Stellar builder: `data` must be a hex string or Uint8Array (Soroban Bytes payload)")};function X(t,e,o){const r=t.controllerAddress??T(t.network),n=new w.Contract(r),u=new w.Account(t.caller,t.sourceSequence);return{xdr:new w.TransactionBuilder(u,{fee:t.fee??w.BASE_FEE,networkPassphrase:S[t.network]}).addOperation(n.call(e,...o)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function H(t,e){const o=e.accountNonce??0,r=e.eModeCategory??0,n=N([...e.assets]);return X(t,"supply",[x(t.caller),P(o),k(r),n])}function W(t,e){return H(t,{accountNonce:e.accountNonce,eModeCategory:e.eModeCategory,assets:[{token:e.token,amount:e.amount}]})}function F(t,e){const o=N([...e.borrows]);return X(t,"borrow",[x(t.caller),P(e.accountNonce),o])}function Z(t,e){return F(t,{accountNonce:e.accountNonce,borrows:[{token:e.token,amount:e.amount}]})}function Q(t,e){const o=N([...e.withdrawals]);return X(t,"withdraw",[x(t.caller),P(e.accountNonce),o,B(e.to,x)])}function K(t,e){return Q(t,{accountNonce:e.accountNonce,withdrawals:[{token:e.token,amount:e.amount}]})}function J(t,e){const o=N([...e.payments]);return X(t,"repay",[x(t.caller),P(e.accountNonce),o])}function Y(t,e){return J(t,{accountNonce:e.accountNonce,payments:[{token:e.token,amount:e.amount}]})}function tt(t,e){const o=N(e.debtPayments.map((t=>({token:t.token,amount:t.amount}))));return X(t,"liquidate",[x(t.caller),P(e.accountNonce),o])}function et(t,e){return X(t,"flash_loan",[x(t.caller),x(e.asset),E(e.amount),x(e.receiver),V(e.data)])}function ot(t,e){return X(t,"migrate_from_blend",[x(t.caller),P(e.accountId),k(e.eModeCategory),x(e.blendPool),C(e.collateralTokens.map(x)),C(e.supplyTokens.map(x)),N(e.debtCaps.map((t=>({token:t.token,amount:t.cap}))))])}function rt(t,e){const o=e.accountNonce??0;return X(t,"multiply",[x(t.caller),P(o),k(e.eModeCategory),x(e.collateralToken),E(e.debtToFlashLoan),x(e.debtToken),k(e.mode),j(e.steps),B(e.initialPayment,(t=>L(t.token,t.amount))),B(e.convertSwap,j)])}function nt(t,e){return X(t,"swap_debt",[x(t.caller),P(e.accountNonce),x(e.existingDebtToken),E(e.newDebtAmount),x(e.newDebtToken),j(e.steps)])}function ut(t,e){return X(t,"swap_collateral",[x(t.caller),P(e.accountNonce),x(e.currentCollateral),E(e.fromAmount),x(e.newCollateral),j(e.steps)])}function it(t,e){return X(t,"repay_debt_with_collateral",[x(t.caller),P(e.accountNonce),x(e.collateralToken),E(e.collateralAmount),x(e.debtToken),j(e.steps),M(e.closePosition)])}const at={Single:0,PrimaryWithAnchor:1},st=t=>D({base_borrow_rate_ray:E(t.baseBorrowRateRay),max_borrow_rate_ray:E(t.maxBorrowRateRay),max_utilization_ray:E(t.maxUtilizationRay),mid_utilization_ray:E(t.midUtilizationRay),optimal_utilization_ray:E(t.optimalUtilizationRay),reserve_factor_bps:k(t.reserveFactorBps),slope1_ray:E(t.slope1Ray),slope2_ray:E(t.slope2Ray),slope3_ray:E(t.slope3Ray)}),pt=t=>D({asset_decimals:k(t.assetDecimals),asset_id:x(t.assetId),base_borrow_rate_ray:E(t.baseBorrowRateRay),borrow_cap:E(t.borrowCap),max_borrow_rate_ray:E(t.maxBorrowRateRay),max_utilization_ray:E(t.maxUtilizationRay),mid_utilization_ray:E(t.midUtilizationRay),optimal_utilization_ray:E(t.optimalUtilizationRay),reserve_factor_bps:k(t.reserveFactorBps),slope1_ray:E(t.slope1Ray),slope2_ray:E(t.slope2Ray),slope3_ray:E(t.slope3Ray),supply_cap:E(t.supplyCap)}),lt=t=>D({asset_decimals:k(0),e_mode_categories:C(t.eModeCategories.map((t=>k(t)))),flashloan_fee_bps:k(t.flashloanFeeBps),is_borrowable:M(t.isBorrowable),is_collateralizable:M(t.isCollateralizable),is_flashloanable:M(t.isFlashloanable),liquidation_bonus_bps:k(t.liquidationBonusBps),liquidation_fees_bps:k(t.liquidationFeesBps),liquidation_threshold_bps:k(t.liquidationThresholdBps),loan_to_value_bps:k(t.loanToValueBps)}),dt=t=>D({max_borrow_positions:k(t.maxBorrowPositions),max_supply_positions:k(t.maxSupplyPositions)}),ct=t=>{const e=t.kind;switch(e){case"Stellar":return C([O("Stellar"),x(t.value)]);case"Symbol":return C([O("Symbol"),O(t.value)]);case"String":return C([O("String"),R(t.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${e}"`)}},yt=(t,e)=>{if("Twap"===t){if("number"!=typeof e)throw new Error("Stellar builder: oracle source with Twap read mode requires `twapRecords`");return C([O("Twap"),k(e)])}return C([O("Spot")])},ft=t=>{const e=t.provider;if("ReflectorSep40"===e){if(!t.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return C([O("Reflector"),D({asset:ct(t.asset),contract:x(t.contract),read_mode:yt(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([O("RedStone"),D({contract:x(t.contract),feed_id:R(t.feedId),max_stale_seconds:P(t.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${e}"`)},bt=t=>{const e=at[t.strategy];if(void 0===e)throw new Error(`Stellar builder: unknown oracle strategy "${t.strategy}"`);return D({anchor:(o=t.anchor,C(null==o?[O("None")]:[O("Some"),ft(o)])),first_tolerance_bps:k(t.firstToleranceBps),last_tolerance_bps:k(t.lastToleranceBps),max_price_stale_seconds:P(t.maxPriceStaleSeconds),max_sanity_price_wad:E(t.maxSanityPriceWad),min_sanity_price_wad:E(t.minSanityPriceWad),primary:ft(t.primary),strategy:k(e)});var o};function mt(t,e){return X(t,"upgrade",[U(e.wasmHash)])}function gt(t,e){return X(t,"migrate",[k(e.newVersion)])}function _t(t){return X(t,"pause",[])}function qt(t){return X(t,"unpause",[])}function St(t,e){return X(t,"grant_role",[x(e.account),O(e.role)])}function Tt(t,e){return X(t,"revoke_role",[x(e.account),O(e.role)])}function vt(t,e){return X(t,"transfer_ownership",[x(e.newOwner),k(e.liveUntilLedger)])}function ht(t){return X(t,"accept_ownership",[])}function wt(t,e){return X(t,"set_aggregator",[x(e.aggregator)])}function At(t,e){return X(t,"set_accumulator",[x(e.accumulator)])}function xt(t,e){return X(t,"set_liquidity_pool_template",[U(e.wasmHash)])}function Et(t,e){return X(t,"edit_asset_config",[x(e.asset),lt(e.config)])}function kt(t,e){return X(t,"set_position_limits",[dt(e)])}function Pt(t){return X(t,"add_e_mode_category",[])}function Mt(t,e){return X(t,"remove_e_mode_category",[k(e.id)])}function Rt(t,e){return X(t,"add_asset_to_e_mode_category",[x(e.asset),k(e.categoryId),M(e.canCollateral),M(e.canBorrow),k(e.ltv),k(e.threshold),k(e.bonus),E(e.supplyCap),E(e.borrowCap)])}function Ot(t,e){return X(t,"edit_asset_in_e_mode_category",[x(e.asset),k(e.categoryId),M(e.canCollateral),M(e.canBorrow),k(e.ltv),k(e.threshold),k(e.bonus),E(e.supplyCap),E(e.borrowCap)])}function It(t,e){return X(t,"update_pool_caps",[x(e.asset),E(e.supplyCap),E(e.borrowCap)])}function Ct(t,e){return X(t,"remove_asset_from_e_mode",[x(e.asset),k(e.categoryId)])}function Ut(t,e){return X(t,"approve_token",[x(e.token)])}function Bt(t,e){return X(t,"revoke_token",[x(e.token)])}function Lt(t,e){return X(t,"configure_market_oracle",[x(t.caller),x(e.asset),bt(e.config)])}function Nt(t,e){return X(t,"edit_oracle_tolerance",[x(t.caller),x(e.asset),k(e.firstTolerance),k(e.lastTolerance)])}function Dt(t,e){return X(t,"disable_token_oracle",[x(t.caller),x(e.asset)])}function $t(t,e){return X(t,"update_indexes",[x(t.caller),C(e.assets.map((t=>x(t))))])}function zt(t,e){return X(t,"renew_account",[x(t.caller),P(e.accountNonce)])}function Gt(t,e){return X(t,"create_liquidity_pool",[x(e.asset),pt(e.params),lt(e.config)])}function jt(t,e){return X(t,"upgrade_liquidity_pool_params",[x(e.asset),st(e.params)])}function Vt(t,e){return X(t,"upgrade_liquidity_pool",[x(e.asset),U(e.wasmHash)])}function Xt(t,e){return X(t,"claim_revenue",[x(t.caller),C(e.assets.map((t=>x(t))))])}function Ht(t,e){return X(t,"add_rewards",[x(t.caller),C(e.rewards.map((t=>C([x(t.token),E(t.amount)]))))])}function Wt(t,e){return X(t,"update_account_threshold",[x(t.caller),x(e.asset),M(e.hasRisks),C(e.accountNonces.map((t=>P(t))))])}const Ft="00".repeat(32),Zt=t=>{if("string"==typeof t)return U(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 w.xdr.ScVal.scvBytes(e)},Qt=(t,...e)=>C([O(t),...e]),Kt=t=>D({asset:x(t.asset),category_id:k(t.categoryId),can_collateral:M(t.canCollateral),can_borrow:M(t.canBorrow),ltv:k(t.ltv),threshold:k(t.threshold),bonus:k(t.bonus),supply_cap:E(t.supplyCap),borrow_cap:E(t.borrowCap)}),Jt=t=>D({asset:x(t.asset),supply_cap:E(t.supplyCap),borrow_cap:E(t.borrowCap)}),Yt=t=>D({asset:x(t.asset),category_id:k(t.categoryId)}),te=t=>D({asset:x(t.asset),params:pt(t.params),config:lt(t.config)}),ee=t=>D({asset:x(t.asset),params:st(t.params)}),oe=t=>D({new_owner:x(t.newOwner),live_until_ledger:k(t.liveUntilLedger)}),re=t=>D({asset:x(t.asset),cfg:bt(t.config)}),ne=t=>D({asset:x(t.asset),first_tolerance:k(t.firstTolerance),last_tolerance:k(t.lastTolerance)}),ue=t=>D({account:x(t.account),role:O(t.role)});function ie(t,e,o){const r=t.governanceAddress??h(t.network),n=new w.Contract(r),u=new w.Account(t.caller,t.sourceSequence);return{xdr:new w.TransactionBuilder(u,{fee:t.fee??w.BASE_FEE,networkPassphrase:S[t.network]}).addOperation(n.call(e,...o)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}const ae=(t,e,o)=>ie(t,"propose",[x(t.caller),e,Zt(o)]),se=(t,e,o)=>ie(t,"execute_self",[I(),e,Zt(o)]);function pe(t,e,o){return ae(t,Qt("SetAggregator",x(e.aggregator)),o)}function le(t,e,o){return ae(t,Qt("SetAccumulator",x(e.accumulator)),o)}function de(t,e,o){return ae(t,Qt("SetLiquidityPoolTemplate",U(e.wasmHash)),o)}function ce(t,e,o){return ae(t,Qt("EditAssetConfig",x(e.asset),lt(e.config)),o)}function ye(t,e,o){return ae(t,Qt("SetPositionLimits",dt(e)),o)}function fe(t,e,o){return ae(t,Qt("SetMinBorrowCollateralUsd",E(e.floorWad)),o)}function be(t,e){return ae(t,Qt("AddEModeCategory"),e)}function me(t,e,o){return ae(t,Qt("RemoveEModeCategory",k(e.id)),o)}function ge(t,e,o){return ae(t,Qt("AddAssetToEModeCategory",Kt(e)),o)}function _e(t,e,o){return ae(t,Qt("EditAssetInEModeCategory",Kt(e)),o)}function qe(t,e,o){return ae(t,Qt("UpdatePoolCaps",Jt(e)),o)}function Se(t,e,o){return ae(t,Qt("RemoveAssetFromEMode",Yt(e)),o)}function Te(t,e,o){return ae(t,Qt("ApproveToken",x(e.token)),o)}function ve(t,e,o){return ae(t,Qt("RevokeToken",x(e.token)),o)}function he(t,e,o){return ae(t,Qt("ApproveBlendPool",x(e.pool)),o)}function we(t,e,o){return ae(t,Qt("RevokeBlendPool",x(e.pool)),o)}function Ae(t,e,o){return ae(t,Qt("CreateLiquidityPool",te(e)),o)}function xe(t,e,o){return ae(t,Qt("UpgradeLiquidityPoolParams",ee(e)),o)}function Ee(t,e){return ae(t,Qt("DeployPool"),e)}function ke(t,e,o){return ae(t,Qt("UpgradePool",U(e.wasmHash)),o)}function Pe(t,e,o){return ae(t,Qt("DisableTokenOracle",x(e.asset)),o)}function Me(t,e,o){return ae(t,Qt("UpgradeController",U(e.wasmHash)),o)}function Re(t,e,o){return ae(t,Qt("MigrateController",k(e.newVersion)),o)}function Oe(t,e,o){return ae(t,Qt("TransferCtrlOwnership",oe(e)),o)}function Ie(t,e,o){return ae(t,Qt("ConfigureMarketOracle",re(e)),o)}function Ce(t,e,o){return ae(t,Qt("EditOracleTolerance",ne(e)),o)}function Ue(t,e,o){return ae(t,Qt("UpgradeGov",U(e.wasmHash)),o)}function Be(t,e,o){return ae(t,Qt("UpdateGovDelay",k(e.newDelay)),o)}function Le(t,e,o){return ae(t,Qt("GrantGovRole",ue(e)),o)}function Ne(t,e,o){return ae(t,Qt("RevokeGovRole",ue(e)),o)}function De(t,e,o){return ae(t,Qt("TransferGovOwnership",oe(e)),o)}function $e(t,e){const o=C(e.argsXdr.map((t=>w.xdr.ScVal.fromXDR(t,"base64")))),r=Zt(e.predecessor??Ft);return ie(t,"execute",[I(),x(e.target),O(e.functionName),o,r,Zt(e.salt)])}function ze(t,e,o){return se(t,Qt("UpgradeGov",U(e.wasmHash)),o)}function Ge(t,e,o){return se(t,Qt("UpdateGovDelay",k(e.newDelay)),o)}function je(t,e,o){return se(t,Qt("GrantGovRole",ue(e)),o)}function Ve(t,e,o){return se(t,Qt("RevokeGovRole",ue(e)),o)}function Xe(t,e,o){return se(t,Qt("TransferGovOwnership",oe(e)),o)}const He=t=>t.toXDR("base64"),We=t=>w.xdr.ScVal.fromXDR(t,"base64"),Fe=t=>t.map((t=>String((0,w.scValToNative)(We(t))))).join(":"),Ze=t=>"bigint"==typeof t||"number"==typeof t?t.toString():String(t),Qe=t=>Number(t),Ke=t=>String(t),Je=t=>null==t?void 0:Ze(t),Ye=t=>null==t?void 0:Ke(t),to=t=>t instanceof Uint8Array?Buffer.from(t).toString("hex"):Buffer.isBuffer(t)?t.toString("hex"):String(t),eo=["None","Multiply","Long","Short"],oo=["Single","PrimaryWithAnchor"],ro=["ReflectorSep40","RedStonePriceFeed"],no=["Spot","Twap"],uo=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],io=t=>Array.isArray(t)?t:[],ao=t=>({loanToValueBps:Qe(t.loan_to_value_bps),liquidationThresholdBps:Qe(t.liquidation_threshold_bps),liquidationBonusBps:Qe(t.liquidation_bonus_bps),liquidationFeesBps:Qe(t.liquidation_fees_bps),isCollateralizable:Boolean(t.is_collateralizable),isBorrowable:Boolean(t.is_borrowable),isFlashloanable:Boolean(t.is_flashloanable),flashloanFeeBps:Qe(t.flashloan_fee_bps),eModeCategories:(t.e_mode_categories??[]).map(Qe)}),so=(t,e)=>{const o="Borrow"===e;return{action:(r=t[0],uo[Qe(r)]??Ze(r)),positionType:e,asset:Ke(t[1]),scaledAmountRay:Ze(t[2]),indexRay:Ze(t[3]),amount:Ze(t[4]),liquidationThresholdBps:o?void 0:Qe(t[5]),liquidationBonusBps:o?void 0:Qe(t[6]),loanToValueBps:o?void 0:Qe(t[7])};var r},po=t=>{return{owner:Ke(t[0]),eModeCategoryId:Qe(t[1]),mode:(e=t[2],eo[Qe(e)]??"None")};var e},lo=(t,e)=>{const o=no[Qe(t[`${e}_read_mode`])]??"Spot",r=t[`${e}_asset`],n=t[`${e}_symbol`],u=null!=r?{kind:"Stellar",value:Ke(r)}:null!=n?{kind:"Symbol",value:Ke(n)}:void 0;return{provider:ro[Qe(t[`${e}_provider`])]??"ReflectorSep40",contractAddress:Ke(t[`${e}_contract`]),asset:u,feedId:Ye(t[`${e}_feed_id`]),readMode:o,twapRecords:"Twap"===o?Qe(t[`${e}_twap_records`]):void 0,decimals:Qe(t[`${e}_decimals`]),resolutionSeconds:Qe(t[`${e}_resolution_seconds`]),maxStaleSeconds:Qe(t[`${e}_max_stale_seconds`])}},co=t=>{const e=null!==t.anchor_provider&&void 0!==t.anchor_provider;return{baseTokenId:Ke(t.base_token_id),quoteTokenId:Ke(t.quote_token_id),tolerance:{firstUpperRatio:Qe(t.first_upper_ratio_bps??t.tolerance?.first_upper_ratio_bps),firstLowerRatio:Qe(t.first_lower_ratio_bps??t.tolerance?.first_lower_ratio_bps),lastUpperRatio:Qe(t.last_upper_ratio_bps??t.tolerance?.last_upper_ratio_bps),lastLowerRatio:Qe(t.last_lower_ratio_bps??t.tolerance?.last_lower_ratio_bps)},assetDecimals:Qe(t.asset_decimals),maxPriceStaleSeconds:Qe(t.max_price_stale_seconds),strategy:oo[Qe(t.strategy)]??"Single",primary:lo(t,"primary"),anchor:e?lo(t,"anchor"):void 0,primaryQuoteToken:Ye(t.primary_quote_token),anchorQuoteToken:Ye(t.anchor_quote_token),minSanityPriceWad:Je(t.min_sanity_price_wad),maxSanityPriceWad:Je(t.max_sanity_price_wad)}},yo={"market:create":t=>({topic:"market:create",data:{baseAsset:Ke(t.base_asset),maxBorrowRate:Ze(t.max_borrow_rate),baseBorrowRate:Ze(t.base_borrow_rate),slope1:Ze(t.slope1),slope2:Ze(t.slope2),slope3:Ze(t.slope3),midUtilization:Ze(t.mid_utilization),optimalUtilization:Ze(t.optimal_utilization),maxUtilization:Je(t.max_utilization),reserveFactor:Qe(t.reserve_factor),marketAddress:Ke(t.market_address),config:ao(t.config)}}),"market:params_update":t=>({topic:"market:params_update",data:{asset:Ke(t.asset),maxBorrowRateRay:Ze(t.max_borrow_rate_ray),baseBorrowRateRay:Ze(t.base_borrow_rate_ray),slope1Ray:Ze(t.slope1_ray),slope2Ray:Ze(t.slope2_ray),slope3Ray:Ze(t.slope3_ray),midUtilizationRay:Ze(t.mid_utilization_ray),optimalUtilizationRay:Ze(t.optimal_utilization_ray),maxUtilizationRay:Je(t.max_utilization_ray),reserveFactorBps:Qe(t.reserve_factor_bps)}}),"market:batch_state_update":t=>({topic:"market:batch_state_update",data:{updates:io(t).map((t=>{return e=io(t),{asset:Ke(e[0]),timestamp:Qe(e[1]),supplyIndexRay:Ze(e[2]),borrowIndexRay:Ze(e[3]),reservesRay:Ze(e[4]),suppliedRay:Ze(e[5]),borrowedRay:Ze(e[6]),revenueRay:Ze(e[7]),assetPriceWad:Je(e[8])};var e}))}}),"market:batch_params_update":t=>({topic:"market:batch_params_update",data:{updates:io(t).map((t=>{const e=t;return{asset:Ke(e.asset),params:(o=e.params,{maxBorrowRateRay:Ze(o.max_borrow_rate_ray),baseBorrowRateRay:Ze(o.base_borrow_rate_ray),slope1Ray:Ze(o.slope1_ray),slope2Ray:Ze(o.slope2_ray),slope3Ray:Ze(o.slope3_ray),midUtilizationRay:Ze(o.mid_utilization_ray),optimalUtilizationRay:Ze(o.optimal_utilization_ray),maxUtilizationRay:Je(o.max_utilization_ray),reserveFactorBps:Qe(o.reserve_factor_bps),supplyCap:Ze(o.supply_cap),borrowCap:Ze(o.borrow_cap),assetId:Ye(o.asset_id),assetDecimals:void 0===o.asset_decimals?void 0:Qe(o.asset_decimals)})};var o}))}}),"position:batch_update":t=>{const e=io(t);return{topic:"position:batch_update",data:{accountId:Ze(e[0]),accountAttributes:po(io(e[1])),updates:[...io(e[2]).map((t=>so(io(t),"Deposit"))),...io(e[3]).map((t=>so(io(t),"Borrow")))]}}},"position:flash_loan":t=>({topic:"position:flash_loan",data:{asset:Ke(t.asset),receiver:Ke(t.receiver),caller:Ke(t.caller),amount:Ze(t.amount),fee:Ze(t.fee)}}),"config:asset":t=>({topic:"config:asset",data:{asset:Ke(t.asset),config:ao(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:Ke(t.asset),oracle:co(t.oracle)}}),"config:emode_category":t=>({topic:"config:emode_category",data:{category:{categoryId:Qe(t.category.category_id),isDeprecated:Boolean(t.category.is_deprecated)}}}),"config:emode_asset":t=>({topic:"config:emode_asset",data:{asset:Ke(t.asset),config:{isCollateralizable:Boolean(t.config.is_collateralizable),isBorrowable:Boolean(t.config.is_borrowable),loanToValueBps:Qe(t.config.loan_to_value_bps),liquidationThresholdBps:Qe(t.config.liquidation_threshold_bps),liquidationBonusBps:Qe(t.config.liquidation_bonus_bps),supplyCap:Ze(t.config.supply_cap),borrowCap:Ze(t.config.borrow_cap)},categoryId:Qe(t.category_id)}}),"config:remove_emode_asset":t=>({topic:"config:remove_emode_asset",data:{asset:Ke(t.asset),categoryId:Qe(t.category_id)}}),"debt:bad_debt":t=>({topic:"debt:bad_debt",data:{accountId:Ze(t.account_id),totalBorrowUsdWad:Ze(t.total_borrow_usd_wad),totalCollateralUsdWad:Ze(t.total_collateral_usd_wad)}}),"strategy:initial_payment":t=>({topic:"strategy:initial_payment",data:{token:Ke(t.token),amount:Ze(t.amount),usdValueWad:Ze(t.usd_value_wad),accountId:Ze(t.account_id)}}),"strategy:fee":t=>({topic:"strategy:fee",data:{asset:Ke(t.asset),amount:Ze(t.amount),fee:Ze(t.fee),amountSent:Ze(t.amount_sent)}}),"config:approve_token":t=>({topic:"config:approve_token",data:{wasmHash:to(t.wasm_hash),approved:Boolean(t.approved)}}),"config:aggregator":t=>({topic:"config:aggregator",data:{aggregator:Ke(t.aggregator)}}),"config:accumulator":t=>({topic:"config:accumulator",data:{accumulator:Ke(t.accumulator)}}),"config:pool_template":t=>({topic:"config:pool_template",data:{wasmHash:to(t.wasm_hash)}}),"config:position_limits":t=>({topic:"config:position_limits",data:{maxSupplyPositions:Qe(t.max_supply_positions),maxBorrowPositions:Qe(t.max_borrow_positions)}}),"config:oracle_disabled":t=>({topic:"config:oracle_disabled",data:{asset:Ke(t.asset)}}),"oracle:twap_degraded":t=>({topic:"oracle:twap_degraded",data:{oracle:Ke(t.oracle),reasonCode:Qe(t.reason_code)}})},fo=Object.freeze(Object.keys(yo));function bo(t,e){const o=Fe(t),r=yo[o];return r?r((0,w.scValToNative)(We(e))):null}const mo="XLENDXLM-a7c9f3",go=1e4;function _o(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${mo}-${o}`}function qo(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function So(t,e=0){return t*go+e}function To(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const vo=(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()},ho=t=>t.baseUrl??q[t.network];async function wo(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=vo(ho(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 Ao(t){const e=vo(ho(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 xo=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,Eo=t=>$(t).toXDR("base64");function ko(t,e){const o=t.routerAddress??v(t.network),r=new w.Contract(o),n=new w.Account(t.caller,t.sourceSequence),u=j(xo(e,t.referralId));return{xdr:new w.TransactionBuilder(n,{fee:t.fee??w.BASE_FEE,networkPassphrase:S[t.network]}).addOperation(r.call("execute_strategy",x(t.caller),E(t.totalIn),u)).setTimeout(t.timeoutSeconds??300).build().toXDR()}}function Po(t,e){return ko(t,e)}function Mo(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(Io),splitPpm:t.splitPpm}))):[{hops:t.hops.map(Io),splitPpm:1e6}],referralId:e.referralId??0,tokenIn:t.from,tokenOut:t.to,totalMinOut:t.amountOutMin}}function Ro(t,e={}){const o=t;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Mo(t,e)}const Oo=Mo,Io=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function Co(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function Uo(t,e,o){const r=w.TransactionBuilder.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw Co(o.invokedContractId,t);throw t}}async function Bo(t,e,o){return Uo(t,e.xdr,o)}function Lo(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 No(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 Do=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 $o(t){const e=new w.Account(t.caller,t.sourceSequence),o=new w.Contract(t.forwarderAddress).call("mint_and_forward",w.xdr.ScVal.scvBytes(Do(t.message)),w.xdr.ScVal.scvBytes(Do(t.attestation)));return{xdr:new w.TransactionBuilder(e,{fee:t.fee??"10000000",networkPassphrase:S[t.network]}).addOperation(o).setTimeout(t.timeoutSeconds??120).build().toXDR()}}const zo=t=>t.replace(/-([a-z])/g,((t,e)=>e.toUpperCase())),Go=()=>({static:{},params:{},leaves:[]});function jo(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)))),p=/:address[^A-Z]/.test(t)||"address"in a,y=/:collection[^A-Z]/.test(t)||"collection"in a;if(p){const t=n.address;if(!c(t))throw new d(t)}if(y){const t=n.collection;if(Array.isArray(t)?t.some((t=>!s(t))):!s(t))throw new l(t)}const f=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:b,auth:m,method:g,headers:_,cache:q,next:S,debug:T,continuationToken:v,...h}=f,w=m?`Bearer ${m}`:void 0,A={..._,...w?{Authorization:w}:{},...v?{"X-Continuation-Token":String(v)}:{}},x={...S,tags:[...S?.tags??[],u]};return r.fetchWithTimeout(u,{method:g,params:h,body:b,headers:A,cache:q,debug:T,...x?{next:x}:{}})},p=(t={})=>a(t);for(const t of Object.keys(i))f.includes(t)&&(p[t]=e=>a({...e,method:e.method??t.toUpperCase()}));return p}function Vo(t){const e=function(){const t=Go();for(const[e,o]of Object.entries(y)){const r=e.split("/").filter(Boolean);let n=t;for(const t of r)if(t.startsWith(":")){const e=zo(t.slice(1));n=n.params[e]||=Go()}else{const e=zo(t);n=n.static[e]||=Go()}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=jo(o,n,r,t)}else{a={};for(const{rawPath:o,def:n}of e.leaves)a[zo(o.split("/").pop().replace(/^:/,""))]=jo(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,{})}module.exports=e})();
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 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,...v}=a??{},w="GET"!==d||f?void 0:h??b,A="GET"!==d||f||w?void 0:s??n,S={...i,...l,method:d,...Object.keys(_).length?{headers:_}:{},cache:A,next:{...q,...v,revalidate:w}};(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 Object.assign(new Error(`${g}: ${t.message}`),{cause:t});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"}},"/user/blend/:address":{input:{},output:{}},"/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"],v={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},w={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=v[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=w[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),C=t=>new n("string"==typeof t?t:t.toString()).toU64(),B=t=>a.ScVal.scvBool(t),U=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)},X=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:C(t.referralId??0),token_in:O(t.tokenIn),token_out:O(t.tokenOut),total_min_out:I(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)},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 W(F(t));if(t instanceof Uint8Array)return W(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?W(F(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?W(F(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?W(F(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||!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(X(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),C(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),C(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),C(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),C(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),C(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){return Q(t,"migrate_from_blend",[O(t.caller),C(e.accountId),R(e.eModeCategory),O(e.blendPool),$(e.collateralTokens.map(O)),$(e.supplyTokens.map(O)),V(e.debtCaps.map((t=>({token:t.token,amount:t.cap}))))])}function st(t,e){const o=e.accountNonce??0;return Q(t,"multiply",[O(t.caller),C(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 pt(t,e){return Q(t,"swap_debt",[O(t.caller),C(e.accountNonce),O(e.existingDebtToken),I(e.newDebtAmount),O(e.newDebtToken),G(e.steps)])}function ct(t,e){return Q(t,"swap_collateral",[O(t.caller),C(e.accountNonce),O(e.currentCollateral),I(e.fromAmount),O(e.newCollateral),G(e.steps)])}function dt(t,e){return Q(t,"repay_debt_with_collateral",[O(t.caller),C(e.accountNonce),O(e.collateralToken),I(e.collateralAmount),O(e.debtToken),G(e.steps),B(e.closePosition)])}const lt={Single:0,PrimaryWithAnchor:1},yt=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)}),ft=t=>H({asset_decimals:R(t.assetDecimals),asset_id:O(t.assetId),base_borrow_rate_ray:I(t.baseBorrowRateRay),borrow_cap:I(t.borrowCap),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),supply_cap:I(t.supplyCap)}),_t=t=>H({asset_decimals:R(0),e_mode_categories:$(t.eModeCategories.map((t=>R(t)))),flashloan_fee_bps:R(t.flashloanFeeBps),is_borrowable:B(t.isBorrowable),is_collateralizable:B(t.isCollateralizable),is_flashloanable:B(t.isFlashloanable),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)}),mt=t=>H({max_borrow_positions:R(t.maxBorrowPositions),max_supply_positions:R(t.maxSupplyPositions)}),gt=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"),U(t.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${e}"`)}},bt=(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")])},qt=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:gt(t.asset),contract:O(t.contract),read_mode:bt(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:U(t.feedId),max_stale_seconds:C(t.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${e}"`)},ht=t=>{const e=lt[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"),qt(o)])),first_tolerance_bps:R(t.firstToleranceBps),last_tolerance_bps:R(t.lastToleranceBps),max_price_stale_seconds:C(t.maxPriceStaleSeconds),max_sanity_price_wad:I(t.maxSanityPriceWad),min_sanity_price_wad:I(t.minSanityPriceWad),primary:qt(t.primary),strategy:R(e)});var o};function vt(t,e){return Q(t,"upgrade",[z(e.wasmHash)])}function wt(t,e){return Q(t,"migrate",[R(e.newVersion)])}function At(t){return Q(t,"pause",[])}function St(t){return Q(t,"unpause",[])}function Tt(t,e){return Q(t,"grant_role",[O(e.account),N(e.role)])}function kt(t,e){return Q(t,"revoke_role",[O(e.account),N(e.role)])}function Mt(t,e){return Q(t,"transfer_ownership",[O(e.newOwner),R(e.liveUntilLedger)])}function xt(t){return Q(t,"accept_ownership",[])}function Et(t,e){return Q(t,"set_aggregator",[O(e.aggregator)])}function Pt(t,e){return Q(t,"set_accumulator",[O(e.accumulator)])}function Ot(t,e){return Q(t,"set_liquidity_pool_template",[z(e.wasmHash)])}function It(t,e){return Q(t,"edit_asset_config",[O(e.asset),_t(e.config)])}function Rt(t,e){return Q(t,"set_position_limits",[mt(e)])}function Ct(t){return Q(t,"add_e_mode_category",[])}function Bt(t,e){return Q(t,"remove_e_mode_category",[R(e.id)])}function Ut(t,e){return Q(t,"add_asset_to_e_mode_category",[O(e.asset),R(e.categoryId),B(e.canCollateral),B(e.canBorrow),R(e.ltv),R(e.threshold),R(e.bonus),I(e.supplyCap),I(e.borrowCap)])}function Nt(t,e){return Q(t,"edit_asset_in_e_mode_category",[O(e.asset),R(e.categoryId),B(e.canCollateral),B(e.canBorrow),R(e.ltv),R(e.threshold),R(e.bonus),I(e.supplyCap),I(e.borrowCap)])}function Lt(t,e){return Q(t,"update_pool_caps",[O(e.asset),I(e.supplyCap),I(e.borrowCap)])}function $t(t,e){return Q(t,"remove_asset_from_e_mode",[O(e.asset),R(e.categoryId)])}function zt(t,e){return Q(t,"approve_token",[O(e.token)])}function Dt(t,e){return Q(t,"revoke_token",[O(e.token)])}function jt(t,e){return Q(t,"configure_market_oracle",[O(t.caller),O(e.asset),ht(e.config)])}function Vt(t,e){return Q(t,"edit_oracle_tolerance",[O(t.caller),O(e.asset),R(e.firstTolerance),R(e.lastTolerance)])}function Ht(t,e){return Q(t,"disable_token_oracle",[O(t.caller),O(e.asset)])}function Xt(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),C(e.accountNonce)])}function Ft(t,e){return Q(t,"create_liquidity_pool",[O(e.asset),ft(e.params),_t(e.config)])}function Gt(t,e){return Q(t,"upgrade_liquidity_pool_params",[O(e.asset),yt(e.params)])}function Zt(t,e){return Q(t,"upgrade_liquidity_pool",[O(e.asset),z(e.wasmHash)])}function Qt(t,e){return Q(t,"claim_revenue",[O(t.caller),$(e.assets.map((t=>O(t))))])}function Jt(t,e){return Q(t,"add_rewards",[O(t.caller),$(e.rewards.map((t=>$([O(t.token),I(t.amount)]))))])}function Kt(t,e){return Q(t,"update_account_threshold",[O(t.caller),O(e.asset),B(e.hasRisks),$(e.accountNonces.map((t=>C(t))))])}const Yt="00".repeat(32),te=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 ee(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 oe=(t,e,o,r)=>ee(t,e,[O(t.caller),...o,te(r)]),re=(t,e,o,r)=>ee(t,e,[L(),...o,te(r)]);function ne(t,e,o){return oe(t,"propose_set_aggregator",[O(e.aggregator)],o)}function ue(t,e,o){return oe(t,"propose_set_accumulator",[O(e.accumulator)],o)}function ie(t,e,o){return oe(t,"propose_set_pool_template",[z(e.wasmHash)],o)}function ae(t,e,o){return oe(t,"propose_edit_asset_config",[O(e.asset),_t(e.config)],o)}function se(t,e,o){return oe(t,"propose_set_position_limits",[mt(e)],o)}function pe(t,e,o){return oe(t,"propose_set_min_borrow_collat",[I(e.floorWad)],o)}function ce(t,e){return oe(t,"propose_add_e_mode_category",[],e)}function de(t,e,o){return oe(t,"propose_remove_e_mode_category",[R(e.id)],o)}function le(t,e,o){return oe(t,"propose_add_asset_to_e_mode",[O(e.asset),R(e.categoryId),B(e.canCollateral),B(e.canBorrow),R(e.ltv),R(e.threshold),R(e.bonus),I(e.supplyCap),I(e.borrowCap)],o)}function ye(t,e,o){return oe(t,"propose_edit_asset_in_e_mode",[O(e.asset),R(e.categoryId),B(e.canCollateral),B(e.canBorrow),R(e.ltv),R(e.threshold),R(e.bonus),I(e.supplyCap),I(e.borrowCap)],o)}function fe(t,e,o){return oe(t,"propose_update_pool_caps",[O(e.asset),I(e.supplyCap),I(e.borrowCap)],o)}function _e(t,e,o){return oe(t,"propose_remove_asset_from_e_mode",[O(e.asset),R(e.categoryId)],o)}function me(t,e,o){return oe(t,"propose_approve_token",[O(e.token)],o)}function ge(t,e,o){return oe(t,"propose_revoke_token",[O(e.token)],o)}function be(t,e,o){return oe(t,"propose_create_liquidity_pool",[O(e.asset),ft(e.params),_t(e.config)],o)}function qe(t,e,o){return oe(t,"propose_upgrade_pool_params",[O(e.asset),yt(e.params)],o)}function he(t,e){return oe(t,"propose_deploy_pool",[],e)}function ve(t,e,o){return oe(t,"propose_upgrade_pool",[z(e.wasmHash)],o)}function we(t,e,o){return oe(t,"propose_grant_controller_role",[O(e.account),N(e.role)],o)}function Ae(t,e,o){return oe(t,"propose_revoke_controller_role",[O(e.account),N(e.role)],o)}function Se(t,e,o){return oe(t,"propose_upgrade_controller",[z(e.wasmHash)],o)}function Te(t,e,o){return oe(t,"propose_migrate_controller",[R(e.newVersion)],o)}function ke(t,e,o){return oe(t,"propose_transfer_ctrl_ownership",[O(e.newOwner),R(e.liveUntilLedger)],o)}function Me(t,e,o){return oe(t,"propose_configure_market_oracle",[O(e.asset),ht(e.config)],o)}function xe(t,e,o){return oe(t,"propose_edit_oracle_tolerance",[O(e.asset),R(e.firstTolerance),R(e.lastTolerance)],o)}function Ee(t,e,o){return oe(t,"propose_governance_upgrade",[z(e.wasmHash)],o)}function Pe(t,e,o){return oe(t,"propose_update_delay",[R(e.newDelay)],o)}function Oe(t,e,o){return oe(t,"propose_grant_governance_role",[O(e.account),N(e.role)],o)}function Ie(t,e,o){return oe(t,"propose_revoke_governance_role",[O(e.account),N(e.role)],o)}function Re(t,e,o){return oe(t,"propose_transfer_gov_own",[O(e.newOwner),R(e.liveUntilLedger)],o)}function Ce(t,e){const o=$(e.argsXdr.map((t=>a.ScVal.fromXDR(t,"base64")))),r=te(e.predecessor??Yt);return ee(t,"execute",[L(),O(e.target),N(e.functionName),o,r,te(e.salt)])}function Be(t,e,o){return re(t,"execute_governance_upgrade",[z(e.wasmHash)],o)}function Ue(t,e,o){return re(t,"execute_update_delay",[R(e.newDelay)],o)}function Ne(t,e,o){return re(t,"execute_grant_governance_role",[O(e.account),N(e.role)],o)}function Le(t,e,o){return re(t,"execute_revoke_governance_role",[O(e.account),N(e.role)],o)}function $e(t,e,o){return re(t,"execute_transfer_gov_own",[O(e.newOwner),R(e.liveUntilLedger)],o)}const ze=t=>t.toXDR("base64"),De=t=>a.ScVal.fromXDR(t,"base64"),je=t=>t.map((t=>String(i(De(t))))).join(":"),Ve=t=>"bigint"==typeof t||"number"==typeof t?t.toString():String(t),He=t=>Number(t),Xe=t=>String(t),We=t=>null==t?void 0:Ve(t),Fe=t=>null==t?void 0:Xe(t),Ge=t=>t instanceof Uint8Array?Buffer.from(t).toString("hex"):Buffer.isBuffer(t)?t.toString("hex"):String(t),Ze=["None","Multiply","Long","Short"],Qe=["Single","PrimaryWithAnchor"],Je=["ReflectorSep40","RedStonePriceFeed"],Ke=["Spot","Twap"],Ye=["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"],to=t=>Array.isArray(t)?t:[],eo=t=>({loanToValueBps:He(t.loan_to_value_bps),liquidationThresholdBps:He(t.liquidation_threshold_bps),liquidationBonusBps:He(t.liquidation_bonus_bps),liquidationFeesBps:He(t.liquidation_fees_bps),isCollateralizable:Boolean(t.is_collateralizable),isBorrowable:Boolean(t.is_borrowable),isFlashloanable:Boolean(t.is_flashloanable),flashloanFeeBps:He(t.flashloan_fee_bps),eModeCategories:(t.e_mode_categories??[]).map(He)}),oo=(t,e)=>{const o="Borrow"===e;return{action:(r=t[0],Ye[He(r)]??Ve(r)),positionType:e,asset:Xe(t[1]),scaledAmountRay:Ve(t[2]),indexRay:Ve(t[3]),amount:Ve(t[4]),liquidationThresholdBps:o?void 0:He(t[5]),liquidationBonusBps:o?void 0:He(t[6]),loanToValueBps:o?void 0:He(t[7])};var r},ro=t=>{return{owner:Xe(t[0]),eModeCategoryId:He(t[1]),mode:(e=t[2],Ze[He(e)]??"None")};var e},no=(t,e)=>{const o=Ke[He(t[`${e}_read_mode`])]??"Spot",r=t[`${e}_asset`],n=t[`${e}_symbol`],u=null!=r?{kind:"Stellar",value:Xe(r)}:null!=n?{kind:"Symbol",value:Xe(n)}:void 0;return{provider:Je[He(t[`${e}_provider`])]??"ReflectorSep40",contractAddress:Xe(t[`${e}_contract`]),asset:u,feedId:Fe(t[`${e}_feed_id`]),readMode:o,twapRecords:"Twap"===o?He(t[`${e}_twap_records`]):void 0,decimals:He(t[`${e}_decimals`]),resolutionSeconds:He(t[`${e}_resolution_seconds`]),maxStaleSeconds:He(t[`${e}_max_stale_seconds`])}},uo=t=>{const e=null!==t.anchor_provider&&void 0!==t.anchor_provider;return{baseTokenId:Xe(t.base_token_id),quoteTokenId:Xe(t.quote_token_id),tolerance:{firstUpperRatio:He(t.first_upper_ratio_bps??t.tolerance?.first_upper_ratio_bps),firstLowerRatio:He(t.first_lower_ratio_bps??t.tolerance?.first_lower_ratio_bps),lastUpperRatio:He(t.last_upper_ratio_bps??t.tolerance?.last_upper_ratio_bps),lastLowerRatio:He(t.last_lower_ratio_bps??t.tolerance?.last_lower_ratio_bps)},assetDecimals:He(t.asset_decimals),maxPriceStaleSeconds:He(t.max_price_stale_seconds),strategy:Qe[He(t.strategy)]??"Single",primary:no(t,"primary"),anchor:e?no(t,"anchor"):void 0,primaryQuoteToken:Fe(t.primary_quote_token),anchorQuoteToken:Fe(t.anchor_quote_token),minSanityPriceWad:We(t.min_sanity_price_wad),maxSanityPriceWad:We(t.max_sanity_price_wad)}},io={"market:create":t=>({topic:"market:create",data:{baseAsset:Xe(t.base_asset),maxBorrowRate:Ve(t.max_borrow_rate),baseBorrowRate:Ve(t.base_borrow_rate),slope1:Ve(t.slope1),slope2:Ve(t.slope2),slope3:Ve(t.slope3),midUtilization:Ve(t.mid_utilization),optimalUtilization:Ve(t.optimal_utilization),maxUtilization:We(t.max_utilization),reserveFactor:He(t.reserve_factor),marketAddress:Xe(t.market_address),config:eo(t.config)}}),"market:params_update":t=>({topic:"market:params_update",data:{asset:Xe(t.asset),maxBorrowRateRay:Ve(t.max_borrow_rate_ray),baseBorrowRateRay:Ve(t.base_borrow_rate_ray),slope1Ray:Ve(t.slope1_ray),slope2Ray:Ve(t.slope2_ray),slope3Ray:Ve(t.slope3_ray),midUtilizationRay:Ve(t.mid_utilization_ray),optimalUtilizationRay:Ve(t.optimal_utilization_ray),maxUtilizationRay:We(t.max_utilization_ray),reserveFactorBps:He(t.reserve_factor_bps)}}),"market:batch_state_update":t=>({topic:"market:batch_state_update",data:{updates:to(t).map((t=>{return e=to(t),{asset:Xe(e[0]),timestamp:He(e[1]),supplyIndexRay:Ve(e[2]),borrowIndexRay:Ve(e[3]),reservesRay:Ve(e[4]),suppliedRay:Ve(e[5]),borrowedRay:Ve(e[6]),revenueRay:Ve(e[7]),assetPriceWad:We(e[8])};var e}))}}),"market:batch_params_update":t=>({topic:"market:batch_params_update",data:{updates:to(t).map((t=>{const e=t;return{asset:Xe(e.asset),params:(o=e.params,{maxBorrowRateRay:Ve(o.max_borrow_rate_ray),baseBorrowRateRay:Ve(o.base_borrow_rate_ray),slope1Ray:Ve(o.slope1_ray),slope2Ray:Ve(o.slope2_ray),slope3Ray:Ve(o.slope3_ray),midUtilizationRay:Ve(o.mid_utilization_ray),optimalUtilizationRay:Ve(o.optimal_utilization_ray),maxUtilizationRay:We(o.max_utilization_ray),reserveFactorBps:He(o.reserve_factor_bps),supplyCap:Ve(o.supply_cap),borrowCap:Ve(o.borrow_cap),assetId:Fe(o.asset_id),assetDecimals:void 0===o.asset_decimals?void 0:He(o.asset_decimals)})};var o}))}}),"position:batch_update":t=>{const e=to(t);return{topic:"position:batch_update",data:{accountId:Ve(e[0]),accountAttributes:ro(to(e[1])),updates:[...to(e[2]).map((t=>oo(to(t),"Deposit"))),...to(e[3]).map((t=>oo(to(t),"Borrow")))]}}},"position:flash_loan":t=>({topic:"position:flash_loan",data:{asset:Xe(t.asset),receiver:Xe(t.receiver),caller:Xe(t.caller),amount:Ve(t.amount),fee:Ve(t.fee)}}),"config:asset":t=>({topic:"config:asset",data:{asset:Xe(t.asset),config:eo(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:Xe(t.asset),oracle:uo(t.oracle)}}),"config:emode_category":t=>({topic:"config:emode_category",data:{category:{categoryId:He(t.category.category_id),isDeprecated:Boolean(t.category.is_deprecated)}}}),"config:emode_asset":t=>({topic:"config:emode_asset",data:{asset:Xe(t.asset),config:{isCollateralizable:Boolean(t.config.is_collateralizable),isBorrowable:Boolean(t.config.is_borrowable),loanToValueBps:He(t.config.loan_to_value_bps),liquidationThresholdBps:He(t.config.liquidation_threshold_bps),liquidationBonusBps:He(t.config.liquidation_bonus_bps),supplyCap:Ve(t.config.supply_cap),borrowCap:Ve(t.config.borrow_cap)},categoryId:He(t.category_id)}}),"config:remove_emode_asset":t=>({topic:"config:remove_emode_asset",data:{asset:Xe(t.asset),categoryId:He(t.category_id)}}),"debt:bad_debt":t=>({topic:"debt:bad_debt",data:{accountId:Ve(t.account_id),totalBorrowUsdWad:Ve(t.total_borrow_usd_wad),totalCollateralUsdWad:Ve(t.total_collateral_usd_wad)}}),"strategy:initial_payment":t=>({topic:"strategy:initial_payment",data:{token:Xe(t.token),amount:Ve(t.amount),usdValueWad:Ve(t.usd_value_wad),accountId:Ve(t.account_id)}}),"strategy:fee":t=>({topic:"strategy:fee",data:{asset:Xe(t.asset),amount:Ve(t.amount),fee:Ve(t.fee),amountSent:Ve(t.amount_sent)}}),"config:approve_token":t=>({topic:"config:approve_token",data:{wasmHash:Ge(t.wasm_hash),approved:Boolean(t.approved)}}),"config:aggregator":t=>({topic:"config:aggregator",data:{aggregator:Xe(t.aggregator)}}),"config:accumulator":t=>({topic:"config:accumulator",data:{accumulator:Xe(t.accumulator)}}),"config:pool_template":t=>({topic:"config:pool_template",data:{wasmHash:Ge(t.wasm_hash)}}),"config:position_limits":t=>({topic:"config:position_limits",data:{maxSupplyPositions:He(t.max_supply_positions),maxBorrowPositions:He(t.max_borrow_positions)}}),"config:oracle_disabled":t=>({topic:"config:oracle_disabled",data:{asset:Xe(t.asset)}}),"oracle:twap_degraded":t=>({topic:"oracle:twap_degraded",data:{oracle:Xe(t.oracle),reasonCode:He(t.reason_code)}})},ao=Object.freeze(Object.keys(io));function so(t,e){const o=je(t),r=io[o];return r?r(i(De(e))):null}const po="XLENDXLM-a7c9f3",co=1e4;function lo(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${po}-${o}`}function yo(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function fo(t,e=0){return 1e4*t+e}function _o(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const mo=(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()},go=t=>t.baseUrl??T[t.network];async function bo(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=mo(go(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 qo(t){const e=mo(go(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 ho=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,vo=t=>X(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(ho(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 Ao(t,e){return wo(t,e)}function So(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(Mo),splitPpm:t.splitPpm}))):[{hops:t.hops.map(Mo),splitPpm:1e6}],referralId:e.referralId??0,tokenIn:t.from,tokenOut:t.to,totalMinOut:t.amountOutMin}}function To(t,e={}){const o=t;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:So(t,e)}const ko=So,Mo=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function xo(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function Eo(t,e,o){const r=u.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw xo(o.invokedContractId,t);throw t}}async function Po(t,e,o){return Eo(t,e.xdr,o)}function Oo(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 Io(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 Ro=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 Co(e){const o=new t(e.caller,e.sourceSequence),n=new r(e.forwarderAddress).call("mint_and_forward",a.ScVal.scvBytes(Ro(e.message)),a.ScVal.scvBytes(Ro(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:v,continuationToken:w,...A}=c,S=l?`Bearer ${l}`:void 0,T={..._,...S?{Authorization:S}:{},...w?{"X-Continuation-Token":String(w)}:{}},k={...h,tags:[...h?.tags??[],u]};return r.fetchWithTimeout(u,{method:y,params:A,body:d,headers:T,cache:q,debug:v,...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 No(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,w as STELLAR_AGGREGATOR_ROUTER,A as STELLAR_GOVERNANCE,Yt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,v as STELLAR_LENDING_CONTROLLER,ao as STELLAR_LENDING_TOPICS,k as STELLAR_NETWORK_PASSPHRASE,T as STELLAR_QUOTE_URL,S as STELLAR_SOROBAN_RPC_URL,co as SYNTHETIC_EVENT_ORDER_STRIDE,y as XOXNOClient,po as XOXNO_LENDING_STELLAR_TICKER,Io as buildSameTokenRepaySwapSteps,No as buildSdk,xt as buildStellarAcceptOwnershipTx,Ut as buildStellarAddAssetToEModeCategoryTx,Ct as buildStellarAddEModeCategoryTx,Jt as buildStellarAddRewardsTx,zt as buildStellarApproveTokenTx,Ao as buildStellarBatchSwapTx,Y as buildStellarBorrowBatchTx,tt as buildStellarBorrowTx,Co as buildStellarCctpForwardTx,Qt as buildStellarClaimRevenueTx,jt as buildStellarConfigureMarketOracleTx,Ft as buildStellarCreateLiquidityPoolTx,Ht as buildStellarDisableTokenOracleTx,It as buildStellarEditAssetConfigTx,Nt as buildStellarEditAssetInEModeCategoryTx,Vt as buildStellarEditOracleToleranceTx,wo as buildStellarExecuteStrategyTx,it as buildStellarFlashLoanTx,Be as buildStellarGovernanceExecuteGovernanceUpgradeTx,Ne as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Le as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,$e as buildStellarGovernanceExecuteTransferGovOwnTx,Ce as buildStellarGovernanceExecuteTx,Ue as buildStellarGovernanceExecuteUpdateDelayTx,Tt as buildStellarGrantRoleTx,lo as buildStellarLendingIdentifier,ut as buildStellarLiquidateTx,at as buildStellarMigrateFromBlendTx,wt as buildStellarMigrateTx,st as buildStellarMultiplyTx,At as buildStellarPauseTx,le as buildStellarProposeAddAssetToEModeTx,ce as buildStellarProposeAddEModeCategoryTx,me as buildStellarProposeApproveTokenTx,Me as buildStellarProposeConfigureMarketOracleTx,be as buildStellarProposeCreateLiquidityPoolTx,he as buildStellarProposeDeployPoolTx,ae as buildStellarProposeEditAssetConfigTx,ye as buildStellarProposeEditAssetInEModeTx,xe as buildStellarProposeEditOracleToleranceTx,Ee as buildStellarProposeGovernanceUpgradeTx,we as buildStellarProposeGrantControllerRoleTx,Oe as buildStellarProposeGrantGovernanceRoleTx,Te as buildStellarProposeMigrateControllerTx,_e as buildStellarProposeRemoveAssetFromEModeTx,de as buildStellarProposeRemoveEModeCategoryTx,Ae as buildStellarProposeRevokeControllerRoleTx,Ie as buildStellarProposeRevokeGovernanceRoleTx,ge as buildStellarProposeRevokeTokenTx,ue as buildStellarProposeSetAccumulatorTx,ne as buildStellarProposeSetAggregatorTx,pe as buildStellarProposeSetMinBorrowCollatTx,ie as buildStellarProposeSetPoolTemplateTx,se as buildStellarProposeSetPositionLimitsTx,ke as buildStellarProposeTransferCtrlOwnershipTx,Re as buildStellarProposeTransferGovOwnTx,Pe as buildStellarProposeUpdateDelayTx,fe as buildStellarProposeUpdatePoolCapsTx,Se as buildStellarProposeUpgradeControllerTx,qe as buildStellarProposeUpgradePoolParamsTx,ve as buildStellarProposeUpgradePoolTx,$t as buildStellarRemoveAssetFromEModeTx,Bt as buildStellarRemoveEModeCategoryTx,Wt as buildStellarRenewAccountTx,rt as buildStellarRepayBatchTx,dt as buildStellarRepayDebtWithCollateralTx,nt as buildStellarRepayTx,kt as buildStellarRevokeRoleTx,Dt as buildStellarRevokeTokenTx,Pt as buildStellarSetAccumulatorTx,Et as buildStellarSetAggregatorTx,Ot as buildStellarSetLiquidityPoolTemplateTx,Rt as buildStellarSetPositionLimitsTx,J as buildStellarSupplyBatchTx,K as buildStellarSupplyTx,ct as buildStellarSwapCollateralTx,pt as buildStellarSwapDebtTx,Mt as buildStellarTransferOwnershipTx,St as buildStellarUnpauseTx,Kt as buildStellarUpdateAccountThresholdTx,Xt as buildStellarUpdateIndexesTx,Lt as buildStellarUpdatePoolCapsTx,vt as buildStellarUpgradeControllerTx,Gt as buildStellarUpgradeLiquidityPoolParamsTx,Zt as buildStellarUpgradeLiquidityPoolTx,et as buildStellarWithdrawBatchTx,ot as buildStellarWithdrawTx,Q as buildTx,so as decodeStellarLendingEvent,_t as encodeAssetConfigRaw,yt as encodeInterestRateModel,ht as encodeMarketOracleConfigInput,ft as encodeMarketParamsRaw,qt as encodeOracleSourceConfigInput,mt as encodePositionLimits,vo as encodeStrategyPayloadToRouteXdr,yo as extractEventOrder,bo as getStellarAggregatorQuote,x as getStellarAggregatorRouter,E as getStellarGovernance,M as getStellarLendingController,qo as getStellarQuoteTokens,f as isValidCollectionTicker,_ as isValidNftIdentifier,ko as mapQuoteResponseToAggregatorSwap,So as mapQuoteResponseToStrategyPayload,To as mapQuoteResponseToStrategySwap,_o as mapStellarPositionActivityType,Po as prepareStellarBuiltTx,Eo as prepareStellarTxXdr,je as stellarLendingDispatchKey,fo as syntheticEventOrder,xo as tagStellarInvokedContractError,ze as toBase64Xdr,Oo 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,m={...c,Referer:"https://xoxno.sdk","User-Agent":"XOXNO/1.0/SDK",..."PUT"===d?{}:{"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("&"),g=`${this.apiUrl}${t}${b.length?`?${b}`:""}`,{revalidate:_,...q}=r??{},{revalidate:h,...v}=a??{},w="GET"!==d||f?void 0:h??_,A="GET"!==d||f||w?void 0:s??n,S={...i,...l,method:d,...Object.keys(m).length?{headers:m}:{},cache:A,next:{...q,...v,revalidate:w}};(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 Object.assign(new Error(`${g}: ${t.message}`),{cause:t});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},m=t=>{const e=/^0x[a-fA-F0-9]{1,64}$/.test(t),o=/^[A-Za-z0-9]{3,10}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2,7}(?:-\d+(?:-[A-Za-z0-9]+)?)?$/.test(t);return e||o};class b extends Error{constructor(t){super(`Invalid collection ticker: ${t}`)}}class g extends Error{constructor(t){super(`Invalid address: ${t}`)}}Error,Error;const _=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/stats/history":{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"}},"/user/blend/:address":{input:{},output:{}},"/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"],v={mainnet:process.env.STELLAR_LENDING_CONTROLLER_MAINNET??"",testnet:process.env.STELLAR_LENDING_CONTROLLER_TESTNET??""},w={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=v[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=w[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),C=t=>new n("string"==typeof t?t:t.toString()).toU64(),U=t=>a.ScVal.scvBool(t),B=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)))),G=t=>{const e=Object.keys(t).sort().map((e=>new a.ScMapEntry({key:N(e),val:t[e]})));return a.ScVal.scvMap(e)},H=t=>{const e=t.paths.map((t=>{const e=t.hops.map((t=>{return G({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 G({hops:a.ScVal.scvVec(e),split_ppm:R(t.splitPpm)})}));return G({paths:a.ScVal.scvVec(e),referral_id:C(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)},W=t=>{const e=t.trim();if(e.startsWith("0x")){const t=e.slice(2);if(!((o=t).length>0&&o.length%2==0&&/^[0-9a-fA-F]+$/.test(o)))throw new Error("Stellar builder: strategy swap bytes hex string must be 0x-prefixed and even-length");return Buffer.from(t,"hex")}var o;if(!/^[A-Za-z0-9+/]+={0,2}$/.test(e))throw new Error("Stellar builder: strategy swap bytes must be base64 routeXdr or 0x-prefixed hex");const r=Buffer.from(e,"base64");if(0===r.length)throw new Error("Stellar builder: strategy swap bytes must be non-empty base64 routeXdr, 0x hex string, or Uint8Array");return r},F=t=>{if("string"==typeof t)return X(W(t));if(t instanceof Uint8Array)return X(t);if(t&&"object"==typeof t)return"routeXdr"in(o=t)&&"string"==typeof o.routeXdr?X(W(t.routeXdr)):(t=>"swapXdr"in t&&"string"==typeof t.swapXdr)(t)?X(W(t.swapXdr)):(t=>"bytes"in t&&("string"==typeof t.bytes||t.bytes instanceof Uint8Array))(t)?"string"==typeof t.bytes?X(W(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(H(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),C(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),C(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),C(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),C(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),C(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){return Q(t,"migrate_from_blend",[O(t.caller),C(e.accountId),R(e.eModeCategory),O(e.blendPool),$(e.collateralTokens.map(O)),$(e.supplyTokens.map(O)),V(e.debtCaps.map((t=>({token:t.token,amount:t.cap}))))])}function st(t,e){const o=e.accountNonce??0;return Q(t,"multiply",[O(t.caller),C(o),R(e.eModeCategory),O(e.collateralToken),I(e.debtToFlashLoan),O(e.debtToken),R(e.mode),F(e.steps),D(e.initialPayment,(t=>j(t.token,t.amount))),D(e.convertSwap,F)])}function pt(t,e){return Q(t,"swap_debt",[O(t.caller),C(e.accountNonce),O(e.existingDebtToken),I(e.newDebtAmount),O(e.newDebtToken),F(e.steps)])}function ct(t,e){return Q(t,"swap_collateral",[O(t.caller),C(e.accountNonce),O(e.currentCollateral),I(e.fromAmount),O(e.newCollateral),F(e.steps)])}function dt(t,e){return Q(t,"repay_debt_with_collateral",[O(t.caller),C(e.accountNonce),O(e.collateralToken),I(e.collateralAmount),O(e.debtToken),F(e.steps),U(e.closePosition)])}const lt={Single:0,PrimaryWithAnchor:1},yt=t=>G({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=>G({asset_decimals:R(t.assetDecimals),asset_id:O(t.assetId),base_borrow_rate_ray:I(t.baseBorrowRateRay),borrow_cap:I(t.borrowCap),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),supply_cap:I(t.supplyCap)}),mt=t=>G({asset_decimals:R(0),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),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)}),bt=t=>G({max_borrow_positions:R(t.maxBorrowPositions),max_supply_positions:R(t.maxSupplyPositions)}),gt=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"),B(t.value)]);default:throw new Error(`Stellar builder: unknown oracle asset ref kind "${e}"`)}},_t=(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")])},qt=t=>{const e=t.provider;if("ReflectorSep40"===e){if(!t.asset)throw new Error("Stellar builder: Reflector oracle source requires `asset`");return $([N("Reflector"),G({asset:gt(t.asset),contract:O(t.contract),read_mode:_t(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"),G({contract:O(t.contract),feed_id:B(t.feedId),max_stale_seconds:C(t.maxStaleSeconds)})])}throw new Error(`Stellar builder: unknown oracle provider "${e}"`)},ht=t=>{const e=lt[t.strategy];if(void 0===e)throw new Error(`Stellar builder: unknown oracle strategy "${t.strategy}"`);return G({anchor:(o=t.anchor,$(null==o?[N("None")]:[N("Some"),qt(o)])),first_tolerance_bps:R(t.firstToleranceBps),last_tolerance_bps:R(t.lastToleranceBps),max_price_stale_seconds:C(t.maxPriceStaleSeconds),max_sanity_price_wad:I(t.maxSanityPriceWad),min_sanity_price_wad:I(t.minSanityPriceWad),primary:qt(t.primary),strategy:R(e)});var o};function vt(t,e){return Q(t,"upgrade",[z(e.wasmHash)])}function wt(t,e){return Q(t,"migrate",[R(e.newVersion)])}function At(t){return Q(t,"pause",[])}function St(t){return Q(t,"unpause",[])}function Tt(t,e){return Q(t,"grant_role",[O(e.account),N(e.role)])}function kt(t,e){return Q(t,"revoke_role",[O(e.account),N(e.role)])}function Mt(t,e){return Q(t,"transfer_ownership",[O(e.newOwner),R(e.liveUntilLedger)])}function xt(t){return Q(t,"accept_ownership",[])}function Et(t,e){return Q(t,"set_aggregator",[O(e.aggregator)])}function Pt(t,e){return Q(t,"set_accumulator",[O(e.accumulator)])}function Ot(t,e){return Q(t,"set_liquidity_pool_template",[z(e.wasmHash)])}function It(t,e){return Q(t,"edit_asset_config",[O(e.asset),mt(e.config)])}function Rt(t,e){return Q(t,"set_position_limits",[bt(e)])}function Ct(t){return Q(t,"add_e_mode_category",[])}function Ut(t,e){return Q(t,"remove_e_mode_category",[R(e.id)])}function Bt(t,e){return Q(t,"add_asset_to_e_mode_category",[O(e.asset),R(e.categoryId),U(e.canCollateral),U(e.canBorrow),R(e.ltv),R(e.threshold),R(e.bonus),I(e.supplyCap),I(e.borrowCap)])}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),R(e.ltv),R(e.threshold),R(e.bonus),I(e.supplyCap),I(e.borrowCap)])}function Lt(t,e){return Q(t,"update_pool_caps",[O(e.asset),I(e.supplyCap),I(e.borrowCap)])}function $t(t,e){return Q(t,"remove_asset_from_e_mode",[O(e.asset),R(e.categoryId)])}function zt(t,e){return Q(t,"approve_token",[O(e.token)])}function Dt(t,e){return Q(t,"revoke_token",[O(e.token)])}function jt(t,e){return Q(t,"configure_market_oracle",[O(t.caller),O(e.asset),ht(e.config)])}function Vt(t,e){return Q(t,"edit_oracle_tolerance",[O(t.caller),O(e.asset),R(e.firstTolerance),R(e.lastTolerance)])}function Gt(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 Xt(t,e){return Q(t,"renew_account",[O(t.caller),C(e.accountNonce)])}function Wt(t,e){return Q(t,"create_liquidity_pool",[O(e.asset),ft(e.params),mt(e.config)])}function Ft(t,e){return Q(t,"upgrade_liquidity_pool_params",[O(e.asset),yt(e.params)])}function Zt(t,e){return Q(t,"upgrade_liquidity_pool",[O(e.asset),z(e.wasmHash)])}function Qt(t,e){return Q(t,"claim_revenue",[O(t.caller),$(e.assets.map((t=>O(t))))])}function Jt(t,e){return Q(t,"add_rewards",[O(t.caller),$(e.rewards.map((t=>$([O(t.token),I(t.amount)]))))])}function Kt(t,e){return Q(t,"update_account_threshold",[O(t.caller),O(e.asset),U(e.hasRisks),$(e.accountNonces.map((t=>C(t))))])}const Yt="00".repeat(32),te=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)},ee=(t,...e)=>$([N(t),...e]),oe=t=>G({asset:O(t.asset),category_id:R(t.categoryId),can_collateral:U(t.canCollateral),can_borrow:U(t.canBorrow),ltv:R(t.ltv),threshold:R(t.threshold),bonus:R(t.bonus),supply_cap:I(t.supplyCap),borrow_cap:I(t.borrowCap)}),re=t=>G({new_owner:O(t.newOwner),live_until_ledger:R(t.liveUntilLedger)}),ne=t=>G({account:O(t.account),role:N(t.role)});function ue(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 ie=(t,e,o)=>ue(t,"propose",[O(t.caller),e,te(o)]),ae=(t,e,o)=>ue(t,"execute_self",[L(),e,te(o)]);function se(t,e,o){return ie(t,ee("SetAggregator",O(e.aggregator)),o)}function pe(t,e,o){return ie(t,ee("SetAccumulator",O(e.accumulator)),o)}function ce(t,e,o){return ie(t,ee("SetLiquidityPoolTemplate",z(e.wasmHash)),o)}function de(t,e,o){return ie(t,ee("EditAssetConfig",O(e.asset),mt(e.config)),o)}function le(t,e,o){return ie(t,ee("SetPositionLimits",bt(e)),o)}function ye(t,e,o){return ie(t,ee("SetMinBorrowCollateralUsd",I(e.floorWad)),o)}function fe(t,e){return ie(t,ee("AddEModeCategory"),e)}function me(t,e,o){return ie(t,ee("RemoveEModeCategory",R(e.id)),o)}function be(t,e,o){return ie(t,ee("AddAssetToEModeCategory",oe(e)),o)}function ge(t,e,o){return ie(t,ee("EditAssetInEModeCategory",oe(e)),o)}function _e(t,e,o){return ie(t,ee("UpdatePoolCaps",G({asset:O((r=e).asset),supply_cap:I(r.supplyCap),borrow_cap:I(r.borrowCap)})),o);var r}function qe(t,e,o){return ie(t,ee("RemoveAssetFromEMode",G({asset:O((r=e).asset),category_id:R(r.categoryId)})),o);var r}function he(t,e,o){return ie(t,ee("ApproveToken",O(e.token)),o)}function ve(t,e,o){return ie(t,ee("RevokeToken",O(e.token)),o)}function we(t,e,o){return ie(t,ee("ApproveBlendPool",O(e.pool)),o)}function Ae(t,e,o){return ie(t,ee("RevokeBlendPool",O(e.pool)),o)}function Se(t,e,o){return ie(t,ee("CreateLiquidityPool",G({asset:O((r=e).asset),params:ft(r.params),config:mt(r.config)})),o);var r}function Te(t,e,o){return ie(t,ee("UpgradeLiquidityPoolParams",G({asset:O((r=e).asset),params:yt(r.params)})),o);var r}function ke(t,e){return ie(t,ee("DeployPool"),e)}function Me(t,e,o){return ie(t,ee("UpgradePool",z(e.wasmHash)),o)}function xe(t,e,o){return ie(t,ee("DisableTokenOracle",O(e.asset)),o)}function Ee(t,e,o){return ie(t,ee("UpgradeController",z(e.wasmHash)),o)}function Pe(t,e,o){return ie(t,ee("MigrateController",R(e.newVersion)),o)}function Oe(t,e,o){return ie(t,ee("TransferCtrlOwnership",re(e)),o)}function Ie(t,e,o){return ie(t,ee("ConfigureMarketOracle",G({asset:O((r=e).asset),cfg:ht(r.config)})),o);var r}function Re(t,e,o){return ie(t,ee("EditOracleTolerance",G({asset:O((r=e).asset),first_tolerance:R(r.firstTolerance),last_tolerance:R(r.lastTolerance)})),o);var r}function Ce(t,e,o){return ie(t,ee("UpgradeGov",z(e.wasmHash)),o)}function Ue(t,e,o){return ie(t,ee("UpdateGovDelay",R(e.newDelay)),o)}function Be(t,e,o){return ie(t,ee("GrantGovRole",ne(e)),o)}function Ne(t,e,o){return ie(t,ee("RevokeGovRole",ne(e)),o)}function Le(t,e,o){return ie(t,ee("TransferGovOwnership",re(e)),o)}function $e(t,e){const o=$(e.argsXdr.map((t=>a.ScVal.fromXDR(t,"base64")))),r=te(e.predecessor??Yt);return ue(t,"execute",[L(),O(e.target),N(e.functionName),o,r,te(e.salt)])}function ze(t,e,o){return ae(t,ee("UpgradeGov",z(e.wasmHash)),o)}function De(t,e,o){return ae(t,ee("UpdateGovDelay",R(e.newDelay)),o)}function je(t,e,o){return ae(t,ee("GrantGovRole",ne(e)),o)}function Ve(t,e,o){return ae(t,ee("RevokeGovRole",ne(e)),o)}function Ge(t,e,o){return ae(t,ee("TransferGovOwnership",re(e)),o)}const He=t=>t.toXDR("base64"),Xe=t=>a.ScVal.fromXDR(t,"base64"),We=t=>t.map((t=>String(i(Xe(t))))).join(":"),Fe=t=>"bigint"==typeof t||"number"==typeof t?t.toString():String(t),Ze=t=>Number(t),Qe=t=>String(t),Je=t=>null==t?void 0:Fe(t),Ke=t=>null==t?void 0:Qe(t),Ye=t=>t instanceof Uint8Array?Buffer.from(t).toString("hex"):Buffer.isBuffer(t)?t.toString("hex"):String(t),to=["None","Multiply","Long","Short"],eo=["Single","PrimaryWithAnchor"],oo=["ReflectorSep40","RedStonePriceFeed"],ro=["Spot","Twap"],no=["supply","borrow","withdraw","repay","liq_repay","liq_seize","multiply","param_upd","sw_debt_r","sw_col_wd","rp_col_wd","rp_col_r","close_wd"],uo=t=>Array.isArray(t)?t:[],io=t=>({loanToValueBps:Ze(t.loan_to_value_bps),liquidationThresholdBps:Ze(t.liquidation_threshold_bps),liquidationBonusBps:Ze(t.liquidation_bonus_bps),liquidationFeesBps:Ze(t.liquidation_fees_bps),isCollateralizable:Boolean(t.is_collateralizable),isBorrowable:Boolean(t.is_borrowable),isFlashloanable:Boolean(t.is_flashloanable),flashloanFeeBps:Ze(t.flashloan_fee_bps),eModeCategories:(t.e_mode_categories??[]).map(Ze)}),ao=(t,e)=>{const o="Borrow"===e;return{action:(r=t[0],no[Ze(r)]??Fe(r)),positionType:e,asset:Qe(t[1]),scaledAmountRay:Fe(t[2]),indexRay:Fe(t[3]),amount:Fe(t[4]),liquidationThresholdBps:o?void 0:Ze(t[5]),liquidationBonusBps:o?void 0:Ze(t[6]),loanToValueBps:o?void 0:Ze(t[7])};var r},so=t=>{return{owner:Qe(t[0]),eModeCategoryId:Ze(t[1]),mode:(e=t[2],to[Ze(e)]??"None")};var e},po=(t,e)=>{const o=ro[Ze(t[`${e}_read_mode`])]??"Spot",r=t[`${e}_asset`],n=t[`${e}_symbol`],u=null!=r?{kind:"Stellar",value:Qe(r)}:null!=n?{kind:"Symbol",value:Qe(n)}:void 0;return{provider:oo[Ze(t[`${e}_provider`])]??"ReflectorSep40",contractAddress:Qe(t[`${e}_contract`]),asset:u,feedId:Ke(t[`${e}_feed_id`]),readMode:o,twapRecords:"Twap"===o?Ze(t[`${e}_twap_records`]):void 0,decimals:Ze(t[`${e}_decimals`]),resolutionSeconds:Ze(t[`${e}_resolution_seconds`]),maxStaleSeconds:Ze(t[`${e}_max_stale_seconds`])}},co=t=>{const e=null!==t.anchor_provider&&void 0!==t.anchor_provider;return{baseTokenId:Qe(t.base_token_id),quoteTokenId:Qe(t.quote_token_id),tolerance:{firstUpperRatio:Ze(t.first_upper_ratio_bps??t.tolerance?.first_upper_ratio_bps),firstLowerRatio:Ze(t.first_lower_ratio_bps??t.tolerance?.first_lower_ratio_bps),lastUpperRatio:Ze(t.last_upper_ratio_bps??t.tolerance?.last_upper_ratio_bps),lastLowerRatio:Ze(t.last_lower_ratio_bps??t.tolerance?.last_lower_ratio_bps)},assetDecimals:Ze(t.asset_decimals),maxPriceStaleSeconds:Ze(t.max_price_stale_seconds),strategy:eo[Ze(t.strategy)]??"Single",primary:po(t,"primary"),anchor:e?po(t,"anchor"):void 0,primaryQuoteToken:Ke(t.primary_quote_token),anchorQuoteToken:Ke(t.anchor_quote_token),minSanityPriceWad:Je(t.min_sanity_price_wad),maxSanityPriceWad:Je(t.max_sanity_price_wad)}},lo={"market:create":t=>({topic:"market:create",data:{baseAsset:Qe(t.base_asset),maxBorrowRate:Fe(t.max_borrow_rate),baseBorrowRate:Fe(t.base_borrow_rate),slope1:Fe(t.slope1),slope2:Fe(t.slope2),slope3:Fe(t.slope3),midUtilization:Fe(t.mid_utilization),optimalUtilization:Fe(t.optimal_utilization),maxUtilization:Je(t.max_utilization),reserveFactor:Ze(t.reserve_factor),marketAddress:Qe(t.market_address),config:io(t.config)}}),"market:params_update":t=>({topic:"market:params_update",data:{asset:Qe(t.asset),maxBorrowRateRay:Fe(t.max_borrow_rate_ray),baseBorrowRateRay:Fe(t.base_borrow_rate_ray),slope1Ray:Fe(t.slope1_ray),slope2Ray:Fe(t.slope2_ray),slope3Ray:Fe(t.slope3_ray),midUtilizationRay:Fe(t.mid_utilization_ray),optimalUtilizationRay:Fe(t.optimal_utilization_ray),maxUtilizationRay:Je(t.max_utilization_ray),reserveFactorBps:Ze(t.reserve_factor_bps)}}),"market:batch_state_update":t=>({topic:"market:batch_state_update",data:{updates:uo(t).map((t=>{return e=uo(t),{asset:Qe(e[0]),timestamp:Ze(e[1]),supplyIndexRay:Fe(e[2]),borrowIndexRay:Fe(e[3]),reservesRay:Fe(e[4]),suppliedRay:Fe(e[5]),borrowedRay:Fe(e[6]),revenueRay:Fe(e[7]),assetPriceWad:Je(e[8])};var e}))}}),"market:batch_params_update":t=>({topic:"market:batch_params_update",data:{updates:uo(t).map((t=>{const e=t;return{asset:Qe(e.asset),params:(o=e.params,{maxBorrowRateRay:Fe(o.max_borrow_rate_ray),baseBorrowRateRay:Fe(o.base_borrow_rate_ray),slope1Ray:Fe(o.slope1_ray),slope2Ray:Fe(o.slope2_ray),slope3Ray:Fe(o.slope3_ray),midUtilizationRay:Fe(o.mid_utilization_ray),optimalUtilizationRay:Fe(o.optimal_utilization_ray),maxUtilizationRay:Je(o.max_utilization_ray),reserveFactorBps:Ze(o.reserve_factor_bps),supplyCap:Fe(o.supply_cap),borrowCap:Fe(o.borrow_cap),assetId:Ke(o.asset_id),assetDecimals:void 0===o.asset_decimals?void 0:Ze(o.asset_decimals)})};var o}))}}),"position:batch_update":t=>{const e=uo(t);return{topic:"position:batch_update",data:{accountId:Fe(e[0]),accountAttributes:so(uo(e[1])),updates:[...uo(e[2]).map((t=>ao(uo(t),"Deposit"))),...uo(e[3]).map((t=>ao(uo(t),"Borrow")))]}}},"position:flash_loan":t=>({topic:"position:flash_loan",data:{asset:Qe(t.asset),receiver:Qe(t.receiver),caller:Qe(t.caller),amount:Fe(t.amount),fee:Fe(t.fee)}}),"config:asset":t=>({topic:"config:asset",data:{asset:Qe(t.asset),config:io(t.config)}}),"config:oracle":t=>({topic:"config:oracle",data:{asset:Qe(t.asset),oracle:co(t.oracle)}}),"config:emode_category":t=>({topic:"config:emode_category",data:{category:{categoryId:Ze(t.category.category_id),isDeprecated:Boolean(t.category.is_deprecated)}}}),"config:emode_asset":t=>({topic:"config:emode_asset",data:{asset:Qe(t.asset),config:{isCollateralizable:Boolean(t.config.is_collateralizable),isBorrowable:Boolean(t.config.is_borrowable),loanToValueBps:Ze(t.config.loan_to_value_bps),liquidationThresholdBps:Ze(t.config.liquidation_threshold_bps),liquidationBonusBps:Ze(t.config.liquidation_bonus_bps),supplyCap:Fe(t.config.supply_cap),borrowCap:Fe(t.config.borrow_cap)},categoryId:Ze(t.category_id)}}),"config:remove_emode_asset":t=>({topic:"config:remove_emode_asset",data:{asset:Qe(t.asset),categoryId:Ze(t.category_id)}}),"debt:bad_debt":t=>({topic:"debt:bad_debt",data:{accountId:Fe(t.account_id),totalBorrowUsdWad:Fe(t.total_borrow_usd_wad),totalCollateralUsdWad:Fe(t.total_collateral_usd_wad)}}),"strategy:initial_payment":t=>({topic:"strategy:initial_payment",data:{token:Qe(t.token),amount:Fe(t.amount),usdValueWad:Fe(t.usd_value_wad),accountId:Fe(t.account_id)}}),"strategy:fee":t=>({topic:"strategy:fee",data:{asset:Qe(t.asset),amount:Fe(t.amount),fee:Fe(t.fee),amountSent:Fe(t.amount_sent)}}),"config:approve_token":t=>({topic:"config:approve_token",data:{wasmHash:Ye(t.wasm_hash),approved:Boolean(t.approved)}}),"config:aggregator":t=>({topic:"config:aggregator",data:{aggregator:Qe(t.aggregator)}}),"config:accumulator":t=>({topic:"config:accumulator",data:{accumulator:Qe(t.accumulator)}}),"config:pool_template":t=>({topic:"config:pool_template",data:{wasmHash:Ye(t.wasm_hash)}}),"config:position_limits":t=>({topic:"config:position_limits",data:{maxSupplyPositions:Ze(t.max_supply_positions),maxBorrowPositions:Ze(t.max_borrow_positions)}}),"config:oracle_disabled":t=>({topic:"config:oracle_disabled",data:{asset:Qe(t.asset)}}),"oracle:twap_degraded":t=>({topic:"oracle:twap_degraded",data:{oracle:Qe(t.oracle),reasonCode:Ze(t.reason_code)}})},yo=Object.freeze(Object.keys(lo));function fo(t,e){const o=We(t),r=lo[o];return r?r(i(Xe(e))):null}const mo="XLENDXLM-a7c9f3",bo=1e4;function go(t){const e=BigInt(t).toString(16),o=e.length%2==0?e:`0${e}`;return`${mo}-${o}`}function _o(t){const e=t.split("-");return e.length>=2&&parseInt(e[1],10)||0}function qo(t,e=0){return 1e4*t+e}function ho(t){switch(t){case"liq_repay":return"lendingLiquidateRepayDebt";case"liq_seize":return"lendingLiquidateSeizeCollateral";case"param_upd":return"lendingUpdateAccountParameters";default:return"lendingUpdateAccountPosition"}}const vo=(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()},wo=t=>t.baseUrl??T[t.network];async function Ao(t,e){if(null==t.amountIn==(null==t.amountOut))throw new Error("getStellarAggregatorQuote: exactly one of `amountIn` or `amountOut` must be provided");const o=vo(wo(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 So(t){const e=vo(wo(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 To=(t,e)=>(t=>Boolean(t&&"object"==typeof t&&!(t instanceof Uint8Array)&&"paths"in t))(t)&&void 0===t.referralId?{...t,referralId:e??0}:t,ko=t=>H(t).toXDR("base64");function Mo(e,n){const i=e.routerAddress??x(e.network),a=new r(i),s=new t(e.caller,e.sourceSequence),p=F(To(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 xo(t,e){return Mo(t,e)}function Eo(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(Io),splitPpm:t.splitPpm}))):[{hops:t.hops.map(Io),splitPpm:1e6}],referralId:e.referralId??0,tokenIn:t.from,tokenOut:t.to,totalMinOut:t.amountOutMin}}function Po(t,e={}){const o=t;return"string"==typeof o.routeXdr&&o.routeXdr.length>0?{routeXdr:o.routeXdr}:Eo(t,e)}const Oo=Eo,Io=t=>({amountOut:t.amountOut,pool:t.address,tokenIn:t.from,tokenOut:t.to,venue:t.dex});function Ro(t,e){const o=e instanceof Error?e.message:String(e);return new Error(`[xoxno-invoked:${t}] ${o}`)}async function Co(t,e,o){const r=u.fromXDR(e,"base64");try{return(await t.prepareTransaction(r)).toXDR()}catch(t){if(o?.invokedContractId)throw Ro(o.invokedContractId,t);throw t}}async function Uo(t,e,o){return Co(t,e.xdr,o)}function Bo(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 No(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 Lo=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 $o(e){const o=new t(e.caller,e.sourceSequence),n=new r(e.forwarderAddress).call("mint_and_forward",a.ScVal.scvBytes(Lo(e.message)),a.ScVal.scvBytes(Lo(e.attestation)));return{xdr:new u(o,{fee:e.fee??"10000000",networkPassphrase:k[e.network]}).addOperation(n).setTimeout(e.timeoutSeconds??120).build().toXDR()}}const zo=t=>t.replace(/-([a-z])/g,((t,e)=>e.toUpperCase()));function Do(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(!_(t))throw new g(t)}if(p){const t=n.collection;if(Array.isArray(t)?t.some((t=>!f(t))):!f(t))throw new b(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:m,cache:q,next:h,debug:v,continuationToken:w,...A}=c,S=l?`Bearer ${l}`:void 0,T={...m,...S?{Authorization:S}:{},...w?{"X-Continuation-Token":String(w)}:{}},k={...h,tags:[...h?.tags??[],u]};return r.fetchWithTimeout(u,{method:y,params:A,body:d,headers:T,cache:q,debug:v,...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 jo(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=zo(t.slice(1));n=n.params[e]||={static:{},params:{},leaves:[]}}else{const e=zo(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=Do(o,n,r,t)}else{a={};for(const{rawPath:o,def:n}of e.leaves)a[zo(o.split("/").pop().replace(/^:/,""))]=Do(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,w as STELLAR_AGGREGATOR_ROUTER,A as STELLAR_GOVERNANCE,Yt as STELLAR_GOVERNANCE_ZERO_PREDECESSOR,v as STELLAR_LENDING_CONTROLLER,yo as STELLAR_LENDING_TOPICS,k as STELLAR_NETWORK_PASSPHRASE,T as STELLAR_QUOTE_URL,S as STELLAR_SOROBAN_RPC_URL,bo as SYNTHETIC_EVENT_ORDER_STRIDE,y as XOXNOClient,mo as XOXNO_LENDING_STELLAR_TICKER,No as buildSameTokenRepaySwapSteps,jo as buildSdk,xt as buildStellarAcceptOwnershipTx,Bt as buildStellarAddAssetToEModeCategoryTx,Ct as buildStellarAddEModeCategoryTx,Jt as buildStellarAddRewardsTx,zt as buildStellarApproveTokenTx,xo as buildStellarBatchSwapTx,Y as buildStellarBorrowBatchTx,tt as buildStellarBorrowTx,$o as buildStellarCctpForwardTx,Qt as buildStellarClaimRevenueTx,jt as buildStellarConfigureMarketOracleTx,Wt as buildStellarCreateLiquidityPoolTx,Gt as buildStellarDisableTokenOracleTx,It as buildStellarEditAssetConfigTx,Nt as buildStellarEditAssetInEModeCategoryTx,Vt as buildStellarEditOracleToleranceTx,Mo as buildStellarExecuteStrategyTx,it as buildStellarFlashLoanTx,ze as buildStellarGovernanceExecuteGovernanceUpgradeTx,je as buildStellarGovernanceExecuteGrantGovernanceRoleTx,Ve as buildStellarGovernanceExecuteRevokeGovernanceRoleTx,Ge as buildStellarGovernanceExecuteTransferGovOwnTx,$e as buildStellarGovernanceExecuteTx,De as buildStellarGovernanceExecuteUpdateDelayTx,Tt as buildStellarGrantRoleTx,go as buildStellarLendingIdentifier,ut as buildStellarLiquidateTx,at as buildStellarMigrateFromBlendTx,wt as buildStellarMigrateTx,st as buildStellarMultiplyTx,At as buildStellarPauseTx,be as buildStellarProposeAddAssetToEModeTx,fe as buildStellarProposeAddEModeCategoryTx,we as buildStellarProposeApproveBlendPoolTx,he as buildStellarProposeApproveTokenTx,Ie as buildStellarProposeConfigureMarketOracleTx,Se as buildStellarProposeCreateLiquidityPoolTx,ke as buildStellarProposeDeployPoolTx,xe as buildStellarProposeDisableTokenOracleTx,de as buildStellarProposeEditAssetConfigTx,ge as buildStellarProposeEditAssetInEModeTx,Re as buildStellarProposeEditOracleToleranceTx,Ce as buildStellarProposeGovernanceUpgradeTx,Be as buildStellarProposeGrantGovernanceRoleTx,Pe as buildStellarProposeMigrateControllerTx,qe as buildStellarProposeRemoveAssetFromEModeTx,me as buildStellarProposeRemoveEModeCategoryTx,Ae as buildStellarProposeRevokeBlendPoolTx,Ne as buildStellarProposeRevokeGovernanceRoleTx,ve as buildStellarProposeRevokeTokenTx,pe as buildStellarProposeSetAccumulatorTx,se as buildStellarProposeSetAggregatorTx,ye as buildStellarProposeSetMinBorrowCollatTx,ce as buildStellarProposeSetPoolTemplateTx,le as buildStellarProposeSetPositionLimitsTx,Oe as buildStellarProposeTransferCtrlOwnershipTx,Le as buildStellarProposeTransferGovOwnTx,Ue as buildStellarProposeUpdateDelayTx,_e as buildStellarProposeUpdatePoolCapsTx,Ee as buildStellarProposeUpgradeControllerTx,Te as buildStellarProposeUpgradePoolParamsTx,Me as buildStellarProposeUpgradePoolTx,$t as buildStellarRemoveAssetFromEModeTx,Ut as buildStellarRemoveEModeCategoryTx,Xt as buildStellarRenewAccountTx,rt as buildStellarRepayBatchTx,dt as buildStellarRepayDebtWithCollateralTx,nt as buildStellarRepayTx,kt as buildStellarRevokeRoleTx,Dt as buildStellarRevokeTokenTx,Pt as buildStellarSetAccumulatorTx,Et as buildStellarSetAggregatorTx,Ot as buildStellarSetLiquidityPoolTemplateTx,Rt as buildStellarSetPositionLimitsTx,J as buildStellarSupplyBatchTx,K as buildStellarSupplyTx,ct as buildStellarSwapCollateralTx,pt as buildStellarSwapDebtTx,Mt as buildStellarTransferOwnershipTx,St as buildStellarUnpauseTx,Kt as buildStellarUpdateAccountThresholdTx,Ht as buildStellarUpdateIndexesTx,Lt as buildStellarUpdatePoolCapsTx,vt as buildStellarUpgradeControllerTx,Ft as buildStellarUpgradeLiquidityPoolParamsTx,Zt as buildStellarUpgradeLiquidityPoolTx,et as buildStellarWithdrawBatchTx,ot as buildStellarWithdrawTx,Q as buildTx,fo as decodeStellarLendingEvent,mt as encodeAssetConfigRaw,yt as encodeInterestRateModel,ht as encodeMarketOracleConfigInput,ft as encodeMarketParamsRaw,qt as encodeOracleSourceConfigInput,bt as encodePositionLimits,ko as encodeStrategyPayloadToRouteXdr,_o as extractEventOrder,Ao as getStellarAggregatorQuote,x as getStellarAggregatorRouter,E as getStellarGovernance,M as getStellarLendingController,So as getStellarQuoteTokens,f as isValidCollectionTicker,m as isValidNftIdentifier,Oo as mapQuoteResponseToAggregatorSwap,Eo as mapQuoteResponseToStrategyPayload,Po as mapQuoteResponseToStrategySwap,ho as mapStellarPositionActivityType,Uo as prepareStellarBuiltTx,Co as prepareStellarTxXdr,We as stellarLendingDispatchKey,qo as syntheticEventOrder,Ro as tagStellarInvokedContractError,He as toBase64Xdr,Bo as toStellarPositionMode};
@@ -4,18 +4,23 @@
4
4
  * (`opts.governanceAddress`, or env via `getStellarGovernance(network)`).
5
5
  *
6
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>`).
7
+ * - An admin holding the PROPOSER role calls the single `propose(proposer,
8
+ * op: AdminOperation, salt)` entrypoint. `proposer = opts.caller`; `op` is
9
+ * the serialized `AdminOperation` enum identifying the target setter and its
10
+ * args; `salt: BytesN<32>` is trailing. Validation runs at propose time and
11
+ * the call returns the operation id (`BytesN<32>`).
12
12
  * - After the timelock delay, ANYONE executes. Controller-targeted ops go
13
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`).
14
+ * predecessor, salt)`; governance-self ops go through `execute_self(executor,
15
+ * op: AdminOperation, salt)`. Open execution passes `executor = None`
16
+ * (Soroban `Option::None`, encoded as `scvVoid`).
17
17
  * - `predecessor` is ALWAYS the 32-zero-byte `BytesN<32>` in this system.
18
18
  *
19
+ * The on-chain scheduled `Operation` (target, function, args) is byte-identical
20
+ * to the pre-enum typed proposers, so the operation id, the generic `execute`
21
+ * path, and event indexing are unchanged. The `AdminOperation` enum only changes
22
+ * the `propose` / `execute_self` call encoding, which these builders own.
23
+ *
19
24
  * Builders are RPC-free and deterministic (synthetic `Account(caller,
20
25
  * sourceSequence)`), exactly like the lending / admin builders. The returned
21
26
  * XDR still needs `rpc.Server.prepareTransaction` before signing.
@@ -42,84 +47,92 @@ export interface MigrateArgs {
42
47
  export interface UpdateDelayArgs {
43
48
  newDelay: number;
44
49
  }
45
- /** propose_set_aggregator(proposer, addr: Address, salt) */
50
+ /** propose(SetAggregator(addr)) */
46
51
  export declare function buildStellarProposeSetAggregatorTx(opts: StellarBuilderOptions, args: {
47
52
  aggregator: string;
48
53
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
49
- /** propose_set_accumulator(proposer, addr: Address, salt) */
54
+ /** propose(SetAccumulator(addr)) */
50
55
  export declare function buildStellarProposeSetAccumulatorTx(opts: StellarBuilderOptions, args: {
51
56
  accumulator: string;
52
57
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
53
- /** propose_set_pool_template(proposer, hash: BytesN<32>, salt) */
58
+ /** propose(SetLiquidityPoolTemplate(hash)) */
54
59
  export declare function buildStellarProposeSetPoolTemplateTx(opts: StellarBuilderOptions, args: {
55
60
  wasmHash: string;
56
61
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
57
- /** propose_edit_asset_config(proposer, asset: Address, cfg: AssetConfigRaw, salt) */
62
+ /** propose(EditAssetConfig(asset, cfg)) */
58
63
  export declare function buildStellarProposeEditAssetConfigTx(opts: StellarBuilderOptions, args: EditAssetConfigArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
59
- /** propose_set_position_limits(proposer, limits: PositionLimits, salt) */
64
+ /** propose(SetPositionLimits(limits)) */
60
65
  export declare function buildStellarProposeSetPositionLimitsTx(opts: StellarBuilderOptions, args: PositionLimitsDto, salt: StellarGovernanceSalt): BuiltStellarTx;
61
- /** propose_set_min_borrow_collat(proposer, floor_wad: i128, salt) */
66
+ /** propose(SetMinBorrowCollateralUsd(floor_wad)) */
62
67
  export declare function buildStellarProposeSetMinBorrowCollatTx(opts: StellarBuilderOptions, args: {
63
68
  floorWad: string;
64
69
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
65
- /** propose_add_e_mode_category(proposer, salt) — risk params are per-asset */
70
+ /** propose(AddEModeCategory) — risk params are per-asset */
66
71
  export declare function buildStellarProposeAddEModeCategoryTx(opts: StellarBuilderOptions, salt: StellarGovernanceSalt): BuiltStellarTx;
67
- /** propose_remove_e_mode_category(proposer, id: u32, salt) */
72
+ /** propose(RemoveEModeCategory(id)) */
68
73
  export declare function buildStellarProposeRemoveEModeCategoryTx(opts: StellarBuilderOptions, args: RemoveEModeCategoryArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
69
- /** propose_add_asset_to_e_mode(proposer, asset, category_id, can_collateral, can_borrow, ltv, threshold, bonus, supply_cap, borrow_cap, salt) */
74
+ /** propose(AddAssetToEModeCategory(EModeAssetArgs)) */
70
75
  export declare function buildStellarProposeAddAssetToEModeTx(opts: StellarBuilderOptions, args: EModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
71
- /** propose_edit_asset_in_e_mode(proposer, asset, category_id, can_collateral, can_borrow, ltv, threshold, bonus, supply_cap, borrow_cap, salt) */
76
+ /** propose(EditAssetInEModeCategory(EModeAssetArgs)) */
72
77
  export declare function buildStellarProposeEditAssetInEModeTx(opts: StellarBuilderOptions, args: EModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
73
- /** propose_update_pool_caps(proposer, asset, supply_cap, borrow_cap, salt) */
78
+ /** propose(UpdatePoolCaps(PoolCapsArgs)) */
74
79
  export declare function buildStellarProposeUpdatePoolCapsTx(opts: StellarBuilderOptions, args: UpdatePoolCapsArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
75
- /** propose_remove_asset_from_e_mode(proposer, asset: Address, category_id: u32, salt) */
80
+ /** propose(RemoveAssetFromEMode(RemoveAssetFromEModeArgs)) */
76
81
  export declare function buildStellarProposeRemoveAssetFromEModeTx(opts: StellarBuilderOptions, args: RemoveEModeAssetArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
77
- /** propose_approve_token(proposer, token: Address, salt) */
82
+ /** propose(ApproveToken(token)) */
78
83
  export declare function buildStellarProposeApproveTokenTx(opts: StellarBuilderOptions, args: {
79
84
  token: string;
80
85
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
81
- /** propose_revoke_token(proposer, token: Address, salt) */
86
+ /** propose(RevokeToken(token)) */
82
87
  export declare function buildStellarProposeRevokeTokenTx(opts: StellarBuilderOptions, args: {
83
88
  token: string;
84
89
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
85
- /** propose_create_liquidity_pool(proposer, asset, params: MarketParamsRaw, config: AssetConfigRaw, salt) */
90
+ /** propose(ApproveBlendPool(pool)) */
91
+ export declare function buildStellarProposeApproveBlendPoolTx(opts: StellarBuilderOptions, args: {
92
+ pool: string;
93
+ }, salt: StellarGovernanceSalt): BuiltStellarTx;
94
+ /** propose(RevokeBlendPool(pool)) */
95
+ export declare function buildStellarProposeRevokeBlendPoolTx(opts: StellarBuilderOptions, args: {
96
+ pool: string;
97
+ }, salt: StellarGovernanceSalt): BuiltStellarTx;
98
+ /** propose(CreateLiquidityPool(CreatePoolArgs)) */
86
99
  export declare function buildStellarProposeCreateLiquidityPoolTx(opts: StellarBuilderOptions, args: CreateLiquidityPoolArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
87
- /** propose_upgrade_pool_params(proposer, asset, params: InterestRateModel, salt) */
100
+ /** propose(UpgradeLiquidityPoolParams(UpgradePoolParamsArgs)) */
88
101
  export declare function buildStellarProposeUpgradePoolParamsTx(opts: StellarBuilderOptions, args: UpgradeLiquidityPoolParamsArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
89
- /** propose_deploy_pool(proposer, salt) */
102
+ /** propose(DeployPool) */
90
103
  export declare function buildStellarProposeDeployPoolTx(opts: StellarBuilderOptions, salt: StellarGovernanceSalt): BuiltStellarTx;
91
- /** propose_upgrade_pool(proposer, new_wasm_hash: BytesN<32>, salt) */
104
+ /** propose(UpgradePool(hash)) */
92
105
  export declare function buildStellarProposeUpgradePoolTx(opts: StellarBuilderOptions, args: {
93
106
  wasmHash: string;
94
107
  }, salt: StellarGovernanceSalt): BuiltStellarTx;
95
- /** propose_grant_controller_role(proposer, account: Address, role: Symbol, salt) */
96
- export declare function buildStellarProposeGrantControllerRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
97
- /** propose_revoke_controller_role(proposer, account: Address, role: Symbol, salt) */
98
- export declare function buildStellarProposeRevokeControllerRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
99
- /** propose_upgrade_controller(proposer, new_wasm_hash: BytesN<32>, salt) */
108
+ /** propose(DisableTokenOracle(asset)) */
109
+ export declare function buildStellarProposeDisableTokenOracleTx(opts: StellarBuilderOptions, args: {
110
+ asset: string;
111
+ }, salt: StellarGovernanceSalt): BuiltStellarTx;
112
+ /** propose(UpgradeController(hash)) */
100
113
  export declare function buildStellarProposeUpgradeControllerTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
101
- /** propose_migrate_controller(proposer, new_version: u32, salt) */
114
+ /** propose(MigrateController(new_version)) */
102
115
  export declare function buildStellarProposeMigrateControllerTx(opts: StellarBuilderOptions, args: MigrateArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
103
- /** propose_transfer_ctrl_ownership(proposer, new_owner: Address, live_until_ledger: u32, salt) */
116
+ /** propose(TransferCtrlOwnership(TransferOwnershipArgs)) */
104
117
  export declare function buildStellarProposeTransferCtrlOwnershipTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
105
118
  /**
106
- * propose_configure_market_oracle(proposer, asset, cfg: MarketOracleConfigInput, salt)
119
+ * propose(ConfigureMarketOracle(ConfigureOracleArgs))
107
120
  *
108
121
  * The SDK passes the oracle INPUT args verbatim; the contract resolves the
109
122
  * input to a resolved config at propose time (do NOT resolve in the SDK).
110
123
  */
111
124
  export declare function buildStellarProposeConfigureMarketOracleTx(opts: StellarBuilderOptions, args: ConfigureMarketOracleArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
112
- /** propose_edit_oracle_tolerance(proposer, asset, first_tolerance_bps: u32, last_tolerance_bps: u32, salt) */
125
+ /** propose(EditOracleTolerance(EditToleranceArgs)) */
113
126
  export declare function buildStellarProposeEditOracleToleranceTx(opts: StellarBuilderOptions, args: EditOracleToleranceArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
114
- /** propose_governance_upgrade(proposer, new_wasm_hash: BytesN<32>, salt) */
127
+ /** propose(UpgradeGov(hash)) */
115
128
  export declare function buildStellarProposeGovernanceUpgradeTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
116
- /** propose_update_delay(proposer, new_delay: u32, salt) */
129
+ /** propose(UpdateGovDelay(new_delay)) */
117
130
  export declare function buildStellarProposeUpdateDelayTx(opts: StellarBuilderOptions, args: UpdateDelayArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
118
- /** propose_grant_governance_role(proposer, account: Address, role: Symbol, salt) */
131
+ /** propose(GrantGovRole(RoleArgs)) */
119
132
  export declare function buildStellarProposeGrantGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
120
- /** propose_revoke_governance_role(proposer, account: Address, role: Symbol, salt) */
133
+ /** propose(RevokeGovRole(RoleArgs)) */
121
134
  export declare function buildStellarProposeRevokeGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
122
- /** propose_transfer_gov_own(proposer, new_owner: Address, live_until_ledger: u32, salt) */
135
+ /** propose(TransferGovOwnership(TransferOwnershipArgs)) */
123
136
  export declare function buildStellarProposeTransferGovOwnTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
124
137
  export interface StellarGovernanceExecuteArgs {
125
138
  /** Controller (or other) contract the scheduled op targets. */
@@ -128,8 +141,8 @@ export interface StellarGovernanceExecuteArgs {
128
141
  functionName: string;
129
142
  /**
130
143
  * The controller-call args, each a base64 ScVal XDR string. These must be the
131
- * SAME ScVals the matching `propose_*` scheduled (the timelock hashes them
132
- * into the op id), in the controller method's arg order. Reconstructed via
144
+ * SAME ScVals the matching proposal scheduled (the timelock hashes them into
145
+ * the op id), in the controller method's arg order. Reconstructed via
133
146
  * `xdr.ScVal.fromXDR(s, 'base64')`.
134
147
  */
135
148
  argsXdr: string[];
@@ -146,15 +159,19 @@ export interface StellarGovernanceExecuteArgs {
146
159
  * controller-targeted op. `executor = None` (open execution), `target` is the
147
160
  * controller `Address`, `function` is a `Symbol`, `args` is the `Vec<Val>`
148
161
  * reconstructed from `argsXdr`, `predecessor` defaults to 32 zero bytes.
162
+ *
163
+ * Unchanged by the AdminOperation refactor: the scheduled `Operation` is
164
+ * byte-identical, so callers reconstruct `(target, function, argsXdr)` from the
165
+ * indexed proposal exactly as before.
149
166
  */
150
167
  export declare function buildStellarGovernanceExecuteTx(opts: StellarBuilderOptions, args: StellarGovernanceExecuteArgs): BuiltStellarTx;
151
- /** execute_governance_upgrade(executor=None, new_wasm_hash: BytesN<32>, salt) */
168
+ /** execute_self(executor=None, UpgradeGov(hash), salt) */
152
169
  export declare function buildStellarGovernanceExecuteGovernanceUpgradeTx(opts: StellarBuilderOptions, args: UpgradeArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
153
- /** execute_update_delay(executor=None, new_delay: u32, salt) */
170
+ /** execute_self(executor=None, UpdateGovDelay(new_delay), salt) */
154
171
  export declare function buildStellarGovernanceExecuteUpdateDelayTx(opts: StellarBuilderOptions, args: UpdateDelayArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
155
- /** execute_grant_governance_role(executor=None, account: Address, role: Symbol, salt) */
172
+ /** execute_self(executor=None, GrantGovRole(RoleArgs), salt) */
156
173
  export declare function buildStellarGovernanceExecuteGrantGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
157
- /** execute_revoke_governance_role(executor=None, account: Address, role: Symbol, salt) */
174
+ /** execute_self(executor=None, RevokeGovRole(RoleArgs), salt) */
158
175
  export declare function buildStellarGovernanceExecuteRevokeGovernanceRoleTx(opts: StellarBuilderOptions, args: RoleGrantArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
159
- /** execute_transfer_gov_own(executor=None, new_owner: Address, live_until_ledger: u32, salt) */
176
+ /** execute_self(executor=None, TransferGovOwnership(TransferOwnershipArgs), salt) */
160
177
  export declare function buildStellarGovernanceExecuteTransferGovOwnTx(opts: StellarBuilderOptions, args: TransferOwnershipArgs, salt: StellarGovernanceSalt): BuiltStellarTx;
@@ -1,4 +1,4 @@
1
- import type { PublicOnly, RateType, LoginAccessDto, LoginRequestDto, UserNetworkInfoDto, UserTokenInventoryResponseDto, UserProfileDoc, UserProfileEditDto, UserProfileDto, UserSettingsDoc, NotificationPreferencesPostDto, SetEmailDto, SetPhoneDto, UserBillingDetails, VerifyEmailDto, TradesilvaniaSignature, SuccessDto, CreatorProfileDto, CreatorProfileDoc, CreatorProfileEditDto, CollectionStatsFilter, CollectionStatsPaginated, CheckLikeStatusResponseDto, UserFavoriteResponseDto, TokenDataDocHydrated, XoxnoInfo, XoxnoLiquidStatsDto, AnalyticsMarketplaceUniqueUsers, ProtocolAprType, ProviderDto, DelegationDataOutput, LendingMarketProfile, LendingMarketProfileFilter, LendingMarketProfileQuery, LendingGovernanceProposalFilter, LendingGovernanceProposalQuery, LendingGovernanceProposalDoc, LendingAccountProfile, LendingIndexesDto, LendingAccountPnl, LendingAccountSummary, LendingEModeCategoryProfile, LendingMarketAnalyticsGraph, LendingMarketAverageGraph, LendingPositionStatus, LendingOverallStats, NftDocFilter, NftPaginated, LikeNftDto, InventorySummaryDtoHydrated, NftOfferPaginated, NftOfferDocFilter, NftOfferDocHydrated, ValueFp, TraitInfo, CollectionRanksDTO, ListingsResponseDto, NftDocHydrated, SignDataDto, SignWithdrawDto, SignAcceptGlobalOfferDto, SignMintDto, NftDocFull, CollectionProfileDoc, CollectionProfileEditDto, FloorPriceDto, PinnedCollectionDto, CollectionMintProfileDocHydrated, CollectionPinnedStatusDto, FollowCollectionDto, CollectionProfileFilter, CollectionProfilePaginated, CollectionMintProfileFilter, CollectionMintProfilePaginated, CollectionMintProfileDocWithStages, CollectionHoldersDto, CollectionHoldersExportDto, CollectionOwnerDto, CollectionStatsDocHydrated, CollectionOffersFilter, GlobalOfferPaginated, CreatorDetailsDto, ShareholderDto, StakingSummary, StakingPoolDoc, StakingEditDto, OwnedCollectionsDto, UserStakingSummaryDto, StakingCreatorDoc, StakingUserPoolNfts, StakingExploreDtoHydrated, OwnedServicesDto, FilterQueryDto, GlobalSearchResourcesPaginated, LendingNftAttributes, LendingTokenPriceDto, NotificationPaginated, PushNotificationCountResponse, NotificationDoc, MobileDeviceDoc, MobileDeviceRegistrationDto, PushNotificationResponse, PushNotificationDoc, NotificationSuccessResponseDto, EventNotificationDto, CreatorMarketingNotificationDto, StellarChallengeResponseDto, Web2UserDoc, SuccessWithMessageDto, NativeWalletDto, SwitchWalletDto, Web2WalletDto, Web2UserShardsDto, NftActivityFilter, NftActivityPaginated, NftActivityDocHydrated, VolumeGraph, AnalyticsVolumeDto, UserAnalyticsDto, GlobalAnalyticsOverviewResponseDto, UserStatsDto, AirdropDtoHydrated, TransactionDetailed, TransactionProcessStatus, TransactionCostData, TransactionCreate, TransactionSendResult, ChatMessageDocHydrated, SendChatMessageDto, UserConversationPaginated, ChatMessagePaginated, GlobalConversationSummaryDto, UserBlockPaginated, WebSocketTokenDto, UserInfo, EventProfile, EventProfileCreateDto, EventProfileEditDto, EventProfileFilter, EventProfileQuery, EventRegistrationResponseDto, EventGuestRegistrationDto, EventTicketProfileDoc, EventTicketProfileCreateDto, EventTicketProfileEditDto, EventStageProfileDoc, EventStageProfileCreateDto, EventStageProfileEditDto, TicketPricesResponse, TicketCalculationRequestDto, DiscountCodeValidationResponse, EventInvitationDoc, EventInvitationCreateDto, EventInvitationFilter, EventInvitationQuery, EventInvitation, EventAcceptInvitation, EventClaimInvitationDto, EventVoucherFilter, EventVoucherQuery, EventQuestionDoc, EventQuestionCreateDto, EventQuestionEditDto, EventGuestFilter, EventGuestProfileQuery, EventGuestProfile, EventGuestExport, EventUserRole, EventUserRoleCreateDto, EventUserRoleEditDto, EventUserRoleDoc, BageQRData, TicketValidationResult, EventCheckInQR, EventVoucherDoc, EventVoucherCreateDto, EventVoucherEditDto, ManualCheckInDto, AnsweredQuestionWithDetails, EventGuestApproveDto, EventCountGroupedByCountry, EventReferralConfigDoc, EventReferralConfigCreateDto, EventReferralConfigEditDto, EventReferralConfigFilter, EventReferralConfigPaginated, EventReferralDoc, EventReferralCreateDto, EventReferralEditDto, EventReferralFilter, EventReferralPaginated, BlendUserPosition, SoroswapQuoteResponseDto, PerpOrderResponse, BarDto, SymbolInfoDto, PerpCoinExtended, PerpSpotCoinExtended, PerpCoinExtendedSlim, PerpLegalCheck, PerpSpotCoinExtendedSlim, L2BookPerpResponseSingle, TradesPerpResponseSingle, ActiveSpotAssetCtx, ActivePerpAssetCtx, PerpEvent } from '@xoxno/types';
1
+ import type { PublicOnly, RateType, LoginAccessDto, LoginRequestDto, UserNetworkInfoDto, UserTokenInventoryResponseDto, UserProfileDoc, UserProfileEditDto, UserProfileDto, UserSettingsDoc, NotificationPreferencesPostDto, SetEmailDto, SetPhoneDto, UserBillingDetails, VerifyEmailDto, TradesilvaniaSignature, SuccessDto, CreatorProfileDto, CreatorProfileDoc, CreatorProfileEditDto, CollectionStatsFilter, CollectionStatsPaginated, CheckLikeStatusResponseDto, UserFavoriteResponseDto, TokenDataDocHydrated, XoxnoInfo, XoxnoLiquidStatsDto, AnalyticsMarketplaceUniqueUsers, ProtocolAprType, ProviderDto, DelegationDataOutput, LendingMarketProfile, LendingMarketProfileFilter, LendingMarketProfileQuery, LendingGovernanceProposalFilter, LendingGovernanceProposalQuery, LendingGovernanceProposalDoc, LendingAccountProfile, LendingIndexesDto, LendingAccountPnl, LendingAccountSummary, LendingEModeCategoryProfile, LendingMarketAnalyticsGraph, LendingStatsHistory, LendingMarketAverageGraph, LendingPositionStatus, LendingOverallStats, NftDocFilter, NftPaginated, LikeNftDto, InventorySummaryDtoHydrated, NftOfferPaginated, NftOfferDocFilter, NftOfferDocHydrated, ValueFp, TraitInfo, CollectionRanksDTO, ListingsResponseDto, NftDocHydrated, SignDataDto, SignWithdrawDto, SignAcceptGlobalOfferDto, SignMintDto, NftDocFull, CollectionProfileDoc, CollectionProfileEditDto, FloorPriceDto, PinnedCollectionDto, CollectionMintProfileDocHydrated, CollectionPinnedStatusDto, FollowCollectionDto, CollectionProfileFilter, CollectionProfilePaginated, CollectionMintProfileFilter, CollectionMintProfilePaginated, CollectionMintProfileDocWithStages, CollectionHoldersDto, CollectionHoldersExportDto, CollectionOwnerDto, CollectionStatsDocHydrated, CollectionOffersFilter, GlobalOfferPaginated, CreatorDetailsDto, ShareholderDto, StakingSummary, StakingPoolDoc, StakingEditDto, OwnedCollectionsDto, UserStakingSummaryDto, StakingCreatorDoc, StakingUserPoolNfts, StakingExploreDtoHydrated, OwnedServicesDto, FilterQueryDto, GlobalSearchResourcesPaginated, LendingNftAttributes, LendingTokenPriceDto, NotificationPaginated, PushNotificationCountResponse, NotificationDoc, MobileDeviceDoc, MobileDeviceRegistrationDto, PushNotificationResponse, PushNotificationDoc, NotificationSuccessResponseDto, EventNotificationDto, CreatorMarketingNotificationDto, StellarChallengeResponseDto, Web2UserDoc, SuccessWithMessageDto, NativeWalletDto, SwitchWalletDto, Web2WalletDto, Web2UserShardsDto, NftActivityFilter, NftActivityPaginated, NftActivityDocHydrated, VolumeGraph, AnalyticsVolumeDto, UserAnalyticsDto, GlobalAnalyticsOverviewResponseDto, UserStatsDto, AirdropDtoHydrated, TransactionDetailed, TransactionProcessStatus, TransactionCostData, TransactionCreate, TransactionSendResult, ChatMessageDocHydrated, SendChatMessageDto, UserConversationPaginated, ChatMessagePaginated, GlobalConversationSummaryDto, UserBlockPaginated, WebSocketTokenDto, UserInfo, EventProfile, EventProfileCreateDto, EventProfileEditDto, EventProfileFilter, EventProfileQuery, EventRegistrationResponseDto, EventGuestRegistrationDto, EventTicketProfileDoc, EventTicketProfileCreateDto, EventTicketProfileEditDto, EventStageProfileDoc, EventStageProfileCreateDto, EventStageProfileEditDto, TicketPricesResponse, TicketCalculationRequestDto, DiscountCodeValidationResponse, EventInvitationDoc, EventInvitationCreateDto, EventInvitationFilter, EventInvitationQuery, EventInvitation, EventAcceptInvitation, EventClaimInvitationDto, EventVoucherFilter, EventVoucherQuery, EventQuestionDoc, EventQuestionCreateDto, EventQuestionEditDto, EventGuestFilter, EventGuestProfileQuery, EventGuestProfile, EventGuestExport, EventUserRole, EventUserRoleCreateDto, EventUserRoleEditDto, EventUserRoleDoc, BageQRData, TicketValidationResult, EventCheckInQR, EventVoucherDoc, EventVoucherCreateDto, EventVoucherEditDto, ManualCheckInDto, AnsweredQuestionWithDetails, EventGuestApproveDto, EventCountGroupedByCountry, EventReferralConfigDoc, EventReferralConfigCreateDto, EventReferralConfigEditDto, EventReferralConfigFilter, EventReferralConfigPaginated, EventReferralDoc, EventReferralCreateDto, EventReferralEditDto, EventReferralFilter, EventReferralPaginated, BlendUserPosition, SoroswapQuoteResponseDto, PerpOrderResponse, BarDto, SymbolInfoDto, PerpCoinExtended, PerpSpotCoinExtended, PerpCoinExtendedSlim, PerpLegalCheck, PerpSpotCoinExtendedSlim, L2BookPerpResponseSingle, TradesPerpResponseSingle, ActiveSpotAssetCtx, ActivePerpAssetCtx, PerpEvent } from '@xoxno/types';
2
2
  import type { ActivityChain, TokenCategory, LendingPositionOrderByColumn, KustoOrderDirection, OfferType, StakingStatus, UserStatsOrderByColumn } from '@xoxno/types/enums';
3
3
  export declare const endpoints: {
4
4
  readonly "/liquid/xoxno/rate": {
@@ -434,6 +434,15 @@ export declare const endpoints: {
434
434
  };
435
435
  readonly output: LendingMarketAnalyticsGraph[];
436
436
  };
437
+ readonly "/lending/stats/history": {
438
+ readonly input: {
439
+ startTime?: string;
440
+ endTime?: string;
441
+ bin?: string;
442
+ chain?: ActivityChain[];
443
+ };
444
+ readonly output: LendingStatsHistory;
445
+ };
437
446
  readonly "/lending/market/:token/average": {
438
447
  readonly input: {};
439
448
  readonly output: LendingMarketAverageGraph[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xoxno/sdk-js",
3
- "version": "1.0.155",
3
+ "version": "1.0.158",
4
4
  "description": "The SDK to interact with the XOXNO Protocol!",
5
5
  "type": "module",
6
6
  "exports": {
@@ -104,7 +104,7 @@
104
104
  "dependencies": {
105
105
  "@multiversx/sdk-core": "^15.3.2",
106
106
  "@multiversx/sdk-network-providers": "^2.9.3",
107
- "@xoxno/types": "^1.0.424"
107
+ "@xoxno/types": "^1.0.426"
108
108
  },
109
109
  "peerDependencies": {
110
110
  "@stellar/stellar-sdk": ">=15.0.0 <17.0.0"