syntax = "proto3";

package ibc.applications.transfer.v1;

import "gogoproto/gogo.proto";

option go_package = "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types";

// Token defines a struct which represents a token to be transferred.
message Token {
  // the token denomination
  Denom denom = 1 [(gogoproto.nullable) = false];
  // the token amount to be transferred
  string amount = 2;
}

// Denom holds the base denom of a Token and a trace of the chains it was sent through.
message Denom {
  // the base token denomination
  string base = 1;
  // the trace of the token
  repeated Hop trace = 3 [(gogoproto.nullable) = false];
}

// Hop defines a port ID, channel ID pair specifying a unique "hop" in a trace
message Hop {
  option (gogoproto.goproto_stringer) = false;
  string port_id                      = 1;
  string channel_id                   = 2;
}
