// @ts-nocheck
/**
 * This file was automatically generated by @cosmwasm/ts-codegen@0.33.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 Duration =
  | {
      height: number
    }
  | {
      time: number
    }
export type OracleBaseForString = string
export interface InstantiateMsg {
  base_token_denom: string
  is_evil?: string | null
  lockup?: Duration | null
  oracle: OracleBaseForString
  vault_token_denom: string
}
export type ExecuteMsg =
  | {
      deposit: {
        amount: Uint128
        recipient?: string | null
      }
    }
  | {
      redeem: {
        amount: Uint128
        recipient?: string | null
      }
    }
  | {
      vault_extension: ExtensionExecuteMsg
    }
export type Uint128 = string
export type ExtensionExecuteMsg =
  | {
      lockup: LockupExecuteMsg
    }
  | {
      force_unlock: ForceUnlockExecuteMsg
    }
export type LockupExecuteMsg =
  | {
      unlock: {
        amount: Uint128
      }
    }
  | {
      emergency_unlock: {
        amount: Uint128
      }
    }
  | {
      withdraw_unlocked: {
        lockup_id: number
        recipient?: string | null
      }
    }
export type ForceUnlockExecuteMsg =
  | {
      force_redeem: {
        amount: Uint128
        recipient?: string | null
      }
    }
  | {
      force_withdraw_unlocking: {
        amount?: Uint128 | null
        lockup_id: number
        recipient?: string | null
      }
    }
  | {
      update_force_withdraw_whitelist: {
        add_addresses: string[]
        remove_addresses: string[]
      }
    }
export type QueryMsg =
  | {
      vault_standard_info: {}
    }
  | {
      info: {}
    }
  | {
      preview_deposit: {
        amount: Uint128
      }
    }
  | {
      preview_redeem: {
        amount: Uint128
      }
    }
  | {
      total_assets: {}
    }
  | {
      total_vault_token_supply: {}
    }
  | {
      convert_to_shares: {
        amount: Uint128
      }
    }
  | {
      convert_to_assets: {
        amount: Uint128
      }
    }
  | {
      vault_extension: ExtensionQueryMsg
    }
export type ExtensionQueryMsg = {
  lockup: LockupQueryMsg
}
export type LockupQueryMsg =
  | {
      unlocking_positions: {
        limit?: number | null
        owner: string
        start_after?: number | null
      }
    }
  | {
      unlocking_position: {
        lockup_id: number
      }
    }
  | {
      lockup_duration: {}
    }
export interface VaultInfoResponse {
  base_token: string
  vault_token: string
}
export interface Empty {
  [k: string]: unknown
}
export interface VaultStandardInfoResponse {
  extensions: string[]
  version: number
}
