syntax = "proto3"; package emerald.state; message Transaction { BlockchainId blockchain = 1; string tx_id = 2; uint64 since_timestamp = 3; uint64 sync_timestamp = 4; uint64 confirm_timestamp = 5; State state = 6; BlockRef block = 7; Status status = 8; repeated Change changes = 9; uint64 version = 10; } message TransactionMeta { uint64 timestamp = 1; BlockchainId blockchain = 2; string tx_id = 3; string label = 4; } message BlockRef { uint64 height = 1; string block_id = 2; uint64 timestamp = 3; } enum BlockchainId { CHAIN_UNSPECIFIED = 0; CHAIN_BITCOIN = 1; CHAIN_ETHEREUM = 100; CHAIN_ETHEREUM_CLASSIC = 101; CHAIN_MORDEN = 10001; CHAIN_KOVAN = 10002; CHAIN_TESTNET_BITCOIN = 10003; CHAIN_GOERLI = 10005; CHAIN_ROPSTEN = 10006; CHAIN_RINKEBY = 10007; } enum State { PREPARED = 0; SUBMITTED = 10; REPLACED = 11; CONFIRMED = 12; DROPPED = 20; } enum Status { UNKNOWN = 0; OK = 1; FAILED = 2; } enum Direction { RECEIVE = 0; SEND = 1; } message Change { string wallet_id = 1; uint32 entry_id = 2; string address = 3; string hd_path = 4; string asset = 5; // Positive number encoded as string. For negative transfers use `direction` string amount = 6; ChangeType change_type = 7; // Direction of transfer Direction direction = 8; enum ChangeType { UNSPECIFIED = 0; TRANSFER = 1; FEE = 2; } } // // Cursor used for querying the transaction history from Emerald API message Cursor { string address = 1; string value = 2; uint64 ts = 3; }