interface IGenericHandler {
    /**
        @notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.
        @param resourceID ResourceID to be used when making deposits.
        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.
        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.
        @param depositFunctionDepositerOffset Depositer address position offset in the metadata, in bytes.
        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.
     */
    function setResource(
        bytes32 resourceID,
        address contractAddress,
        bytes4 depositFunctionSig,
        uint depositFunctionDepositerOffset,
        bytes4 executeFunctionSig) external;
}
/**
 @title Interface for handler that handles generic deposits and deposit executions.
 @author ChainSafe Systems.
 */
function setResource(
    bytes32 resourceID,
    address contractAddress,
    bytes4 depositFunctionSig,
    uint depositFunctionDepositerOffset,
    bytes4 executeFunctionSig) external;

/**
 @notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.
 @param resourceID ResourceID to be used when making deposits.
 @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.
 @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.
 @param depositFunctionDepositerOffset Depositer address position offset in the metadata, in bytes.
 @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.
 */