package contract

import (
	"context"

	"github.com/google/uuid"
)

type AccountContract interface {
	CreateAccount(ctx context.Context, req *CreateAccountRequest) (*AccountResponse, error)
	GetAccountByID(ctx context.Context, id uuid.UUID) (*AccountResponse, error)
	UpdateAccount(ctx context.Context, id uuid.UUID, req *UpdateAccountRequest) (*AccountResponse, error)
	DeleteAccount(ctx context.Context, id uuid.UUID) error
	ListAccounts(ctx context.Context, req *ListAccountsRequest) ([]AccountResponse, int, error)
	GetAccountsByOrganization(ctx context.Context, organizationID uuid.UUID, outletID *uuid.UUID) ([]AccountResponse, error)
	GetAccountsByChartOfAccount(ctx context.Context, chartOfAccountID uuid.UUID) ([]AccountResponse, error)
	UpdateAccountBalance(ctx context.Context, id uuid.UUID, req *UpdateAccountBalanceRequest) error
	GetAccountBalance(ctx context.Context, id uuid.UUID) (float64, error)
}
