[
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "guardian",
                "type": "address"
            }
        ],
        "name": "UpdateLimitOrderGuardian",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "UpdatePoolAuthorizaton",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint16",
                "name": "otherHashflowChainId",
                "type": "uint16"
            },
            {
                "indexed": false,
                "internalType": "bytes32",
                "name": "caller",
                "type": "bytes32"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "UpdateXChainCallerAuthorization",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "xChainMessenger",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "UpdateXChainMessengerAuthorization",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "callee",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "xChainMessenger",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "UpdateXChainMessengerCallerAuthorization",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint16",
                "name": "otherHashflowChainId",
                "type": "uint16"
            },
            {
                "indexed": false,
                "internalType": "bytes32",
                "name": "otherChainPool",
                "type": "bytes32"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "UpdateXChainPoolAuthorization",
        "type": "event"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pool",
                "type": "address"
            }
        ],
        "name": "authorizedPools",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "dstContract",
                "type": "address"
            },
            {
                "internalType": "uint16",
                "name": "srcHashflowChainId",
                "type": "uint16"
            },
            {
                "internalType": "bytes32",
                "name": "caller",
                "type": "bytes32"
            }
        ],
        "name": "authorizedXChainCallers",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "callee",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "messenger",
                "type": "address"
            }
        ],
        "name": "authorizedXChainMessengersByCallee",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "messenger",
                "type": "address"
            }
        ],
        "name": "authorizedXChainMessengersByPool",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "dstPool",
                "type": "bytes32"
            },
            {
                "internalType": "uint16",
                "name": "srcHChainId",
                "type": "uint16"
            },
            {
                "internalType": "bytes32",
                "name": "srcPool",
                "type": "bytes32"
            }
        ],
        "name": "authorizedXChainPools",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "factory",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint16",
                        "name": "srcHashflowChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "srcPool",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "dstPool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "dstExternalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "dstTrader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "srcCaller",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "dstContract",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes",
                        "name": "dstContractCalldata",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IHashflowRouter.XChainFillMessage",
                "name": "fillMessage",
                "type": "tuple"
            }
        ],
        "name": "fillXChain",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pool",
                "type": "address"
            }
        ],
        "name": "forceUnauthorizePool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "factory",
                "type": "address"
            }
        ],
        "name": "initialize",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "enabled",
                "type": "bool"
            }
        ],
        "name": "killswitchPool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "pool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "externalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes",
                        "name": "takerSignature",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "makerSignature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.RFQMQuote",
                "name": "quote",
                "type": "tuple"
            }
        ],
        "name": "tradeRFQM",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "pool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "externalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes",
                        "name": "takerSignature",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "makerSignature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.RFQMQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "bytes",
                "name": "guardianSignature",
                "type": "bytes"
            }
        ],
        "name": "tradeRFQMLimitOrder",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "pool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "externalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes",
                        "name": "takerSignature",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "makerSignature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.RFQMQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "bytes",
                "name": "guardianSignature",
                "type": "bytes"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
            },
            {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "amountToApprove",
                "type": "uint256"
            }
        ],
        "name": "tradeRFQMLimitOrderWithPermit",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "pool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "externalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes",
                        "name": "takerSignature",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "makerSignature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.RFQMQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
            },
            {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "amountToApprove",
                "type": "uint256"
            }
        ],
        "name": "tradeRFQMWithPermit",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "pool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "externalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "effectiveTrader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "effectiveBaseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "nonce",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes",
                        "name": "signature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.RFQTQuote",
                "name": "quote",
                "type": "tuple"
            }
        ],
        "name": "tradeRFQT",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "pool",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "externalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "effectiveTrader",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "quoteToken",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "effectiveBaseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "nonce",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes",
                        "name": "signature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.RFQTQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
            },
            {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "amountToApprove",
                "type": "uint256"
            }
        ],
        "name": "tradeRFQTWithPermit",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint16",
                        "name": "srcChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "uint16",
                        "name": "dstChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "address",
                        "name": "srcPool",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstPool",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "srcExternalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstExternalAccount",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstTrader",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "quoteToken",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "xChainMessenger",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes",
                        "name": "takerSignature",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "makerSignature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.XChainRFQMQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "bytes32",
                "name": "dstContract",
                "type": "bytes32"
            },
            {
                "internalType": "bytes",
                "name": "dstCalldata",
                "type": "bytes"
            }
        ],
        "name": "tradeXChainRFQM",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint16",
                        "name": "srcChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "uint16",
                        "name": "dstChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "address",
                        "name": "srcPool",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstPool",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "srcExternalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstExternalAccount",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "trader",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstTrader",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "quoteToken",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "xChainMessenger",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes",
                        "name": "takerSignature",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "makerSignature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.XChainRFQMQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "bytes32",
                "name": "dstContract",
                "type": "bytes32"
            },
            {
                "internalType": "bytes",
                "name": "dstCalldata",
                "type": "bytes"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
            },
            {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "amountToApprove",
                "type": "uint256"
            }
        ],
        "name": "tradeXChainRFQMWithPermit",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint16",
                        "name": "srcChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "uint16",
                        "name": "dstChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "address",
                        "name": "srcPool",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstPool",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "srcExternalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstExternalAccount",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstTrader",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "quoteToken",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "uint256",
                        "name": "effectiveBaseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "nonce",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "xChainMessenger",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes",
                        "name": "signature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.XChainRFQTQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "bytes32",
                "name": "dstContract",
                "type": "bytes32"
            },
            {
                "internalType": "bytes",
                "name": "dstCalldata",
                "type": "bytes"
            }
        ],
        "name": "tradeXChainRFQT",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint16",
                        "name": "srcChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "uint16",
                        "name": "dstChainId",
                        "type": "uint16"
                    },
                    {
                        "internalType": "address",
                        "name": "srcPool",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstPool",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "srcExternalAccount",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstExternalAccount",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "dstTrader",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "baseToken",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "quoteToken",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "uint256",
                        "name": "effectiveBaseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "baseTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteTokenAmount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "quoteExpiry",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "nonce",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "txid",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "xChainMessenger",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes",
                        "name": "signature",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct IQuote.XChainRFQTQuote",
                "name": "quote",
                "type": "tuple"
            },
            {
                "internalType": "bytes32",
                "name": "dstContract",
                "type": "bytes32"
            },
            {
                "internalType": "bytes",
                "name": "dstCalldata",
                "type": "bytes"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
            },
            {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "amountToApprove",
                "type": "uint256"
            }
        ],
        "name": "tradeXChainRFQTWithPermit",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "guardian",
                "type": "address"
            }
        ],
        "name": "updateLimitOrderGuardian",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pool",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "updatePoolAuthorization",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint16",
                "name": "otherHashflowChainId",
                "type": "uint16"
            },
            {
                "internalType": "bytes32",
                "name": "caller",
                "type": "bytes32"
            },
            {
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "updateXChainCallerAuthorization",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "xChainMessenger",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "updateXChainMessengerAuthorization",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "xChainMessenger",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "updateXChainMessengerCallerAuthorization",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint16",
                "name": "otherHashflowChainId",
                "type": "uint16"
            },
            {
                "internalType": "bytes32",
                "name": "otherPool",
                "type": "bytes32"
            },
            {
                "internalType": "bool",
                "name": "authorized",
                "type": "bool"
            }
        ],
        "name": "updateXChainPoolAuthorization",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "token",
                "type": "address"
            }
        ],
        "name": "withdrawFunds",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
