syntax = "proto3"; package forge_abi; enum StatusCode { ok = 0; // common code // 1 - 15 invalid_nonce = 1; invalid_signature = 2; invalid_sender_state = 3; invalid_receiver_state = 4; insufficient_data = 5; insufficient_fund = 6; invalid_owner = 7; invalid_tx = 8; unsupported_tx = 9; expired_tx = 10; too_many_txs = 11; invalid_lock_status = 12; invalid_request = 13; // 16 - 2047 various errors invalid_moniker = 16; invalid_passphrase = 17; invalid_multisig = 20; invalid_wallet = 21; invalid_chain_id = 22; consensus_rpc_error = 24; storage_rpc_error = 25; noent = 26; account_migrated = 27; unsupported_stake = 30; insufficient_stake = 31; invalid_stake_state = 32; expired_wallet_token = 33; banned_unstake = 34; invalid_asset = 35; invalid_tx_size = 36; invalid_signer_state = 37; invalid_forge_state = 38; expired_asset = 39; untransferrable_asset = 40; readonly_asset = 41; consumed_asset = 42; invalid_deposit_value = 43; exceed_deposit_cap = 44; invalid_deposit_target = 45; invalid_depositor = 46; invalid_withdrawer = 47; duplicate_tether = 48; invalid_expiry_date = 49; invalid_deposit = 50; invalid_custodian = 51; insufficient_gas = 52; invalid_swap = 53; invalid_hashkey = 54; invalid_delegation = 55; insufficient_delegation = 56; invalid_delegation_rule = 57; invalid_delegation_type_url = 58; sender_not_authorized =59; protocol_not_running=60; protocol_not_paused=61; protocol_not_activated=62; invalid_deactivation=63; sender_withdraw_items_full=64; withdraw_item_missing=65; invalid_withdraw_tx=66; invalid_chain_type=67; forbidden = 403; internal = 500; timeout = 504; // user defined status code shall start from 600 } enum KeyType { ed25519 = 0; secp256k1 = 1; } enum HashType { keccak = 0; sha3 = 1; sha2 = 2; // 3-5 reserved keccak_384 = 6; sha3_384 = 7; // 9-12 reserved keccak_512 = 13; sha3_512 = 14; } enum EncodingType { base16 = 0; base58 = 1; } enum RoleType { role_account = 0; role_node = 1; role_device = 2; role_application = 3; role_smart_contract = 4; role_bot = 5; role_asset = 6; role_stake = 7; role_validator = 8; role_group = 9; role_tx = 10; role_tether = 11; role_any = 63; } enum UpgradeType { // configuration config_app = 0; config_forge = 1; config_dfs = 2; config_consensus = 3; config_p2p = 4; // executable exe_app = 10; exe_forge = 11; exe_dfs = 12; exe_consensus = 13; exe_p2p = 14; } enum UpgradeAction { verify = 0; backup = 1; replace = 2; // restart different part of the system restart_app = 10; restart_dfs = 11; restart_consensus = 12; restart_p2p = 13; // restart forge will indirectly restart all component in a graceful manner restart_forge = 14; // depend on deployment, the monitor app (e.g. systemd) shall bring the // process back rollback_if_fail = 30; restart_all_if_fail = 31; crash_if_fail = 33; // drop different intermediate files drop_address_book = 50; } enum StateType { state_account = 0; state_asset = 1; state_channel = 2; state_forge = 3; state_stake = 4; } enum StakeType { stake_node = 0; stake_user = 1; stake_asset = 2; stake_chain = 3; } enum ProtocolStatus { running = 0; paused = 1; terminated = 2; }