import { PredictionEvent } from '../database/entities/PredictionEvent';
import { PredictionOption } from '../database/entities/PredictionOption';
import { PredictionAccess } from '../database/entities/PredictionAccess';
export declare function addAccess(guildId: string, targetId: string, type: 'user' | 'role'): Promise<PredictionAccess>;
export declare function removeAccess(guildId: string, targetId: string): Promise<boolean>;
export declare function checkAccess(guildId: string, userId: string, roleIds: string[]): Promise<boolean>;
export declare function listAccess(guildId: string): Promise<PredictionAccess[]>;
export interface CreateEventOptions {
    guildId: string;
    creatorId: string;
    title: string;
    options: string[];
    maxStakePerOption?: number | null;
    allowMultipleOptions?: boolean;
}
export declare function createEvent(opts: CreateEventOptions): Promise<PredictionEvent>;
export declare function createEvent(guildId: string, creatorId: string, title: string, options: string[]): Promise<PredictionEvent>;
export declare function getEvent(id: number): Promise<PredictionEvent | null>;
export declare function getEventOptions(eventId: number): Promise<PredictionOption[]>;
export declare function listActiveEvents(guildId: string): Promise<PredictionEvent[]>;
export declare function listCreatorClosedEvents(guildId: string, creatorId: string): Promise<PredictionEvent[]>;
export declare function listClosedEvents(guildId: string): Promise<PredictionEvent[]>;
export declare function closeEvent(id: number, userId: string, bypassOwnerCheck?: boolean): Promise<{
    success: boolean;
    error?: string;
}>;
export declare function placeBet(eventId: number, userId: string, optionIndex: number, amount: number): Promise<{
    success: boolean;
    error?: string;
}>;
export declare function getEventPool(eventId: number): Promise<number>;
export declare function getOptionPool(eventId: number, optionIndex: number): Promise<number>;
export interface EventBetStats {
    totalPool: number;
    totalBettors: number;
    optionStats: {
        [index: number]: {
            pool: number;
            bettors: number;
        };
    };
}
export declare function getEventBetStats(eventId: number): Promise<EventBetStats>;
export declare function resolveEvent(id: number, userId: string, winningIndex: number, bypassOwnerCheck?: boolean): Promise<{
    success: boolean;
    error?: string;
    totalPayout?: number;
}>;
export declare function getEventWinners(eventId: number, forcedWinningIndex?: number): Promise<{
    userId: string;
    payout: number;
}[]>;
export declare function cancelEvent(id: number, userId: string, bypassOwnerCheck?: boolean): Promise<{
    success: boolean;
    error?: string;
}>;
//# sourceMappingURL=predictionService.d.ts.map