import { Prisma } from '@prisma/client';
import { AuditService } from '../audit/audit.service';
import { PrismaService } from '../common/prisma/prisma.service';
import { PlatformSettingsService } from './platform-settings.service';
export type FeatureContext = {
    platform?: 'android' | 'ios' | 'web';
    userId?: string;
    country?: string;
    plan?: string;
    role?: string;
};
export declare class FeatureFlagsService {
    private readonly prisma;
    private readonly audit;
    private readonly settings;
    constructor(prisma: PrismaService, audit: AuditService, settings: PlatformSettingsService);
    list(): Prisma.PrismaPromise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        key: string;
        dependsOn: Prisma.JsonValue | null;
        updatedByAdminId: string | null;
        enabled: boolean;
        platforms: Prisma.JsonValue | null;
        targeting: Prisma.JsonValue | null;
        rolloutPercent: number;
    }[]>;
    isEnabled(key: string, ctx?: FeatureContext): Promise<boolean>;
    assertEnabled(key: string, ctx?: FeatureContext): Promise<void>;
    update(key: string, input: {
        enabled?: boolean;
        platforms?: string[];
        targeting?: Prisma.InputJsonValue;
        rolloutPercent?: number;
        description?: string;
        confirmDangerous?: boolean;
    }, adminId: string): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        key: string;
        dependsOn: Prisma.JsonValue | null;
        updatedByAdminId: string | null;
        enabled: boolean;
        platforms: Prisma.JsonValue | null;
        targeting: Prisma.JsonValue | null;
        rolloutPercent: number;
    }>;
}
