{
    "_format": "hh-sol-artifact-1",
    "contractName": "ConfidentialVault",
    "sourceName": "contracts/ConfidentialVault.sol",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_accessControl",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_group",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_vaultUtilsAddress",
                    "type": "address"
                },
                {
                    "internalType": "address payable",
                    "name": "_daoTreasury",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "caller",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "idHash",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "proof",
                    "type": "bytes"
                },
                {
                    "internalType": "uint256[3]",
                    "name": "input",
                    "type": "uint256[3]"
                }
            ],
            "name": "acceptRequestMeta",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "caller",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "group_id",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "index",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "oracle_address",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "oracle_owner",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_key_sender",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_value_sender",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_key_recipient",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_value_recipient",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint32",
                            "name": "unlock_sender",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint32",
                            "name": "unlock_receiver",
                            "type": "uint32"
                        }
                    ],
                    "internalType": "struct CreateRequestMessage[]",
                    "name": "cr",
                    "type": "tuple[]"
                },
                {
                    "components": [
                        {
                            "internalType": "bytes",
                            "name": "proof",
                            "type": "bytes"
                        },
                        {
                            "internalType": "uint256[7]",
                            "name": "input",
                            "type": "uint256[7]"
                        }
                    ],
                    "internalType": "struct SendProof",
                    "name": "proof",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "denomination",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "obligor",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "deal_address",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deal_group_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deal_id",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct Payment",
                    "name": "payment",
                    "type": "tuple"
                },
                {
                    "internalType": "bool",
                    "name": "agree",
                    "type": "bool"
                }
            ],
            "name": "createRequestMeta",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "caller",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "group_id",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "denomination",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "obligor",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "proof_sender",
                    "type": "bytes"
                },
                {
                    "internalType": "uint256[3]",
                    "name": "input_sender",
                    "type": "uint256[3]"
                },
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "policy_type",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "proof",
                            "type": "bytes"
                        },
                        {
                            "internalType": "uint256[]",
                            "name": "input",
                            "type": "uint256[]"
                        },
                        {
                            "internalType": "bytes[]",
                            "name": "signatures",
                            "type": "bytes[]"
                        }
                    ],
                    "internalType": "struct PolicyProof",
                    "name": "policy_proof",
                    "type": "tuple"
                }
            ],
            "name": "depositMeta",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "groupId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "dealId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "bySender",
                    "type": "bool"
                }
            ],
            "name": "getNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "idHash",
                    "type": "uint256"
                }
            ],
            "name": "getSendRequestByID",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "idHash",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "group_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "denomination",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "obligor",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount_hash",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint32",
                            "name": "created",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint32",
                            "name": "redeemed",
                            "type": "uint32"
                        },
                        {
                            "internalType": "bool",
                            "name": "active",
                            "type": "bool"
                        },
                        {
                            "internalType": "address",
                            "name": "deal_address",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deal_group_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deal_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "oracle_address",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "oracle_owner",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_key_sender",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_value_sender",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_key_recipient",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_value_recipient",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint32",
                            "name": "unlock_sender",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint32",
                            "name": "unlock_receiver",
                            "type": "uint32"
                        }
                    ],
                    "internalType": "struct SendRequest",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "groupId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "dealId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "i",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "bySender",
                    "type": "bool"
                }
            ],
            "name": "getSendRequestByIndex",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "idHash",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "group_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "denomination",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "obligor",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount_hash",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint32",
                            "name": "created",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint32",
                            "name": "redeemed",
                            "type": "uint32"
                        },
                        {
                            "internalType": "bool",
                            "name": "active",
                            "type": "bool"
                        },
                        {
                            "internalType": "address",
                            "name": "deal_address",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deal_group_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deal_id",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "oracle_address",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "oracle_owner",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_key_sender",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_value_sender",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_key_recipient",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "oracle_value_recipient",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint32",
                            "name": "unlock_sender",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint32",
                            "name": "unlock_receiver",
                            "type": "uint32"
                        }
                    ],
                    "internalType": "struct SendRequest",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "caller",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "group_id",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "denomination",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "obligor",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "proof_sender",
                    "type": "bytes"
                },
                {
                    "internalType": "uint256[7]",
                    "name": "input_sender",
                    "type": "uint256[7]"
                },
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "policy_type",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "proof",
                            "type": "bytes"
                        },
                        {
                            "internalType": "uint256[]",
                            "name": "input",
                            "type": "uint256[]"
                        },
                        {
                            "internalType": "bytes[]",
                            "name": "signatures",
                            "type": "bytes[]"
                        }
                    ],
                    "internalType": "struct PolicyProof",
                    "name": "policy_proof",
                    "type": "tuple"
                }
            ],
            "name": "withdrawMeta",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        }
    ],
    "linkReferences": {},
    "deployedLinkReferences": {}
}
