contract ISignedContractId {
    function getId() public view returns(string);
    function getVersion() public view returns(uint);
    function getIdHash() public view returns(bytes32);
    function getDataHash() public view returns(bytes32);

    function getBytes() public view returns(bytes);

    // signs the contract with the specified v r and s
    function sign(uint8 v, bytes32 r, bytes32 s) public;
    function getSignature() public view returns(uint8, bytes32, bytes32);
    function isSigned() public view returns(bool);
}
function sign(uint8 v, bytes32 r, bytes32 s) public;
// signs the contract with the specified v r and s