// @ts-nocheck
/**
 * This file was automatically generated by @cosmwasm/ts-codegen@0.24.0.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run the @cosmwasm/ts-codegen generate command to regenerate this file.
 */

export type Decimal = string
export type Uint128 = string
export type VaultPositionAmount =
  | {
      unlocked: VaultAmount
    }
  | {
      locking: LockingVaultAmount
    }
export type VaultAmount = string
export type VaultAmount1 = string
export type UnlockingPositions = VaultUnlockingPosition[]
export type Addr = string
export interface HealthComputer {
  allowed_coins: string[]
  denoms_data: DenomsData
  positions: Positions
  vaults_data: VaultsData
}
export interface DenomsData {
  markets: {
    [k: string]: Market
  }
  prices: {
    [k: string]: Decimal
  }
}
export interface Market {
  borrow_enabled: boolean
  borrow_index: Decimal
  borrow_rate: Decimal
  collateral_total_scaled: Uint128
  debt_total_scaled: Uint128
  denom: string
  deposit_cap: Uint128
  deposit_enabled: boolean
  indexes_last_updated: number
  interest_rate_model: InterestRateModel
  liquidation_bonus: Decimal
  liquidation_threshold: Decimal
  liquidity_index: Decimal
  liquidity_rate: Decimal
  max_loan_to_value: Decimal
  reserve_factor: Decimal
}
export interface InterestRateModel {
  base: Decimal
  optimal_utilization_rate: Decimal
  slope_1: Decimal
  slope_2: Decimal
}
export interface Positions {
  account_id: string
  debts: DebtAmount[]
  deposits: Coin[]
  lends: LentAmount[]
  vaults: VaultPosition[]
}
export interface DebtAmount {
  amount: Uint128
  denom: string
  shares: Uint128
}
export interface Coin {
  amount: Uint128
  denom: string
  [k: string]: unknown
}
export interface LentAmount {
  amount: Uint128
  denom: string
  shares: Uint128
}
export interface VaultPosition {
  amount: VaultPositionAmount
  vault: VaultBaseForAddr
}
export interface LockingVaultAmount {
  locked: VaultAmount1
  unlocking: UnlockingPositions
}
export interface VaultUnlockingPosition {
  coin: Coin
  id: number
}
export interface VaultBaseForAddr {
  address: Addr
}
export interface VaultsData {
  vault_configs: {
    [k: string]: VaultConfig
  }
  vault_values: {
    [k: string]: VaultPositionValue
  }
}
export interface VaultConfig {
  deposit_cap: Coin
  liquidation_threshold: Decimal
  max_ltv: Decimal
  whitelisted: boolean
}
export interface VaultPositionValue {
  base_coin: CoinValue
  vault_coin: CoinValue
}
export interface CoinValue {
  amount: Uint128
  denom: string
  value: Uint128
}
