syntax = "proto3";
package x.gov;

import "gogoproto/gogo.proto";

option go_package = "github.com/pokt-network/pocket-core/x/gov/types";

message MsgChangeParam {
	option (gogoproto.messagename) = true;
	bytes fromAddress = 1 [(gogoproto.jsontag) = "address", (gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address"];
	string paramKey = 2 [(gogoproto.jsontag) = "param_key"];
	bytes paramVal = 3 [(gogoproto.jsontag) = "param_value"];
}

message MsgDAOTransfer {
	option (gogoproto.messagename) = true;
	bytes fromAddress = 1 [(gogoproto.jsontag) = "from_address", (gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address"];
	bytes toAddress = 2 [(gogoproto.jsontag) = "to_address", (gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address"];
	string amount = 3 [(gogoproto.jsontag) = "amount", (gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/pokt-network/pocket-core/types.BigInt"];
	string action = 4 [(gogoproto.jsontag) = "action"];
}

message MsgUpgrade {
	option (gogoproto.messagename) = true;
	bytes address = 1 [(gogoproto.jsontag) = "address", (gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address"];
	Upgrade upgrade = 2 [(gogoproto.jsontag) = "upgrade", (gogoproto.nullable) = false];
}

message Upgrade {
	int64 height = 1 [(gogoproto.jsontag) = "Height"];
	string version = 2 [(gogoproto.jsontag) = "Version"];
	int64 oldUpgradeHeight = 3 [(gogoproto.jsontag) = "OldUpgradeHeight,omitempty"];
	repeated string features = 4 [(gogoproto.jsontag) = "Features,omitempty"];
}

message ACLPair {
	string key = 1 [(gogoproto.jsontag) = "acl_key"];
	bytes addr = 2 [(gogoproto.jsontag) = "address", (gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address"];
}
