contract IPledgeForCoke {

    struct DepositRequest {
        address payable depositAddress;
        address payable from;
        uint256 cokeAmount;
        uint256 endBlock;
        bytes32 billSeq;
        bytes32 salt;
    }

    //the buyer should approve enough coke and then call this function
    //or use 'approveAndCall' in Coke.sol in 1 request
    function deposit(DepositRequest memory request, ECStructs.ECDSASig memory ecdsaSig) payable public returns (bool);

    function depositCheck(DepositRequest memory request, ECStructs.ECDSASig memory ecdsaSig) public view returns (uint256);
}
function deposit(DepositRequest memory request, ECStructs.ECDSASig memory ecdsaSig) payable public returns (bool);

//the buyer should approve enough coke and then call this function
//or use 'approveAndCall' in Coke.sol in 1 request