{
  "abi": [
    {
      "type": "function",
      "name": "combineOptions",
      "inputs": [
        { "name": "_eid", "type": "uint32", "internalType": "uint32" },
        { "name": "_msgType", "type": "uint16", "internalType": "uint16" },
        { "name": "_extraOptions", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [
        { "name": "options", "type": "bytes", "internalType": "bytes" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "setEnforcedOptions",
      "inputs": [
        {
          "name": "_enforcedOptions",
          "type": "tuple[]",
          "internalType": "struct EnforcedOptionParam[]",
          "components": [
            { "name": "eid", "type": "uint32", "internalType": "uint32" },
            { "name": "msgType", "type": "uint16", "internalType": "uint16" },
            { "name": "options", "type": "bytes", "internalType": "bytes" }
          ]
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "EnforcedOptionSet",
      "inputs": [
        {
          "name": "_enforcedOptions",
          "type": "tuple[]",
          "indexed": false,
          "internalType": "struct EnforcedOptionParam[]",
          "components": [
            { "name": "eid", "type": "uint32", "internalType": "uint32" },
            { "name": "msgType", "type": "uint16", "internalType": "uint16" },
            { "name": "options", "type": "bytes", "internalType": "bytes" }
          ]
        }
      ],
      "anonymous": false
    },
    {
      "type": "error",
      "name": "InvalidOptions",
      "inputs": [
        { "name": "options", "type": "bytes", "internalType": "bytes" }
      ]
    }
  ],
  "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
  "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
  "methodIdentifiers": {
    "combineOptions(uint32,uint16,bytes)": "bc70b354",
    "setEnforcedOptions((uint32,uint16,bytes)[])": "b98bd070"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\",\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OApp message type.\"},\"returns\":{\"options\":\"The combination of caller specified options AND enforced options.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}}},\"title\":\"IOAppOptionsType3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"notice\":\"Sets enforced options for specific endpoint and message type combinations.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/interfaces/IOAppOptionsType3.sol\":\"IOAppOptionsType3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]}},\"version\":1}",
  "metadata": {
    "compiler": { "version": "0.8.22+commit.4fc1097e" },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            { "internalType": "bytes", "name": "options", "type": "bytes" }
          ],
          "type": "error",
          "name": "InvalidOptions"
        },
        {
          "inputs": [
            {
              "internalType": "struct EnforcedOptionParam[]",
              "name": "_enforcedOptions",
              "type": "tuple[]",
              "components": [
                { "internalType": "uint32", "name": "eid", "type": "uint32" },
                {
                  "internalType": "uint16",
                  "name": "msgType",
                  "type": "uint16"
                },
                { "internalType": "bytes", "name": "options", "type": "bytes" }
              ],
              "indexed": false
            }
          ],
          "type": "event",
          "name": "EnforcedOptionSet",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint32", "name": "_eid", "type": "uint32" },
            { "internalType": "uint16", "name": "_msgType", "type": "uint16" },
            {
              "internalType": "bytes",
              "name": "_extraOptions",
              "type": "bytes"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "combineOptions",
          "outputs": [
            { "internalType": "bytes", "name": "options", "type": "bytes" }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct EnforcedOptionParam[]",
              "name": "_enforcedOptions",
              "type": "tuple[]",
              "components": [
                { "internalType": "uint32", "name": "eid", "type": "uint32" },
                {
                  "internalType": "uint16",
                  "name": "msgType",
                  "type": "uint16"
                },
                { "internalType": "bytes", "name": "options", "type": "bytes" }
              ]
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setEnforcedOptions"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "combineOptions(uint32,uint16,bytes)": {
            "params": {
              "_eid": "The endpoint ID.",
              "_extraOptions": "Additional options passed by the caller.",
              "_msgType": "The OApp message type."
            },
            "returns": {
              "options": "The combination of caller specified options AND enforced options."
            }
          },
          "setEnforcedOptions((uint32,uint16,bytes)[])": {
            "params": {
              "_enforcedOptions": "An array of EnforcedOptionParam structures specifying enforced options."
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "combineOptions(uint32,uint16,bytes)": {
            "notice": "Combines options for a given endpoint and message type."
          },
          "setEnforcedOptions((uint32,uint16,bytes)[])": {
            "notice": "Sets enforced options for specific endpoint and message type combinations."
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@layerzerolabs/=node_modules/@layerzerolabs/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/",
        "forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/",
        "solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"
      ],
      "optimizer": { "enabled": true, "runs": 200 },
      "metadata": { "bytecodeHash": "ipfs" },
      "compilationTarget": {
        "contracts/oapp/interfaces/IOAppOptionsType3.sol": "IOAppOptionsType3"
      },
      "evmVersion": "paris",
      "libraries": {}
    },
    "sources": {
      "contracts/oapp/interfaces/IOAppOptionsType3.sol": {
        "keccak256": "0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461",
        "urls": [
          "bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc",
          "dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "id": 7
}
