syntax = "proto3";
package x.nodes;

import "gogoproto/gogo.proto";

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

message MsgProtoStake {
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;
	option (gogoproto.goproto_getters) = false;

	bytes Publickey = 1 [(gogoproto.moretags) = "yaml:\"public_key\"", (gogoproto.jsontag) = "public_key"];
	repeated string Chains = 2 [(gogoproto.moretags) = "yaml:\"chains\"", (gogoproto.jsontag) = "chains"];
	string value = 3 [
		(gogoproto.customtype) = "github.com/pokt-network/pocket-core/types.BigInt",
		(gogoproto.nullable) = false,
		(gogoproto.jsontag) = "value",
		(gogoproto.moretags) = "yaml:\"value\""];
	string ServiceUrl = 4 [(gogoproto.moretags) = "yaml:\"service_url\"", (gogoproto.jsontag) = "service_url"];
	bytes OutputAddress = 5 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "output_address,omitempty",
		(gogoproto.moretags) = "yaml:\"output_address\""
	];
}

message LegacyMsgProtoStake {
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;
	option (gogoproto.goproto_getters) = false;

	bytes Publickey = 1 [(gogoproto.moretags) = "yaml:\"public_key\"", (gogoproto.jsontag) = "public_key"];
	repeated string Chains = 2 [(gogoproto.moretags) = "yaml:\"chains\"", (gogoproto.jsontag) = "chains"];
	string value = 3 [
		(gogoproto.customtype) = "github.com/pokt-network/pocket-core/types.BigInt",
		(gogoproto.nullable) = false,
		(gogoproto.jsontag) = "value",
		(gogoproto.moretags) = "yaml:\"value\""];
	string ServiceUrl = 4 [(gogoproto.moretags) = "yaml:\"service_url\"", (gogoproto.jsontag) = "service_url"];
}

message MsgBeginUnstake {
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;
	option (gogoproto.goproto_getters) = false;

	bytes Address = 1 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "validator_address",
		(gogoproto.moretags) = "yaml:\"validator_address\""
	];
	bytes Signer = 2 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "signer_address,omitempty",
		(gogoproto.moretags) = "yaml:\"signer_address\""
	];
}

message LegacyMsgBeginUnstake {
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;
	option (gogoproto.goproto_getters) = false;

	bytes Address = 1 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "validator_address",
		(gogoproto.moretags) = "yaml:\"validator_address\""
	];
}

message MsgUnjail {
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;
	option (gogoproto.goproto_getters) = false;

	bytes ValidatorAddr = 1 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "address",
		(gogoproto.moretags) = "yaml:\"address\""
	];
	bytes Signer = 2 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "signer_address",
		(gogoproto.moretags) = "yaml:\"signer_address\""
	];
}

message LegacyMsgUnjail {
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;
	option (gogoproto.goproto_getters) = false;

	bytes ValidatorAddr = 1 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "address",
		(gogoproto.moretags) = "yaml:\"address\""
	];
}

message MsgSend {
	option (gogoproto.messagename) = true;
	option (gogoproto.equal) = true;
	option (gogoproto.goproto_stringer) = true;


	bytes FromAddress = 1 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "from_address",
		(gogoproto.moretags) = "yaml:\"from_address\""
	];
	bytes ToAddress = 2 [
		(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address",
		(gogoproto.jsontag) = "to_address",
		(gogoproto.moretags) = "yaml:\"to_address\""
	];
	string amount = 3 [
		(gogoproto.customtype) = "github.com/pokt-network/pocket-core/types.BigInt",
		(gogoproto.nullable) = false,
		(gogoproto.jsontag) = "amount",
		(gogoproto.moretags) = "yaml:\"amount\""];
}

