/* Autogenerated file. Do not edit manually. */

/* tslint:disable */

/* eslint-disable */
import type {
  IRiskOracle,
  IRiskOracleInterface,
} from "../../../../contracts/RiskSteward/Interfaces/IRiskOracle";
import type { Provider } from "@ethersproject/providers";
import { Contract, Signer, utils } from "ethers";

const _abi = [
  {
    inputs: [],
    name: "ArrayLengthMismatch",
    type: "error",
  },
  {
    inputs: [],
    name: "InvalidUpdateId",
    type: "error",
  },
  {
    inputs: [],
    name: "InvalidUpdateTypeString",
    type: "error",
  },
  {
    inputs: [],
    name: "NoUpdateFound",
    type: "error",
  },
  {
    inputs: [],
    name: "RenounceOwnershipNotAllowed",
    type: "error",
  },
  {
    inputs: [],
    name: "SenderAlreadyAuthorized",
    type: "error",
  },
  {
    inputs: [],
    name: "SenderNotAuthorized",
    type: "error",
  },
  {
    inputs: [],
    name: "UpdateTypeAlreadyExists",
    type: "error",
  },
  {
    inputs: [],
    name: "UpdateTypeNotActive",
    type: "error",
  },
  {
    inputs: [],
    name: "UpdateTypeNotFound",
    type: "error",
  },
  {
    inputs: [],
    name: "UpdateTypeStatusUnchanged",
    type: "error",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "address",
        name: "sender",
        type: "address",
      },
    ],
    name: "AuthorizedSenderAdded",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "address",
        name: "sender",
        type: "address",
      },
    ],
    name: "AuthorizedSenderRemoved",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "string",
        name: "referenceId",
        type: "string",
      },
      {
        indexed: true,
        internalType: "uint256",
        name: "updateId",
        type: "uint256",
      },
      {
        indexed: true,
        internalType: "address",
        name: "market",
        type: "address",
      },
      {
        indexed: true,
        internalType: "string",
        name: "updateType",
        type: "string",
      },
      {
        indexed: false,
        internalType: "bytes",
        name: "newValue",
        type: "bytes",
      },
      {
        indexed: false,
        internalType: "bytes",
        name: "previousValue",
        type: "bytes",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "timestamp",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "address",
        name: "publisher",
        type: "address",
      },
      {
        indexed: false,
        internalType: "bytes",
        name: "additionalData",
        type: "bytes",
      },
    ],
    name: "UpdatePublished",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "string",
        name: "updateType",
        type: "string",
      },
      {
        indexed: false,
        internalType: "bool",
        name: "previousActive",
        type: "bool",
      },
      {
        indexed: false,
        internalType: "bool",
        name: "active",
        type: "bool",
      },
    ],
    name: "UpdateTypeActiveStatusChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "string",
        name: "updateType",
        type: "string",
      },
    ],
    name: "UpdateTypeAdded",
    type: "event",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "updateTypeKey",
        type: "bytes32",
      },
    ],
    name: "activeUpdateTypes",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "sender",
        type: "address",
      },
    ],
    name: "addAuthorizedSender",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string",
        name: "newUpdateType",
        type: "string",
      },
    ],
    name: "addUpdateType",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "index",
        type: "uint256",
      },
    ],
    name: "allUpdateTypes",
    outputs: [
      {
        internalType: "string",
        name: "",
        type: "string",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "allUpdateTypesLength",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "sender",
        type: "address",
      },
    ],
    name: "authorizedSenders",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string",
        name: "updateType",
        type: "string",
      },
    ],
    name: "getActiveUpdateTypes",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getAllUpdateTypes",
    outputs: [
      {
        internalType: "string[]",
        name: "",
        type: "string[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string",
        name: "updateType",
        type: "string",
      },
      {
        internalType: "address",
        name: "market",
        type: "address",
      },
    ],
    name: "getLatestUpdateByTypeAndMarket",
    outputs: [
      {
        components: [
          {
            internalType: "string",
            name: "referenceId",
            type: "string",
          },
          {
            internalType: "uint256",
            name: "updateId",
            type: "uint256",
          },
          {
            internalType: "address",
            name: "market",
            type: "address",
          },
          {
            internalType: "string",
            name: "updateType",
            type: "string",
          },
          {
            internalType: "bytes32",
            name: "updateTypeKey",
            type: "bytes32",
          },
          {
            internalType: "bytes",
            name: "newValue",
            type: "bytes",
          },
          {
            internalType: "bytes",
            name: "previousValue",
            type: "bytes",
          },
          {
            internalType: "uint256",
            name: "timestamp",
            type: "uint256",
          },
          {
            internalType: "address",
            name: "publisher",
            type: "address",
          },
          {
            internalType: "uint96",
            name: "poolId",
            type: "uint96",
          },
          {
            internalType: "uint32",
            name: "destLzEid",
            type: "uint32",
          },
          {
            internalType: "bytes",
            name: "additionalData",
            type: "bytes",
          },
        ],
        internalType: "struct RiskParameterUpdate",
        name: "",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string",
        name: "updateType",
        type: "string",
      },
      {
        internalType: "address",
        name: "market",
        type: "address",
      },
    ],
    name: "getLatestUpdateIdByTypeAndMarket",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "updateId",
        type: "uint256",
      },
    ],
    name: "getUpdateById",
    outputs: [
      {
        components: [
          {
            internalType: "string",
            name: "referenceId",
            type: "string",
          },
          {
            internalType: "uint256",
            name: "updateId",
            type: "uint256",
          },
          {
            internalType: "address",
            name: "market",
            type: "address",
          },
          {
            internalType: "string",
            name: "updateType",
            type: "string",
          },
          {
            internalType: "bytes32",
            name: "updateTypeKey",
            type: "bytes32",
          },
          {
            internalType: "bytes",
            name: "newValue",
            type: "bytes",
          },
          {
            internalType: "bytes",
            name: "previousValue",
            type: "bytes",
          },
          {
            internalType: "uint256",
            name: "timestamp",
            type: "uint256",
          },
          {
            internalType: "address",
            name: "publisher",
            type: "address",
          },
          {
            internalType: "uint96",
            name: "poolId",
            type: "uint96",
          },
          {
            internalType: "uint32",
            name: "destLzEid",
            type: "uint32",
          },
          {
            internalType: "bytes",
            name: "additionalData",
            type: "bytes",
          },
        ],
        internalType: "struct RiskParameterUpdate",
        name: "",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "updateTypeKey",
        type: "bytes32",
      },
      {
        internalType: "address",
        name: "market",
        type: "address",
      },
    ],
    name: "latestUpdateIdByMarketAndType",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string[]",
        name: "referenceIds",
        type: "string[]",
      },
      {
        internalType: "bytes[]",
        name: "newValues",
        type: "bytes[]",
      },
      {
        internalType: "string[]",
        name: "updateTypes",
        type: "string[]",
      },
      {
        internalType: "address[]",
        name: "markets",
        type: "address[]",
      },
      {
        internalType: "uint96[]",
        name: "poolIds",
        type: "uint96[]",
      },
      {
        internalType: "uint32[]",
        name: "dstEid",
        type: "uint32[]",
      },
      {
        internalType: "bytes[]",
        name: "additionalData",
        type: "bytes[]",
      },
    ],
    name: "publishBulkRiskParameterUpdates",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string",
        name: "referenceId",
        type: "string",
      },
      {
        internalType: "bytes",
        name: "newValue",
        type: "bytes",
      },
      {
        internalType: "string",
        name: "updateType",
        type: "string",
      },
      {
        internalType: "address",
        name: "market",
        type: "address",
      },
      {
        internalType: "uint96",
        name: "poolId",
        type: "uint96",
      },
      {
        internalType: "uint32",
        name: "dstEid",
        type: "uint32",
      },
      {
        internalType: "bytes",
        name: "additionalData",
        type: "bytes",
      },
    ],
    name: "publishRiskParameterUpdate",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "sender",
        type: "address",
      },
    ],
    name: "removeAuthorizedSender",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "string",
        name: "updateType",
        type: "string",
      },
      {
        internalType: "bool",
        name: "active",
        type: "bool",
      },
    ],
    name: "setUpdateTypeActive",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "updateCounter",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
] as const;

export class IRiskOracle__factory {
  static readonly abi = _abi;
  static createInterface(): IRiskOracleInterface {
    return new utils.Interface(_abi) as IRiskOracleInterface;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): IRiskOracle {
    return new Contract(address, _abi, signerOrProvider) as IRiskOracle;
  }
}
