import { PromoCode } from '../database/entities/PromoCode';
export interface CreatePromoOptions {
    code: string;
    amount: number;
    createdBy: string;
    maxUses?: number;
    maxUsesPerUser?: number;
    expiresAt?: Date;
    requiredRoleId?: string;
    minVoiceMinutes?: number;
    minMessageCount?: number;
}
export interface PromoDraft {
    code: string;
    amount: number;
    createdBy: string;
    maxUses?: number;
    maxUsesPerUser?: number;
    expiresAt?: Date;
}
export declare const promoDrafts: Map<string, PromoDraft>;
export declare function createPromoCode(options: CreatePromoOptions): Promise<PromoCode>;
export declare function getPromoCode(code: string): Promise<PromoCode | null>;
export declare function listPromoCodes(): Promise<PromoCode[]>;
export declare function deletePromoCode(code: string): Promise<boolean>;
export declare function getUserPromoUsageCount(code: string, userId: string): Promise<number>;
export interface RedeemResult {
    success: boolean;
    error?: string;
    amount?: number;
}
export interface RedeemContext {
    userId: string;
    roleIds: string[];
    voiceMinutes: number;
    messageCount: number;
}
export declare function redeemPromoCode(code: string, ctx: RedeemContext): Promise<RedeemResult>;
//# sourceMappingURL=promoService.d.ts.map