/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */

/// <reference types="truffle-typings" />
import { BigNumber } from "bignumber.js";

export interface AbsoluteVoteContract
  extends Truffle.Contract<AbsoluteVoteInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<AbsoluteVoteInstance>;
}

export interface AbstractFeesContract
  extends Truffle.Contract<AbstractFeesInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<AbstractFeesInstance>;
}

export interface AbstractUBIContract
  extends Truffle.Contract<AbstractUBIInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _initialReserve: number | BigNumber | string,
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<AbstractUBIInstance>;
}

export interface ActivePeriodContract
  extends Truffle.Contract<ActivePeriodInstance> {
  "new"(
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    _avatar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<ActivePeriodInstance>;
}

export interface ActivePeriodMockContract
  extends Truffle.Contract<ActivePeriodMockInstance> {
  "new"(
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    _avatar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<ActivePeriodMockInstance>;
}

export interface AddAdminContract extends Truffle.Contract<AddAdminInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _admin: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<AddAdminInstance>;
}

export interface AddFoundersGoodDollarContract
  extends Truffle.Contract<AddFoundersGoodDollarInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<AddFoundersGoodDollarInstance>;
}

export interface AddFoundersGoodDollarWithRepContract
  extends Truffle.Contract<AddFoundersGoodDollarWithRepInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<AddFoundersGoodDollarWithRepInstance>;
}

export interface AddMinterContract extends Truffle.Contract<AddMinterInstance> {
  "new"(
    _avatar: string | BigNumber,
    _minter: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<AddMinterInstance>;
}

export interface AdminWalletContract
  extends Truffle.Contract<AdminWalletInstance> {
  "new"(
    _admins: (string | BigNumber)[],
    _toppingAmount: number | BigNumber | string,
    _toppingTimes: number | BigNumber | string,
    _identity: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<AdminWalletInstance>;
}

export interface AvatarContract extends Truffle.Contract<AvatarInstance> {
  "new"(
    _orgName: string,
    _nativeToken: string | BigNumber,
    _nativeReputation: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<AvatarInstance>;
}

export interface AvatarMockContract
  extends Truffle.Contract<AvatarMockInstance> {
  "new"(
    _orgName: string,
    _nativeToken: string | BigNumber,
    _nativeReputation: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<AvatarMockInstance>;
}

export interface cDAIMockContract extends Truffle.Contract<cDAIMockInstance> {
  "new"(
    _dai: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<cDAIMockInstance>;
}

export interface ControllerContract
  extends Truffle.Contract<ControllerInstance> {
  "new"(
    _avatar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<ControllerInstance>;
}

export interface ControllerCreatorGoodDollarContract
  extends Truffle.Contract<ControllerCreatorGoodDollarInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<ControllerCreatorGoodDollarInstance>;
}

export interface ControllerInterfaceContract
  extends Truffle.Contract<ControllerInterfaceInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<ControllerInterfaceInstance>;
}

export interface DAIMockContract extends Truffle.Contract<DAIMockInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<DAIMockInstance>;
}

export interface DaoCreatorGoodDollarContract
  extends Truffle.Contract<DaoCreatorGoodDollarInstance> {
  "new"(
    _addFoundersGoodDollar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<DaoCreatorGoodDollarInstance>;
}

export interface DaoCreatorGoodDollarWithRepContract
  extends Truffle.Contract<DaoCreatorGoodDollarWithRepInstance> {
  "new"(
    _addFoundersGoodDollar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<DaoCreatorGoodDollarWithRepInstance>;
}

export interface DAOTokenContract extends Truffle.Contract<DAOTokenInstance> {
  "new"(
    _name: string,
    _symbol: string,
    _cap: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<DAOTokenInstance>;
}

export interface DeployForeignBridgeContract
  extends Truffle.Contract<DeployForeignBridgeInstance> {
  "new"(
    _avatar: string | BigNumber,
    _factory: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<DeployForeignBridgeInstance>;
}

export interface DeployHomeBridgeContract
  extends Truffle.Contract<DeployHomeBridgeInstance> {
  "new"(
    _avatar: string | BigNumber,
    _factory: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<DeployHomeBridgeInstance>;
}

export interface ERC20Contract extends Truffle.Contract<ERC20Instance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ERC20Instance>;
}

export interface ERC20BurnableContract
  extends Truffle.Contract<ERC20BurnableInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ERC20BurnableInstance>;
}

export interface ERC20DetailedContract
  extends Truffle.Contract<ERC20DetailedInstance> {
  "new"(
    name: string,
    symbol: string,
    decimals: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ERC20DetailedInstance>;
}

export interface ERC20MintableContract
  extends Truffle.Contract<ERC20MintableInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ERC20MintableInstance>;
}

export interface ERC20PausableContract
  extends Truffle.Contract<ERC20PausableInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ERC20PausableInstance>;
}

export interface ERC677Contract extends Truffle.Contract<ERC677Instance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ERC677Instance>;
}

export interface ERC677BridgeTokenContract
  extends Truffle.Contract<ERC677BridgeTokenInstance> {
  "new"(
    _name: string,
    _symbol: string,
    _cap: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ERC677BridgeTokenInstance>;
}

export interface ERC677ReceiverContract
  extends Truffle.Contract<ERC677ReceiverInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ERC677ReceiverInstance>;
}

export interface ERC677TokenContract
  extends Truffle.Contract<ERC677TokenInstance> {
  "new"(
    _name: string,
    _symbol: string,
    _cap: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ERC677TokenInstance>;
}

export interface FeeFormulaContract
  extends Truffle.Contract<FeeFormulaInstance> {
  "new"(
    _percentage: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<FeeFormulaInstance>;
}

export interface FeelessSchemeContract
  extends Truffle.Contract<FeelessSchemeInstance> {
  "new"(
    _identity: string | BigNumber,
    _avatar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<FeelessSchemeInstance>;
}

export interface FixedUBIContract extends Truffle.Contract<FixedUBIInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _initialReserve: number | BigNumber | string,
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    _claimDistribution: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<FixedUBIInstance>;
}

export interface FormulaHolderContract
  extends Truffle.Contract<FormulaHolderInstance> {
  "new"(
    _formula: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<FormulaHolderInstance>;
}

export interface FormulaHolderMockContract
  extends Truffle.Contract<FormulaHolderMockInstance> {
  "new"(
    _formula: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<FormulaHolderMockInstance>;
}

export interface FuseFaucetContract
  extends Truffle.Contract<FuseFaucetInstance> {
  "new"(
    _admins: (string | BigNumber)[],
    _toppingAmount: number | BigNumber | string,
    _toppingTimes: number | BigNumber | string,
    _identity: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<FuseFaucetInstance>;
}

export interface GenesisProtocolContract
  extends Truffle.Contract<GenesisProtocolInstance> {
  "new"(
    _stakingToken: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<GenesisProtocolInstance>;
}

export interface GenesisProtocolLogicContract
  extends Truffle.Contract<GenesisProtocolLogicInstance> {
  "new"(
    _stakingToken: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<GenesisProtocolLogicInstance>;
}

export interface GlobalConstraintInterfaceContract
  extends Truffle.Contract<GlobalConstraintInterfaceInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<GlobalConstraintInterfaceInstance>;
}

export interface GoodDollarContract
  extends Truffle.Contract<GoodDollarInstance> {
  "new"(
    _name: string,
    _symbol: string,
    _cap: number | BigNumber | string,
    _formula: string | BigNumber,
    _identity: string | BigNumber,
    _feeRecipient: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<GoodDollarInstance>;
}

export interface GoodDollarV2Contract
  extends Truffle.Contract<GoodDollarV2Instance> {
  "new"(
    _name: string,
    _symbol: string,
    _formula: string | BigNumber,
    _identity: string | BigNumber,
    _feeRecipient: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<GoodDollarV2Instance>;
}

export interface IAnyswapV3ERC20Contract
  extends Truffle.Contract<IAnyswapV3ERC20Instance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IAnyswapV3ERC20Instance>;
}

export interface IApprovalReceiverContract
  extends Truffle.Contract<IApprovalReceiverInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IApprovalReceiverInstance>;
}

export interface IdentityContract extends Truffle.Contract<IdentityInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IdentityInstance>;
}

export interface IdentityAdminRoleContract
  extends Truffle.Contract<IdentityAdminRoleInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IdentityAdminRoleInstance>;
}

export interface IdentityGuardContract
  extends Truffle.Contract<IdentityGuardInstance> {
  "new"(
    _identity: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<IdentityGuardInstance>;
}

export interface IdentityGuardMockContract
  extends Truffle.Contract<IdentityGuardMockInstance> {
  "new"(
    _identity: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<IdentityGuardMockInstance>;
}

export interface IdentityWithOwnerContract
  extends Truffle.Contract<IdentityWithOwnerInstance> {
  "new"(
    owner: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<IdentityWithOwnerInstance>;
}

export interface IERC20Contract extends Truffle.Contract<IERC20Instance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IERC20Instance>;
}

export interface IERC2612Contract extends Truffle.Contract<IERC2612Instance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IERC2612Instance>;
}

export interface IFeesFormulaContract
  extends Truffle.Contract<IFeesFormulaInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IFeesFormulaInstance>;
}

export interface IntVoteInterfaceContract
  extends Truffle.Contract<IntVoteInterfaceInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<IntVoteInterfaceInstance>;
}

export interface InviteUserContract
  extends Truffle.Contract<InviteUserInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _maxBonus: number | BigNumber | string,
    _reward: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<InviteUserInstance>;
}

export interface ITransferReceiverContract
  extends Truffle.Contract<ITransferReceiverInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ITransferReceiverInstance>;
}

export interface MigrationsContract
  extends Truffle.Contract<MigrationsInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<MigrationsInstance>;
}

export interface MinterRoleContract
  extends Truffle.Contract<MinterRoleInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<MinterRoleInstance>;
}

export interface OneTimePaymentsContract
  extends Truffle.Contract<OneTimePaymentsInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<OneTimePaymentsInstance>;
}

export interface OwnableContract extends Truffle.Contract<OwnableInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<OwnableInstance>;
}

export interface PausableContract extends Truffle.Contract<PausableInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<PausableInstance>;
}

export interface PauserRoleContract
  extends Truffle.Contract<PauserRoleInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<PauserRoleInstance>;
}

export interface ProposalExecuteInterfaceContract
  extends Truffle.Contract<ProposalExecuteInterfaceInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<ProposalExecuteInterfaceInstance>;
}

export interface ProxyAdminContract
  extends Truffle.Contract<ProxyAdminInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ProxyAdminInstance>;
}

export interface RemoveAdminContract
  extends Truffle.Contract<RemoveAdminInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _admin: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<RemoveAdminInstance>;
}

export interface ReputationContract
  extends Truffle.Contract<ReputationInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<ReputationInstance>;
}

export interface ReputationMintOnceContract
  extends Truffle.Contract<ReputationMintOnceInstance> {
  "new"(
    _avatar: string | BigNumber,
    _recipients: (string | BigNumber)[],
    _reputationReward: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ReputationMintOnceInstance>;
}

export interface ReputationMockContract
  extends Truffle.Contract<ReputationMockInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _reputationReward: number | BigNumber | string,
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ReputationMockInstance>;
}

export interface ReputationRewardContract
  extends Truffle.Contract<ReputationRewardInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _reputationReward: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ReputationRewardInstance>;
}

export interface ReserveMinterContract
  extends Truffle.Contract<ReserveMinterInstance> {
  "new"(
    _avatar: string | BigNumber,
    _amount: number | BigNumber | string,
    _receiver: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<ReserveMinterInstance>;
}

export interface ReserveRelayerContract
  extends Truffle.Contract<ReserveRelayerInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _receiver: string | BigNumber,
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<ReserveRelayerInstance>;
}

export interface SchemeGuardContract
  extends Truffle.Contract<SchemeGuardInstance> {
  "new"(
    _avatar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<SchemeGuardInstance>;
}

export interface SchemeGuardMockContract
  extends Truffle.Contract<SchemeGuardMockInstance> {
  "new"(
    _avatar: string | BigNumber,
    meta?: Truffle.TransactionDetails
  ): Promise<SchemeGuardMockInstance>;
}

export interface SchemeRegistrarContract
  extends Truffle.Contract<SchemeRegistrarInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<SchemeRegistrarInstance>;
}

export interface SenderFeeFormulaContract
  extends Truffle.Contract<SenderFeeFormulaInstance> {
  "new"(
    _percentage: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<SenderFeeFormulaInstance>;
}

export interface SignUpBonusContract
  extends Truffle.Contract<SignUpBonusInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _initalReserve: number | BigNumber | string,
    _maxBonus: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<SignUpBonusInstance>;
}

export interface TransferAndCallMockContract
  extends Truffle.Contract<TransferAndCallMockInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<TransferAndCallMockInstance>;
}

export interface UBIContract extends Truffle.Contract<UBIInstance> {
  "new"(
    _avatar: string | BigNumber,
    _identity: string | BigNumber,
    _initialReserve: number | BigNumber | string,
    _periodStart: number | BigNumber | string,
    _periodEnd: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<UBIInstance>;
}

export interface UpgradeImplSchemeContract
  extends Truffle.Contract<UpgradeImplSchemeInstance> {
  "new"(
    _newImpl: string | BigNumber,
    _proxy: string | BigNumber,
    _proxyAdmin: string | BigNumber,
    _callData: string,
    _timeLockHours: number | BigNumber | string,
    meta?: Truffle.TransactionDetails
  ): Promise<UpgradeImplSchemeInstance>;
}

export interface UpgradeSchemeContract
  extends Truffle.Contract<UpgradeSchemeInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<UpgradeSchemeInstance>;
}

export interface UpgradesRegistrarContract
  extends Truffle.Contract<UpgradesRegistrarInstance> {
  "new"(meta?: Truffle.TransactionDetails): Promise<UpgradesRegistrarInstance>;
}

export interface VotingMachineCallbacksContract
  extends Truffle.Contract<VotingMachineCallbacksInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<VotingMachineCallbacksInstance>;
}

export interface VotingMachineCallbacksInterfaceContract
  extends Truffle.Contract<VotingMachineCallbacksInterfaceInstance> {
  "new"(
    meta?: Truffle.TransactionDetails
  ): Promise<VotingMachineCallbacksInterfaceInstance>;
}

export interface AbsoluteVoteInstance extends Truffle.ContractInstance {
  parameters(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, string]>;

  proposals(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, boolean, string, BigNumber, string, BigNumber]>;

  organizations(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getNumberOfChoices(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  voteInfo(
    _proposalId: string | BigNumber,
    _voter: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  voteStatus(
    _proposalId: string | BigNumber,
    _choice: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isVotable(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  getAllowedRangeOfChoices(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  getParametersHash(
    _precReq: number | BigNumber | string,
    _voteOnBehalf: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  propose: {
    (
      _numOfChoices: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      arg2: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _numOfChoices: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      arg2: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _numOfChoices: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      arg2: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _numOfChoices: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      arg2: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  vote: {
    (
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  cancelVote: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  execute: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setParameters: {
    (
      _precReq: number | BigNumber | string,
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _precReq: number | BigNumber | string,
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _precReq: number | BigNumber | string,
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _precReq: number | BigNumber | string,
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposalsCnt(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  MAX_NUM_OF_CHOICES(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  isAbstainAllow(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface AbstractFeesInstance extends Truffle.ContractInstance {
  getTxFees(
    _value: number | BigNumber | string,
    _sender: string | BigNumber,
    _recipient: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, boolean]>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface AbstractUBIInstance extends Truffle.ContractInstance {
  lastClaimed(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getClaimerCount(
    day: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getClaimAmount(
    day: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getDailyStats(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  claim: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  claimDistribution(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  currentDay(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ActivePeriodInstance extends Truffle.ContractInstance {
  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ActivePeriodMockInstance extends Truffle.ContractInstance {
  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface AddAdminInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  admin(txDetails?: Truffle.TransactionDetails): Promise<string>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface AddFoundersGoodDollarInstance
  extends Truffle.ContractInstance {
  addFounders: {
    (
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface AddFoundersGoodDollarWithRepInstance
  extends Truffle.ContractInstance {
  addFounders: {
    (
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      nativeToken: string | BigNumber,
      nativeReputation: string | BigNumber,
      _sender: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface AddMinterInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  minter(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface AdminWalletInstance extends Truffle.ContractInstance {
  isAdmin(
    _user: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setBonusContract: {
    (
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addAdmins: {
    (
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeAdmins: {
    (
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  topAdmins: {
    (
      startIndex: number | BigNumber | string,
      endIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      startIndex: number | BigNumber | string,
      endIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      startIndex: number | BigNumber | string,
      endIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      startIndex: number | BigNumber | string,
      endIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  whitelist: {
    (
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeWhitelist: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  blacklist: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeBlacklist: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  topWallet: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  whitelistAndAwardUser: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  awardUser: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  genericCall: {
    (
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[boolean, string]>;
    sendTransaction(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  destroy: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  adminToppingAmount(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  currentDay(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  toppingAmount(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  toppingTimes(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface AvatarInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  genericCall: {
    (
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[boolean, string]>;
    sendTransaction(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  sendEther: {
    (
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransfer: {
    (
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransferFrom: {
    (
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenApproval: {
    (
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  metaData: {
    (_metaData: string, txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  orgName(txDetails?: Truffle.TransactionDetails): Promise<string>;
  nativeReputation(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  nativeToken(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface AvatarMockInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  genericCall: {
    (
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[boolean, string]>;
    sendTransaction(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  sendEther: {
    (
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransfer: {
    (
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransferFrom: {
    (
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenApproval: {
    (
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  metaData: {
    (_metaData: string, txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  nativeReputation(txDetails?: Truffle.TransactionDetails): Promise<string>;
  nativeToken(txDetails?: Truffle.TransactionDetails): Promise<string>;
  orgName(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface cDAIMockInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<BigNumber>;
    sendTransaction(
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  redeem: {
    (
      cdaiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      cdaiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<BigNumber>;
    sendTransaction(
      cdaiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      cdaiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  redeemUnderlying: {
    (
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<BigNumber>;
    sendTransaction(
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      daiAmount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  exchangeRateCurrent: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  exchangeRateStored(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
}

export interface ControllerInstance extends Truffle.ContractInstance {
  globalConstraintsRegisterPre(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[boolean, BigNumber]>;

  globalConstraintsPre(
    arg0: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string]>;

  globalConstraintsRegisterPost(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[boolean, BigNumber]>;

  schemes(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string]>;

  globalConstraintsPost(
    arg0: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string]>;

  getNativeReputation(
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  isSchemeRegistered(
    _scheme: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  getSchemeParameters(
    _scheme: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getSchemePermissions(
    _scheme: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getGlobalConstraintParameters(
    _globalConstraint: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  globalConstraintsCount(
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  isGlobalConstraintRegistered(
    _globalConstraint: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mintTokens: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  registerScheme: {
    (
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unregisterScheme: {
    (
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unregisterSelf: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addGlobalConstraint: {
    (
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeGlobalConstraint: {
    (
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  upgradeController: {
    (
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  genericCall: {
    (
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[boolean, string]>;
    sendTransaction(
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  sendEther: {
    (
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransfer: {
    (
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransferFrom: {
    (
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenApproval: {
    (
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  metaData: {
    (
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  newController(txDetails?: Truffle.TransactionDetails): Promise<string>;
  avatar(txDetails?: Truffle.TransactionDetails): Promise<string>;
  nativeReputation(txDetails?: Truffle.TransactionDetails): Promise<string>;
  nativeToken(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface ControllerCreatorGoodDollarInstance
  extends Truffle.ContractInstance {
  create: {
    (
      _avatar: string | BigNumber,
      _sender: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _sender: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _sender: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _sender: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface ControllerInterfaceInstance extends Truffle.ContractInstance {
  getNativeReputation(
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  isSchemeRegistered(
    _scheme: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  getSchemeParameters(
    _scheme: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getGlobalConstraintParameters(
    _globalConstraint: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getSchemePermissions(
    _scheme: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  globalConstraintsCount(
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  isGlobalConstraintRegistered(
    _globalConstraint: string | BigNumber,
    _avatar: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _from: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mintTokens: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  registerScheme: {
    (
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _scheme: string | BigNumber,
      _paramsHash: string | BigNumber,
      _permissions: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unregisterScheme: {
    (
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _scheme: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unregisterSelf: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addGlobalConstraint: {
    (
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _globalConstraint: string | BigNumber,
      _params: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeGlobalConstraint: {
    (
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _globalConstraint: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  upgradeController: {
    (
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _newController: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  genericCall: {
    (
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[boolean, string]>;
    sendTransaction(
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _contract: string | BigNumber,
      _data: string,
      _avatar: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  sendEther: {
    (
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amountInWei: number | BigNumber | string,
      _to: string | BigNumber,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransfer: {
    (
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenTransferFrom: {
    (
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  externalTokenApproval: {
    (
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _externalToken: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  metaData: {
    (
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _metaData: string,
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface DAIMockInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isMinter(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addMinter: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  allocateTo: {
    (
      recipient: string | BigNumber,
      amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      recipient: string | BigNumber,
      amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<BigNumber>;
    sendTransaction(
      recipient: string | BigNumber,
      amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      recipient: string | BigNumber,
      amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface DaoCreatorGoodDollarInstance extends Truffle.ContractInstance {
  forgeOrg: {
    (
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setSchemes: {
    (
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  avatar(txDetails?: Truffle.TransactionDetails): Promise<string>;
  lock(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface DaoCreatorGoodDollarWithRepInstance
  extends Truffle.ContractInstance {
  forgeOrg: {
    (
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _reputation: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _reputation: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _reputation: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _tokenName: string,
      _tokenSymbol: string,
      _cap: number | BigNumber | string,
      _formula: string | BigNumber,
      _identity: string | BigNumber,
      _reputation: string | BigNumber,
      _founders: (string | BigNumber)[],
      _avatarTokenAmount: number | BigNumber | string,
      _foundersReputationAmount: (number | BigNumber | string)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setSchemes: {
    (
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _schemes: (string | BigNumber)[],
      _params: (string | BigNumber)[],
      _permissions: (string | BigNumber)[],
      _metaData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  avatar(txDetails?: Truffle.TransactionDetails): Promise<string>;
  lock(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface DAOTokenInstance extends Truffle.ContractInstance {
  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  burnFrom: {
    (
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  cap(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface DeployForeignBridgeInstance extends Truffle.ContractInstance {
  setBridge: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  factory(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface DeployHomeBridgeInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setBridge: {
    (addMinter: boolean, txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(
      addMinter: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      addMinter: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      addMinter: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  factory(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface ERC20Instance extends Truffle.ContractInstance {
  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ERC20BurnableInstance extends Truffle.ContractInstance {
  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnFrom: {
    (
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ERC20DetailedInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    who: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ERC20MintableInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isMinter(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addMinter: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ERC20PausableInstance extends Truffle.ContractInstance {
  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface ERC677Instance extends Truffle.ContractInstance {
  transferAndCall: {
    (
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface ERC677BridgeTokenInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isMinter(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addMinter: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnFrom: {
    (
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferAndCall: {
    (
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setBridgeContract: {
    (
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  bridgeContract(txDetails?: Truffle.TransactionDetails): Promise<string>;
  cap(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ERC677ReceiverInstance extends Truffle.ContractInstance {
  onTokenTransfer: {
    (
      _from: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _from: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _from: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _from: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface ERC677TokenInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnFrom: {
    (
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferAndCall: {
    (
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  cap(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface FeeFormulaInstance extends Truffle.ContractInstance {
  getTxFees(
    _value: number | BigNumber | string,
    _sender: string | BigNumber,
    _recipient: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, boolean]>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  percentage(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  senderPays(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface FeelessSchemeInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface FixedUBIInstance extends Truffle.ContractInstance {
  getClaimAmount(
    day: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getClaimerCount(
    day: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getDailyStats(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  lastClaimed(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  claim: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  claimDistribution(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  currentDay(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  checkEntitlement(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface FormulaHolderInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setFormula: {
    (
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  formula(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface FormulaHolderMockInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setFormula: {
    (
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  formula(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface FuseFaucetInstance extends Truffle.ContractInstance {
  isAdmin(
    _user: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setBonusContract: {
    (
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _bonus: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addAdmins: {
    (
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeAdmins: {
    (
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _admins: (string | BigNumber)[],
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  topAdmins: {
    (
      startIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      startIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      startIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      startIndex: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  whitelist: {
    (
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeWhitelist: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  blacklist: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeBlacklist: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  topWallet: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  whitelistAndAwardUser: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      _did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  awardUser: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  genericCall: {
    (
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[boolean, string]>;
    sendTransaction(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _contract: string | BigNumber,
      _data: string,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  destroy: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  adminToppingAmount(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  currentDay(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  toppingAmount(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  toppingTimes(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface GenesisProtocolInstance extends Truffle.ContractInstance {
  parameters(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<
    [
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      string
    ]
  >;

  getParametersHash(
    _params: (number | BigNumber | string)[],
    _voteOnBehalf: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  threshold(
    _paramsHash: string | BigNumber,
    _organizationId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  proposals(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<
    [
      string,
      string,
      BigNumber,
      BigNumber,
      string,
      BigNumber,
      string,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      boolean
    ]
  >;

  shouldBoost(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  stakesNonce(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  organizations(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  averagesDownstakesOfBoosted(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  orgBoostedProposalsCnt(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getNumberOfChoices(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getProposalTimes(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<(BigNumber)[]>;

  voteInfo(
    _proposalId: string | BigNumber,
    _voter: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  voteStatus(
    _proposalId: string | BigNumber,
    _choice: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isVotable(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  proposalStatus(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;

  getProposalOrganization(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getStaker(
    _proposalId: string | BigNumber,
    _staker: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  voteStake(
    _proposalId: string | BigNumber,
    _vote: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  winningVote(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  state(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getAllowedRangeOfChoices(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  score(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  redeemDaoBounty: {
    (
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[BigNumber, BigNumber]>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  propose: {
    (
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setParameters: {
    (
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  executeBoosted: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<BigNumber>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  redeem: {
    (
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<(BigNumber)[]>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  stake: {
    (
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  stakeWithSignature: {
    (
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _nonce: number | BigNumber | string,
      _signatureType: number | BigNumber | string,
      _signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _nonce: number | BigNumber | string,
      _signatureType: number | BigNumber | string,
      _signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _nonce: number | BigNumber | string,
      _signatureType: number | BigNumber | string,
      _signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _nonce: number | BigNumber | string,
      _signatureType: number | BigNumber | string,
      _signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  vote: {
    (
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _amount: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  cancelVote: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  execute: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  NO(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  proposalsCnt(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  DELEGATION_HASH_EIP712(
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;
  stakingToken(txDetails?: Truffle.TransactionDetails): Promise<string>;
  NUM_OF_CHOICES(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  YES(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isAbstainAllow(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface GenesisProtocolLogicInstance extends Truffle.ContractInstance {
  parameters(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<
    [
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      string
    ]
  >;

  proposals(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<
    [
      string,
      string,
      BigNumber,
      BigNumber,
      string,
      BigNumber,
      string,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      boolean
    ]
  >;

  getAllowedRangeOfChoices(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  getNumberOfChoices(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  voteStatus(
    _proposalId: string | BigNumber,
    _choice: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  organizations(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  averagesDownstakesOfBoosted(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isVotable(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  orgBoostedProposalsCnt(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  shouldBoost(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  threshold(
    _paramsHash: string | BigNumber,
    _organizationId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getParametersHash(
    _params: (number | BigNumber | string)[],
    _voteOnBehalf: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  vote: {
    (
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  cancelVote: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  propose: {
    (
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: number | BigNumber | string,
      _paramsHash: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  executeBoosted: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<BigNumber>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setParameters: {
    (
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _params: (number | BigNumber | string)[],
      _voteOnBehalf: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  redeem: {
    (
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<(BigNumber)[]>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  redeemDaoBounty: {
    (
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<[BigNumber, BigNumber]>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _beneficiary: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  NO(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  proposalsCnt(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isAbstainAllow(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  stakingToken(txDetails?: Truffle.TransactionDetails): Promise<string>;
  NUM_OF_CHOICES(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  YES(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface GlobalConstraintInterfaceInstance
  extends Truffle.ContractInstance {
  pre: {
    (
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  post: {
    (
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _method: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  when: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };
}

export interface GoodDollarInstance extends Truffle.ContractInstance {
  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isMinter(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  getFees(
    value: number | BigNumber | string,
    sender: string | BigNumber,
    recipient: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, boolean]>;

  addMinter: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setBridgeContract: {
    (
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _bridgeContract: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setFormula: {
    (
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferAndCall: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnFrom: {
    (
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  increaseAllowance: {
    (
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      addedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decreaseAllowance: {
    (
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      subtractedValue: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setFeeRecipient: {
    (
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  bridgeContract(txDetails?: Truffle.TransactionDetails): Promise<string>;
  cap(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  formula(txDetails?: Truffle.TransactionDetails): Promise<string>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface GoodDollarV2Instance extends Truffle.ContractInstance {
  allowance(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOf(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isBridge(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isMinter(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  minters(
    arg0: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  nonces(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getFees(
    _value: number | BigNumber | string,
    _sender: string | BigNumber,
    _recipient: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, boolean]>;

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setFeeRecipient: {
    (
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _feeRecipient: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setFormula: {
    (
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _formula: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addMinter: {
    (
      _minter: string | BigNumber,
      _isBridge: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _minter: string | BigNumber,
      _isBridge: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _minter: string | BigNumber,
      _isBridge: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _minter: string | BigNumber,
      _isBridge: boolean,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  revokeMinter: {
    (
      _minter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _minter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _minter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _minter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  mint: {
    (
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _to: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      _from: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _from: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _from: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _from: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approveAndCall: {
    (
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  permit: {
    (
      _target: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _target: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _target: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _target: string | BigNumber,
      _spender: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferWithPermit: {
    (
      _target: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _target: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _target: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _target: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _deadline: number | BigNumber | string,
      _v: number | BigNumber | string,
      _r: string | BigNumber,
      _s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transfer: {
    (
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _from: string | BigNumber,
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferAndCall: {
    (
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _to: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  DOMAIN_SEPARATOR(txDetails?: Truffle.TransactionDetails): Promise<string>;
  PERMIT_TYPEHASH(txDetails?: Truffle.TransactionDetails): Promise<string>;
  TRANSFER_TYPEHASH(txDetails?: Truffle.TransactionDetails): Promise<string>;
  avatar(txDetails?: Truffle.TransactionDetails): Promise<string>;
  bridge(txDetails?: Truffle.TransactionDetails): Promise<string>;
  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  formula(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  name(txDetails?: Truffle.TransactionDetails): Promise<string>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  symbol(txDetails?: Truffle.TransactionDetails): Promise<string>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface IAnyswapV3ERC20Instance extends Truffle.ContractInstance {
  approveAndCall: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferAndCall: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface IApprovalReceiverInstance extends Truffle.ContractInstance {
  onTokenApproval: {
    (
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface IdentityInstance extends Truffle.ContractInstance {
  addrToDID(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  dateAdded(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  dateAuthenticated(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  didHashToAddress(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  isIdentityAdmin(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isWhitelisted(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  lastAuthenticated(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isDAOContract(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isBlacklisted(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addIdentityAdmin: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  removeIdentityAdmin: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceIdentityAdmin: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAuthenticationPeriod: {
    (
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  authenticate: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addWhitelisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addWhitelistedWithDID: {
    (
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeWhitelisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceWhitelisted: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  addBlacklisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeBlacklisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addContract: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeContract: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  authenticationPeriod(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  whitelistedContracts(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  whitelistedCount(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface IdentityAdminRoleInstance extends Truffle.ContractInstance {
  isIdentityAdmin(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addIdentityAdmin: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeIdentityAdmin: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceIdentityAdmin: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface IdentityGuardInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface IdentityGuardMockInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  blacklistMock: {
    (to: string | BigNumber, txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(
      to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  checkWhitelisted: {
    (to: string | BigNumber, txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(
      to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface IdentityWithOwnerInstance extends Truffle.ContractInstance {
  addrToDID(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  dateAdded(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  dateAuthenticated(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  didHashToAddress(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  isIdentityAdmin(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isWhitelisted(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  lastAuthenticated(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isDAOContract(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  isBlacklisted(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addIdentityAdmin: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  removeIdentityAdmin: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceIdentityAdmin: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAuthenticationPeriod: {
    (
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      period: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  authenticate: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addWhitelisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addWhitelistedWithDID: {
    (
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      did: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeWhitelisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceWhitelisted: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  addBlacklisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeBlacklisted: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  addContract: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  removeContract: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  authenticationPeriod(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  whitelistedContracts(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  whitelistedCount(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface IERC20Instance extends Truffle.ContractInstance {
  balanceOf(
    who: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  allowance(
    owner: string | BigNumber,
    spender: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  transfer: {
    (
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  approve: {
    (
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      spender: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferFrom: {
    (
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      from: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface IERC2612Instance extends Truffle.ContractInstance {
  nonces(
    owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  permit: {
    (
      target: string | BigNumber,
      spender: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      target: string | BigNumber,
      spender: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      target: string | BigNumber,
      spender: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      target: string | BigNumber,
      spender: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferWithPermit: {
    (
      target: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      target: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      target: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      target: string | BigNumber,
      to: string | BigNumber,
      value: number | BigNumber | string,
      deadline: number | BigNumber | string,
      v: number | BigNumber | string,
      r: string | BigNumber,
      s: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface IFeesFormulaInstance extends Truffle.ContractInstance {
  getTxFees(
    _value: number | BigNumber | string,
    _sender: string | BigNumber,
    _recipient: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, boolean]>;
}

export interface IntVoteInterfaceInstance extends Truffle.ContractInstance {
  getNumberOfChoices(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  isVotable(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  voteStatus(
    _proposalId: string | BigNumber,
    _choice: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getAllowedRangeOfChoices(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  propose: {
    (
      _numOfChoices: number | BigNumber | string,
      _proposalParameters: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _numOfChoices: number | BigNumber | string,
      _proposalParameters: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _numOfChoices: number | BigNumber | string,
      _proposalParameters: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _numOfChoices: number | BigNumber | string,
      _proposalParameters: string | BigNumber,
      _proposer: string | BigNumber,
      _organization: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  vote: {
    (
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _vote: number | BigNumber | string,
      _rep: number | BigNumber | string,
      _voter: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  cancelVote: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  isAbstainAllow(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface InviteUserInstance extends Truffle.ContractInstance {
  claimed(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  invited(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  rewarded(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  inviteUser: {
    (
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  claimReward: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  maxBonus(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  reward(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ITransferReceiverInstance extends Truffle.ContractInstance {
  onTokenTransfer: {
    (
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      arg0: string | BigNumber,
      arg1: number | BigNumber | string,
      arg2: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface MigrationsInstance extends Truffle.ContractInstance {
  setCompleted: {
    (
      completed: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      completed: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      completed: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      completed: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  upgrade: {
    (
      new_address: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      new_address: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      new_address: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      new_address: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  last_completed_migration(
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface MinterRoleInstance extends Truffle.ContractInstance {
  isMinter(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addMinter: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renounceMinter: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };
}

export interface OneTimePaymentsInstance extends Truffle.ContractInstance {
  payments(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[boolean, BigNumber, string]>;

  hasPayment(
    paymentId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  onTokenTransfer: {
    (
      sender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      sender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      sender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      sender: string | BigNumber,
      value: number | BigNumber | string,
      data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  withdraw: {
    (
      paymentId: string | BigNumber,
      signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      paymentId: string | BigNumber,
      signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      paymentId: string | BigNumber,
      signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      paymentId: string | BigNumber,
      signature: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  cancel: {
    (
      paymentId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      paymentId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      paymentId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      paymentId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface OwnableInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface PausableInstance extends Truffle.ContractInstance {
  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  pause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  unpause: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  paused(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface PauserRoleInstance extends Truffle.ContractInstance {
  isPauser(
    account: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<boolean>;

  addPauser: {
    (
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      account: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  renouncePauser: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };
}

export interface ProposalExecuteInterfaceInstance
  extends Truffle.ContractInstance {
  executeProposal: {
    (
      _proposalId: string | BigNumber,
      _decision: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _decision: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _decision: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _decision: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface ProxyAdminInstance extends Truffle.ContractInstance {
  upgrade: {
    (
      proxy: string | BigNumber,
      impl: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      proxy: string | BigNumber,
      impl: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      proxy: string | BigNumber,
      impl: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      proxy: string | BigNumber,
      impl: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  upgradeAndCall: {
    (
      proxy: string | BigNumber,
      impl: string | BigNumber,
      callData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      proxy: string | BigNumber,
      impl: string | BigNumber,
      callData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      proxy: string | BigNumber,
      impl: string | BigNumber,
      callData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      proxy: string | BigNumber,
      impl: string | BigNumber,
      callData: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface RemoveAdminInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  admin(txDetails?: Truffle.TransactionDetails): Promise<string>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface ReputationInstance extends Truffle.ContractInstance {
  balanceOf(
    _owner: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOfAt(
    _owner: string | BigNumber,
    _blockNumber: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  totalSupplyAt(
    _blockNumber: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mint: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burn: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  decimals(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  totalSupply(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ReputationMintOnceInstance extends Truffle.ContractInstance {
  recipients(
    arg0: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  fixIssues: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  reputationReward(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ReputationMockInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  creator(txDetails?: Truffle.TransactionDetails): Promise<string>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  reputationReward(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ReputationRewardInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  creator(txDetails?: Truffle.TransactionDetails): Promise<string>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  reputationReward(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface ReserveMinterInstance extends Truffle.ContractInstance {
  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  amount(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  receiver(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface ReserveRelayerInstance extends Truffle.ContractInstance {
  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  receiver(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface SchemeGuardInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface SchemeGuardMockInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
}

export interface SchemeRegistrarInstance extends Truffle.ContractInstance {
  parameters(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string, string]>;

  organizationsProposals(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, boolean, string, string]>;

  proposalsInfo(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, string]>;

  balanceOfStakingToken(
    _stakingToken: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  reputationOf(
    _owner: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getTotalReputationSupply(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getParametersHash(
    _voteRegisterParams: string | BigNumber,
    _voteRemoveParams: string | BigNumber,
    _intVote: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  stakingTokenTransfer: {
    (
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  executeProposal: {
    (
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setParameters: {
    (
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposeScheme: {
    (
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposeToRemoveScheme: {
    (
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface SenderFeeFormulaInstance extends Truffle.ContractInstance {
  getTxFees(
    _value: number | BigNumber | string,
    _sender: string | BigNumber,
    _recipient: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, boolean]>;

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  percentage(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  senderPays(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface SignUpBonusInstance extends Truffle.ContractInstance {
  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  awardUser: {
    (
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _user: string | BigNumber,
      _amount: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  initalReserve(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  maxBonus(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface TransferAndCallMockInstance extends Truffle.ContractInstance {
  onTokenTransfer: {
    (
      _sender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _sender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _sender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _sender: string | BigNumber,
      _value: number | BigNumber | string,
      _data: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mockTransfer: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  calledFallback(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  sender(txDetails?: Truffle.TransactionDetails): Promise<string>;
  value(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  wasCalled(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
}

export interface UBIInstance extends Truffle.ContractInstance {
  getClaimAmount(
    day: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getClaimerCount(
    day: number | BigNumber | string,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getDailyStats(
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, BigNumber]>;

  lastClaimed(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  claim: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  end: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  renounceOwnership: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  setAvatar: {
    (
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setIdentity: {
    (
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _identity: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  transferOwnership: {
    (
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      newOwner: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  start: {
    (txDetails?: Truffle.TransactionDetails): Promise<
      Truffle.TransactionResponse
    >;
    call(txDetails?: Truffle.TransactionDetails): Promise<void>;
    sendTransaction(txDetails?: Truffle.TransactionDetails): Promise<string>;
    estimateGas(txDetails?: Truffle.TransactionDetails): Promise<number>;
  };

  claimDistribution(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  currentDay(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  identity(txDetails?: Truffle.TransactionDetails): Promise<string>;
  isActive(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isOwner(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  isRegistered(txDetails?: Truffle.TransactionDetails): Promise<boolean>;
  owner(txDetails?: Truffle.TransactionDetails): Promise<string>;
  periodEnd(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
  periodStart(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface UpgradeImplSchemeInstance extends Truffle.ContractInstance {
  callData(txDetails?: Truffle.TransactionDetails): Promise<string>;
  newImpl(txDetails?: Truffle.TransactionDetails): Promise<string>;
  proxy(txDetails?: Truffle.TransactionDetails): Promise<string>;
  proxyAdmin(txDetails?: Truffle.TransactionDetails): Promise<string>;
  timeLockHours(txDetails?: Truffle.TransactionDetails): Promise<BigNumber>;
}

export interface UpgradeSchemeInstance extends Truffle.ContractInstance {
  parameters(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string]>;

  organizationsProposals(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string, BigNumber]>;

  proposalsInfo(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, string]>;

  balanceOfStakingToken(
    _stakingToken: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  reputationOf(
    _owner: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getTotalReputationSupply(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getParametersHash(
    _voteParams: string | BigNumber,
    _intVote: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  stakingTokenTransfer: {
    (
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  executeProposal: {
    (
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setParameters: {
    (
      _voteParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _voteParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _voteParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _voteParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposeUpgrade: {
    (
      _avatar: string | BigNumber,
      _newController: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _newController: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _newController: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _newController: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposeChangeUpgradingScheme: {
    (
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _params: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface UpgradesRegistrarInstance extends Truffle.ContractInstance {
  balanceOfStakingToken(
    _stakingToken: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getParametersHash(
    _voteRegisterParams: string | BigNumber,
    _voteRemoveParams: string | BigNumber,
    _intVote: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<string>;

  getTotalReputationSupply(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  organizationsProposals(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, boolean, string, string]>;

  parameters(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[string, string, string]>;

  proposalsInfo(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, string]>;

  reputationOf(
    _owner: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  upgrades(
    arg0: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, string]>;

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposeScheme: {
    (
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _parametersHash: string | BigNumber,
      _permissions: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  proposeToRemoveScheme: {
    (
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _avatar: string | BigNumber,
      _scheme: string | BigNumber,
      _descriptionHash: string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  setParameters: {
    (
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    sendTransaction(
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _voteRegisterParams: string | BigNumber,
      _voteRemoveParams: string | BigNumber,
      _intVote: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  stakingTokenTransfer: {
    (
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  executeProposal: {
    (
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      _param: number | BigNumber | string,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  executeUpgrade: {
    (
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<void>;
    sendTransaction(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface VotingMachineCallbacksInstance
  extends Truffle.ContractInstance {
  proposalsInfo(
    arg0: string | BigNumber,
    arg1: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<[BigNumber, string]>;

  balanceOfStakingToken(
    _stakingToken: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  getTotalReputationSupply(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  reputationOf(
    _owner: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  stakingTokenTransfer: {
    (
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}

export interface VotingMachineCallbacksInterfaceInstance
  extends Truffle.ContractInstance {
  getTotalReputationSupply(
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  reputationOf(
    _owner: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  balanceOfStakingToken(
    _stakingToken: string | BigNumber,
    _proposalId: string | BigNumber,
    txDetails?: Truffle.TransactionDetails
  ): Promise<BigNumber>;

  mintReputation: {
    (
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _beneficiary: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  burnReputation: {
    (
      _amount: number | BigNumber | string,
      _owner: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _amount: number | BigNumber | string,
      _owner: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _amount: number | BigNumber | string,
      _owner: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _amount: number | BigNumber | string,
      _owner: string | BigNumber,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };

  stakingTokenTransfer: {
    (
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<Truffle.TransactionResponse>;
    call(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<boolean>;
    sendTransaction(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<string>;
    estimateGas(
      _stakingToken: string | BigNumber,
      _beneficiary: string | BigNumber,
      _amount: number | BigNumber | string,
      _proposalId: string | BigNumber,
      txDetails?: Truffle.TransactionDetails
    ): Promise<number>;
  };
}
