[
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "controller",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "authenticator",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "caller",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "callIndex",
                "type": "uint256"
            }
        ],
        "name": "FCTE_CallFailed",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "caller",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "callIndex",
                "type": "uint256"
            }
        ],
        "name": "FCTE_CallSucceed",
        "type": "event"
    },
    {
        "inputs": [],
        "name": "AUTHENTICATOR",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "BATCH_MULTI_SIG_CALL_ID",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "CONTROLLER",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "VERSION",
        "outputs": [
            {
                "internalType": "bytes3",
                "name": "",
                "type": "bytes3"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes",
                "name": "data",
                "type": "bytes"
            },
            {
                "internalType": "uint256[]",
                "name": "types",
                "type": "uint256[]"
            },
            {
                "internalType": "bytes32[]",
                "name": "typedHashes",
                "type": "bytes32[]"
            },
            {
                "components": [
                    {
                        "internalType": "uint256",
                        "name": "data",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "types",
                        "type": "uint256"
                    }
                ],
                "internalType": "struct FCT_BatchMultiSig.Offset",
                "name": "offset",
                "type": "tuple"
            }
        ],
        "name": "abiToEIP712",
        "outputs": [
            {
                "internalType": "bytes",
                "name": "res",
                "type": "bytes"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "version",
                "type": "bytes32"
            },
            {
                "components": [
                    {
                        "internalType": "bytes32",
                        "name": "typeHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "uint256",
                        "name": "sessionId",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "nameHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "appHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "appVersionHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "builderHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "domainHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "verifierHash",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "address",
                        "name": "builderAddress",
                        "type": "address"
                    },
                    {
                        "components": [
                            {
                                "internalType": "bytes32",
                                "name": "typeHash",
                                "type": "bytes32"
                            },
                            {
                                "internalType": "bytes32",
                                "name": "ensHash",
                                "type": "bytes32"
                            },
                            {
                                "internalType": "bytes32",
                                "name": "functionSignature",
                                "type": "bytes32"
                            },
                            {
                                "internalType": "uint256",
                                "name": "value",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "callId",
                                "type": "uint256"
                            },
                            {
                                "internalType": "address",
                                "name": "from",
                                "type": "address"
                            },
                            {
                                "internalType": "address",
                                "name": "to",
                                "type": "address"
                            },
                            {
                                "internalType": "bytes",
                                "name": "data",
                                "type": "bytes"
                            },
                            {
                                "internalType": "uint256[]",
                                "name": "types",
                                "type": "uint256[]"
                            },
                            {
                                "internalType": "bytes32[]",
                                "name": "typedHashes",
                                "type": "bytes32[]"
                            }
                        ],
                        "internalType": "struct FCT_BatchMultiSig.MSCall[]",
                        "name": "mcall",
                        "type": "tuple[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "bytes32",
                                "name": "r",
                                "type": "bytes32"
                            },
                            {
                                "internalType": "bytes32",
                                "name": "s",
                                "type": "bytes32"
                            },
                            {
                                "internalType": "uint8",
                                "name": "v",
                                "type": "uint8"
                            }
                        ],
                        "internalType": "struct FCT_BatchMultiSig.Signature[]",
                        "name": "signatures",
                        "type": "tuple[]"
                    },
                    {
                        "internalType": "bytes32[]",
                        "name": "variables",
                        "type": "bytes32[]"
                    },
                    {
                        "internalType": "address[]",
                        "name": "externalSigners",
                        "type": "address[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "bool",
                                "name": "overflowProtection",
                                "type": "bool"
                            },
                            {
                                "internalType": "uint256[4]",
                                "name": "values",
                                "type": "uint256[4]"
                            },
                            {
                                "internalType": "bytes32[3]",
                                "name": "operators",
                                "type": "bytes32[3]"
                            }
                        ],
                        "internalType": "struct FCT_BatchMultiSig.Computed[]",
                        "name": "computed",
                        "type": "tuple[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "uint256",
                                "name": "value1",
                                "type": "uint256"
                            },
                            {
                                "internalType": "bytes32",
                                "name": "operator",
                                "type": "bytes32"
                            },
                            {
                                "internalType": "uint256",
                                "name": "value2",
                                "type": "uint256"
                            }
                        ],
                        "internalType": "struct FCT_BatchMultiSig.Validation[]",
                        "name": "validations",
                        "type": "tuple[]"
                    }
                ],
                "internalType": "struct FCT_BatchMultiSig.MSCalls",
                "name": "tr",
                "type": "tuple"
            },
            {
                "internalType": "bytes32",
                "name": "purgeFCT",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "investor",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "activator",
                "type": "address"
            }
        ],
        "name": "batchMultiSigCall",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "builderHash",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "builderAddress",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "maxGasPrice",
                "type": "uint256"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "payer",
                        "type": "address"
                    },
                    {
                        "internalType": "uint88",
                        "name": "gas",
                        "type": "uint88"
                    }
                ],
                "internalType": "struct MReturn[]",
                "name": "rt",
                "type": "tuple[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getIDs",
        "outputs": [
            {
                "internalType": "bytes32[]",
                "name": "res",
                "type": "bytes32[]"
            }
        ],
        "stateMutability": "pure",
        "type": "function"
    }
]
