package ports import ( "context" "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" ) type WalletStore interface { GetCompanyByWalletID(ctx context.Context, walletID int64) (domain.Company, error) GetBranchByWalletID(ctx context.Context, walletID int64) (domain.Branch, error) CreateWallet(ctx context.Context, wallet domain.CreateWallet) (domain.Wallet, error) CreateCustomerWallet(ctx context.Context, customerWallet domain.CreateCustomerWallet) (domain.CustomerWallet, error) GetWalletByID(ctx context.Context, id int64) (domain.Wallet, error) GetAllWallets(ctx context.Context) ([]domain.Wallet, error) GetWalletsByUser(ctx context.Context, id int64) ([]domain.Wallet, error) GetAllCustomerWallets(ctx context.Context) ([]domain.GetCustomerWallet, error) GetCustomerWallet(ctx context.Context, customerID int64) (domain.GetCustomerWallet, error) GetAllBranchWallets(ctx context.Context) ([]domain.BranchWallet, error) UpdateBalance(ctx context.Context, id int64, balance domain.Currency) error UpdateWalletActive(ctx context.Context, id int64, isActive bool) error GetBalanceSummary(ctx context.Context, filter domain.ReportFilter) (domain.BalanceSummary, error) GetTotalWallets(ctx context.Context, filter domain.ReportFilter) (int64, error) } type TransferStore interface { CreateTransfer(ctx context.Context, transfer domain.CreateTransfer) (domain.Transfer, error) GetAllTransfers(ctx context.Context) ([]domain.TransferDetail, error) GetTransfersByWallet(ctx context.Context, walletID int64) ([]domain.TransferDetail, error) GetTransferByReference(ctx context.Context, reference string) (domain.TransferDetail, error) GetTransferByID(ctx context.Context, id int64) (domain.TransferDetail, error) GetTransferStats(ctx context.Context, walletID int64) (domain.TransferStats, error) UpdateTransferVerification(ctx context.Context, id int64, verified bool) error UpdateTransferStatus(ctx context.Context, id int64, status string) error // InitiateTransfer(ctx context.Context, transfer domain.CreateTransfer) (domain.Transfer, error) // ApproveTransfer(ctx context.Context, approval domain.ApprovalRequest) error // RejectTransfer(ctx context.Context, approval domain.ApprovalRequest) error // GetPendingApprovals(ctx context.Context) ([]domain.TransferDetail, error) // GetTransferApprovalHistory(ctx context.Context, transferID int64) ([]domain.TransactionApproval, error) } type ApprovalStore interface { CreateApproval(ctx context.Context, approval domain.TransactionApproval) error UpdateApprovalStatus(ctx context.Context, approvalID int64, status string, comments string) error GetApprovalsByTransfer(ctx context.Context, transferID int64) ([]domain.TransactionApproval, error) GetPendingApprovals(ctx context.Context) ([]domain.TransferDetail, error) } // type DirectDepositStore interface { // CreateDirectDeposit(ctx context.Context, deposit domain.CreateDirectDeposit) (domain.DirectDeposit, error) // GetDirectDeposit(ctx context.Context, id int64) (domain.DirectDeposit, error) // UpdateDirectDeposit(ctx context.Context, deposit domain.UpdateDirectDeposit) (domain.DirectDeposit, error) // GetDirectDepositsByStatus(ctx context.Context, status domain.DirectDepositStatus) ([]domain.DirectDeposit, error) // GetCustomerDirectDeposits(ctx context.Context, customerID int64) ([]domain.DirectDeposit, error) // } type WalletStatStore interface { UpdateWalletStats(ctx context.Context) error GetWalletStatByID(ctx context.Context, walletID int64) ([]domain.WalletStat, error) GetWalletStatsByInterval(ctx context.Context, filter domain.WalletStatFilter) ([]domain.WalletStat, error) }