{
  "_format": "hh-sol-artifact-1",
  "contractName": "Connext",
  "sourceName": "hardhat-diamond-abi/HardhatDiamondABI.sol",
  "abi": [
    {
      "inputs": [],
      "name": "BaseConnextFacet__getAdoptedAsset_assetNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__getApprovedCanonicalId_notAllowlisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__nonReentrant_reentrantCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__nonXCallReentrant_reentrantCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__onlyOwnerOrAdmin_notOwnerOrAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__onlyOwnerOrRouter_notOwnerOrRouter",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__onlyOwnerOrWatcher_notOwnerOrWatcher",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__onlyOwner_notOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__onlyProposed_notProposedOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BaseConnextFacet__whenNotPaused_paused",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__getConfig_notRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__getTokenIndexFromStableSwapPool_notExist",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_feeOnTransferNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_nativeAssetNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleOutgoingAsset_notNative",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__addRemote_invalidDomain",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__addRemote_invalidRouter",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__addSequencer_alreadyApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__addSequencer_invalidSequencer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__bumpTransfer_noRelayerVault",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__bumpTransfer_valueIsZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__excecute_insufficientGas",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__executePortalTransfer_insufficientAmountWithdrawn",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_badFastLiquidityStatus",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_externalCallFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_invalidRouterSignature",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_invalidSequencerSignature",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_maxRoutersExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_notApprovedForPortals",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_notReconciled",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_notSupportedRouter",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_notSupportedSequencer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_unapprovedSender",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__execute_wrongDomain",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__forceReceiveLocal_notDestination",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__forceUpdateSlippage_invalidSlippage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__forceUpdateSlippage_notDestination",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__mustHaveRemote_destinationNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__onlyDelegate_notDelegate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__removeSequencer_notApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__setXAppConnectionManager_domainsDontMatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__xcall_capReached",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__xcall_emptyTo",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__xcall_invalidSlippage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet__xcall_nativeAssetNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BridgeFacet_xcall__emptyLocalAsset",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "AavePortalMintUnbacked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "originDomain",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "destinationDomain",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "canonicalDomain",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "receiveLocal",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "slippage",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "originSender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "bridgedAmt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "normalizedIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "canonicalId",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct TransferInfo",
              "name": "params",
              "type": "tuple"
            },
            {
              "internalType": "address[]",
              "name": "routers",
              "type": "address[]"
            },
            {
              "internalType": "bytes[]",
              "name": "routerSignatures",
              "type": "bytes[]"
            },
            {
              "internalType": "address",
              "name": "sequencer",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "sequencerSignature",
              "type": "bytes"
            }
          ],
          "indexed": false,
          "internalType": "struct ExecuteArgs",
          "name": "args",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "local",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ExternalCalldataExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        }
      ],
      "name": "ForceReceiveLocal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "remote",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RemoteAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sequencer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "SequencerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sequencer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "SequencerRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "slippage",
          "type": "uint256"
        }
      ],
      "name": "SlippageUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "increase",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "TransferRelayerFeesIncreased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "updated",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "XAppConnectionManagerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "messageHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "originDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "destinationDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "canonicalDomain",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "receiveLocal",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "slippage",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "originSender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bridgedAmt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "normalizedIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "canonicalId",
              "type": "bytes32"
            }
          ],
          "indexed": false,
          "internalType": "struct TransferInfo",
          "name": "params",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "local",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "messageBody",
          "type": "bytes"
        }
      ],
      "name": "XCalled",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sequencer",
          "type": "address"
        }
      ],
      "name": "addSequencer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sequencer",
          "type": "address"
        }
      ],
      "name": "approvedSequencers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_transferId",
          "type": "bytes32"
        }
      ],
      "name": "bumpTransfer",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "domain",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_router",
          "type": "bytes32"
        }
      ],
      "name": "enrollRemoteRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "originDomain",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "destinationDomain",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "canonicalDomain",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "receiveLocal",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "slippage",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "originSender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "bridgedAmt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "normalizedIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "canonicalId",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct TransferInfo",
              "name": "params",
              "type": "tuple"
            },
            {
              "internalType": "address[]",
              "name": "routers",
              "type": "address[]"
            },
            {
              "internalType": "bytes[]",
              "name": "routerSignatures",
              "type": "bytes[]"
            },
            {
              "internalType": "address",
              "name": "sequencer",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "sequencerSignature",
              "type": "bytes"
            }
          ],
          "internalType": "struct ExecuteArgs",
          "name": "_args",
          "type": "tuple"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "originDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "destinationDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "canonicalDomain",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "receiveLocal",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "slippage",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "originSender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bridgedAmt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "normalizedIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "canonicalId",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TransferInfo",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "name": "forceReceiveLocal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "originDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "destinationDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "canonicalDomain",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "receiveLocal",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "slippage",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "originSender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bridgedAmt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "normalizedIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "canonicalId",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TransferInfo",
          "name": "_params",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_slippage",
          "type": "uint256"
        }
      ],
      "name": "forceUpdateSlippage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        }
      ],
      "name": "remote",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sequencer",
          "type": "address"
        }
      ],
      "name": "removeSequencer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_transferId",
          "type": "bytes32"
        }
      ],
      "name": "routedTransfers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_xAppConnectionManager",
          "type": "address"
        }
      ],
      "name": "setXAppConnectionManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_transferId",
          "type": "bytes32"
        }
      ],
      "name": "transferStatus",
      "outputs": [
        {
          "internalType": "enum DestinationTransferStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xAppConnectionManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_destination",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_delegate",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_slippage",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_callData",
          "type": "bytes"
        }
      ],
      "name": "xcall",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_destination",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_delegate",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_slippage",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_callData",
          "type": "bytes"
        }
      ],
      "name": "xcallIntoLocal",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "indexed": false,
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        }
      ],
      "name": "DiamondCut",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "indexed": false,
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "DiamondCutProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "indexed": false,
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        }
      ],
      "name": "DiamondCutRescinded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        }
      ],
      "name": "diamondCut",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        }
      ],
      "name": "getAcceptanceTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        }
      ],
      "name": "proposeDiamondCut",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "enum IDiamondCut.FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct IDiamondCut.FacetCut[]",
          "name": "_diamondCut",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "_init",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_calldata",
          "type": "bytes"
        }
      ],
      "name": "rescindDiamondCut",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_functionSelector",
          "type": "bytes4"
        }
      ],
      "name": "facetAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "facetAddress_",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "facetAddresses",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "facetAddresses_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_facet",
          "type": "address"
        }
      ],
      "name": "facetFunctionSelectors",
      "outputs": [
        {
          "internalType": "bytes4[]",
          "name": "facetFunctionSelectors_",
          "type": "bytes4[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "facets",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facetAddress",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "functionSelectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct IDiamondLoupe.Facet[]",
          "name": "facets_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "AssetLogic__getConfig_notRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__getTokenIndexFromStableSwapPool_notExist",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_feeOnTransferNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_nativeAssetNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PortalFacet__repayAavePortalFor_invalidAsset",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PortalFacet__repayAavePortalFor_zeroAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PortalFacet__repayAavePortal_assetNotApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PortalFacet__repayAavePortal_insufficientFunds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PortalFacet__setAavePortalFee_invalidFee",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "updated",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "AavePoolUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "updated",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "AavePortalFeeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "transferId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "AavePortalRepayment",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "aavePool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "aavePortalFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_transferId",
          "type": "bytes32"
        }
      ],
      "name": "getAavePortalDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_transferId",
          "type": "bytes32"
        }
      ],
      "name": "getAavePortalFeeDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "originDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "destinationDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "canonicalDomain",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "receiveLocal",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "slippage",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "originSender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bridgedAmt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "normalizedIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "canonicalId",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TransferInfo",
          "name": "_params",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_backingAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_feeAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxIn",
          "type": "uint256"
        }
      ],
      "name": "repayAavePortal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "originDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "destinationDomain",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "canonicalDomain",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "receiveLocal",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "slippage",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "originSender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bridgedAmt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "normalizedIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "canonicalId",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TransferInfo",
          "name": "_params",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_portalAsset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_backingAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_feeAmount",
          "type": "uint256"
        }
      ],
      "name": "repayAavePortalFor",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_aavePool",
          "type": "address"
        }
      ],
      "name": "setAavePool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_aavePortalFeeNumerator",
          "type": "uint256"
        }
      ],
      "name": "setAavePortalFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__acceptProposedOwner_noOwnershipChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__assignRoleAdmin_invalidInput",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__assignRoleRouter_invalidInput",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__assignRoleWatcher_invalidInput",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__delayElapsed_delayNotElapsed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__proposeAssetAllowlistRemoval_noOwnershipChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__proposeNewOwner_invalidProposal",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__proposeNewOwner_noOwnershipChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__proposeRouterAllowlistRemoval_noOwnershipChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__removeAssetAllowlist_noOwnershipChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__removeAssetAllowlist_noProposal",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__removeRouterAllowlist_noOwnershipChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__removeRouterAllowlist_noProposal",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProposedOwnableFacet__revokeRole_invalidInput",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "AssignRoleAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "AssignRoleRouter",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "watcher",
          "type": "address"
        }
      ],
      "name": "AssignRoleWatcher",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "proposedOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "revokedAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum Role",
          "name": "revokedRole",
          "type": "uint8"
        }
      ],
      "name": "RevokeRole",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "RouterAllowlistRemovalProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "renounced",
          "type": "bool"
        }
      ],
      "name": "RouterAllowlistRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptProposedOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "name": "assignRoleAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "assignRoleRouterAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_watcher",
          "type": "address"
        }
      ],
      "name": "assignRoleWatcher",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "delay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newlyProposed",
          "type": "address"
        }
      ],
      "name": "proposeNewOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposeRouterAllowlistRemoval",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposed",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_role",
          "type": "address"
        }
      ],
      "name": "queryRole",
      "outputs": [
        {
          "internalType": "enum Role",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "removeRouterAllowlist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_revoke",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "routerAllowlistRemoved",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "routerAllowlistTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RelayerFacet__addRelayer_alreadyApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RelayerFacet__removeRelayer_notApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RelayerFacet__setRelayerFeeVault_invalidRelayerFeeVault",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RelayerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldVault",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newVault",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RelayerFeeVaultUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RelayerRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_relayer",
          "type": "address"
        }
      ],
      "name": "addRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_relayer",
          "type": "address"
        }
      ],
      "name": "approvedRelayers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relayerFeeVault",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_relayer",
          "type": "address"
        }
      ],
      "name": "removeRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_relayerFeeVault",
          "type": "address"
        }
      ],
      "name": "setRelayerFeeVault",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_feeOnTransferNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_nativeAssetNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleOutgoingAsset_notNative",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__acceptProposedRouterOwner_badCaller",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__acceptProposedRouterOwner_notElapsed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__addLiquidityForRouter_amountIsZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__addLiquidityForRouter_badRouter",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__addLiquidityForRouter_capReached",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__addLiquidityForRouter_routerEmpty",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__approveRouterForPortal_alreadyApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__approveRouterForPortal_notAdded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__approveRouter_alreadyAdded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__approveRouter_routerEmpty",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__initializeRouter_configNotEmpty",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__onlyRouterOwner_notRouterOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__proposeRouterOwner_badRouter",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__proposeRouterOwner_notNewOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__removeRouterLiquidityFor_notOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__removeRouterLiquidity_amountIsZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__removeRouterLiquidity_insufficientFunds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__removeRouterLiquidity_recipientEmpty",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__setLiquidityFeeNumerator_tooLarge",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__setLiquidityFeeNumerator_tooSmall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__setMaxRoutersPerTransfer_invalidMaxRoutersPerTransfer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__setRouterOwner_noChange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__setRouterRecipient_notNewRecipient",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__unapproveRouterForPortal_notApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__unapproveRouter_notAdded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RoutersFacet__unapproveRouter_routerEmpty",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidityFeeNumerator",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "LiquidityFeeNumeratorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxRoutersPerTransfer",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "MaxRoutersPerTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RouterAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RouterApprovedForPortal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "RouterInitialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "local",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RouterLiquidityAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "local",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RouterLiquidityRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "prevOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "RouterOwnerAccepted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "prevProposed",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newProposed",
          "type": "address"
        }
      ],
      "name": "RouterOwnerProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "prevRecipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newRecipient",
          "type": "address"
        }
      ],
      "name": "RouterRecipientSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RouterRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RouterUnapprovedForPortal",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "LIQUIDITY_FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LIQUIDITY_FEE_NUMERATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "acceptProposedRouterOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        }
      ],
      "name": "addRouterLiquidity",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "addRouterLiquidityFor",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "approveRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "approveRouterForPortal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "getProposedRouterOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "getProposedRouterOwnerTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "getRouterApproval",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "getRouterApprovalForPortal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "getRouterOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "getRouterRecipient",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_recipient",
          "type": "address"
        }
      ],
      "name": "initializeRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxRoutersPerTransfer",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_proposed",
          "type": "address"
        }
      ],
      "name": "proposeRouterOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "removeRouterLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "removeRouterLiquidityFor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        }
      ],
      "name": "routerBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_numerator",
          "type": "uint256"
        }
      ],
      "name": "setLiquidityFeeNumerator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newMaxRouters",
          "type": "uint256"
        }
      ],
      "name": "setMaxRoutersPerTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_recipient",
          "type": "address"
        }
      ],
      "name": "setRouterRecipient",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "unapproveRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "name": "unapproveRouterForPortal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_feeOnTransferNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleIncomingAsset_nativeAssetNotSupported",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetLogic__handleOutgoingAsset_notNative",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StableSwapFacet__deadlineCheck_deadlineNotMet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StableSwapFacet__getSwapTokenBalance_indexOutOfRange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StableSwapFacet__getSwapTokenIndex_notExist",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StableSwapFacet__getSwapToken_outOfRange",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "fees",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "invariant",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "AddLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAdminFee",
          "type": "uint256"
        }
      ],
      "name": "NewAdminFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newSwapFee",
          "type": "uint256"
        }
      ],
      "name": "NewSwapFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "fees",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "invariant",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidityImbalance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "boughtId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokensBought",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidityOne",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "buyer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokensSold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokensBought",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "soldId",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "boughtId",
          "type": "uint128"
        }
      ],
      "name": "TokenSwap",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "minToMint",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "addSwapLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "calculateRemoveSwapLiquidity",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndex",
          "type": "uint8"
        }
      ],
      "name": "calculateRemoveSwapLiquidityOneToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "availableTokenAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexFrom",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexTo",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "dx",
          "type": "uint256"
        }
      ],
      "name": "calculateSwap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bool",
          "name": "deposit",
          "type": "bool"
        }
      ],
      "name": "calculateSwapTokenAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "getSwapA",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "getSwapAPrecise",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getSwapAdminBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "getSwapLPToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "getSwapStorage",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "key",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "initialA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "futureA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialATime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "futureATime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "swapFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "adminFee",
              "type": "uint256"
            },
            {
              "internalType": "contract LPToken",
              "name": "lpToken",
              "type": "address"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "pooledTokens",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenPrecisionMultipliers",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "balances",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "adminFees",
              "type": "uint256[]"
            },
            {
              "internalType": "bool",
              "name": "disabled",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "removeTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct SwapUtils.Swap",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "getSwapToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "getSwapTokenBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "getSwapTokenIndex",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "getSwapVirtualPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256[]",
          "name": "minAmounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeSwapLiquidity",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "maxBurnAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeSwapLiquidityImbalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndex",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "minAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeSwapLiquidityOneToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexFrom",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexTo",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "dx",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minDy",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "assetIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "assetOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minAmountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExact",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "assetIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "assetOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxAmountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "AssetLogic__getConfig_notRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__addAssetId_alreadyAdded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__addAssetId_badBurn",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__addAssetId_badMint",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__enrollAdoptedAndLocalAssets_emptyCanonical",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__removeAssetId_invalidParams",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__removeAssetId_notAdded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__removeAssetId_remainsCustodied",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__setLiquidityCap_notCanonicalDomain",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__setupAssetWithDeployedRepresentation_invalidRepresentation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__setupAssetWithDeployedRepresentation_onCanonicalDomain",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__setupAsset_invalidCanonicalConfiguration",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__setupAsset_representationListed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__updateDetails_localNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__updateDetails_notApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenFacet__updateDetails_onlyRemote",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "canonicalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "adoptedAsset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "localAsset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "AssetAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "AssetRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "canonicalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cap",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "LiquidityCapUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "canonicalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "swapPool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "StableSwapAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "representation",
          "type": "address"
        }
      ],
      "name": "TokenDeployed",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_stableSwapPool",
          "type": "address"
        }
      ],
      "name": "addStableSwapPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_adopted",
          "type": "address"
        }
      ],
      "name": "adoptedToCanonical",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        }
      ],
      "name": "adoptedToLocalExternalPools",
      "outputs": [
        {
          "internalType": "contract IStableSwap",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "adoptedToLocalExternalPools",
      "outputs": [
        {
          "internalType": "contract IStableSwap",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "approvedAssets",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        }
      ],
      "name": "approvedAssets",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "canonicalToAdopted",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        }
      ],
      "name": "canonicalToAdopted",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "canonicalToRepresentation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        }
      ],
      "name": "canonicalToRepresentation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "getCustodiedAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        },
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        }
      ],
      "name": "getLocalAndAdoptedToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_candidate",
          "type": "address"
        }
      ],
      "name": "getTokenId",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_adoptedAssetId",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "name": "removeAssetId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_adoptedAssetId",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "name": "removeAssetId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "name": "representationToCanonical",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "uint8",
          "name": "_canonicalDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "_representationName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_representationSymbol",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_adoptedAssetId",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stableSwapPool",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_cap",
          "type": "uint256"
        }
      ],
      "name": "setupAsset",
      "outputs": [
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_adoptedAssetId",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stableSwapPool",
          "type": "address"
        }
      ],
      "name": "setupAssetWithDeployedRepresentation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "updateDetails",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "domain",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "internalType": "struct TokenId",
          "name": "_canonical",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_updated",
          "type": "uint256"
        }
      ],
      "name": "updateLiquidityCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "deployedBytecode": "",
  "bytecode": "",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
