{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract RoleStore",
          "name": "_roleStore",
          "type": "address"
        },
        {
          "internalType": "contract DataStore",
          "name": "_dataStore",
          "type": "address"
        },
        {
          "internalType": "contract EventEmitter",
          "name": "_eventEmitter",
          "type": "address"
        },
        {
          "internalType": "contract ClaimVault",
          "name": "_claimVault",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "DisabledFeature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "existingDistributionId",
          "type": "uint256"
        }
      ],
      "name": "DuplicateClaimTerms",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EmptyAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EmptyAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "EmptyClaimableAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EmptyReceiver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EmptyToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "InsufficientFunds",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recoveredSigner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "expectedSigner",
          "type": "address"
        }
      ],
      "name": "InvalidClaimTermsSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "expectedSigner",
          "type": "address"
        }
      ],
      "name": "InvalidClaimTermsSignatureForContract",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "InvalidParams",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "msgSender",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "role",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "distributionId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "termsSignature",
              "type": "bytes"
            }
          ],
          "internalType": "struct ClaimHandler.ClaimParam[]",
          "name": "params",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "claimFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimVault",
      "outputs": [
        {
          "internalType": "contract ClaimVault",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataStore",
      "outputs": [
        {
          "internalType": "contract DataStore",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "distributionId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct ClaimHandler.DepositParam[]",
          "name": "params",
          "type": "tuple[]"
        }
      ],
      "name": "depositFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "eventEmitter",
      "outputs": [
        {
          "internalType": "contract EventEmitter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "distributionIds",
          "type": "uint256[]"
        }
      ],
      "name": "getClaimableAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTotalClaimableAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "distributionId",
          "type": "uint256"
        }
      ],
      "name": "removeTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "roleStore",
      "outputs": [
        {
          "internalType": "contract RoleStore",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "distributionId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "terms",
          "type": "string"
        }
      ],
      "name": "setTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "distributionId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "fromAccount",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "toAccount",
              "type": "address"
            }
          ],
          "internalType": "struct ClaimHandler.TransferClaimParam[]",
          "name": "params",
          "type": "tuple[]"
        }
      ],
      "name": "transferClaim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "distributionId",
              "type": "uint256"
            }
          ],
          "internalType": "struct ClaimHandler.WithdrawParam[]",
          "name": "params",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "withdrawFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ]
}
