/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import {
  ethers,
  EventFilter,
  Signer,
  BigNumber,
  BigNumberish,
  PopulatedTransaction,
} from "ethers";
import {
  Contract,
  ContractTransaction,
  Overrides,
  CallOverrides,
} from "@ethersproject/contracts";
import { BytesLike } from "@ethersproject/bytes";
import { Listener, Provider } from "@ethersproject/providers";
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";

interface CompAdapterInterface extends ethers.utils.Interface {
  functions: {
    "ORIGIN_ASSET_ADDRESS()": FunctionFragment;
    "UNDERLYING_ASSET_ADDRESS()": FunctionFragment;
    "admin_enableClaims()": FunctionFragment;
    "admin_migrateAll(address)": FunctionFragment;
    "admin_setRewardPool(address)": FunctionFragment;
    "admin_sweepToken(address,address)": FunctionFragment;
    "balanceForMigrate(address)": FunctionFragment;
    "balanceMigrated(address)": FunctionFragment;
    "claimMigrated(address)": FunctionFragment;
    "claimMigratedPortion(address,uint256)": FunctionFragment;
    "depositToMigrate(uint256,address,uint64)": FunctionFragment;
    "getController()": FunctionFragment;
    "getRewardPool()": FunctionFragment;
    "isClaimable()": FunctionFragment;
    "isPaused()": FunctionFragment;
    "postDepositOnBehalf(address,uint256,uint256,uint64)": FunctionFragment;
    "preDepositOnBehalf()": FunctionFragment;
    "setPaused(bool)": FunctionFragment;
    "totalBalanceForMigrate()": FunctionFragment;
    "totalScaledBalances()": FunctionFragment;
    "withdrawFromMigrate(uint256)": FunctionFragment;
    "withdrawFromMigrateOnBehalf(uint256,address)": FunctionFragment;
  };

  encodeFunctionData(
    functionFragment: "ORIGIN_ASSET_ADDRESS",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UNDERLYING_ASSET_ADDRESS",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "admin_enableClaims",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "admin_migrateAll",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "admin_setRewardPool",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "admin_sweepToken",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "balanceForMigrate",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "balanceMigrated",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "claimMigrated",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "claimMigratedPortion",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "depositToMigrate",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getController",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getRewardPool",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "isClaimable",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "isPaused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "postDepositOnBehalf",
    values: [string, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "preDepositOnBehalf",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "setPaused", values: [boolean]): string;
  encodeFunctionData(
    functionFragment: "totalBalanceForMigrate",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalScaledBalances",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawFromMigrate",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawFromMigrateOnBehalf",
    values: [BigNumberish, string]
  ): string;

  decodeFunctionResult(
    functionFragment: "ORIGIN_ASSET_ADDRESS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UNDERLYING_ASSET_ADDRESS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_enableClaims",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_migrateAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_setRewardPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_sweepToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "balanceForMigrate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "balanceMigrated",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimMigrated",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimMigratedPortion",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "depositToMigrate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getController",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRewardPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isClaimable",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isPaused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "postDepositOnBehalf",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "preDepositOnBehalf",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setPaused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "totalBalanceForMigrate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalScaledBalances",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawFromMigrate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawFromMigrateOnBehalf",
    data: BytesLike
  ): Result;

  events: {
    "DepositedForMigrate(address,address,uint256,uint256,uint64)": EventFragment;
    "WithdrawnFromMigrate(address,address,uint256,uint256)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "DepositedForMigrate"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "WithdrawnFromMigrate"): EventFragment;
}

export class CompAdapter extends Contract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  on(event: EventFilter | string, listener: Listener): this;
  once(event: EventFilter | string, listener: Listener): this;
  addListener(eventName: EventFilter | string, listener: Listener): this;
  removeAllListeners(eventName: EventFilter | string): this;
  removeListener(eventName: any, listener: Listener): this;

  interface: CompAdapterInterface;

  functions: {
    ORIGIN_ASSET_ADDRESS(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    "ORIGIN_ASSET_ADDRESS()"(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    UNDERLYING_ASSET_ADDRESS(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    "UNDERLYING_ASSET_ADDRESS()"(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    admin_enableClaims(overrides?: Overrides): Promise<ContractTransaction>;

    "admin_enableClaims()"(overrides?: Overrides): Promise<ContractTransaction>;

    admin_migrateAll(
      targetAsset: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_migrateAll(address)"(
      targetAsset: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    admin_setRewardPool(
      rewardPool: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_setRewardPool(address)"(
      rewardPool: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    admin_sweepToken(
      token: string,
      to: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_sweepToken(address,address)"(
      token: string,
      to: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    balanceForMigrate(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    "balanceForMigrate(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    balanceMigrated(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    "balanceMigrated(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    claimMigrated(
      holder: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "claimMigrated(address)"(
      holder: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    claimMigratedPortion(
      holder: string,
      divisor: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "claimMigratedPortion(address,uint256)"(
      holder: string,
      divisor: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    depositToMigrate(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "depositToMigrate(uint256,address,uint64)"(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    getController(overrides?: Overrides): Promise<ContractTransaction>;

    "getController()"(overrides?: Overrides): Promise<ContractTransaction>;

    getRewardPool(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    "getRewardPool()"(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    isClaimable(
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    "isClaimable()"(
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    isPaused(
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    "isPaused()"(
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    postDepositOnBehalf(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "postDepositOnBehalf(address,uint256,uint256,uint64)"(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    preDepositOnBehalf(overrides?: Overrides): Promise<ContractTransaction>;

    "preDepositOnBehalf()"(overrides?: Overrides): Promise<ContractTransaction>;

    setPaused(
      paused: boolean,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    totalBalanceForMigrate(
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    "totalBalanceForMigrate()"(
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    totalScaledBalances(
      overrides?: CallOverrides
    ): Promise<{
      totalDeposited: BigNumber;
      totalMigrated: BigNumber;
      totalClaimed: BigNumber;
      migrated: boolean;
      0: BigNumber;
      1: BigNumber;
      2: BigNumber;
      3: boolean;
    }>;

    "totalScaledBalances()"(
      overrides?: CallOverrides
    ): Promise<{
      totalDeposited: BigNumber;
      totalMigrated: BigNumber;
      totalClaimed: BigNumber;
      migrated: boolean;
      0: BigNumber;
      1: BigNumber;
      2: BigNumber;
      3: boolean;
    }>;

    withdrawFromMigrate(
      amount: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "withdrawFromMigrate(uint256)"(
      amount: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    withdrawFromMigrateOnBehalf(
      amount: BigNumberish,
      holder: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "withdrawFromMigrateOnBehalf(uint256,address)"(
      amount: BigNumberish,
      holder: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;
  };

  ORIGIN_ASSET_ADDRESS(overrides?: CallOverrides): Promise<string>;

  "ORIGIN_ASSET_ADDRESS()"(overrides?: CallOverrides): Promise<string>;

  UNDERLYING_ASSET_ADDRESS(overrides?: CallOverrides): Promise<string>;

  "UNDERLYING_ASSET_ADDRESS()"(overrides?: CallOverrides): Promise<string>;

  admin_enableClaims(overrides?: Overrides): Promise<ContractTransaction>;

  "admin_enableClaims()"(overrides?: Overrides): Promise<ContractTransaction>;

  admin_migrateAll(
    targetAsset: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_migrateAll(address)"(
    targetAsset: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  admin_setRewardPool(
    rewardPool: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_setRewardPool(address)"(
    rewardPool: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  admin_sweepToken(
    token: string,
    to: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_sweepToken(address,address)"(
    token: string,
    to: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  balanceForMigrate(
    holder: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "balanceForMigrate(address)"(
    holder: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  balanceMigrated(
    holder: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "balanceMigrated(address)"(
    holder: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  claimMigrated(
    holder: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "claimMigrated(address)"(
    holder: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  claimMigratedPortion(
    holder: string,
    divisor: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "claimMigratedPortion(address,uint256)"(
    holder: string,
    divisor: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  depositToMigrate(
    amount: BigNumberish,
    holder: string,
    referralCode: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "depositToMigrate(uint256,address,uint64)"(
    amount: BigNumberish,
    holder: string,
    referralCode: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  getController(overrides?: Overrides): Promise<ContractTransaction>;

  "getController()"(overrides?: Overrides): Promise<ContractTransaction>;

  getRewardPool(overrides?: CallOverrides): Promise<string>;

  "getRewardPool()"(overrides?: CallOverrides): Promise<string>;

  isClaimable(overrides?: CallOverrides): Promise<boolean>;

  "isClaimable()"(overrides?: CallOverrides): Promise<boolean>;

  isPaused(overrides?: CallOverrides): Promise<boolean>;

  "isPaused()"(overrides?: CallOverrides): Promise<boolean>;

  postDepositOnBehalf(
    holder: string,
    preBalance: BigNumberish,
    amount: BigNumberish,
    referralCode: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "postDepositOnBehalf(address,uint256,uint256,uint64)"(
    holder: string,
    preBalance: BigNumberish,
    amount: BigNumberish,
    referralCode: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  preDepositOnBehalf(overrides?: Overrides): Promise<ContractTransaction>;

  "preDepositOnBehalf()"(overrides?: Overrides): Promise<ContractTransaction>;

  setPaused(
    paused: boolean,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "setPaused(bool)"(
    paused: boolean,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  totalBalanceForMigrate(overrides?: CallOverrides): Promise<BigNumber>;

  "totalBalanceForMigrate()"(overrides?: CallOverrides): Promise<BigNumber>;

  totalScaledBalances(
    overrides?: CallOverrides
  ): Promise<{
    totalDeposited: BigNumber;
    totalMigrated: BigNumber;
    totalClaimed: BigNumber;
    migrated: boolean;
    0: BigNumber;
    1: BigNumber;
    2: BigNumber;
    3: boolean;
  }>;

  "totalScaledBalances()"(
    overrides?: CallOverrides
  ): Promise<{
    totalDeposited: BigNumber;
    totalMigrated: BigNumber;
    totalClaimed: BigNumber;
    migrated: boolean;
    0: BigNumber;
    1: BigNumber;
    2: BigNumber;
    3: boolean;
  }>;

  withdrawFromMigrate(
    amount: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "withdrawFromMigrate(uint256)"(
    amount: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  withdrawFromMigrateOnBehalf(
    amount: BigNumberish,
    holder: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "withdrawFromMigrateOnBehalf(uint256,address)"(
    amount: BigNumberish,
    holder: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  callStatic: {
    ORIGIN_ASSET_ADDRESS(overrides?: CallOverrides): Promise<string>;

    "ORIGIN_ASSET_ADDRESS()"(overrides?: CallOverrides): Promise<string>;

    UNDERLYING_ASSET_ADDRESS(overrides?: CallOverrides): Promise<string>;

    "UNDERLYING_ASSET_ADDRESS()"(overrides?: CallOverrides): Promise<string>;

    admin_enableClaims(overrides?: CallOverrides): Promise<void>;

    "admin_enableClaims()"(overrides?: CallOverrides): Promise<void>;

    admin_migrateAll(
      targetAsset: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "admin_migrateAll(address)"(
      targetAsset: string,
      overrides?: CallOverrides
    ): Promise<void>;

    admin_setRewardPool(
      rewardPool: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "admin_setRewardPool(address)"(
      rewardPool: string,
      overrides?: CallOverrides
    ): Promise<void>;

    admin_sweepToken(
      token: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "admin_sweepToken(address,address)"(
      token: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    balanceForMigrate(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "balanceForMigrate(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    balanceMigrated(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "balanceMigrated(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimMigrated(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      amount: BigNumber;
      claimable: boolean;
      0: BigNumber;
      1: boolean;
    }>;

    "claimMigrated(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      amount: BigNumber;
      claimable: boolean;
      0: BigNumber;
      1: boolean;
    }>;

    claimMigratedPortion(
      holder: string,
      divisor: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      amount: BigNumber;
      claimable: boolean;
      0: BigNumber;
      1: boolean;
    }>;

    "claimMigratedPortion(address,uint256)"(
      holder: string,
      divisor: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      amount: BigNumber;
      claimable: boolean;
      0: BigNumber;
      1: boolean;
    }>;

    depositToMigrate(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "depositToMigrate(uint256,address,uint64)"(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getController(overrides?: CallOverrides): Promise<string>;

    "getController()"(overrides?: CallOverrides): Promise<string>;

    getRewardPool(overrides?: CallOverrides): Promise<string>;

    "getRewardPool()"(overrides?: CallOverrides): Promise<string>;

    isClaimable(overrides?: CallOverrides): Promise<boolean>;

    "isClaimable()"(overrides?: CallOverrides): Promise<boolean>;

    isPaused(overrides?: CallOverrides): Promise<boolean>;

    "isPaused()"(overrides?: CallOverrides): Promise<boolean>;

    postDepositOnBehalf(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "postDepositOnBehalf(address,uint256,uint256,uint64)"(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    preDepositOnBehalf(overrides?: CallOverrides): Promise<BigNumber>;

    "preDepositOnBehalf()"(overrides?: CallOverrides): Promise<BigNumber>;

    setPaused(paused: boolean, overrides?: CallOverrides): Promise<void>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    totalBalanceForMigrate(overrides?: CallOverrides): Promise<BigNumber>;

    "totalBalanceForMigrate()"(overrides?: CallOverrides): Promise<BigNumber>;

    totalScaledBalances(
      overrides?: CallOverrides
    ): Promise<{
      totalDeposited: BigNumber;
      totalMigrated: BigNumber;
      totalClaimed: BigNumber;
      migrated: boolean;
      0: BigNumber;
      1: BigNumber;
      2: BigNumber;
      3: boolean;
    }>;

    "totalScaledBalances()"(
      overrides?: CallOverrides
    ): Promise<{
      totalDeposited: BigNumber;
      totalMigrated: BigNumber;
      totalClaimed: BigNumber;
      migrated: boolean;
      0: BigNumber;
      1: BigNumber;
      2: BigNumber;
      3: boolean;
    }>;

    withdrawFromMigrate(
      amount: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "withdrawFromMigrate(uint256)"(
      amount: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    withdrawFromMigrateOnBehalf(
      amount: BigNumberish,
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "withdrawFromMigrateOnBehalf(uint256,address)"(
      amount: BigNumberish,
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;
  };

  filters: {
    DepositedForMigrate(
      token: string | null,
      holder: string | null,
      amount: null,
      internalBalance: null,
      referralCode: BigNumberish | null
    ): EventFilter;

    WithdrawnFromMigrate(
      token: string | null,
      holder: string | null,
      amount: null,
      internalBalance: null
    ): EventFilter;
  };

  estimateGas: {
    ORIGIN_ASSET_ADDRESS(overrides?: CallOverrides): Promise<BigNumber>;

    "ORIGIN_ASSET_ADDRESS()"(overrides?: CallOverrides): Promise<BigNumber>;

    UNDERLYING_ASSET_ADDRESS(overrides?: CallOverrides): Promise<BigNumber>;

    "UNDERLYING_ASSET_ADDRESS()"(overrides?: CallOverrides): Promise<BigNumber>;

    admin_enableClaims(overrides?: Overrides): Promise<BigNumber>;

    "admin_enableClaims()"(overrides?: Overrides): Promise<BigNumber>;

    admin_migrateAll(
      targetAsset: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_migrateAll(address)"(
      targetAsset: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    admin_setRewardPool(
      rewardPool: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_setRewardPool(address)"(
      rewardPool: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    admin_sweepToken(
      token: string,
      to: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_sweepToken(address,address)"(
      token: string,
      to: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    balanceForMigrate(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "balanceForMigrate(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    balanceMigrated(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "balanceMigrated(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimMigrated(holder: string, overrides?: Overrides): Promise<BigNumber>;

    "claimMigrated(address)"(
      holder: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    claimMigratedPortion(
      holder: string,
      divisor: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "claimMigratedPortion(address,uint256)"(
      holder: string,
      divisor: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    depositToMigrate(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "depositToMigrate(uint256,address,uint64)"(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    getController(overrides?: Overrides): Promise<BigNumber>;

    "getController()"(overrides?: Overrides): Promise<BigNumber>;

    getRewardPool(overrides?: CallOverrides): Promise<BigNumber>;

    "getRewardPool()"(overrides?: CallOverrides): Promise<BigNumber>;

    isClaimable(overrides?: CallOverrides): Promise<BigNumber>;

    "isClaimable()"(overrides?: CallOverrides): Promise<BigNumber>;

    isPaused(overrides?: CallOverrides): Promise<BigNumber>;

    "isPaused()"(overrides?: CallOverrides): Promise<BigNumber>;

    postDepositOnBehalf(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "postDepositOnBehalf(address,uint256,uint256,uint64)"(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    preDepositOnBehalf(overrides?: Overrides): Promise<BigNumber>;

    "preDepositOnBehalf()"(overrides?: Overrides): Promise<BigNumber>;

    setPaused(paused: boolean, overrides?: Overrides): Promise<BigNumber>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: Overrides
    ): Promise<BigNumber>;

    totalBalanceForMigrate(overrides?: CallOverrides): Promise<BigNumber>;

    "totalBalanceForMigrate()"(overrides?: CallOverrides): Promise<BigNumber>;

    totalScaledBalances(overrides?: CallOverrides): Promise<BigNumber>;

    "totalScaledBalances()"(overrides?: CallOverrides): Promise<BigNumber>;

    withdrawFromMigrate(
      amount: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "withdrawFromMigrate(uint256)"(
      amount: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    withdrawFromMigrateOnBehalf(
      amount: BigNumberish,
      holder: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "withdrawFromMigrateOnBehalf(uint256,address)"(
      amount: BigNumberish,
      holder: string,
      overrides?: Overrides
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    ORIGIN_ASSET_ADDRESS(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "ORIGIN_ASSET_ADDRESS()"(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    UNDERLYING_ASSET_ADDRESS(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "UNDERLYING_ASSET_ADDRESS()"(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    admin_enableClaims(overrides?: Overrides): Promise<PopulatedTransaction>;

    "admin_enableClaims()"(
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_migrateAll(
      targetAsset: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_migrateAll(address)"(
      targetAsset: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_setRewardPool(
      rewardPool: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_setRewardPool(address)"(
      rewardPool: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_sweepToken(
      token: string,
      to: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_sweepToken(address,address)"(
      token: string,
      to: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    balanceForMigrate(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "balanceForMigrate(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    balanceMigrated(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "balanceMigrated(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    claimMigrated(
      holder: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "claimMigrated(address)"(
      holder: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    claimMigratedPortion(
      holder: string,
      divisor: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "claimMigratedPortion(address,uint256)"(
      holder: string,
      divisor: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    depositToMigrate(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "depositToMigrate(uint256,address,uint64)"(
      amount: BigNumberish,
      holder: string,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    getController(overrides?: Overrides): Promise<PopulatedTransaction>;

    "getController()"(overrides?: Overrides): Promise<PopulatedTransaction>;

    getRewardPool(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "getRewardPool()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    isClaimable(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "isClaimable()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    isPaused(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "isPaused()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    postDepositOnBehalf(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "postDepositOnBehalf(address,uint256,uint256,uint64)"(
      holder: string,
      preBalance: BigNumberish,
      amount: BigNumberish,
      referralCode: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    preDepositOnBehalf(overrides?: Overrides): Promise<PopulatedTransaction>;

    "preDepositOnBehalf()"(
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    setPaused(
      paused: boolean,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    totalBalanceForMigrate(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "totalBalanceForMigrate()"(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    totalScaledBalances(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "totalScaledBalances()"(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    withdrawFromMigrate(
      amount: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "withdrawFromMigrate(uint256)"(
      amount: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    withdrawFromMigrateOnBehalf(
      amount: BigNumberish,
      holder: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "withdrawFromMigrateOnBehalf(uint256,address)"(
      amount: BigNumberish,
      holder: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;
  };
}
