// @ts-nocheck
/**
 * This file was automatically generated by @cosmwasm/ts-codegen@0.35.3.
 * 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 interface InstantiateMsg {
  base_denom: string
  custom_init?: Empty | null
  owner: string
}
export interface Empty {
  [k: string]: unknown
}
export type ExecuteMsg =
  | {
      set_price_source: {
        denom: string
        price_source: OsmosisPriceSourceForString
      }
    }
  | {
      remove_price_source: {
        denom: string
      }
    }
  | {
      update_owner: OwnerUpdate
    }
  | {
      update_config: {
        base_denom?: string | null
      }
    }
  | {
      custom: Empty
    }
export type OsmosisPriceSourceForString =
  | {
      fixed: {
        price: Decimal
      }
    }
  | {
      spot: {
        pool_id: number
      }
    }
  | {
      arithmetic_twap: {
        downtime_detector?: DowntimeDetector | null
        pool_id: number
        window_size: number
      }
    }
  | {
      geometric_twap: {
        downtime_detector?: DowntimeDetector | null
        pool_id: number
        window_size: number
      }
    }
  | {
      xyk_liquidity_token: {
        pool_id: number
      }
    }
  | {
      staked_geometric_twap: {
        downtime_detector?: DowntimeDetector | null
        pool_id: number
        transitive_denom: string
        window_size: number
      }
    }
  | {
      pyth: {
        contract_addr: string
        denom_decimals: number
        max_confidence: Decimal
        max_deviation: Decimal
        max_staleness: number
        price_feed_id: Identifier
      }
    }
  | {
      lsd: {
        geometric_twap: GeometricTwap
        redemption_rate: RedemptionRateForString
        transitive_denom: string
      }
    }
export type Decimal = string
export type Downtime =
  | 'Duration30s'
  | 'Duration1m'
  | 'Duration2m'
  | 'Duration3m'
  | 'Duration4m'
  | 'Duration5m'
  | 'Duration10m'
  | 'Duration20m'
  | 'Duration30m'
  | 'Duration40m'
  | 'Duration50m'
  | 'Duration1h'
  | 'Duration15h'
  | 'Duration2h'
  | 'Duration25h'
  | 'Duration3h'
  | 'Duration4h'
  | 'Duration5h'
  | 'Duration6h'
  | 'Duration9h'
  | 'Duration12h'
  | 'Duration18h'
  | 'Duration24h'
  | 'Duration36h'
  | 'Duration48h'
export type Identifier = string
export type OwnerUpdate =
  | {
      propose_new_owner: {
        proposed: string
      }
    }
  | 'clear_proposed'
  | 'accept_proposed'
  | 'abolish_owner_role'
  | {
      set_emergency_owner: {
        emergency_owner: string
      }
    }
  | 'clear_emergency_owner'
export interface DowntimeDetector {
  downtime: Downtime
  recovery: number
}
export interface GeometricTwap {
  downtime_detector?: DowntimeDetector | null
  pool_id: number
  window_size: number
}
export interface RedemptionRateForString {
  contract_addr: string
  max_staleness: number
}
export type QueryMsg =
  | {
      config: {}
    }
  | {
      price_source: {
        denom: string
      }
    }
  | {
      price_sources: {
        limit?: number | null
        start_after?: string | null
      }
    }
  | {
      price: {
        denom: string
        kind?: ActionKind | null
      }
    }
  | {
      prices: {
        kind?: ActionKind | null
        limit?: number | null
        start_after?: string | null
      }
    }
export type ActionKind = 'default' | 'liquidation'
export interface ConfigResponse {
  base_denom: string
  owner?: string | null
  proposed_new_owner?: string | null
}
export interface PriceResponse {
  denom: string
  price: Decimal
}
export interface PriceSourceResponseForString {
  denom: string
  price_source: string
}
export type ArrayOfPriceSourceResponseForString = PriceSourceResponseForString[]
export type ArrayOfPriceResponse = PriceResponse[]
