import { RequestUser } from '../common/request-user';
import { UpdateMyProfileDto } from './dto/profile.dto';
import { ProfileService } from './profile.service';
export declare class ProfileController {
    private readonly profileService;
    constructor(profileService: ProfileService);
    getMe(user: RequestUser): Promise<{
        user: {
            [key: string]: unknown;
            refreshToken?: string | null;
        };
        profile: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            blockNumber: string | null;
            flatNumber: string | null;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            emergencyContact: import("@prisma/client/runtime/library").JsonValue;
            unit: string;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            residentCode: string;
            householdMembers: import("@prisma/client/runtime/library").JsonValue;
            userId: string;
        } | ({
            assignedGate: {
                description: string | null;
                type: import(".prisma/client").$Enums.EstateGateType;
                id: string;
                metadata: import("@prisma/client/runtime/library").JsonValue;
                estateId: string;
                name: string;
                createdAt: Date;
                updatedAt: Date;
                isActive: boolean;
            } | null;
        } & {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            guardCode: string;
            assignedGateId: string | null;
            assignedShifts: import("@prisma/client/runtime/library").JsonValue;
            profilePictureUrl: string | null;
            emergencyContact: import("@prisma/client/runtime/library").JsonValue;
            deviceId: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            userId: string;
        }) | null;
        completion: import("../common/profile-completion").ProfileCompletionResult;
        estate: {
            id: string;
            name: string;
            location: string;
            currentPlan: {
                monthlyPriceKobo?: number | null | undefined;
                oldMonthlyPriceKobo?: number | null | undefined;
                currency?: string | undefined;
                customPricing?: boolean | undefined;
                features: string[];
                id: string;
                code: string;
                name: string;
                sortOrder: number;
                publicVisible: boolean;
                residentMarketingEnabled: boolean;
                description: string | null;
                limits: import("@prisma/client/runtime/library").JsonValue;
                metadata: import("@prisma/client/runtime/library").JsonValue;
            } | null;
            profileRequirements: {
                resident: import("../common/profile-completion").ResidentProfileRequirement[];
                guard: import("../common/profile-completion").GuardProfileRequirement[];
            };
            gates: {
                id: string;
                name: string;
                type: string;
                isActive: boolean;
            }[];
            settings: {
                announcements: {
                    allowedCategories: string[];
                    dailyPostingLimit: number;
                    approvalRequiredForFlaggedKeywords: boolean;
                };
                serviceChargePaymentsEnabled: boolean;
                residentRequestsEnabled: boolean;
                visitorFeaturesEnabled: boolean;
            };
        } | null;
        currentPlan: {
            monthlyPriceKobo?: number | null | undefined;
            oldMonthlyPriceKobo?: number | null | undefined;
            currency?: string | undefined;
            customPricing?: boolean | undefined;
            features: string[];
            id: string;
            code: string;
            name: string;
            sortOrder: number;
            publicVisible: boolean;
            residentMarketingEnabled: boolean;
            description: string | null;
            limits: import("@prisma/client/runtime/library").JsonValue;
            metadata: import("@prisma/client/runtime/library").JsonValue;
        } | null;
        featureAvailability: {
            serviceChargePayments: boolean;
            residentRequests: boolean;
            announcements: boolean;
            visitorPasses: boolean;
        };
        planComparison: {
            showPricing: boolean;
            current: {
                monthlyPriceKobo?: number | null | undefined;
                oldMonthlyPriceKobo?: number | null | undefined;
                currency?: string | undefined;
                customPricing?: boolean | undefined;
                features: string[];
                id: string;
                code: string;
                name: string;
                sortOrder: number;
                publicVisible: boolean;
                residentMarketingEnabled: boolean;
                description: string | null;
                limits: import("@prisma/client/runtime/library").JsonValue;
                metadata: import("@prisma/client/runtime/library").JsonValue;
            };
            upgrades: {
                monthlyPriceKobo?: number | null | undefined;
                oldMonthlyPriceKobo?: number | null | undefined;
                currency?: string | undefined;
                customPricing?: boolean | undefined;
                features: string[];
                id: string;
                code: string;
                name: string;
                sortOrder: number;
                publicVisible: boolean;
                residentMarketingEnabled: boolean;
                description: string | null;
                limits: import("@prisma/client/runtime/library").JsonValue;
                metadata: import("@prisma/client/runtime/library").JsonValue;
            }[];
        } | null;
    }>;
    getDemoAccess(user: RequestUser): Promise<{
        approved: boolean;
        roleRequired: "ESTATE_ADMIN";
        estate: {
            id: string;
            name: string;
        };
        expiresAt: string;
        maxSessionMinutes: number;
        reason: string | null;
    }>;
    updateMe(user: RequestUser, dto: UpdateMyProfileDto): Promise<{
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        profile: unknown;
        completion: import("../common/profile-completion").ProfileCompletionResult;
    }>;
}
