syntax = "proto3";

package common.account_role.v1;
option go_package = "github.com/tech/sendico/pkg/proto/common/account_role/v1;accountrolev1";

// AccountRole classifies the purpose of a ledger account within the
// double-entry accounting model.
enum AccountRole {
  // ACCOUNT_ROLE_UNSPECIFIED is the default zero value.
  ACCOUNT_ROLE_UNSPECIFIED = 0;
  // OPERATING is the main operational account for day-to-day activity.
  OPERATING = 1;
  // HOLD temporarily locks funds pending settlement or approval.
  HOLD = 2;
  // TRANSIT is an intermediary account for in-flight transfers.
  TRANSIT = 3;
  // SETTLEMENT collects funds awaiting final settlement.
  SETTLEMENT = 4;
  // CLEARING is used during reconciliation and netting cycles.
  CLEARING = 5;
  // PENDING tracks amounts that are authorised but not yet captured.
  PENDING = 6;
  // RESERVE holds funds set aside as collateral or buffer.
  RESERVE = 7;
  // LIQUIDITY pools funds available for outgoing payments.
  LIQUIDITY = 8;
  // FEE accumulates collected fee revenue.
  FEE = 9;
  // CHARGEBACK records reversed or disputed amounts.
  CHARGEBACK = 10;
  // ADJUSTMENT captures manual or system-initiated balance corrections.
  ADJUSTMENT = 11;
}
