package bet // import ( // "context" // "time" // "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" // ) // type BetStore interface { // CreateBet(ctx context.Context, bet domain.CreateBet) (domain.Bet, error) // CreateBetOutcome(ctx context.Context, outcomes []domain.CreateBetOutcome) (int64, error) // CreateFlag(ctx context.Context, flag domain.CreateFlagReq) (domain.Flag, error) // GetBetByID(ctx context.Context, id int64) (domain.GetBet, error) // GetAllBets(ctx context.Context, filter domain.BetFilter) ([]domain.GetBet, int64, error) // GetBetByUserID(ctx context.Context, UserID int64) ([]domain.GetBet, error) // GetBetByFastCode(ctx context.Context, fastcode string) (domain.GetBet, error) // GetBetOutcomeViewByEventID(ctx context.Context, eventID int64, filter domain.BetOutcomeViewFilter) ([]domain.BetOutcomeViewRes, int64, error) // GetBetOutcomeByEventID(ctx context.Context, eventID int64, is_filtered bool) ([]domain.BetOutcome, error) // GetBetOutcomeByBetID(ctx context.Context, betID int64) ([]domain.BetOutcome, error) // GetBetOutcomeCountByOddID(ctx context.Context, oddID int64) (int64, error) // GetBetCountByUserID(ctx context.Context, userID int64, outcomesHash string) (int64, error) // GetBetCountByOutcomesHash(ctx context.Context, outcomesHash string) (int64, error) // UpdateCashOut(ctx context.Context, id int64, cashedOut bool) error // UpdateStatus(ctx context.Context, id int64, status domain.OutcomeStatus) error // UpdateBetOutcomeStatus(ctx context.Context, id int64, status domain.OutcomeStatus) (domain.BetOutcome, error) // UpdateBetOutcomeStatusByBetID(ctx context.Context, id int64, status domain.OutcomeStatus) (domain.BetOutcome, error) // UpdateBetOutcomeStatusForEvent(ctx context.Context, eventID int64, status domain.OutcomeStatus) ([]domain.BetOutcome, error) // UpdateBetOutcomeStatusForOddId(ctx context.Context, oddID int64, status domain.OutcomeStatus) ([]domain.BetOutcome, error) // BulkUpdateBetOutcomeStatusForOddIds(ctx context.Context, oddID []int64, status domain.OutcomeStatus) error // GetBetSummary(ctx context.Context, filter domain.ReportFilter) ( // totalStakes domain.Currency, // totalBets int64, // activeBets int64, // totalWins int64, // totalLosses int64, // winBalance domain.Currency, // err error, // ) // GetBetStats(ctx context.Context, filter domain.ReportFilter) ([]domain.BetStat, error) // GetSportPopularity(ctx context.Context, filter domain.ReportFilter) (map[time.Time]string, error) // GetMarketPopularity(ctx context.Context, filter domain.ReportFilter) (map[time.Time]string, error) // GetExtremeValues(ctx context.Context, filter domain.ReportFilter) (map[time.Time]domain.ExtremeValues, error) // GetCustomerBetActivity(ctx context.Context, filter domain.ReportFilter) ([]domain.CustomerBetActivity, error) // GetCustomerPreferences(ctx context.Context, filter domain.ReportFilter) (map[int64]domain.CustomerPreferences, error) // GetBranchBetActivity(ctx context.Context, filter domain.ReportFilter) ([]domain.BranchBetActivity, error) // GetSportBetActivity(ctx context.Context, filter domain.ReportFilter) ([]domain.SportBetActivity, error) // GetSportDetails(ctx context.Context, filter domain.ReportFilter) (map[string]string, error) // GetSportMarketPopularity(ctx context.Context, filter domain.ReportFilter) (map[string]string, error) // GetBetsForCashback(ctx context.Context) ([]domain.GetBet, error) // UpdateBetWithCashback(ctx context.Context, betID int64, cashbackStatus bool) error // }