import { Transaction, TransactionArgument, TransactionObjectInput, TransactionResult } from '@mysten/sui/transactions'; import type { EnvConfig } from '../../_envs'; import { GenericArg } from '../../_framework/util'; export interface CreateReserveConfigArgs { openLtvPct: number | TransactionArgument; closeLtvPct: number | TransactionArgument; maxCloseLtvPct: number | TransactionArgument; borrowWeightBps: bigint | TransactionArgument; depositLimit: bigint | TransactionArgument; borrowLimit: bigint | TransactionArgument; liquidationBonusBps: bigint | TransactionArgument; maxLiquidationBonusBps: bigint | TransactionArgument; depositLimitUsd: bigint | TransactionArgument; borrowLimitUsd: bigint | TransactionArgument; borrowFeeBps: bigint | TransactionArgument; spreadFeeBps: bigint | TransactionArgument; protocolLiquidationFeeBps: bigint | TransactionArgument; interestRateUtils: Array | TransactionArgument; interestRateAprs: Array | TransactionArgument; isolated: boolean | TransactionArgument; openAttributedBorrowLimitUsd: bigint | TransactionArgument; closeAttributedBorrowLimitUsd: bigint | TransactionArgument; } /** * Creates a new reserve configuration with the specified parameters. * * Validates the configuration to ensure it meets all required constraints before returning. * * # Arguments * * * `open_ltv_pct` - Loan-to-value percentage for opening positions (0-100). * * `close_ltv_pct` - Loan-to-value percentage for closing positions (0-100). * * `max_close_ltv_pct` - Maximum close LTV percentage (unused, 0-100). * * `borrow_weight_bps` - Borrow weight in basis points (minimum 10,000). * * `deposit_limit` - Maximum deposit amount in token units. * * `borrow_limit` - Maximum borrow amount in token units. * * `liquidation_bonus_bps` - Bonus for liquidators in basis points. * * `max_liquidation_bonus_bps` - Maximum liquidation bonus in basis points (unused). * * `deposit_limit_usd` - Maximum deposit amount in USD. * * `borrow_limit_usd` - Maximum borrow amount in USD. * * `borrow_fee_bps` - Fee for borrowing in basis points (maximum 10,000). * * `spread_fee_bps` - Spread fee in basis points (maximum 10,000). * * `protocol_liquidation_fee_bps` - Protocol fee on liquidations in basis points. * * `interest_rate_utils` - Vector of utilization rates for interest rate calculation (0-100). * * `interest_rate_aprs` - Vector of APRs corresponding to utilization rates. * * `isolated` - If true, asset is isolated (can only be borrowed in isolation). * * `open_attributed_borrow_limit_usd` - Open attributed borrow limit in USD (unused). * * `close_attributed_borrow_limit_usd` - Close attributed borrow limit in USD (unused). * * # Returns * * * `ReserveConfig` - A validated reserve configuration. * * # Panics * * * If `open_ltv_pct`, `close_ltv_pct`, or `max_close_ltv_pct` exceeds 100 (`EInvalidReserveConfig`). * * If `open_ltv_pct` is greater than `close_ltv_pct` (`EInvalidReserveConfig`). * * If `close_ltv_pct` is greater than `max_close_ltv_pct` (`EInvalidReserveConfig`). * * If `borrow_weight_bps` is less than 10,000 (`EInvalidReserveConfig`). * * If `liquidation_bonus_bps` exceeds `max_liquidation_bonus_bps` (`EInvalidReserveConfig`). * * If `liquidation_bonus_bps + protocol_liquidation_fee_bps` exceeds 2,000 (`EInvalidReserveConfig`). * * If `isolated` is true and `open_ltv_pct` or `close_ltv_pct` is non-zero (`EInvalidReserveConfig`). * * If `borrow_fee_bps` or `spread_fee_bps` exceeds 10,000 (`EInvalidReserveConfig`). * * If `open_attributed_borrow_limit_usd` exceeds `close_attributed_borrow_limit_usd` (`EInvalidReserveConfig`). * * If `interest_rate_utils` has fewer than 2 elements, does not start with 0, or end with 100 (`EInvalidReserveConfig`). * * If `interest_rate_utils` and `interest_rate_aprs` have different lengths (`EInvalidReserveConfig`). * * If `interest_rate_utils` is not strictly increasing or `interest_rate_aprs` is not monotonically increasing (`EInvalidReserveConfig`). */ export declare function createReserveConfig(tx: Transaction, args: CreateReserveConfigArgs, options?: { env?: EnvConfig; }): TransactionResult; /** * The raw basis-points value backing `confidence_multiplier`. Kept separate so `from()` * can reseed a builder from the stored bps integer directly, rather than reconstructing * it from the `Decimal` `confidence_multiplier` returns -- `decimal.move` has no reverse * conversion back to bps. */ export declare function confidenceMultiplierBps(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * A confidence-margin multiplier `k`, stored in basis points (10_000 = 1x) and * returned already scaled to a `Decimal`. It is intended to scale Pyth's raw * confidence interval `conf` (same decimal exponent as the price): * `price_lower_bound = min(spot, ema) - k * conf`, * `price_upper_bound = max(spot, ema) + k * conf`. * Zero (the default, and every reserve's value until explicitly set) means every * valuation is bit-for-bit identical to before this field existed. */ export declare function confidenceMultiplier(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; export interface SetConfidenceMultiplierArgs { config: TransactionObjectInput; confidenceMultiplierBps: bigint | TransactionArgument; } /** * Sets a reserve's confidence multiplier `k` (in basis points) on a config under * construction, overwriting any existing value -- including removing the entry * entirely when `confidence_multiplier_bps == 0`, so `confidence_multiplier` afterwards * always reads back `decimal::from_bps(confidence_multiplier_bps)`. */ export declare function setConfidenceMultiplier(tx: Transaction, args: SetConfidenceMultiplierArgs, options?: { env?: EnvConfig; }): TransactionResult; /** * Shared by `set_confidence_multiplier`'s zero branch and `destroy()`, the two places * a confidence-multiplier entry is ever dropped from a `Bag`. */ export declare function removeConfidenceMultiplierIfPresent(tx: Transaction, bag: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Validates the reserve configuration to ensure it meets all constraints. * * Checks various parameters for correctness, including LTVs, borrow weight, liquidation bonuses, * fees, and interest rate vectors. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to validate. * * # Panics * * * If `open_ltv_pct`, `close_ltv_pct`, or `max_close_ltv_pct` exceeds 100 (`EInvalidReserveConfig`). * * If `open_ltv_pct` is greater than `close_ltv_pct` (`EInvalidReserveConfig`). * * If `close_ltv_pct` is greater than `max_close_ltv_pct` (`EInvalidReserveConfig`). * * If `borrow_weight_bps` is less than 10,000 (`EInvalidReserveConfig`). * * If `liquidation_bonus_bps` exceeds `max_liquidation_bonus_bps` (`EInvalidReserveConfig`). * * If `liquidation_bonus_bps + protocol_liquidation_fee_bps` exceeds 2,000 (`EInvalidReserveConfig`). * * If `isolated` is true and `open_ltv_pct` or `close_ltv_pct` is non-zero (`EInvalidReserveConfig`). * * If `borrow_fee_bps` or `spread_fee_bps` exceeds 10,000 (`EInvalidReserveConfig`). * * If `open_attributed_borrow_limit_usd` exceeds `close_attributed_borrow_limit_usd` (`EInvalidReserveConfig`). * * If `interest_rate_utils` has fewer than 2 elements, does not start with 0, or end with 100 (`EInvalidReserveConfig`). * * If `interest_rate_utils` and `interest_rate_aprs` have different lengths (`EInvalidReserveConfig`). * * If `interest_rate_utils` is not strictly increasing or `interest_rate_aprs` is not monotonically increasing (`EInvalidReserveConfig`). */ export declare function validateReserveConfig(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; export interface ValidateUtilsAndAprsArgs { utils: Array | TransactionArgument; aprs: Array | TransactionArgument; } /** * Validates the interest rate utilization and APR vectors. * * Ensures the utilization rates are strictly increasing, start at 0, end at 100, and * match the length of the APR vector, which must be monotonically increasing. * * # Arguments * * * `utils` - A reference to the vector of utilization rates (0-100). * * `aprs` - A reference to the vector of APRs in basis points. * * # Panics * * * If `utils` has fewer than 2 elements (`EInvalidReserveConfig`). * * If `utils` and `aprs` have different lengths (`EInvalidReserveConfig`). * * If `utils` does not start with 0 or end with 100 (`EInvalidReserveConfig`). * * If `utils` is not strictly increasing (`EInvalidReserveConfig`). * * If `aprs` is not monotonically increasing (`EInvalidReserveConfig`). */ export declare function validateUtilsAndAprs(tx: Transaction, args: ValidateUtilsAndAprsArgs, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the open loan-to-value (LTV) ratio as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The open LTV ratio as a decimal (e.g., 50% = 0.5). */ export declare function openLtv(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the close loan-to-value (LTV) ratio as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The close LTV ratio as a decimal (e.g., 50% = 0.5). */ export declare function closeLtv(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; export declare function openLtvPct(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; export declare function closeLtvPct(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the borrow weight as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The borrow weight as a decimal (e.g., 10,000 bps = 1.0). */ export declare function borrowWeight(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the deposit limit in token units. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `u64` - The maximum deposit amount in token units. */ export declare function depositLimit(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the borrow limit in token units. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `u64` - The maximum borrow amount in token units. */ export declare function borrowLimit(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the liquidation bonus as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The liquidation bonus as a decimal (e.g., 500 bps = 0.05). */ export declare function liquidationBonus(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the deposit limit in USD. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `u64` - The maximum deposit amount in USD. */ export declare function depositLimitUsd(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the borrow limit in USD. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `u64` - The maximum borrow amount in USD. */ export declare function borrowLimitUsd(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the borrow fee as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The borrow fee as a decimal (e.g., 10 bps = 0.001). */ export declare function borrowFee(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the protocol liquidation fee as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The protocol liquidation fee as a decimal (e.g., 300 bps = 0.03). */ export declare function protocolLiquidationFee(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the isolation status of the reserve. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `bool` - True if the asset is isolated, false otherwise. */ export declare function isolated(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Whether this reserve has been fully retired: no borrowing power, no liquidation value, * and closed to new positions on both sides. * * This is deliberately STRICTER than `open_ltv == 0`. Zeroing open ltv alone is how a * reserve is wound down while existing positions survive — the close ltv has to stay put, * because zeroing it insta-liquidates every depositor. Such a reserve is still ordinary * collateral, priced by a live feed, and worth real money. On MAIN as of 2026-08-18 the two * groups are nothing alike: five wound-down reserves (wUSDC, wUSDT, AUSD, WETH, yapSUI) hold * $133,635 backing $48,818 of live debt at close ltvs of 75-80%, while every fully retired * reserve sits at close ltv 0. * * Retirement is therefore the honest test for "this deposit is not worth chasing": an * operator only reaches this state once the asset backs nothing anyone can realize. Guards * that ask what an obligation's collateral is WORTH use this; guards that only ask whether a * deposit grants borrowing power use `open_ltv` directly. * * The off-chain twin is `mayUseOnChainPrice` in `common/utils/reservePriceFallback.ts`, * which tests the same four fields and must keep agreeing with this. */ export declare function isRetired(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Gets the spread fee as a decimal. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to query. * * # Returns * * * `Decimal` - The spread fee as a decimal (e.g., 2000 bps = 0.2). */ export declare function spreadFee(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; export interface CalculateAprArgs { config: TransactionObjectInput; curUtil: TransactionObjectInput; } /** * Calculates the annual percentage rate (APR) based on the current utilization. * * Interpolates the APR based on the utilization rate using the provided `interest_rate_utils` * and `interest_rate_aprs` vectors. * * # Arguments * * * `config` - A reference to the `ReserveConfig` containing the interest rate data. * * `cur_util` - The current utilization rate as a decimal (0 to 1). * * # Returns * * * `Decimal` - The calculated APR as a decimal. * * # Panics * * * If `cur_util` is greater than 1 (`EInvalidUtil`). * * If the interpolation logic fails due to invalid configuration (`EInvalidReserveConfig`). */ export declare function calculateApr(tx: Transaction, args: CalculateAprArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface CalculateSupplyAprArgs { config: TransactionObjectInput; curUtil: TransactionObjectInput; borrowApr: TransactionObjectInput; } /** * Calculates the supply APR based on the current utilization and borrow APR. * * Applies the spread fee to the borrow APR and scales it by the utilization rate. * * # Arguments * * * `config` - A reference to the `ReserveConfig` containing the spread fee. * * `cur_util` - The current utilization rate as a decimal (0 to 1). * * `borrow_apr` - The borrow APR as a decimal. * * # Returns * * * `Decimal` - The calculated supply APR as a decimal. */ export declare function calculateSupplyApr(tx: Transaction, args: CalculateSupplyAprArgs, options?: { env?: EnvConfig; }): TransactionResult; /** * Destroys a reserve configuration, ensuring the additional fields bag is empty. * * # Arguments * * * `config` - The `ReserveConfig` to destroy. * * Drains the confidence multiplier from `additional_fields` before requiring it * empty -- callers never need to remove it themselves first. * * # Panics * * * If `additional_fields` holds anything other than the confidence multiplier. */ export declare function destroy(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; /** * Creates a new reserve configuration builder from an existing configuration. * * Initializes a `ReserveConfigBuilder` with the fields from the provided `ReserveConfig`. * * # Arguments * * * `config` - A reference to the `ReserveConfig` to initialize the builder from. * * # Returns * * * `ReserveConfigBuilder` - A new builder initialized with the config's fields. */ export declare function from(tx: Transaction, config: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult; export interface SetConfidenceMultiplierBuilderArgs { builder: TransactionObjectInput; confidenceMultiplierBps: bigint | TransactionArgument; } /** * Sets the confidence multiplier `k` (in basis points) in the builder. Seeded * automatically by `from` from the source config's current value, so * `from(...) -> tweak -> build(...)` carries `k` forward the same way every other * field already does. */ export declare function setConfidenceMultiplierBuilder(tx: Transaction, args: SetConfidenceMultiplierBuilderArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetMinConfidenceRatioBuilderArgs { builder: TransactionObjectInput; minConfidenceRatio: bigint | TransactionArgument; } /** * Seeded by `from` like the confidence multiplier. Must be non-zero, and must stay * above the confidence multiplier `k` (see `build`). */ export declare function setMinConfidenceRatioBuilder(tx: Transaction, args: SetMinConfidenceRatioBuilderArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetMaxStalenessSecondsBuilderArgs { builder: TransactionObjectInput; maxStalenessSeconds: bigint | TransactionArgument; } /** Seeded by `from` like the confidence multiplier. Must be non-zero. */ export declare function setMaxStalenessSecondsBuilder(tx: Transaction, args: SetMaxStalenessSecondsBuilderArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetArgs { builder: TransactionObjectInput; field: GenericArg; value: GenericArg; } /** * Sets a field in the reserve configuration builder. * * Updates an existing field or adds a new one to the builder's fields bag. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `field` - The key for the field to set. * * `value` - The value to set for the field. */ export declare function set(tx: Transaction, typeArgs: [string, string], args: SetArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface UpsertArgs { bag: TransactionObjectInput; key: GenericArg; value: GenericArg; } export declare function upsert(tx: Transaction, typeArgs: [string, string], args: UpsertArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetOpenLtvPctArgs { builder: TransactionObjectInput; openLtvPct: number | TransactionArgument; } /** * Sets the open LTV percentage in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `open_ltv_pct` - The open LTV percentage to set. */ export declare function setOpenLtvPct(tx: Transaction, args: SetOpenLtvPctArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetCloseLtvPctArgs { builder: TransactionObjectInput; closeLtvPct: number | TransactionArgument; } /** * Sets the close LTV percentage in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `close_ltv_pct` - The close LTV percentage to set. */ export declare function setCloseLtvPct(tx: Transaction, args: SetCloseLtvPctArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetMaxCloseLtvPctArgs { builder: TransactionObjectInput; maxCloseLtvPct: number | TransactionArgument; } /** * Sets the maximum close LTV percentage in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `max_close_ltv_pct` - The maximum close LTV percentage to set. */ export declare function setMaxCloseLtvPct(tx: Transaction, args: SetMaxCloseLtvPctArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetBorrowWeightBpsArgs { builder: TransactionObjectInput; borrowWeightBps: bigint | TransactionArgument; } /** * Sets the borrow weight in basis points in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `borrow_weight_bps` - The borrow weight in basis points to set. */ export declare function setBorrowWeightBps(tx: Transaction, args: SetBorrowWeightBpsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetDepositLimitArgs { builder: TransactionObjectInput; depositLimit: bigint | TransactionArgument; } /** * Sets the deposit limit in token units in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `deposit_limit` - The deposit limit in token units to set. */ export declare function setDepositLimit(tx: Transaction, args: SetDepositLimitArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetBorrowLimitArgs { builder: TransactionObjectInput; borrowLimit: bigint | TransactionArgument; } /** * Sets the borrow limit in token units in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `borrow_limit` - The borrow limit in token units to set. */ export declare function setBorrowLimit(tx: Transaction, args: SetBorrowLimitArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetLiquidationBonusBpsArgs { builder: TransactionObjectInput; liquidationBonusBps: bigint | TransactionArgument; } /** * Sets the liquidation bonus in basis points in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `liquidation_bonus_bps` - The liquidation bonus in basis points to set. */ export declare function setLiquidationBonusBps(tx: Transaction, args: SetLiquidationBonusBpsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetMaxLiquidationBonusBpsArgs { builder: TransactionObjectInput; maxLiquidationBonusBps: bigint | TransactionArgument; } /** * Sets the maximum liquidation bonus in basis points in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `max_liquidation_bonus_bps` - The maximum liquidation bonus in basis points to set. */ export declare function setMaxLiquidationBonusBps(tx: Transaction, args: SetMaxLiquidationBonusBpsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetDepositLimitUsdArgs { builder: TransactionObjectInput; depositLimitUsd: bigint | TransactionArgument; } /** * Sets the deposit limit in USD in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `deposit_limit_usd` - The deposit limit in USD to set. */ export declare function setDepositLimitUsd(tx: Transaction, args: SetDepositLimitUsdArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetBorrowLimitUsdArgs { builder: TransactionObjectInput; borrowLimitUsd: bigint | TransactionArgument; } /** * Sets the borrow limit in USD in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `borrow_limit_usd` - The borrow limit in USD to set. */ export declare function setBorrowLimitUsd(tx: Transaction, args: SetBorrowLimitUsdArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetInterestRateUtilsArgs { builder: TransactionObjectInput; interestRateUtils: Array | TransactionArgument; } /** * Sets the interest rate utilization vector in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `interest_rate_utils` - The vector of utilization rates to set. */ export declare function setInterestRateUtils(tx: Transaction, args: SetInterestRateUtilsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetInterestRateAprsArgs { builder: TransactionObjectInput; interestRateAprs: Array | TransactionArgument; } /** * Sets the interest rate APR vector in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `interest_rate_aprs` - The vector of APRs to set. */ export declare function setInterestRateAprs(tx: Transaction, args: SetInterestRateAprsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetBorrowFeeBpsArgs { builder: TransactionObjectInput; borrowFeeBps: bigint | TransactionArgument; } /** * Sets the borrow fee in basis points in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `borrow_fee_bps` - The borrow fee in basis points to set. */ export declare function setBorrowFeeBps(tx: Transaction, args: SetBorrowFeeBpsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetSpreadFeeBpsArgs { builder: TransactionObjectInput; spreadFeeBps: bigint | TransactionArgument; } /** * Sets the spread fee in basis points in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `spread_fee_bps` - The spread fee in basis points to set. */ export declare function setSpreadFeeBps(tx: Transaction, args: SetSpreadFeeBpsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetProtocolLiquidationFeeBpsArgs { builder: TransactionObjectInput; protocolLiquidationFeeBps: bigint | TransactionArgument; } /** * Sets the protocol liquidation fee in basis points in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `protocol_liquidation_fee_bps` - The protocol liquidation fee in basis points to set. */ export declare function setProtocolLiquidationFeeBps(tx: Transaction, args: SetProtocolLiquidationFeeBpsArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetIsolatedArgs { builder: TransactionObjectInput; isolated: boolean | TransactionArgument; } /** * Sets the isolation status in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `isolated` - The isolation status to set. */ export declare function setIsolated(tx: Transaction, args: SetIsolatedArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetOpenAttributedBorrowLimitUsdArgs { builder: TransactionObjectInput; openAttributedBorrowLimitUsd: bigint | TransactionArgument; } /** * Sets the open attributed borrow limit in USD in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `open_attributed_borrow_limit_usd` - The open attributed borrow limit in USD to set. */ export declare function setOpenAttributedBorrowLimitUsd(tx: Transaction, args: SetOpenAttributedBorrowLimitUsdArgs, options?: { env?: EnvConfig; }): TransactionResult; export interface SetCloseAttributedBorrowLimitUsdArgs { builder: TransactionObjectInput; closeAttributedBorrowLimitUsd: bigint | TransactionArgument; } /** * Sets the close attributed borrow limit in USD in the builder. * * # Arguments * * * `builder` - A mutable reference to the `ReserveConfigBuilder`. * * `close_attributed_borrow_limit_usd` - The close attributed borrow limit in USD to set. */ export declare function setCloseAttributedBorrowLimitUsd(tx: Transaction, args: SetCloseAttributedBorrowLimitUsdArgs, options?: { env?: EnvConfig; }): TransactionResult; /** * Builds a reserve configuration from the builder. * * Constructs a `ReserveConfig` by extracting all fields from the builder's bag and * validating the resulting configuration. * * # Arguments * * * `builder` - The `ReserveConfigBuilder` to build from. * * # Returns * * * `ReserveConfig` - The constructed and validated reserve configuration. * * # Panics * * * If any required field is missing from the builder's bag. * * If the constructed configuration fails validation (see `validate_reserve_config` for details). */ export declare function build(tx: Transaction, builder: TransactionObjectInput, options?: { env?: EnvConfig; }): TransactionResult;