import { PrismaService } from '../prisma/prisma.service';
export declare class TournamentsService {
    private prisma;
    constructor(prisma: PrismaService);
    createTournament(data: any): Promise<{
        stages: ({
            groups: ({
                teams: {
                    id: string;
                    groupId: string;
                    teamId: string;
                }[];
                matches: {
                    id: string;
                    status: import(".prisma/client").$Enums.MatchStatus;
                    stageId: string;
                    groupId: string | null;
                    matchNumber: number;
                    homeTeamId: string | null;
                    awayTeamId: string | null;
                    homeFromMatchId: string | null;
                    homeFromSide: import(".prisma/client").$Enums.MatchSide | null;
                    awayFromMatchId: string | null;
                    awayFromSide: import(".prisma/client").$Enums.MatchSide | null;
                    scheduledAt: Date | null;
                    homeScore: number | null;
                    awayScore: number | null;
                    apiFootballId: string | null;
                }[];
            } & {
                id: string;
                name: string;
                stageId: string;
            })[];
            matches: ({
                homeTeam: {
                    id: string;
                    name: string;
                    code: string;
                    flagUrl: string | null;
                    flagEmoji: string | null;
                };
                awayTeam: {
                    id: string;
                    name: string;
                    code: string;
                    flagUrl: string | null;
                    flagEmoji: string | null;
                };
            } & {
                id: string;
                status: import(".prisma/client").$Enums.MatchStatus;
                stageId: string;
                groupId: string | null;
                matchNumber: number;
                homeTeamId: string | null;
                awayTeamId: string | null;
                homeFromMatchId: string | null;
                homeFromSide: import(".prisma/client").$Enums.MatchSide | null;
                awayFromMatchId: string | null;
                awayFromSide: import(".prisma/client").$Enums.MatchSide | null;
                scheduledAt: Date | null;
                homeScore: number | null;
                awayScore: number | null;
                apiFootballId: string | null;
            })[];
        } & {
            id: string;
            name: string;
            tournamentId: string;
            type: import(".prisma/client").$Enums.StageType;
            order: number;
        })[];
    } & {
        id: string;
        createdAt: Date;
        name: string;
        slug: string;
        season: string;
        logoUrl: string | null;
        status: import(".prisma/client").$Enums.TournamentStatus;
        startDate: Date;
        endDate: Date;
    }>;
    getTournament(id: string): Promise<{
        stages: ({
            groups: ({
                teams: ({
                    team: {
                        id: string;
                        name: string;
                        code: string;
                        flagUrl: string | null;
                        flagEmoji: string | null;
                    };
                } & {
                    id: string;
                    groupId: string;
                    teamId: string;
                })[];
            } & {
                id: string;
                name: string;
                stageId: string;
            })[];
            matches: ({
                homeTeam: {
                    id: string;
                    name: string;
                    code: string;
                    flagUrl: string | null;
                    flagEmoji: string | null;
                };
                awayTeam: {
                    id: string;
                    name: string;
                    code: string;
                    flagUrl: string | null;
                    flagEmoji: string | null;
                };
            } & {
                id: string;
                status: import(".prisma/client").$Enums.MatchStatus;
                stageId: string;
                groupId: string | null;
                matchNumber: number;
                homeTeamId: string | null;
                awayTeamId: string | null;
                homeFromMatchId: string | null;
                homeFromSide: import(".prisma/client").$Enums.MatchSide | null;
                awayFromMatchId: string | null;
                awayFromSide: import(".prisma/client").$Enums.MatchSide | null;
                scheduledAt: Date | null;
                homeScore: number | null;
                awayScore: number | null;
                apiFootballId: string | null;
            })[];
        } & {
            id: string;
            name: string;
            tournamentId: string;
            type: import(".prisma/client").$Enums.StageType;
            order: number;
        })[];
    } & {
        id: string;
        createdAt: Date;
        name: string;
        slug: string;
        season: string;
        logoUrl: string | null;
        status: import(".prisma/client").$Enums.TournamentStatus;
        startDate: Date;
        endDate: Date;
    }>;
    getAllTournaments(): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        slug: string;
        season: string;
        logoUrl: string | null;
        status: import(".prisma/client").$Enums.TournamentStatus;
        startDate: Date;
        endDate: Date;
    }[]>;
    joinTournament(tournamentId: string, userId: string): Promise<{
        id: string;
        updatedAt: Date;
        userId: string;
        tournamentId: string;
        totalPoints: number;
        exactScores: number;
        correctResults: number;
        rank: number | null;
    }>;
}
