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

export declare namespace StdInvariant {
  export type FuzzSelectorStruct = {
    addr: AddressLike;
    selectors: BytesLike[];
  };

  export type FuzzSelectorStructOutput = [addr: string, selectors: string[]] & {
    addr: string;
    selectors: string[];
  };

  export type FuzzArtifactSelectorStruct = {
    artifact: string;
    selectors: BytesLike[];
  };

  export type FuzzArtifactSelectorStructOutput = [
    artifact: string,
    selectors: string[]
  ] & { artifact: string; selectors: string[] };

  export type FuzzInterfaceStruct = { addr: AddressLike; artifacts: string[] };

  export type FuzzInterfaceStructOutput = [
    addr: string,
    artifacts: string[]
  ] & { addr: string; artifacts: string[] };
}

export interface RandomnessSenderTestInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "ADMIN_ROLE"
      | "IS_TEST"
      | "addrProvider"
      | "bn254SignatureScheme"
      | "bn254SignatureSchemeID"
      | "conditions"
      | "excludeArtifacts"
      | "excludeContracts"
      | "excludeSelectors"
      | "excludeSenders"
      | "failed"
      | "owner"
      | "randomnessSender"
      | "setUp"
      | "signatureSender"
      | "targetArtifactSelectors"
      | "targetArtifacts"
      | "targetContracts"
      | "targetInterfaces"
      | "targetSelectors"
      | "targetSenders"
      | "test_DeploymentConfigurations"
      | "test_UpdateSignatureScheme"
      | "test_randomnessSignatureVerification"
      | "test_requestRandomness"
      | "test_requestRandomnessWithCallback"
      | "test_selectArrayIndices_One_returnsAll"
      | "test_selectArrayIndices_ReturnsCorrectCount"
      | "test_selectArrayIndices_Zero_returnsEmpty"
      | "validPK"
      | "validSignature"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "RandomnessRequested"
      | "SignatureRequestFulfilled"
      | "SignatureRequested"
      | "log"
      | "log_address"
      | "log_array(uint256[])"
      | "log_array(int256[])"
      | "log_array(address[])"
      | "log_bytes"
      | "log_bytes32"
      | "log_int"
      | "log_named_address"
      | "log_named_array(string,uint256[])"
      | "log_named_array(string,int256[])"
      | "log_named_array(string,address[])"
      | "log_named_bytes"
      | "log_named_bytes32"
      | "log_named_decimal_int"
      | "log_named_decimal_uint"
      | "log_named_int"
      | "log_named_string"
      | "log_named_uint"
      | "log_string"
      | "log_uint"
      | "logs"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "ADMIN_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "addrProvider",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "bn254SignatureScheme",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "bn254SignatureSchemeID",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "conditions",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "excludeArtifacts",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "excludeContracts",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "excludeSelectors",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "excludeSenders",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "failed", values?: undefined): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "randomnessSender",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "setUp", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "signatureSender",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "targetArtifactSelectors",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "targetArtifacts",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "targetContracts",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "targetInterfaces",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "targetSelectors",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "targetSenders",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_DeploymentConfigurations",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_UpdateSignatureScheme",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_randomnessSignatureVerification",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_requestRandomness",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_requestRandomnessWithCallback",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_selectArrayIndices_One_returnsAll",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_selectArrayIndices_ReturnsCorrectCount",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "test_selectArrayIndices_Zero_returnsEmpty",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "validPK", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "validSignature",
    values?: undefined
  ): string;

  decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "addrProvider",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "bn254SignatureScheme",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "bn254SignatureSchemeID",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "conditions", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "excludeArtifacts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "excludeContracts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "excludeSelectors",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "excludeSenders",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "randomnessSender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "signatureSender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "targetArtifactSelectors",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "targetArtifacts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "targetContracts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "targetInterfaces",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "targetSelectors",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "targetSenders",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_DeploymentConfigurations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_UpdateSignatureScheme",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_randomnessSignatureVerification",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_requestRandomness",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_requestRandomnessWithCallback",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_selectArrayIndices_One_returnsAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_selectArrayIndices_ReturnsCorrectCount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "test_selectArrayIndices_Zero_returnsEmpty",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "validPK", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "validSignature",
    data: BytesLike
  ): Result;
}

export namespace RandomnessRequestedEvent {
  export type InputTuple = [
    requestID: BigNumberish,
    nonce: BigNumberish,
    requester: AddressLike,
    requestedAt: BigNumberish
  ];
  export type OutputTuple = [
    requestID: bigint,
    nonce: bigint,
    requester: string,
    requestedAt: bigint
  ];
  export interface OutputObject {
    requestID: bigint;
    nonce: bigint;
    requester: string;
    requestedAt: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SignatureRequestFulfilledEvent {
  export type InputTuple = [requestID: BigNumberish, signature: BytesLike];
  export type OutputTuple = [requestID: bigint, signature: string];
  export interface OutputObject {
    requestID: bigint;
    signature: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SignatureRequestedEvent {
  export type InputTuple = [
    requestID: BigNumberish,
    callback: AddressLike,
    schemeID: string,
    message: BytesLike,
    messageHashToSign: BytesLike,
    condition: BytesLike,
    requestedAt: BigNumberish
  ];
  export type OutputTuple = [
    requestID: bigint,
    callback: string,
    schemeID: string,
    message: string,
    messageHashToSign: string,
    condition: string,
    requestedAt: bigint
  ];
  export interface OutputObject {
    requestID: bigint;
    callback: string;
    schemeID: string;
    message: string;
    messageHashToSign: string;
    condition: string;
    requestedAt: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace logEvent {
  export type InputTuple = [arg0: string];
  export type OutputTuple = [arg0: string];
  export interface OutputObject {
    arg0: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_addressEvent {
  export type InputTuple = [arg0: AddressLike];
  export type OutputTuple = [arg0: string];
  export interface OutputObject {
    arg0: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_array_uint256_array_Event {
  export type InputTuple = [val: BigNumberish[]];
  export type OutputTuple = [val: bigint[]];
  export interface OutputObject {
    val: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_array_int256_array_Event {
  export type InputTuple = [val: BigNumberish[]];
  export type OutputTuple = [val: bigint[]];
  export interface OutputObject {
    val: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_array_address_array_Event {
  export type InputTuple = [val: AddressLike[]];
  export type OutputTuple = [val: string[]];
  export interface OutputObject {
    val: string[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_bytesEvent {
  export type InputTuple = [arg0: BytesLike];
  export type OutputTuple = [arg0: string];
  export interface OutputObject {
    arg0: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_bytes32Event {
  export type InputTuple = [arg0: BytesLike];
  export type OutputTuple = [arg0: string];
  export interface OutputObject {
    arg0: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_intEvent {
  export type InputTuple = [arg0: BigNumberish];
  export type OutputTuple = [arg0: bigint];
  export interface OutputObject {
    arg0: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_addressEvent {
  export type InputTuple = [key: string, val: AddressLike];
  export type OutputTuple = [key: string, val: string];
  export interface OutputObject {
    key: string;
    val: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_array_string_uint256_array_Event {
  export type InputTuple = [key: string, val: BigNumberish[]];
  export type OutputTuple = [key: string, val: bigint[]];
  export interface OutputObject {
    key: string;
    val: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_array_string_int256_array_Event {
  export type InputTuple = [key: string, val: BigNumberish[]];
  export type OutputTuple = [key: string, val: bigint[]];
  export interface OutputObject {
    key: string;
    val: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_array_string_address_array_Event {
  export type InputTuple = [key: string, val: AddressLike[]];
  export type OutputTuple = [key: string, val: string[]];
  export interface OutputObject {
    key: string;
    val: string[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_bytesEvent {
  export type InputTuple = [key: string, val: BytesLike];
  export type OutputTuple = [key: string, val: string];
  export interface OutputObject {
    key: string;
    val: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_bytes32Event {
  export type InputTuple = [key: string, val: BytesLike];
  export type OutputTuple = [key: string, val: string];
  export interface OutputObject {
    key: string;
    val: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_decimal_intEvent {
  export type InputTuple = [
    key: string,
    val: BigNumberish,
    decimals: BigNumberish
  ];
  export type OutputTuple = [key: string, val: bigint, decimals: bigint];
  export interface OutputObject {
    key: string;
    val: bigint;
    decimals: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_decimal_uintEvent {
  export type InputTuple = [
    key: string,
    val: BigNumberish,
    decimals: BigNumberish
  ];
  export type OutputTuple = [key: string, val: bigint, decimals: bigint];
  export interface OutputObject {
    key: string;
    val: bigint;
    decimals: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_intEvent {
  export type InputTuple = [key: string, val: BigNumberish];
  export type OutputTuple = [key: string, val: bigint];
  export interface OutputObject {
    key: string;
    val: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_stringEvent {
  export type InputTuple = [key: string, val: string];
  export type OutputTuple = [key: string, val: string];
  export interface OutputObject {
    key: string;
    val: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_named_uintEvent {
  export type InputTuple = [key: string, val: BigNumberish];
  export type OutputTuple = [key: string, val: bigint];
  export interface OutputObject {
    key: string;
    val: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_stringEvent {
  export type InputTuple = [arg0: string];
  export type OutputTuple = [arg0: string];
  export interface OutputObject {
    arg0: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace log_uintEvent {
  export type InputTuple = [arg0: BigNumberish];
  export type OutputTuple = [arg0: bigint];
  export interface OutputObject {
    arg0: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace logsEvent {
  export type InputTuple = [arg0: BytesLike];
  export type OutputTuple = [arg0: string];
  export interface OutputObject {
    arg0: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

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

  interface: RandomnessSenderTestInterface;

  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>;

  ADMIN_ROLE: TypedContractMethod<[], [string], "view">;

  IS_TEST: TypedContractMethod<[], [boolean], "view">;

  addrProvider: TypedContractMethod<[], [string], "view">;

  bn254SignatureScheme: TypedContractMethod<[], [string], "view">;

  bn254SignatureSchemeID: TypedContractMethod<[], [string], "view">;

  conditions: TypedContractMethod<[], [string], "view">;

  excludeArtifacts: TypedContractMethod<[], [string[]], "view">;

  excludeContracts: TypedContractMethod<[], [string[]], "view">;

  excludeSelectors: TypedContractMethod<
    [],
    [StdInvariant.FuzzSelectorStructOutput[]],
    "view"
  >;

  excludeSenders: TypedContractMethod<[], [string[]], "view">;

  failed: TypedContractMethod<[], [boolean], "view">;

  owner: TypedContractMethod<[], [string], "view">;

  randomnessSender: TypedContractMethod<[], [string], "view">;

  setUp: TypedContractMethod<[], [void], "nonpayable">;

  signatureSender: TypedContractMethod<[], [string], "view">;

  targetArtifactSelectors: TypedContractMethod<
    [],
    [StdInvariant.FuzzArtifactSelectorStructOutput[]],
    "view"
  >;

  targetArtifacts: TypedContractMethod<[], [string[]], "view">;

  targetContracts: TypedContractMethod<[], [string[]], "view">;

  targetInterfaces: TypedContractMethod<
    [],
    [StdInvariant.FuzzInterfaceStructOutput[]],
    "view"
  >;

  targetSelectors: TypedContractMethod<
    [],
    [StdInvariant.FuzzSelectorStructOutput[]],
    "view"
  >;

  targetSenders: TypedContractMethod<[], [string[]], "view">;

  test_DeploymentConfigurations: TypedContractMethod<[], [void], "view">;

  test_UpdateSignatureScheme: TypedContractMethod<[], [void], "nonpayable">;

  test_randomnessSignatureVerification: TypedContractMethod<[], [void], "view">;

  test_requestRandomness: TypedContractMethod<[], [void], "nonpayable">;

  test_requestRandomnessWithCallback: TypedContractMethod<
    [],
    [void],
    "nonpayable"
  >;

  test_selectArrayIndices_One_returnsAll: TypedContractMethod<
    [],
    [void],
    "view"
  >;

  test_selectArrayIndices_ReturnsCorrectCount: TypedContractMethod<
    [],
    [void],
    "view"
  >;

  test_selectArrayIndices_Zero_returnsEmpty: TypedContractMethod<
    [],
    [void],
    "view"
  >;

  validPK: TypedContractMethod<[], [string], "view">;

  validSignature: TypedContractMethod<[], [string], "view">;

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

  getFunction(
    nameOrSignature: "ADMIN_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "IS_TEST"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "addrProvider"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "bn254SignatureScheme"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "bn254SignatureSchemeID"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "conditions"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "excludeArtifacts"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "excludeContracts"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "excludeSelectors"
  ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">;
  getFunction(
    nameOrSignature: "excludeSenders"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "failed"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "owner"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "randomnessSender"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "setUp"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "signatureSender"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "targetArtifactSelectors"
  ): TypedContractMethod<
    [],
    [StdInvariant.FuzzArtifactSelectorStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "targetArtifacts"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "targetContracts"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "targetInterfaces"
  ): TypedContractMethod<
    [],
    [StdInvariant.FuzzInterfaceStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "targetSelectors"
  ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">;
  getFunction(
    nameOrSignature: "targetSenders"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "test_DeploymentConfigurations"
  ): TypedContractMethod<[], [void], "view">;
  getFunction(
    nameOrSignature: "test_UpdateSignatureScheme"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "test_randomnessSignatureVerification"
  ): TypedContractMethod<[], [void], "view">;
  getFunction(
    nameOrSignature: "test_requestRandomness"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "test_requestRandomnessWithCallback"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "test_selectArrayIndices_One_returnsAll"
  ): TypedContractMethod<[], [void], "view">;
  getFunction(
    nameOrSignature: "test_selectArrayIndices_ReturnsCorrectCount"
  ): TypedContractMethod<[], [void], "view">;
  getFunction(
    nameOrSignature: "test_selectArrayIndices_Zero_returnsEmpty"
  ): TypedContractMethod<[], [void], "view">;
  getFunction(
    nameOrSignature: "validPK"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "validSignature"
  ): TypedContractMethod<[], [string], "view">;

  getEvent(
    key: "RandomnessRequested"
  ): TypedContractEvent<
    RandomnessRequestedEvent.InputTuple,
    RandomnessRequestedEvent.OutputTuple,
    RandomnessRequestedEvent.OutputObject
  >;
  getEvent(
    key: "SignatureRequestFulfilled"
  ): TypedContractEvent<
    SignatureRequestFulfilledEvent.InputTuple,
    SignatureRequestFulfilledEvent.OutputTuple,
    SignatureRequestFulfilledEvent.OutputObject
  >;
  getEvent(
    key: "SignatureRequested"
  ): TypedContractEvent<
    SignatureRequestedEvent.InputTuple,
    SignatureRequestedEvent.OutputTuple,
    SignatureRequestedEvent.OutputObject
  >;
  getEvent(
    key: "log"
  ): TypedContractEvent<
    logEvent.InputTuple,
    logEvent.OutputTuple,
    logEvent.OutputObject
  >;
  getEvent(
    key: "log_address"
  ): TypedContractEvent<
    log_addressEvent.InputTuple,
    log_addressEvent.OutputTuple,
    log_addressEvent.OutputObject
  >;
  getEvent(
    key: "log_array(uint256[])"
  ): TypedContractEvent<
    log_array_uint256_array_Event.InputTuple,
    log_array_uint256_array_Event.OutputTuple,
    log_array_uint256_array_Event.OutputObject
  >;
  getEvent(
    key: "log_array(int256[])"
  ): TypedContractEvent<
    log_array_int256_array_Event.InputTuple,
    log_array_int256_array_Event.OutputTuple,
    log_array_int256_array_Event.OutputObject
  >;
  getEvent(
    key: "log_array(address[])"
  ): TypedContractEvent<
    log_array_address_array_Event.InputTuple,
    log_array_address_array_Event.OutputTuple,
    log_array_address_array_Event.OutputObject
  >;
  getEvent(
    key: "log_bytes"
  ): TypedContractEvent<
    log_bytesEvent.InputTuple,
    log_bytesEvent.OutputTuple,
    log_bytesEvent.OutputObject
  >;
  getEvent(
    key: "log_bytes32"
  ): TypedContractEvent<
    log_bytes32Event.InputTuple,
    log_bytes32Event.OutputTuple,
    log_bytes32Event.OutputObject
  >;
  getEvent(
    key: "log_int"
  ): TypedContractEvent<
    log_intEvent.InputTuple,
    log_intEvent.OutputTuple,
    log_intEvent.OutputObject
  >;
  getEvent(
    key: "log_named_address"
  ): TypedContractEvent<
    log_named_addressEvent.InputTuple,
    log_named_addressEvent.OutputTuple,
    log_named_addressEvent.OutputObject
  >;
  getEvent(
    key: "log_named_array(string,uint256[])"
  ): TypedContractEvent<
    log_named_array_string_uint256_array_Event.InputTuple,
    log_named_array_string_uint256_array_Event.OutputTuple,
    log_named_array_string_uint256_array_Event.OutputObject
  >;
  getEvent(
    key: "log_named_array(string,int256[])"
  ): TypedContractEvent<
    log_named_array_string_int256_array_Event.InputTuple,
    log_named_array_string_int256_array_Event.OutputTuple,
    log_named_array_string_int256_array_Event.OutputObject
  >;
  getEvent(
    key: "log_named_array(string,address[])"
  ): TypedContractEvent<
    log_named_array_string_address_array_Event.InputTuple,
    log_named_array_string_address_array_Event.OutputTuple,
    log_named_array_string_address_array_Event.OutputObject
  >;
  getEvent(
    key: "log_named_bytes"
  ): TypedContractEvent<
    log_named_bytesEvent.InputTuple,
    log_named_bytesEvent.OutputTuple,
    log_named_bytesEvent.OutputObject
  >;
  getEvent(
    key: "log_named_bytes32"
  ): TypedContractEvent<
    log_named_bytes32Event.InputTuple,
    log_named_bytes32Event.OutputTuple,
    log_named_bytes32Event.OutputObject
  >;
  getEvent(
    key: "log_named_decimal_int"
  ): TypedContractEvent<
    log_named_decimal_intEvent.InputTuple,
    log_named_decimal_intEvent.OutputTuple,
    log_named_decimal_intEvent.OutputObject
  >;
  getEvent(
    key: "log_named_decimal_uint"
  ): TypedContractEvent<
    log_named_decimal_uintEvent.InputTuple,
    log_named_decimal_uintEvent.OutputTuple,
    log_named_decimal_uintEvent.OutputObject
  >;
  getEvent(
    key: "log_named_int"
  ): TypedContractEvent<
    log_named_intEvent.InputTuple,
    log_named_intEvent.OutputTuple,
    log_named_intEvent.OutputObject
  >;
  getEvent(
    key: "log_named_string"
  ): TypedContractEvent<
    log_named_stringEvent.InputTuple,
    log_named_stringEvent.OutputTuple,
    log_named_stringEvent.OutputObject
  >;
  getEvent(
    key: "log_named_uint"
  ): TypedContractEvent<
    log_named_uintEvent.InputTuple,
    log_named_uintEvent.OutputTuple,
    log_named_uintEvent.OutputObject
  >;
  getEvent(
    key: "log_string"
  ): TypedContractEvent<
    log_stringEvent.InputTuple,
    log_stringEvent.OutputTuple,
    log_stringEvent.OutputObject
  >;
  getEvent(
    key: "log_uint"
  ): TypedContractEvent<
    log_uintEvent.InputTuple,
    log_uintEvent.OutputTuple,
    log_uintEvent.OutputObject
  >;
  getEvent(
    key: "logs"
  ): TypedContractEvent<
    logsEvent.InputTuple,
    logsEvent.OutputTuple,
    logsEvent.OutputObject
  >;

  filters: {
    "RandomnessRequested(uint256,uint256,address,uint256)": TypedContractEvent<
      RandomnessRequestedEvent.InputTuple,
      RandomnessRequestedEvent.OutputTuple,
      RandomnessRequestedEvent.OutputObject
    >;
    RandomnessRequested: TypedContractEvent<
      RandomnessRequestedEvent.InputTuple,
      RandomnessRequestedEvent.OutputTuple,
      RandomnessRequestedEvent.OutputObject
    >;

    "SignatureRequestFulfilled(uint256,bytes)": TypedContractEvent<
      SignatureRequestFulfilledEvent.InputTuple,
      SignatureRequestFulfilledEvent.OutputTuple,
      SignatureRequestFulfilledEvent.OutputObject
    >;
    SignatureRequestFulfilled: TypedContractEvent<
      SignatureRequestFulfilledEvent.InputTuple,
      SignatureRequestFulfilledEvent.OutputTuple,
      SignatureRequestFulfilledEvent.OutputObject
    >;

    "SignatureRequested(uint256,address,string,bytes,bytes,bytes,uint256)": TypedContractEvent<
      SignatureRequestedEvent.InputTuple,
      SignatureRequestedEvent.OutputTuple,
      SignatureRequestedEvent.OutputObject
    >;
    SignatureRequested: TypedContractEvent<
      SignatureRequestedEvent.InputTuple,
      SignatureRequestedEvent.OutputTuple,
      SignatureRequestedEvent.OutputObject
    >;

    "log(string)": TypedContractEvent<
      logEvent.InputTuple,
      logEvent.OutputTuple,
      logEvent.OutputObject
    >;
    log: TypedContractEvent<
      logEvent.InputTuple,
      logEvent.OutputTuple,
      logEvent.OutputObject
    >;

    "log_address(address)": TypedContractEvent<
      log_addressEvent.InputTuple,
      log_addressEvent.OutputTuple,
      log_addressEvent.OutputObject
    >;
    log_address: TypedContractEvent<
      log_addressEvent.InputTuple,
      log_addressEvent.OutputTuple,
      log_addressEvent.OutputObject
    >;

    "log_array(uint256[])": TypedContractEvent<
      log_array_uint256_array_Event.InputTuple,
      log_array_uint256_array_Event.OutputTuple,
      log_array_uint256_array_Event.OutputObject
    >;
    "log_array(int256[])": TypedContractEvent<
      log_array_int256_array_Event.InputTuple,
      log_array_int256_array_Event.OutputTuple,
      log_array_int256_array_Event.OutputObject
    >;
    "log_array(address[])": TypedContractEvent<
      log_array_address_array_Event.InputTuple,
      log_array_address_array_Event.OutputTuple,
      log_array_address_array_Event.OutputObject
    >;

    "log_bytes(bytes)": TypedContractEvent<
      log_bytesEvent.InputTuple,
      log_bytesEvent.OutputTuple,
      log_bytesEvent.OutputObject
    >;
    log_bytes: TypedContractEvent<
      log_bytesEvent.InputTuple,
      log_bytesEvent.OutputTuple,
      log_bytesEvent.OutputObject
    >;

    "log_bytes32(bytes32)": TypedContractEvent<
      log_bytes32Event.InputTuple,
      log_bytes32Event.OutputTuple,
      log_bytes32Event.OutputObject
    >;
    log_bytes32: TypedContractEvent<
      log_bytes32Event.InputTuple,
      log_bytes32Event.OutputTuple,
      log_bytes32Event.OutputObject
    >;

    "log_int(int256)": TypedContractEvent<
      log_intEvent.InputTuple,
      log_intEvent.OutputTuple,
      log_intEvent.OutputObject
    >;
    log_int: TypedContractEvent<
      log_intEvent.InputTuple,
      log_intEvent.OutputTuple,
      log_intEvent.OutputObject
    >;

    "log_named_address(string,address)": TypedContractEvent<
      log_named_addressEvent.InputTuple,
      log_named_addressEvent.OutputTuple,
      log_named_addressEvent.OutputObject
    >;
    log_named_address: TypedContractEvent<
      log_named_addressEvent.InputTuple,
      log_named_addressEvent.OutputTuple,
      log_named_addressEvent.OutputObject
    >;

    "log_named_array(string,uint256[])": TypedContractEvent<
      log_named_array_string_uint256_array_Event.InputTuple,
      log_named_array_string_uint256_array_Event.OutputTuple,
      log_named_array_string_uint256_array_Event.OutputObject
    >;
    "log_named_array(string,int256[])": TypedContractEvent<
      log_named_array_string_int256_array_Event.InputTuple,
      log_named_array_string_int256_array_Event.OutputTuple,
      log_named_array_string_int256_array_Event.OutputObject
    >;
    "log_named_array(string,address[])": TypedContractEvent<
      log_named_array_string_address_array_Event.InputTuple,
      log_named_array_string_address_array_Event.OutputTuple,
      log_named_array_string_address_array_Event.OutputObject
    >;

    "log_named_bytes(string,bytes)": TypedContractEvent<
      log_named_bytesEvent.InputTuple,
      log_named_bytesEvent.OutputTuple,
      log_named_bytesEvent.OutputObject
    >;
    log_named_bytes: TypedContractEvent<
      log_named_bytesEvent.InputTuple,
      log_named_bytesEvent.OutputTuple,
      log_named_bytesEvent.OutputObject
    >;

    "log_named_bytes32(string,bytes32)": TypedContractEvent<
      log_named_bytes32Event.InputTuple,
      log_named_bytes32Event.OutputTuple,
      log_named_bytes32Event.OutputObject
    >;
    log_named_bytes32: TypedContractEvent<
      log_named_bytes32Event.InputTuple,
      log_named_bytes32Event.OutputTuple,
      log_named_bytes32Event.OutputObject
    >;

    "log_named_decimal_int(string,int256,uint256)": TypedContractEvent<
      log_named_decimal_intEvent.InputTuple,
      log_named_decimal_intEvent.OutputTuple,
      log_named_decimal_intEvent.OutputObject
    >;
    log_named_decimal_int: TypedContractEvent<
      log_named_decimal_intEvent.InputTuple,
      log_named_decimal_intEvent.OutputTuple,
      log_named_decimal_intEvent.OutputObject
    >;

    "log_named_decimal_uint(string,uint256,uint256)": TypedContractEvent<
      log_named_decimal_uintEvent.InputTuple,
      log_named_decimal_uintEvent.OutputTuple,
      log_named_decimal_uintEvent.OutputObject
    >;
    log_named_decimal_uint: TypedContractEvent<
      log_named_decimal_uintEvent.InputTuple,
      log_named_decimal_uintEvent.OutputTuple,
      log_named_decimal_uintEvent.OutputObject
    >;

    "log_named_int(string,int256)": TypedContractEvent<
      log_named_intEvent.InputTuple,
      log_named_intEvent.OutputTuple,
      log_named_intEvent.OutputObject
    >;
    log_named_int: TypedContractEvent<
      log_named_intEvent.InputTuple,
      log_named_intEvent.OutputTuple,
      log_named_intEvent.OutputObject
    >;

    "log_named_string(string,string)": TypedContractEvent<
      log_named_stringEvent.InputTuple,
      log_named_stringEvent.OutputTuple,
      log_named_stringEvent.OutputObject
    >;
    log_named_string: TypedContractEvent<
      log_named_stringEvent.InputTuple,
      log_named_stringEvent.OutputTuple,
      log_named_stringEvent.OutputObject
    >;

    "log_named_uint(string,uint256)": TypedContractEvent<
      log_named_uintEvent.InputTuple,
      log_named_uintEvent.OutputTuple,
      log_named_uintEvent.OutputObject
    >;
    log_named_uint: TypedContractEvent<
      log_named_uintEvent.InputTuple,
      log_named_uintEvent.OutputTuple,
      log_named_uintEvent.OutputObject
    >;

    "log_string(string)": TypedContractEvent<
      log_stringEvent.InputTuple,
      log_stringEvent.OutputTuple,
      log_stringEvent.OutputObject
    >;
    log_string: TypedContractEvent<
      log_stringEvent.InputTuple,
      log_stringEvent.OutputTuple,
      log_stringEvent.OutputObject
    >;

    "log_uint(uint256)": TypedContractEvent<
      log_uintEvent.InputTuple,
      log_uintEvent.OutputTuple,
      log_uintEvent.OutputObject
    >;
    log_uint: TypedContractEvent<
      log_uintEvent.InputTuple,
      log_uintEvent.OutputTuple,
      log_uintEvent.OutputObject
    >;

    "logs(bytes)": TypedContractEvent<
      logsEvent.InputTuple,
      logsEvent.OutputTuple,
      logsEvent.OutputObject
    >;
    logs: TypedContractEvent<
      logsEvent.InputTuple,
      logsEvent.OutputTuple,
      logsEvent.OutputObject
    >;
  };
}
