import { UserRole } from '@prisma/client';
import { RequestUser } from '../common/request-user';
import { UpdatePlanFeatureSettingsDto, UpdateRoleFeatureSettingsDto } from './dto/feature-access.dto';
import { FeatureAccessService } from './feature-access.service';
import { FeatureKey } from './feature-catalog';
export declare class FeatureAccessController {
    private readonly featureAccess;
    constructor(featureAccess: FeatureAccessService);
    listCatalog(): import("./feature-catalog").FeatureDefinition[];
    me(user: RequestUser): Promise<{
        role: import(".prisma/client").$Enums.UserRole;
        estateId: string | null;
        defaultEnabled: boolean;
        globalEnabled: boolean;
        estateEnabled: boolean | null;
        planEnabled: boolean;
        effectiveEnabled: boolean;
        source: string;
        key: FeatureKey;
        label: string;
        description: string;
        category: string;
        defaultRoles: UserRole[];
        estateConfigurable: boolean;
    }[]>;
    getRoleSettings(role: UserRole, estateId: string | undefined, user: RequestUser): Promise<{
        role: import(".prisma/client").$Enums.UserRole;
        estateId: string | null;
        defaultEnabled: boolean;
        globalEnabled: boolean;
        estateEnabled: boolean | null;
        planEnabled: boolean;
        effectiveEnabled: boolean;
        source: string;
        key: FeatureKey;
        label: string;
        description: string;
        category: string;
        defaultRoles: UserRole[];
        estateConfigurable: boolean;
    }[]>;
    updateRoleSettings(role: UserRole, dto: UpdateRoleFeatureSettingsDto, user: RequestUser): Promise<{
        role: import(".prisma/client").$Enums.UserRole;
        estateId: string | null;
        defaultEnabled: boolean;
        globalEnabled: boolean;
        estateEnabled: boolean | null;
        planEnabled: boolean;
        effectiveEnabled: boolean;
        source: string;
        key: FeatureKey;
        label: string;
        description: string;
        category: string;
        defaultRoles: UserRole[];
        estateConfigurable: boolean;
    }[]>;
    getPlanSettings(code: string): Promise<{
        code: string;
        name: string;
        features: {
            planCode: string;
            enabled: boolean;
            key: FeatureKey;
            label: string;
            description: string;
            category: string;
            defaultRoles: UserRole[];
            estateConfigurable: boolean;
        }[];
    }>;
    updatePlanSettings(code: string, dto: UpdatePlanFeatureSettingsDto, user: RequestUser): Promise<{
        code: string;
        name: string;
        features: {
            planCode: string;
            enabled: boolean;
            key: FeatureKey;
            label: string;
            description: string;
            category: string;
            defaultRoles: UserRole[];
            estateConfigurable: boolean;
        }[];
    }>;
}
