syntax = "proto2";

/**
 * Storage area of SafeWISE
 */

// Sugar for easier handling in Java
option java_package = "io.coinwise.safewise.lib.protobuf";
option java_outer_classname = "SafeWISEStorage";

import "types.proto";

/**
 * Internal persistent storage of device
 */
message Storage {
	required uint32 version = 1;			// version of storage
	optional HDNodeType node = 2;			// BIP-32 node (mnemonic cannot be used if this is present)
	optional string mnemonic = 3;			// BIP-39 mnemonic (node cannot be used if this is present)
	optional bool passphrase_protection = 4;	// whether to require passphrase to decrypt node or stretch mnemonic
	optional uint32 pin_failed_attempts = 5;	// number of failed PIN attempts
	optional string pin = 6;			// current PIN
	optional string language = 7;			// current language
	optional string label = 8;			// device label
	optional bool imported = 9;			// was storage imported from an external source?
	optional bytes homescreen = 10;			// image used as homescreen (logo + label is used when not set)
	optional uint32 u2f_counter = 11;		// sequence number for u2f authentications
	optional bool needs_backup = 12;		// seed is not backed up yet
	optional uint32 flags = 13;			// device flags
	optional HDNodeType u2froot = 14;		// U2F root node
	optional bool unfinished_backup = 15;		// seed was improperly backed up
	optional uint32 auto_lock_delay_ms = 16;	// configurable auto-lock delay (in milliseconds)
}
