/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumber,
  BigNumberish,
  BytesLike,
  CallOverrides,
  ContractTransaction,
  Overrides,
  PopulatedTransaction,
  Signer,
  utils,
} from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
  TypedEventFilter,
  TypedEvent,
  TypedListener,
  OnEvent,
} from "../../common";

export interface IMentoReserveInterface extends utils.Interface {
  functions: {
    "addCollateralAsset(address)": FunctionFragment;
    "addExchangeSpender(address)": FunctionFragment;
    "addOtherReserveAddress(address)": FunctionFragment;
    "addSpender(address)": FunctionFragment;
    "addToken(address)": FunctionFragment;
    "checkIsCollateralAsset(address)": FunctionFragment;
    "collateralAssetLastSpendingDay(address)": FunctionFragment;
    "collateralAssetSpendingLimit(address)": FunctionFragment;
    "collateralAssets(uint256)": FunctionFragment;
    "getAssetAllocationSymbols()": FunctionFragment;
    "getAssetAllocationWeights()": FunctionFragment;
    "getDailySpendingRatio()": FunctionFragment;
    "getDailySpendingRatioForCollateralAsset(address)": FunctionFragment;
    "getExchangeSpenders()": FunctionFragment;
    "getOrComputeTobinTax()": FunctionFragment;
    "getOtherReserveAddresses()": FunctionFragment;
    "getReserveGoldBalance()": FunctionFragment;
    "getReserveRatio()": FunctionFragment;
    "getTokens()": FunctionFragment;
    "getUnfrozenBalance()": FunctionFragment;
    "getUnfrozenReserveGoldBalance()": FunctionFragment;
    "initialize(address,uint256,uint256,uint256,uint256,bytes32[],uint256[],uint256,uint256,address[],uint256[])": FunctionFragment;
    "isCollateralAsset(address)": FunctionFragment;
    "isExchangeSpender(address)": FunctionFragment;
    "isOtherReserveAddress(address)": FunctionFragment;
    "isSpender(address)": FunctionFragment;
    "isStableAsset(address)": FunctionFragment;
    "isToken(address)": FunctionFragment;
    "owner()": FunctionFragment;
    "registry()": FunctionFragment;
    "removeCollateralAsset(address,uint256)": FunctionFragment;
    "removeExchangeSpender(address,uint256)": FunctionFragment;
    "removeOtherReserveAddress(address,uint256)": FunctionFragment;
    "removeSpender(address)": FunctionFragment;
    "removeToken(address,uint256)": FunctionFragment;
    "renounceOwnership()": FunctionFragment;
    "setAssetAllocations(bytes32[],uint256[])": FunctionFragment;
    "setDailySpendingRatio(uint256)": FunctionFragment;
    "setDailySpendingRatioForCollateralAssets(address[],uint256[])": FunctionFragment;
    "setFrozenGold(uint256,uint256)": FunctionFragment;
    "setRegistry(address)": FunctionFragment;
    "setTobinTax(uint256)": FunctionFragment;
    "setTobinTaxReserveRatio(uint256)": FunctionFragment;
    "setTobinTaxStalenessThreshold(uint256)": FunctionFragment;
    "tobinTax()": FunctionFragment;
    "tobinTaxReserveRatio()": FunctionFragment;
    "tobinTaxStalenessThreshold()": FunctionFragment;
    "transferCollateralAsset(address,address,uint256)": FunctionFragment;
    "transferExchangeCollateralAsset(address,address,uint256)": FunctionFragment;
    "transferExchangeGold(address,uint256)": FunctionFragment;
    "transferGold(address,uint256)": FunctionFragment;
    "transferOwnership(address)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "addCollateralAsset"
      | "addExchangeSpender"
      | "addOtherReserveAddress"
      | "addSpender"
      | "addToken"
      | "checkIsCollateralAsset"
      | "collateralAssetLastSpendingDay"
      | "collateralAssetSpendingLimit"
      | "collateralAssets"
      | "getAssetAllocationSymbols"
      | "getAssetAllocationWeights"
      | "getDailySpendingRatio"
      | "getDailySpendingRatioForCollateralAsset"
      | "getExchangeSpenders"
      | "getOrComputeTobinTax"
      | "getOtherReserveAddresses"
      | "getReserveGoldBalance"
      | "getReserveRatio"
      | "getTokens"
      | "getUnfrozenBalance"
      | "getUnfrozenReserveGoldBalance"
      | "initialize"
      | "isCollateralAsset"
      | "isExchangeSpender"
      | "isOtherReserveAddress"
      | "isSpender"
      | "isStableAsset"
      | "isToken"
      | "owner"
      | "registry"
      | "removeCollateralAsset"
      | "removeExchangeSpender"
      | "removeOtherReserveAddress"
      | "removeSpender"
      | "removeToken"
      | "renounceOwnership"
      | "setAssetAllocations"
      | "setDailySpendingRatio"
      | "setDailySpendingRatioForCollateralAssets"
      | "setFrozenGold"
      | "setRegistry"
      | "setTobinTax"
      | "setTobinTaxReserveRatio"
      | "setTobinTaxStalenessThreshold"
      | "tobinTax"
      | "tobinTaxReserveRatio"
      | "tobinTaxStalenessThreshold"
      | "transferCollateralAsset"
      | "transferExchangeCollateralAsset"
      | "transferExchangeGold"
      | "transferGold"
      | "transferOwnership"
  ): FunctionFragment;

  encodeFunctionData(
    functionFragment: "addCollateralAsset",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "addExchangeSpender",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "addOtherReserveAddress",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "addSpender", values: [string]): string;
  encodeFunctionData(functionFragment: "addToken", values: [string]): string;
  encodeFunctionData(
    functionFragment: "checkIsCollateralAsset",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "collateralAssetLastSpendingDay",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "collateralAssetSpendingLimit",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "collateralAssets",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getAssetAllocationSymbols",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getAssetAllocationWeights",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getDailySpendingRatio",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getDailySpendingRatioForCollateralAsset",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "getExchangeSpenders",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getOrComputeTobinTax",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getOtherReserveAddresses",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getReserveGoldBalance",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getReserveRatio",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "getTokens", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "getUnfrozenBalance",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getUnfrozenReserveGoldBalance",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [
      string,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BytesLike[],
      BigNumberish[],
      BigNumberish,
      BigNumberish,
      string[],
      BigNumberish[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "isCollateralAsset",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "isExchangeSpender",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "isOtherReserveAddress",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "isSpender", values: [string]): string;
  encodeFunctionData(
    functionFragment: "isStableAsset",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "isToken", values: [string]): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(functionFragment: "registry", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "removeCollateralAsset",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "removeExchangeSpender",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "removeOtherReserveAddress",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "removeSpender",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "removeToken",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "setAssetAllocations",
    values: [BytesLike[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setDailySpendingRatio",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setDailySpendingRatioForCollateralAssets",
    values: [string[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setFrozenGold",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "setRegistry", values: [string]): string;
  encodeFunctionData(
    functionFragment: "setTobinTax",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTobinTaxReserveRatio",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTobinTaxStalenessThreshold",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "tobinTax", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "tobinTaxReserveRatio",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "tobinTaxStalenessThreshold",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "transferCollateralAsset",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferExchangeCollateralAsset",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferExchangeGold",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferGold",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [string]
  ): string;

  decodeFunctionResult(
    functionFragment: "addCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addExchangeSpender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addOtherReserveAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "addSpender", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "addToken", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "checkIsCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collateralAssetLastSpendingDay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collateralAssetSpendingLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collateralAssets",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAssetAllocationSymbols",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAssetAllocationWeights",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDailySpendingRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDailySpendingRatioForCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getExchangeSpenders",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOrComputeTobinTax",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOtherReserveAddresses",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getReserveGoldBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getReserveRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getTokens", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getUnfrozenBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getUnfrozenReserveGoldBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isExchangeSpender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isOtherReserveAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isSpender", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isStableAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isToken", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "registry", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "removeCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeExchangeSpender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeOtherReserveAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeSpender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setAssetAllocations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDailySpendingRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDailySpendingRatioForCollateralAssets",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setFrozenGold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setRegistry",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTobinTax",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTobinTaxReserveRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTobinTaxStalenessThreshold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "tobinTax", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "tobinTaxReserveRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "tobinTaxStalenessThreshold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferExchangeCollateralAsset",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferExchangeGold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferGold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;

  events: {};
}

export interface IMentoReserve extends BaseContract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  interface: IMentoReserveInterface;

  queryFilter<TEvent extends TypedEvent>(
    event: TypedEventFilter<TEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TEvent>>;

  listeners<TEvent extends TypedEvent>(
    eventFilter?: TypedEventFilter<TEvent>
  ): Array<TypedListener<TEvent>>;
  listeners(eventName?: string): Array<Listener>;
  removeAllListeners<TEvent extends TypedEvent>(
    eventFilter: TypedEventFilter<TEvent>
  ): this;
  removeAllListeners(eventName?: string): this;
  off: OnEvent<this>;
  on: OnEvent<this>;
  once: OnEvent<this>;
  removeListener: OnEvent<this>;

  functions: {
    addCollateralAsset(
      asset: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    addExchangeSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    addOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    addSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    addToken(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    checkIsCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    collateralAssetLastSpendingDay(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    collateralAssetSpendingLimit(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    collateralAssets(
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    getAssetAllocationSymbols(overrides?: CallOverrides): Promise<[string[]]>;

    getAssetAllocationWeights(
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    getDailySpendingRatio(overrides?: CallOverrides): Promise<[BigNumber]>;

    getDailySpendingRatioForCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getExchangeSpenders(overrides?: CallOverrides): Promise<[string[]]>;

    getOrComputeTobinTax(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    getOtherReserveAddresses(overrides?: CallOverrides): Promise<[string[]]>;

    getReserveGoldBalance(overrides?: CallOverrides): Promise<[BigNumber]>;

    getReserveRatio(overrides?: CallOverrides): Promise<[BigNumber]>;

    getTokens(overrides?: CallOverrides): Promise<[string[]]>;

    getUnfrozenBalance(overrides?: CallOverrides): Promise<[BigNumber]>;

    getUnfrozenReserveGoldBalance(
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    initialize(
      registryAddress: string,
      _tobinTaxStalenessThreshold: BigNumberish,
      _spendingRatioForCelo: BigNumberish,
      _frozenGold: BigNumberish,
      _frozenDays: BigNumberish,
      _assetAllocationSymbols: BytesLike[],
      _assetAllocationWeights: BigNumberish[],
      _tobinTax: BigNumberish,
      _tobinTaxReserveRatio: BigNumberish,
      _collateralAssets: string[],
      _collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    isCollateralAsset(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isExchangeSpender(
      exchange: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isSpender(spender: string, overrides?: CallOverrides): Promise<[boolean]>;

    isStableAsset(arg0: string, overrides?: CallOverrides): Promise<[boolean]>;

    isToken(arg0: string, overrides?: CallOverrides): Promise<[boolean]>;

    owner(overrides?: CallOverrides): Promise<[string]>;

    registry(overrides?: CallOverrides): Promise<[string]>;

    removeCollateralAsset(
      collateralAsset: string,
      index: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeExchangeSpender(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeOtherReserveAddress(
      otherReserveAddress: string,
      index: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeToken(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    renounceOwnership(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setAssetAllocations(
      symbols: BytesLike[],
      weights: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDailySpendingRatio(
      spendingRatio: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDailySpendingRatioForCollateralAssets(
      _collateralAssets: string[],
      collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setFrozenGold(
      frozenGold: BigNumberish,
      frozenDays: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setRegistry(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setTobinTax(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setTobinTaxReserveRatio(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setTobinTaxStalenessThreshold(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    tobinTax(overrides?: CallOverrides): Promise<[BigNumber]>;

    tobinTaxReserveRatio(overrides?: CallOverrides): Promise<[BigNumber]>;

    tobinTaxStalenessThreshold(overrides?: CallOverrides): Promise<[BigNumber]>;

    transferCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    transferExchangeCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    transferExchangeGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    transferGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;
  };

  addCollateralAsset(
    asset: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  addExchangeSpender(
    arg0: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  addOtherReserveAddress(
    otherReserveAddress: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  addSpender(
    arg0: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  addToken(
    arg0: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  checkIsCollateralAsset(
    collateralAsset: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  collateralAssetLastSpendingDay(
    collateralAsset: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  collateralAssetSpendingLimit(
    arg0: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  collateralAssets(
    index: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  getAssetAllocationSymbols(overrides?: CallOverrides): Promise<string[]>;

  getAssetAllocationWeights(overrides?: CallOverrides): Promise<BigNumber[]>;

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

  getDailySpendingRatioForCollateralAsset(
    collateralAsset: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getExchangeSpenders(overrides?: CallOverrides): Promise<string[]>;

  getOrComputeTobinTax(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  getOtherReserveAddresses(overrides?: CallOverrides): Promise<string[]>;

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

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

  getTokens(overrides?: CallOverrides): Promise<string[]>;

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

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

  initialize(
    registryAddress: string,
    _tobinTaxStalenessThreshold: BigNumberish,
    _spendingRatioForCelo: BigNumberish,
    _frozenGold: BigNumberish,
    _frozenDays: BigNumberish,
    _assetAllocationSymbols: BytesLike[],
    _assetAllocationWeights: BigNumberish[],
    _tobinTax: BigNumberish,
    _tobinTaxReserveRatio: BigNumberish,
    _collateralAssets: string[],
    _collateralAssetDailySpendingRatios: BigNumberish[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  isCollateralAsset(arg0: string, overrides?: CallOverrides): Promise<boolean>;

  isExchangeSpender(
    exchange: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isOtherReserveAddress(
    otherReserveAddress: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isSpender(spender: string, overrides?: CallOverrides): Promise<boolean>;

  isStableAsset(arg0: string, overrides?: CallOverrides): Promise<boolean>;

  isToken(arg0: string, overrides?: CallOverrides): Promise<boolean>;

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

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

  removeCollateralAsset(
    collateralAsset: string,
    index: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeExchangeSpender(
    arg0: string,
    arg1: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeOtherReserveAddress(
    otherReserveAddress: string,
    index: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeSpender(
    arg0: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeToken(
    arg0: string,
    arg1: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  renounceOwnership(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setAssetAllocations(
    symbols: BytesLike[],
    weights: BigNumberish[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDailySpendingRatio(
    spendingRatio: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDailySpendingRatioForCollateralAssets(
    _collateralAssets: string[],
    collateralAssetDailySpendingRatios: BigNumberish[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setFrozenGold(
    frozenGold: BigNumberish,
    frozenDays: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setRegistry(
    arg0: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setTobinTax(
    arg0: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setTobinTaxReserveRatio(
    arg0: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setTobinTaxStalenessThreshold(
    arg0: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

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

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

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

  transferCollateralAsset(
    collateralAsset: string,
    to: string,
    value: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  transferExchangeCollateralAsset(
    collateralAsset: string,
    to: string,
    value: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  transferExchangeGold(
    arg0: string,
    arg1: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  transferGold(
    arg0: string,
    arg1: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  transferOwnership(
    newOwner: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  callStatic: {
    addCollateralAsset(
      asset: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    addExchangeSpender(arg0: string, overrides?: CallOverrides): Promise<void>;

    addOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    addSpender(arg0: string, overrides?: CallOverrides): Promise<void>;

    addToken(arg0: string, overrides?: CallOverrides): Promise<boolean>;

    checkIsCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    collateralAssetLastSpendingDay(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collateralAssetSpendingLimit(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collateralAssets(
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    getAssetAllocationSymbols(overrides?: CallOverrides): Promise<string[]>;

    getAssetAllocationWeights(overrides?: CallOverrides): Promise<BigNumber[]>;

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

    getDailySpendingRatioForCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getExchangeSpenders(overrides?: CallOverrides): Promise<string[]>;

    getOrComputeTobinTax(
      overrides?: CallOverrides
    ): Promise<[BigNumber, BigNumber]>;

    getOtherReserveAddresses(overrides?: CallOverrides): Promise<string[]>;

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

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

    getTokens(overrides?: CallOverrides): Promise<string[]>;

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

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

    initialize(
      registryAddress: string,
      _tobinTaxStalenessThreshold: BigNumberish,
      _spendingRatioForCelo: BigNumberish,
      _frozenGold: BigNumberish,
      _frozenDays: BigNumberish,
      _assetAllocationSymbols: BytesLike[],
      _assetAllocationWeights: BigNumberish[],
      _tobinTax: BigNumberish,
      _tobinTaxReserveRatio: BigNumberish,
      _collateralAssets: string[],
      _collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    isCollateralAsset(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isExchangeSpender(
      exchange: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isSpender(spender: string, overrides?: CallOverrides): Promise<boolean>;

    isStableAsset(arg0: string, overrides?: CallOverrides): Promise<boolean>;

    isToken(arg0: string, overrides?: CallOverrides): Promise<boolean>;

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

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

    removeCollateralAsset(
      collateralAsset: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    removeExchangeSpender(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    removeOtherReserveAddress(
      otherReserveAddress: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    removeSpender(arg0: string, overrides?: CallOverrides): Promise<void>;

    removeToken(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

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

    setAssetAllocations(
      symbols: BytesLike[],
      weights: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    setDailySpendingRatio(
      spendingRatio: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setDailySpendingRatioForCollateralAssets(
      _collateralAssets: string[],
      collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    setFrozenGold(
      frozenGold: BigNumberish,
      frozenDays: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setRegistry(arg0: string, overrides?: CallOverrides): Promise<void>;

    setTobinTax(arg0: BigNumberish, overrides?: CallOverrides): Promise<void>;

    setTobinTaxReserveRatio(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setTobinTaxStalenessThreshold(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

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

    transferCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    transferExchangeCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    transferExchangeGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    transferGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    transferOwnership(
      newOwner: string,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {};

  estimateGas: {
    addCollateralAsset(
      asset: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    addExchangeSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    addOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    addSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    addToken(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    checkIsCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collateralAssetLastSpendingDay(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collateralAssetSpendingLimit(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collateralAssets(
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

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

    getDailySpendingRatioForCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    getOrComputeTobinTax(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

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

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

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

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

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

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

    initialize(
      registryAddress: string,
      _tobinTaxStalenessThreshold: BigNumberish,
      _spendingRatioForCelo: BigNumberish,
      _frozenGold: BigNumberish,
      _frozenDays: BigNumberish,
      _assetAllocationSymbols: BytesLike[],
      _assetAllocationWeights: BigNumberish[],
      _tobinTax: BigNumberish,
      _tobinTaxReserveRatio: BigNumberish,
      _collateralAssets: string[],
      _collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    isCollateralAsset(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isExchangeSpender(
      exchange: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isSpender(spender: string, overrides?: CallOverrides): Promise<BigNumber>;

    isStableAsset(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;

    isToken(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;

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

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

    removeCollateralAsset(
      collateralAsset: string,
      index: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeExchangeSpender(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeOtherReserveAddress(
      otherReserveAddress: string,
      index: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeToken(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    renounceOwnership(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setAssetAllocations(
      symbols: BytesLike[],
      weights: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDailySpendingRatio(
      spendingRatio: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDailySpendingRatioForCollateralAssets(
      _collateralAssets: string[],
      collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setFrozenGold(
      frozenGold: BigNumberish,
      frozenDays: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setRegistry(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setTobinTax(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setTobinTaxReserveRatio(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setTobinTaxStalenessThreshold(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

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

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

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

    transferCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    transferExchangeCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    transferExchangeGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    transferGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    addCollateralAsset(
      asset: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    addExchangeSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    addOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    addSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    addToken(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    checkIsCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    collateralAssetLastSpendingDay(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    collateralAssetSpendingLimit(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    collateralAssets(
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

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

    getDailySpendingRatioForCollateralAsset(
      collateralAsset: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    getOrComputeTobinTax(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

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

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

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

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

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

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

    initialize(
      registryAddress: string,
      _tobinTaxStalenessThreshold: BigNumberish,
      _spendingRatioForCelo: BigNumberish,
      _frozenGold: BigNumberish,
      _frozenDays: BigNumberish,
      _assetAllocationSymbols: BytesLike[],
      _assetAllocationWeights: BigNumberish[],
      _tobinTax: BigNumberish,
      _tobinTaxReserveRatio: BigNumberish,
      _collateralAssets: string[],
      _collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    isCollateralAsset(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isExchangeSpender(
      exchange: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isOtherReserveAddress(
      otherReserveAddress: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isSpender(
      spender: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isStableAsset(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isToken(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

    removeCollateralAsset(
      collateralAsset: string,
      index: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeExchangeSpender(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeOtherReserveAddress(
      otherReserveAddress: string,
      index: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeSpender(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeToken(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    renounceOwnership(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setAssetAllocations(
      symbols: BytesLike[],
      weights: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDailySpendingRatio(
      spendingRatio: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDailySpendingRatioForCollateralAssets(
      _collateralAssets: string[],
      collateralAssetDailySpendingRatios: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setFrozenGold(
      frozenGold: BigNumberish,
      frozenDays: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setRegistry(
      arg0: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setTobinTax(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setTobinTaxReserveRatio(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setTobinTaxStalenessThreshold(
      arg0: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

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

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

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

    transferCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    transferExchangeCollateralAsset(
      collateralAsset: string,
      to: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    transferExchangeGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    transferGold(
      arg0: string,
      arg1: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;
  };
}
