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

import BN from "bn.js";

export type TxID = { transactionId: string };

export interface TalentContracts {
  ADMIN_ROLE(): Promise<string>;

  DECIMALS(): Promise<BN>;

  DEFAULT_ADMIN_ROLE(): Promise<string>;

  OPERATOR_ROLE(): Promise<string>;

  addContract: {
    ({
      _contractInfo,
    }: {
      _contractInfo: {
        start: number | BN | string;
        end: number | BN | string;
        installments: number | BN | string;
        compensationId: number | BN | string;
        optionId: number | BN | string;
        talentId: number | BN | string;
        chief: string;
        customer: string;
        compensation: number | BN | string;
        options: number | BN | string;
        talent: number | BN | string;
        part: number | BN | string;
      };
    }): Promise<TxID>;
  };

  batchSettle: {
    ({
      _index,
      _from,
      _to,
    }: {
      _index: number | BN | string;
      _from: number | BN | string;
      _to: number | BN | string;
    }): Promise<TxID>;
  };

  chiefsGroup(): Promise<string>;

  contracts({
    arg0,
  }: {
    arg0: number | BN | string;
  }): Promise<{
    index: BN;
    start: BN;
    end: BN;
    installments: BN;
    compensationId: BN;
    optionId: BN;
    compensation: BN;
    options: BN;
    talent: BN;
    chief: string;
    customer: string;
    part: BN;
  }>;

  contractsByAccount({
    _account,
  }: {
    _account: string;
  }): Promise<
    {
      c: {
        index: BN;
        start: BN;
        end: BN;
        installments: BN;
        compensationId: BN;
        optionId: BN;
        compensation: BN;
        options: BN;
        talent: BN;
        chief: string;
        customer: string;
        part: BN;
      };
      p: {
        talentSources: string[];
        talentAmounts: BN[];
        talentIds: BN[];
        compensationAmounts: BN[];
        optionAmounts: BN[];
        settledAt: BN;
        settled: boolean;
      }[];
    }[]
  >;

  getContract({
    _index,
  }: {
    _index: number | BN | string;
  }): Promise<{
    c: {
      index: BN;
      start: BN;
      end: BN;
      installments: BN;
      compensationId: BN;
      optionId: BN;
      compensation: BN;
      options: BN;
      talent: BN;
      chief: string;
      customer: string;
      part: BN;
    };
    p: {
      talentSources: string[];
      talentAmounts: BN[];
      talentIds: BN[];
      compensationAmounts: BN[];
      optionAmounts: BN[];
      settledAt: BN;
      settled: boolean;
    }[];
  }>;

  getRoleAdmin({ role }: { role: string }): Promise<string>;

  getRoleMember({
    role,
    index,
  }: {
    role: string;
    index: number | BN | string;
  }): Promise<string>;

  getRoleMemberCount({ role }: { role: string }): Promise<BN>;

  grantRole: {
    ({ role, account }: { role: string; account: string }): Promise<TxID>;
  };

  hasRole({
    role,
    account,
  }: {
    role: string;
    account: string;
  }): Promise<boolean>;

  initialize: {
    ({
      _nft,
      _operator,
      _chiefs,
      _chiefsGroupId,
    }: {
      _nft: string;
      _operator: string;
      _chiefs: string;
      _chiefsGroupId: number | BN | string;
    }): Promise<TxID>;
  };

  nft(): Promise<string>;

  removeContract: {
    ({ _index }: { _index: number | BN | string }): Promise<TxID>;
  };

  renounceRole: {
    ({ role, account }: { role: string; account: string }): Promise<TxID>;
  };

  revokeRole: {
    ({ role, account }: { role: string; account: string }): Promise<TxID>;
  };

  settle: {
    ({
      _index,
      _installment,
    }: {
      _index: number | BN | string;
      _installment: number | BN | string;
    }): Promise<TxID>;
  };

  supportsInterface({ interfaceId }: { interfaceId: string }): Promise<boolean>;
}
