/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener
} from 'ethers';
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedListener,
  TypedContractMethod
} from './common';

export declare namespace SmtLib {
  export type ProofStruct = {
    root: BigNumberish;
    existence: boolean;
    siblings: BigNumberish[];
    index: BigNumberish;
    value: BigNumberish;
    auxExistence: boolean;
    auxIndex: BigNumberish;
    auxValue: BigNumberish;
  };

  export type ProofStructOutput = [
    root: bigint,
    existence: boolean,
    siblings: bigint[],
    index: bigint,
    value: bigint,
    auxExistence: boolean,
    auxIndex: bigint,
    auxValue: bigint
  ] & {
    root: bigint;
    existence: boolean;
    siblings: bigint[];
    index: bigint;
    value: bigint;
    auxExistence: boolean;
    auxIndex: bigint;
    auxValue: bigint;
  };
}

export declare namespace IdentityLib {
  export type StateInfoStruct = {
    state: BigNumberish;
    claimsRoot: BigNumberish;
    revocationsRoot: BigNumberish;
    rootsRoot: BigNumberish;
  };

  export type StateInfoStructOutput = [
    state: bigint,
    claimsRoot: bigint,
    revocationsRoot: bigint,
    rootsRoot: bigint
  ] & {
    state: bigint;
    claimsRoot: bigint;
    revocationsRoot: bigint;
    rootsRoot: bigint;
  };

  export type RootsStruct = {
    claimsRoot: BigNumberish;
    revocationsRoot: BigNumberish;
    rootsRoot: BigNumberish;
  };

  export type RootsStructOutput = [
    claimsRoot: bigint,
    revocationsRoot: bigint,
    rootsRoot: bigint
  ] & { claimsRoot: bigint; revocationsRoot: bigint; rootsRoot: bigint };
}

export declare namespace INonMerklizedIssuer {
  export type CredentialSchemaStruct = { id: string; _type: string };

  export type CredentialSchemaStructOutput = [id: string, _type: string] & {
    id: string;
    _type: string;
  };

  export type DisplayMethodStruct = { id: string; _type: string };

  export type DisplayMethodStructOutput = [id: string, _type: string] & {
    id: string;
    _type: string;
  };

  export type CredentialDataStruct = {
    id: BigNumberish;
    context: string[];
    _type: string;
    issuanceDate: BigNumberish;
    credentialSchema: INonMerklizedIssuer.CredentialSchemaStruct;
    displayMethod: INonMerklizedIssuer.DisplayMethodStruct;
  };

  export type CredentialDataStructOutput = [
    id: bigint,
    context: string[],
    _type: string,
    issuanceDate: bigint,
    credentialSchema: INonMerklizedIssuer.CredentialSchemaStructOutput,
    displayMethod: INonMerklizedIssuer.DisplayMethodStructOutput
  ] & {
    id: bigint;
    context: string[];
    _type: string;
    issuanceDate: bigint;
    credentialSchema: INonMerklizedIssuer.CredentialSchemaStructOutput;
    displayMethod: INonMerklizedIssuer.DisplayMethodStructOutput;
  };

  export type SubjectFieldStruct = {
    key: string;
    value: BigNumberish;
    rawValue: BytesLike;
  };

  export type SubjectFieldStructOutput = [key: string, value: bigint, rawValue: string] & {
    key: string;
    value: bigint;
    rawValue: string;
  };
}

export declare namespace IOnchainCredentialStatusResolver {
  export type IdentityStateRootsStruct = {
    state: BigNumberish;
    claimsTreeRoot: BigNumberish;
    revocationTreeRoot: BigNumberish;
    rootOfRoots: BigNumberish;
  };

  export type IdentityStateRootsStructOutput = [
    state: bigint,
    claimsTreeRoot: bigint,
    revocationTreeRoot: bigint,
    rootOfRoots: bigint
  ] & {
    state: bigint;
    claimsTreeRoot: bigint;
    revocationTreeRoot: bigint;
    rootOfRoots: bigint;
  };

  export type ProofStruct = {
    root: BigNumberish;
    existence: boolean;
    siblings: BigNumberish[];
    index: BigNumberish;
    value: BigNumberish;
    auxExistence: boolean;
    auxIndex: BigNumberish;
    auxValue: BigNumberish;
  };

  export type ProofStructOutput = [
    root: bigint,
    existence: boolean,
    siblings: bigint[],
    index: bigint,
    value: bigint,
    auxExistence: boolean,
    auxIndex: bigint,
    auxValue: bigint
  ] & {
    root: bigint;
    existence: boolean;
    siblings: bigint[];
    index: bigint;
    value: bigint;
    auxExistence: boolean;
    auxIndex: bigint;
    auxValue: bigint;
  };

  export type CredentialStatusStruct = {
    issuer: IOnchainCredentialStatusResolver.IdentityStateRootsStruct;
    mtp: IOnchainCredentialStatusResolver.ProofStruct;
  };

  export type CredentialStatusStructOutput = [
    issuer: IOnchainCredentialStatusResolver.IdentityStateRootsStructOutput,
    mtp: IOnchainCredentialStatusResolver.ProofStructOutput
  ] & {
    issuer: IOnchainCredentialStatusResolver.IdentityStateRootsStructOutput;
    mtp: IOnchainCredentialStatusResolver.ProofStructOutput;
  };
}

export interface NonMerklizedIssuerBaseInterface extends Interface {
  getFunction(
    nameOrSignature:
      | 'CREDENTIAL_ADAPTER_VERSION'
      | 'getClaimProof'
      | 'getClaimProofByRoot'
      | 'getClaimProofWithStateInfo'
      | 'getClaimsTreeRoot'
      | 'getCredential'
      | 'getCredentialAdapterVersion'
      | 'getId'
      | 'getIsOldStateGenesis'
      | 'getLatestPublishedClaimsRoot'
      | 'getLatestPublishedRevocationsRoot'
      | 'getLatestPublishedRootsRoot'
      | 'getLatestPublishedState'
      | 'getRevocationProof'
      | 'getRevocationProofByRoot'
      | 'getRevocationProofWithStateInfo'
      | 'getRevocationStatus'
      | 'getRevocationStatusByIdAndState'
      | 'getRevocationsTreeRoot'
      | 'getRootProof'
      | 'getRootProofByRoot'
      | 'getRootProofWithStateInfo'
      | 'getRootsByState'
      | 'getRootsTreeRoot'
      | 'getSmtDepth'
      | 'getUserCredentialIds'
      | 'initialize'
      | 'supportsInterface'
  ): FunctionFragment;

  encodeFunctionData(functionFragment: 'CREDENTIAL_ADAPTER_VERSION', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getClaimProof', values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: 'getClaimProofByRoot',
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: 'getClaimProofWithStateInfo',
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: 'getClaimsTreeRoot', values?: undefined): string;
  encodeFunctionData(
    functionFragment: 'getCredential',
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: 'getCredentialAdapterVersion', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getId', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getIsOldStateGenesis', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getLatestPublishedClaimsRoot', values?: undefined): string;
  encodeFunctionData(
    functionFragment: 'getLatestPublishedRevocationsRoot',
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: 'getLatestPublishedRootsRoot', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getLatestPublishedState', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getRevocationProof', values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: 'getRevocationProofByRoot',
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: 'getRevocationProofWithStateInfo',
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: 'getRevocationStatus',
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: 'getRevocationStatusByIdAndState',
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: 'getRevocationsTreeRoot', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getRootProof', values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: 'getRootProofByRoot',
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: 'getRootProofWithStateInfo', values: [BigNumberish]): string;
  encodeFunctionData(functionFragment: 'getRootsByState', values: [BigNumberish]): string;
  encodeFunctionData(functionFragment: 'getRootsTreeRoot', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getSmtDepth', values?: undefined): string;
  encodeFunctionData(functionFragment: 'getUserCredentialIds', values: [BigNumberish]): string;
  encodeFunctionData(functionFragment: 'initialize', values: [AddressLike, BytesLike]): string;
  encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string;

  decodeFunctionResult(functionFragment: 'CREDENTIAL_ADAPTER_VERSION', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getClaimProof', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getClaimProofByRoot', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getClaimProofWithStateInfo', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getClaimsTreeRoot', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getCredential', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getCredentialAdapterVersion', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getId', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getIsOldStateGenesis', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getLatestPublishedClaimsRoot', data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: 'getLatestPublishedRevocationsRoot',
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: 'getLatestPublishedRootsRoot', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getLatestPublishedState', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRevocationProof', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRevocationProofByRoot', data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: 'getRevocationProofWithStateInfo',
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: 'getRevocationStatus', data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: 'getRevocationStatusByIdAndState',
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: 'getRevocationsTreeRoot', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRootProof', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRootProofByRoot', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRootProofWithStateInfo', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRootsByState', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getRootsTreeRoot', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getSmtDepth', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'getUserCredentialIds', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
  decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
}

export interface NonMerklizedIssuerBase extends BaseContract {
  connect(runner?: ContractRunner | null): NonMerklizedIssuerBase;
  waitForDeployment(): Promise<this>;

  interface: NonMerklizedIssuerBaseInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;

  CREDENTIAL_ADAPTER_VERSION: TypedContractMethod<[], [string], 'view'>;

  getClaimProof: TypedContractMethod<
    [claimIndexHash: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;

  getClaimProofByRoot: TypedContractMethod<
    [claimIndexHash: BigNumberish, root: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;

  getClaimProofWithStateInfo: TypedContractMethod<
    [claimIndexHash: BigNumberish],
    [[SmtLib.ProofStructOutput, IdentityLib.StateInfoStructOutput]],
    'view'
  >;

  getClaimsTreeRoot: TypedContractMethod<[], [bigint], 'view'>;

  getCredential: TypedContractMethod<
    [_userId: BigNumberish, _credentialId: BigNumberish],
    [
      [
        INonMerklizedIssuer.CredentialDataStructOutput,
        bigint[],
        INonMerklizedIssuer.SubjectFieldStructOutput[]
      ]
    ],
    'view'
  >;

  getCredentialAdapterVersion: TypedContractMethod<[], [string], 'view'>;

  getId: TypedContractMethod<[], [bigint], 'view'>;

  getIsOldStateGenesis: TypedContractMethod<[], [boolean], 'view'>;

  getLatestPublishedClaimsRoot: TypedContractMethod<[], [bigint], 'view'>;

  getLatestPublishedRevocationsRoot: TypedContractMethod<[], [bigint], 'view'>;

  getLatestPublishedRootsRoot: TypedContractMethod<[], [bigint], 'view'>;

  getLatestPublishedState: TypedContractMethod<[], [bigint], 'view'>;

  getRevocationProof: TypedContractMethod<
    [revocationNonce: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;

  getRevocationProofByRoot: TypedContractMethod<
    [revocationNonce: BigNumberish, root: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;

  getRevocationProofWithStateInfo: TypedContractMethod<
    [revocationNonce: BigNumberish],
    [[SmtLib.ProofStructOutput, IdentityLib.StateInfoStructOutput]],
    'view'
  >;

  getRevocationStatus: TypedContractMethod<
    [id: BigNumberish, nonce: BigNumberish],
    [IOnchainCredentialStatusResolver.CredentialStatusStructOutput],
    'view'
  >;

  getRevocationStatusByIdAndState: TypedContractMethod<
    [id: BigNumberish, state: BigNumberish, nonce: BigNumberish],
    [IOnchainCredentialStatusResolver.CredentialStatusStructOutput],
    'view'
  >;

  getRevocationsTreeRoot: TypedContractMethod<[], [bigint], 'view'>;

  getRootProof: TypedContractMethod<
    [rootsTreeRoot: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;

  getRootProofByRoot: TypedContractMethod<
    [claimsTreeRoot: BigNumberish, root: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;

  getRootProofWithStateInfo: TypedContractMethod<
    [rootsTreeRoot: BigNumberish],
    [[SmtLib.ProofStructOutput, IdentityLib.StateInfoStructOutput]],
    'view'
  >;

  getRootsByState: TypedContractMethod<
    [state: BigNumberish],
    [IdentityLib.RootsStructOutput],
    'view'
  >;

  getRootsTreeRoot: TypedContractMethod<[], [bigint], 'view'>;

  getSmtDepth: TypedContractMethod<[], [bigint], 'view'>;

  getUserCredentialIds: TypedContractMethod<[_userId: BigNumberish], [bigint[]], 'view'>;

  initialize: TypedContractMethod<
    [_stateContractAddr: AddressLike, idType: BytesLike],
    [void],
    'nonpayable'
  >;

  supportsInterface: TypedContractMethod<[interfaceId: BytesLike], [boolean], 'view'>;

  getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;

  getFunction(
    nameOrSignature: 'CREDENTIAL_ADAPTER_VERSION'
  ): TypedContractMethod<[], [string], 'view'>;
  getFunction(
    nameOrSignature: 'getClaimProof'
  ): TypedContractMethod<[claimIndexHash: BigNumberish], [SmtLib.ProofStructOutput], 'view'>;
  getFunction(
    nameOrSignature: 'getClaimProofByRoot'
  ): TypedContractMethod<
    [claimIndexHash: BigNumberish, root: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getClaimProofWithStateInfo'
  ): TypedContractMethod<
    [claimIndexHash: BigNumberish],
    [[SmtLib.ProofStructOutput, IdentityLib.StateInfoStructOutput]],
    'view'
  >;
  getFunction(nameOrSignature: 'getClaimsTreeRoot'): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getCredential'
  ): TypedContractMethod<
    [_userId: BigNumberish, _credentialId: BigNumberish],
    [
      [
        INonMerklizedIssuer.CredentialDataStructOutput,
        bigint[],
        INonMerklizedIssuer.SubjectFieldStructOutput[]
      ]
    ],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getCredentialAdapterVersion'
  ): TypedContractMethod<[], [string], 'view'>;
  getFunction(nameOrSignature: 'getId'): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(nameOrSignature: 'getIsOldStateGenesis'): TypedContractMethod<[], [boolean], 'view'>;
  getFunction(
    nameOrSignature: 'getLatestPublishedClaimsRoot'
  ): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getLatestPublishedRevocationsRoot'
  ): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getLatestPublishedRootsRoot'
  ): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getLatestPublishedState'
  ): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getRevocationProof'
  ): TypedContractMethod<[revocationNonce: BigNumberish], [SmtLib.ProofStructOutput], 'view'>;
  getFunction(
    nameOrSignature: 'getRevocationProofByRoot'
  ): TypedContractMethod<
    [revocationNonce: BigNumberish, root: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getRevocationProofWithStateInfo'
  ): TypedContractMethod<
    [revocationNonce: BigNumberish],
    [[SmtLib.ProofStructOutput, IdentityLib.StateInfoStructOutput]],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getRevocationStatus'
  ): TypedContractMethod<
    [id: BigNumberish, nonce: BigNumberish],
    [IOnchainCredentialStatusResolver.CredentialStatusStructOutput],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getRevocationStatusByIdAndState'
  ): TypedContractMethod<
    [id: BigNumberish, state: BigNumberish, nonce: BigNumberish],
    [IOnchainCredentialStatusResolver.CredentialStatusStructOutput],
    'view'
  >;
  getFunction(nameOrSignature: 'getRevocationsTreeRoot'): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getRootProof'
  ): TypedContractMethod<[rootsTreeRoot: BigNumberish], [SmtLib.ProofStructOutput], 'view'>;
  getFunction(
    nameOrSignature: 'getRootProofByRoot'
  ): TypedContractMethod<
    [claimsTreeRoot: BigNumberish, root: BigNumberish],
    [SmtLib.ProofStructOutput],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getRootProofWithStateInfo'
  ): TypedContractMethod<
    [rootsTreeRoot: BigNumberish],
    [[SmtLib.ProofStructOutput, IdentityLib.StateInfoStructOutput]],
    'view'
  >;
  getFunction(
    nameOrSignature: 'getRootsByState'
  ): TypedContractMethod<[state: BigNumberish], [IdentityLib.RootsStructOutput], 'view'>;
  getFunction(nameOrSignature: 'getRootsTreeRoot'): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(nameOrSignature: 'getSmtDepth'): TypedContractMethod<[], [bigint], 'view'>;
  getFunction(
    nameOrSignature: 'getUserCredentialIds'
  ): TypedContractMethod<[_userId: BigNumberish], [bigint[]], 'view'>;
  getFunction(
    nameOrSignature: 'initialize'
  ): TypedContractMethod<
    [_stateContractAddr: AddressLike, idType: BytesLike],
    [void],
    'nonpayable'
  >;
  getFunction(
    nameOrSignature: 'supportsInterface'
  ): TypedContractMethod<[interfaceId: BytesLike], [boolean], 'view'>;

  filters: {};
}
