//! This code was AUTOGENERATED using the codama library.
//! Please DO NOT EDIT THIS FILE, instead use visitors
//! to add features, then rerun codama to update it.
//!
//! <https://github.com/codama-idl/codama>
//!
syntax = "proto3";

package vixen.parser.system;

message CreateAccountIx {
	CreateAccountIxAccounts accounts = 1;
	CreateAccountIxData data = 2;
}

message AssignIx {
	AssignIxAccounts accounts = 1;
	AssignIxData data = 2;
}

message TransferSolIx {
	TransferSolIxAccounts accounts = 1;
	TransferSolIxData data = 2;
}

message CreateAccountWithSeedIx {
	CreateAccountWithSeedIxAccounts accounts = 1;
	CreateAccountWithSeedIxData data = 2;
}

message AdvanceNonceAccountIx {
	AdvanceNonceAccountIxAccounts accounts = 1;
}

message WithdrawNonceAccountIx {
	WithdrawNonceAccountIxAccounts accounts = 1;
	WithdrawNonceAccountIxData data = 2;
}

message InitializeNonceAccountIx {
	InitializeNonceAccountIxAccounts accounts = 1;
	InitializeNonceAccountIxData data = 2;
}

message AuthorizeNonceAccountIx {
	AuthorizeNonceAccountIxAccounts accounts = 1;
	AuthorizeNonceAccountIxData data = 2;
}

message AllocateIx {
	AllocateIxAccounts accounts = 1;
	AllocateIxData data = 2;
}

message AllocateWithSeedIx {
	AllocateWithSeedIxAccounts accounts = 1;
	AllocateWithSeedIxData data = 2;
}

message AssignWithSeedIx {
	AssignWithSeedIxAccounts accounts = 1;
	AssignWithSeedIxData data = 2;
}

message TransferSolWithSeedIx {
	TransferSolWithSeedIxAccounts accounts = 1;
	TransferSolWithSeedIxData data = 2;
}

message UpgradeNonceAccountIx {
	UpgradeNonceAccountIxAccounts accounts = 1;
}


enum NonceVersion {
	NonceVersionLegacy = 0;
	NonceVersionCurrent = 1;
}

enum NonceState {
	NonceStateUninitialized = 0;
	NonceStateInitialized = 1;
}


message Nonce {
	NonceVersion version = 1;
	NonceState state = 2;
	string authority = 3;
	string blockhash = 4;
	uint64 lamports_per_signature = 5;
}


message CreateAccountIxAccounts {
	string payer = 1;
	string new_account = 2;
}

message CreateAccountIxData {
	uint64 lamports = 1;
	uint64 space = 2;
	string program_address = 3;
}

message AssignIxAccounts {
	string account = 1;
}

message AssignIxData {
	string program_address = 1;
}

message TransferSolIxAccounts {
	string source = 1;
	string destination = 2;
}

message TransferSolIxData {
	uint64 amount = 1;
}

message CreateAccountWithSeedIxAccounts {
	string payer = 1;
	string new_account = 2;
	string base_account = 3;
}

message CreateAccountWithSeedIxData {
	string base = 1;
	string seed = 2;
	uint64 amount = 3;
	uint64 space = 4;
	string program_address = 5;
}

message AdvanceNonceAccountIxAccounts {
	string nonce_account = 1;
	string recent_blockhashes_sysvar = 2;
	string nonce_authority = 3;
}


message WithdrawNonceAccountIxAccounts {
	string nonce_account = 1;
	string recipient_account = 2;
	string recent_blockhashes_sysvar = 3;
	string rent_sysvar = 4;
	string nonce_authority = 5;
}

message WithdrawNonceAccountIxData {
	uint64 withdraw_amount = 1;
}

message InitializeNonceAccountIxAccounts {
	string nonce_account = 1;
	string recent_blockhashes_sysvar = 2;
	string rent_sysvar = 3;
}

message InitializeNonceAccountIxData {
	string nonce_authority = 1;
}

message AuthorizeNonceAccountIxAccounts {
	string nonce_account = 1;
	string nonce_authority = 2;
}

message AuthorizeNonceAccountIxData {
	string new_nonce_authority = 1;
}

message AllocateIxAccounts {
	string new_account = 1;
}

message AllocateIxData {
	uint64 space = 1;
}

message AllocateWithSeedIxAccounts {
	string new_account = 1;
	string base_account = 2;
}

message AllocateWithSeedIxData {
	string base = 1;
	string seed = 2;
	uint64 space = 3;
	string program_address = 4;
}

message AssignWithSeedIxAccounts {
	string account = 1;
	string base_account = 2;
}

message AssignWithSeedIxData {
	string base = 1;
	string seed = 2;
	string program_address = 3;
}

message TransferSolWithSeedIxAccounts {
	string source = 1;
	string base_account = 2;
	string destination = 3;
}

message TransferSolWithSeedIxData {
	uint64 amount = 1;
	string from_seed = 2;
	string from_owner = 3;
}

message UpgradeNonceAccountIxAccounts {
	string nonce_account = 1;
}



message ProgramState {
    oneof state_oneof {
        	Nonce nonce = 1;
        }
}

message ProgramIxs {
    oneof ix_oneof {
        	CreateAccountIx create_account = 1;
        	AssignIx assign = 2;
        	TransferSolIx transfer_sol = 3;
        	CreateAccountWithSeedIx create_account_with_seed = 4;
        	AdvanceNonceAccountIx advance_nonce_account = 5;
        	WithdrawNonceAccountIx withdraw_nonce_account = 6;
        	InitializeNonceAccountIx initialize_nonce_account = 7;
        	AuthorizeNonceAccountIx authorize_nonce_account = 8;
        	AllocateIx allocate = 9;
        	AllocateWithSeedIx allocate_with_seed = 10;
        	AssignWithSeedIx assign_with_seed = 11;
        	TransferSolWithSeedIx transfer_sol_with_seed = 12;
        	UpgradeNonceAccountIx upgrade_nonce_account = 13;
        }
}

