// @ts-nocheck
/**
 * This file was automatically generated by @cosmwasm/ts-codegen@0.30.1.
 * 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 {
  address_provider: string
  epoch_duration: number
  max_whitelisted_denoms: number
  owner: string
}
export type ExecuteMsg =
  | {
      update_whitelist: {
        add_denoms: WhitelistEntry[]
        remove_denoms: string[]
      }
    }
  | {
      set_asset_incentive: {
        collateral_denom: string
        duration: number
        emission_per_second: Uint128
        incentive_denom: string
        start_time: number
      }
    }
  | {
      balance_change: {
        account_id?: string | null
        denom: string
        total_amount_scaled_before: Uint128
        user_addr: Addr
        user_amount_scaled_before: Uint128
      }
    }
  | {
      claim_rewards: {
        account_id?: string | null
        limit?: number | null
        start_after_collateral_denom?: string | null
        start_after_incentive_denom?: string | null
      }
    }
  | {
      update_config: {
        address_provider?: string | null
        max_whitelisted_denoms?: number | null
      }
    }
  | {
      update_owner: OwnerUpdate
    }
export type Uint128 = string
export type Addr = 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 WhitelistEntry {
  denom: string
  min_emission_rate: Uint128
}
export type QueryMsg =
  | {
      active_emissions: {
        collateral_denom: string
      }
    }
  | {
      config: {}
    }
  | {
      incentive_state: {
        collateral_denom: string
        incentive_denom: string
      }
    }
  | {
      incentive_states: {
        limit?: number | null
        start_after_collateral_denom?: string | null
        start_after_incentive_denom?: string | null
      }
    }
  | {
      emission: {
        collateral_denom: string
        incentive_denom: string
        timestamp: number
      }
    }
  | {
      emissions: {
        collateral_denom: string
        incentive_denom: string
        limit?: number | null
        start_after_timestamp?: number | null
      }
    }
  | {
      user_unclaimed_rewards: {
        account_id?: string | null
        limit?: number | null
        start_after_collateral_denom?: string | null
        start_after_incentive_denom?: string | null
        user: string
      }
    }
  | {
      whitelist: {}
    }
export type ArrayOfActiveEmission = ActiveEmission[]
export interface ActiveEmission {
  denom: string
  emission_rate: Uint128
}
export interface ConfigResponse {
  address_provider: Addr
  epoch_duration: number
  max_whitelisted_denoms: number
  owner?: string | null
  proposed_new_owner?: string | null
}
export type ArrayOfEmissionResponse = EmissionResponse[]
export interface EmissionResponse {
  emission_rate: Uint128
  epoch_start: number
}
export type Decimal = string
export interface IncentiveStateResponse {
  collateral_denom: string
  incentive_denom: string
  index: Decimal
  last_updated: number
}
export type ArrayOfIncentiveStateResponse = IncentiveStateResponse[]
export type ArrayOfCoin = Coin[]
export interface Coin {
  amount: Uint128
  denom: string
  [k: string]: unknown
}
export type ArrayOfWhitelistEntry = WhitelistEntry[]
