import { PaymentProvider } from '@prisma/client';
import { RequestUser } from '../common/request-user';
import { AdminService } from './admin.service';
import { UpdateEstateDto, AssignEstatePartnerDto, ContactEstateAdminDto, ConfirmEstatePaymentDto, CreateSubscriptionPlanDto, UpdateGuardDto, UpdateIncidentDto, UpdatePaymentProviderSettingDto, UpdateResidentDto, UpdateSubscriptionPlanDto, UpdateUserDto, UpdateVisitorDto, UpdateVisitorPassDto, ReviewEstateSignupDto, UpdateSalesPartnerProfileDto, UpdateOtpConfigDto, UpdateIntegrationConfigDto } from './dto/admin.dto';
export declare class AdminController {
    private readonly adminService;
    constructor(adminService: AdminService);
    dashboard(user: RequestUser): Promise<{
        totals: Record<string, number>;
        recentAuditLogs: {
            id: string;
            actorType: string;
            actorId: string;
            action: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            timestamp: Date;
            estateId: string | null;
        }[];
    }>;
    listUsers(user: RequestUser, estateId?: string, role?: string, status?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        } | null;
        resident: {
            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;
        } | null;
        guard: {
            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;
    } & {
        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;
    })[]>;
    updateUser(id: string, dto: UpdateUserDto, user: RequestUser): Promise<{
        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;
    }>;
    listEstates(user: RequestUser): Promise<({
        salesPartner: {
            id: string;
            name: string;
            phone: string;
            role: import(".prisma/client").$Enums.UserRole;
        } | null;
    } & {
        status: import(".prisma/client").$Enums.EstateStatus;
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        location: string;
        unitCount: number;
        estateType: string | null;
        signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
        subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
        subscriptionPlanId: string | null;
        selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
        activatedAt: Date | null;
        rejectedAt: Date | null;
        suspendedAt: Date | null;
        reviewNotes: string | null;
        settings: import("@prisma/client/runtime/library").JsonValue;
        branding: import("@prisma/client/runtime/library").JsonValue;
        salesPartnerId: string | null;
    })[]>;
    listEstateSignups(status: string | undefined, user: RequestUser): Promise<({
        subscriptionPlan: {
            description: string | null;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            code: string;
            minResidents: number;
            maxResidents: number | null;
            monthlyPriceKobo: number | null;
            oldMonthlyPriceKobo: number | null;
            currency: string;
            customPricing: boolean;
            ctaLabel: string | null;
            sortOrder: number;
            trialDays: number;
            gracePeriodDays: number;
            publicVisible: boolean;
            residentMarketingEnabled: boolean;
            limits: import("@prisma/client/runtime/library").JsonValue;
            isActive: boolean;
        } | null;
        gates: {
            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;
        }[];
        guards: {
            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;
        }[];
        residents: {
            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;
        }[];
        notifications: {
            status: import(".prisma/client").$Enums.NotificationStatus;
            data: import("@prisma/client/runtime/library").JsonValue;
            id: string;
            estateId: string;
            title: string;
            channel: import(".prisma/client").$Enums.NotificationChannel;
            createdAt: Date;
            userId: string | null;
            body: string;
            announcementId: string | null;
            readAt: Date | null;
            sentAt: Date | null;
        }[];
        salesPartner: {
            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;
        } | null;
        users: {
            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;
        }[];
        visitors: {
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string | null;
            name: string;
            phone: string | null;
            createdAt: Date;
            updatedAt: Date;
            photoUrl: string | null;
            vehiclePlate: string | null;
            riskScore: number;
            flagged: boolean;
            blacklisted: boolean;
            riskNotes: string | null;
            riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
        }[];
        passes: {
            status: import(".prisma/client").$Enums.VisitorPassStatus;
            id: string;
            estateId: string;
            createdAt: Date;
            updatedAt: Date;
            passType: import(".prisma/client").$Enums.VisitorPassType;
            validFrom: Date;
            validUntil: Date;
            maxEntries: number;
            entryCount: number;
            visitorId: string;
            hostResidentId: string;
            visitorCode: string;
            qrToken: string;
            revokedAt: Date | null;
        }[];
        sessions: {
            status: import(".prisma/client").$Enums.VisitSessionStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            deviceId: string | null;
            createdAt: Date;
            updatedAt: Date;
            guardId: string;
            hostResidentId: string | null;
            visitorPassId: string;
            gateId: string | null;
            visitorPhone: string | null;
            checkinTime: Date;
            checkoutTime: Date | null;
            entryGate: string | null;
            exitGate: string | null;
            offlineEventId: string | null;
            scanLocation: import("@prisma/client/runtime/library").JsonValue;
        }[];
        incidents: {
            description: string;
            type: string;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            timestamp: Date;
            estateId: string;
            guardId: string;
        }[];
        auditLogs: {
            id: string;
            actorType: string;
            actorId: string;
            action: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            timestamp: Date;
            estateId: string | null;
        }[];
        paymentProviderOverrides: {
            id: string;
            estateId: string;
            provider: import(".prisma/client").$Enums.PaymentProvider;
            enabled: boolean;
            createdAt: Date;
            updatedAt: Date;
        }[];
        roleFeatureSettings: {
            id: string;
            estateId: string;
            role: import(".prisma/client").$Enums.UserRole;
            enabled: boolean;
            updatedById: string | null;
            createdAt: Date;
            updatedAt: Date;
            feature: string;
        }[];
        payments: {
            status: import(".prisma/client").$Enums.PaymentStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            provider: import(".prisma/client").$Enums.PaymentProvider;
            createdAt: Date;
            updatedAt: Date;
            currency: string;
            planId: string;
            reference: string | null;
            amountKobo: number | null;
            confirmedById: string | null;
            confirmedAt: Date | null;
        }[];
        announcements: {
            status: import(".prisma/client").$Enums.AnnouncementStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            title: string;
            category: import(".prisma/client").$Enums.AnnouncementCategory;
            createdAt: Date;
            updatedAt: Date;
            body: string;
            authorId: string;
            priority: import(".prisma/client").$Enums.AnnouncementPriority;
            targetRoles: string[];
            targetUserIds: string[];
            deliveryChannels: import(".prisma/client").$Enums.NotificationChannel[];
            publishedAt: Date | null;
            expiresAt: Date | null;
        }[];
        residentRequests: {
            description: string;
            status: import(".prisma/client").$Enums.ResidentRequestStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            title: string;
            category: import(".prisma/client").$Enums.ResidentRequestCategory;
            createdAt: Date;
            updatedAt: Date;
            residentId: string;
            priority: import(".prisma/client").$Enums.ResidentRequestPriority;
            requestCode: string;
            assignedToId: string | null;
            resolvedAt: Date | null;
            closedAt: Date | null;
        }[];
        _count: {
            subscriptionPlan: number;
            salesPartner: number;
            users: number;
            residents: number;
            visitors: number;
            guards: number;
            passes: number;
            sessions: number;
            incidents: number;
            auditLogs: number;
            paymentProviderOverrides: number;
            roleFeatureSettings: number;
            payments: number;
            gates: number;
            announcements: number;
            residentRequests: number;
            notifications: number;
        };
    } & {
        status: import(".prisma/client").$Enums.EstateStatus;
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        location: string;
        unitCount: number;
        estateType: string | null;
        signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
        subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
        subscriptionPlanId: string | null;
        selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
        activatedAt: Date | null;
        rejectedAt: Date | null;
        suspendedAt: Date | null;
        reviewNotes: string | null;
        settings: import("@prisma/client/runtime/library").JsonValue;
        branding: import("@prisma/client/runtime/library").JsonValue;
        salesPartnerId: string | null;
    })[]>;
    reviewEstateSignup(estateId: string, dto: ReviewEstateSignupDto, user: RequestUser): Promise<{
        status: import(".prisma/client").$Enums.EstateStatus;
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        location: string;
        unitCount: number;
        estateType: string | null;
        signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
        subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
        subscriptionPlanId: string | null;
        selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
        activatedAt: Date | null;
        rejectedAt: Date | null;
        suspendedAt: Date | null;
        reviewNotes: string | null;
        settings: import("@prisma/client/runtime/library").JsonValue;
        branding: import("@prisma/client/runtime/library").JsonValue;
        salesPartnerId: string | null;
    }>;
    confirmEstatePayment(estateId: string, dto: ConfirmEstatePaymentDto, user: RequestUser): Promise<{
        estate: {
            subscriptionPlan: {
                description: string | null;
                id: string;
                metadata: import("@prisma/client/runtime/library").JsonValue;
                name: string;
                createdAt: Date;
                updatedAt: Date;
                code: string;
                minResidents: number;
                maxResidents: number | null;
                monthlyPriceKobo: number | null;
                oldMonthlyPriceKobo: number | null;
                currency: string;
                customPricing: boolean;
                ctaLabel: string | null;
                sortOrder: number;
                trialDays: number;
                gracePeriodDays: number;
                publicVisible: boolean;
                residentMarketingEnabled: boolean;
                limits: import("@prisma/client/runtime/library").JsonValue;
                isActive: boolean;
            } | null;
        } & {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        };
        payment: {
            plan: {
                description: string | null;
                id: string;
                metadata: import("@prisma/client/runtime/library").JsonValue;
                name: string;
                createdAt: Date;
                updatedAt: Date;
                code: string;
                minResidents: number;
                maxResidents: number | null;
                monthlyPriceKobo: number | null;
                oldMonthlyPriceKobo: number | null;
                currency: string;
                customPricing: boolean;
                ctaLabel: string | null;
                sortOrder: number;
                trialDays: number;
                gracePeriodDays: number;
                publicVisible: boolean;
                residentMarketingEnabled: boolean;
                limits: import("@prisma/client/runtime/library").JsonValue;
                isActive: boolean;
            };
        } & {
            status: import(".prisma/client").$Enums.PaymentStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            provider: import(".prisma/client").$Enums.PaymentProvider;
            createdAt: Date;
            updatedAt: Date;
            currency: string;
            planId: string;
            reference: string | null;
            amountKobo: number | null;
            confirmedById: string | null;
            confirmedAt: Date | null;
        };
    }>;
    listSubscriptionPlans(includeInactive?: string): Promise<{
        features: string[];
    }[]>;
    createSubscriptionPlan(dto: CreateSubscriptionPlanDto, user: RequestUser): Promise<{
        features: string[];
    }>;
    getOtpConfig(): {
        provider: import("../auth/otp.types").OtpDeliveryProvider;
        enabledProviders: import("../auth/otp.types").OtpDeliveryProvider[];
        providerPriority: import("../auth/otp.types").OtpDeliveryProvider[];
        availableProviders: import("../auth/otp.types").OtpDeliveryProvider[];
        providers: {
            provider: import("../auth/otp.types").OtpDeliveryProvider;
            enabled: boolean;
            priority: number | null;
            configured: boolean;
            activePrimary: boolean;
        }[];
        codeLength: number;
        expiresInSeconds: number;
        maxAttempts: number;
        devOtpExposed: boolean;
        termii: {
            configured: boolean;
            baseUrl: string;
            senderId: string;
            channel: string;
        };
        africasTalking: {
            configured: boolean;
            baseUrl: string;
            username: string;
            senderId: string;
        };
        customHttp: {
            configured: boolean;
            url: string;
            method: string;
            hasHeaders: boolean;
            hasBodyTemplate: boolean;
        };
        note: string;
    };
    updateOtpConfig(dto: UpdateOtpConfigDto, user: RequestUser): Promise<{
        provider: import("../auth/otp.types").OtpDeliveryProvider;
        enabledProviders: import("../auth/otp.types").OtpDeliveryProvider[];
        providerPriority: import("../auth/otp.types").OtpDeliveryProvider[];
        availableProviders: import("../auth/otp.types").OtpDeliveryProvider[];
        providers: {
            provider: import("../auth/otp.types").OtpDeliveryProvider;
            enabled: boolean;
            priority: number | null;
            configured: boolean;
            activePrimary: boolean;
        }[];
        codeLength: number;
        expiresInSeconds: number;
        maxAttempts: number;
        devOtpExposed: boolean;
        termii: {
            configured: boolean;
            baseUrl: string;
            senderId: string;
            channel: string;
        };
        africasTalking: {
            configured: boolean;
            baseUrl: string;
            username: string;
            senderId: string;
        };
        customHttp: {
            configured: boolean;
            url: string;
            method: string;
            hasHeaders: boolean;
            hasBodyTemplate: boolean;
        };
        note: string;
    }>;
    listIntegrationTemplates(): import("../integrations/integration-config.types").IntegrationTemplate[];
    listIntegrationConfigs(): {
        category: string;
        provider: string;
        displayName: string;
        enabled: boolean;
        configured: boolean;
        publicConfig: Record<string, unknown>;
        secrets: {
            [k: string]: {
                configured: boolean;
                masked: string | null;
            };
        };
        template: {
            publicKeys: string[];
            secretKeys: string[];
            description: string;
        } | null;
        updatedById: string | null;
        updatedAt: Date | null;
    }[];
    getIntegrationConfig(provider: string): {
        category: string;
        provider: string;
        displayName: string;
        enabled: boolean;
        configured: boolean;
        publicConfig: Record<string, unknown>;
        secrets: {
            [k: string]: {
                configured: boolean;
                masked: string | null;
            };
        };
        template: {
            publicKeys: string[];
            secretKeys: string[];
            description: string;
        } | null;
        updatedById: string | null;
        updatedAt: Date | null;
    };
    updateIntegrationConfig(provider: string, dto: UpdateIntegrationConfigDto, user: RequestUser): Promise<{
        category: string;
        provider: string;
        displayName: string;
        enabled: boolean;
        configured: boolean;
        publicConfig: Record<string, unknown>;
        secrets: {
            [k: string]: {
                configured: boolean;
                masked: string | null;
            };
        };
        template: {
            publicKeys: string[];
            secretKeys: string[];
            description: string;
        } | null;
        updatedById: string | null;
        updatedAt: Date | null;
    }>;
    updateSubscriptionPlan(code: string, dto: UpdateSubscriptionPlanDto, user: RequestUser): Promise<{
        features: string[];
    }>;
    listPaymentProviders(estateId?: string): Promise<{
        provider: import(".prisma/client").$Enums.PaymentProvider;
        displayName: string;
        globallyEnabled: boolean;
        estateEnabled: boolean | null;
        effectiveEnabled: boolean;
        sandboxMode: "sandbox" | "live";
        sandboxConfigured: boolean;
        sandboxBaseUrl: string;
        recommendedUseCases: string[];
        metadata: import("@prisma/client/runtime/library").JsonValue;
    }[]>;
    updateGlobalPaymentProvider(provider: PaymentProvider, dto: UpdatePaymentProviderSettingDto, user: RequestUser): Promise<{
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        provider: import(".prisma/client").$Enums.PaymentProvider;
        displayName: string;
        enabled: boolean;
        createdAt: Date;
        updatedAt: Date;
        recommendedUseCases: string[];
    }>;
    updateEstatePaymentProvider(estateId: string, provider: PaymentProvider, dto: UpdatePaymentProviderSettingDto, user: RequestUser): Promise<{
        id: string;
        estateId: string;
        provider: import(".prisma/client").$Enums.PaymentProvider;
        enabled: boolean;
        createdAt: Date;
        updatedAt: Date;
    }>;
    listSalesPartners(): Promise<{
        id: string;
        name: string;
        phone: string;
        role: import(".prisma/client").$Enums.UserRole;
        status: import(".prisma/client").$Enums.AccountStatus;
        profileLabel: string;
        partnerProfile: {
            enabled: boolean;
            commissionPercent: number;
            notes: string | null;
        };
        assignedEstates: {
            id: string;
            name: string;
            location: string;
            status: import(".prisma/client").EstateStatus;
            signupStatus: import(".prisma/client").EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").SubscriptionStatus;
        }[];
    }[]>;
    getMySalesPartnerProfile(user: RequestUser): Promise<{
        id: string;
        name: string;
        phone: string;
        role: import(".prisma/client").$Enums.UserRole;
        status: import(".prisma/client").$Enums.AccountStatus;
        profileLabel: string;
        partnerProfile: {
            enabled: boolean;
            commissionPercent: number;
            notes: string | null;
        };
        assignedEstates: {
            id: string;
            name: string;
            location: string;
            status: import(".prisma/client").EstateStatus;
            signupStatus: import(".prisma/client").EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").SubscriptionStatus;
        }[];
    }>;
    getMySalesPartnerEarnings(user: RequestUser): Promise<{
        salesAdmin: {
            id: string;
            name: string;
            phone: string;
            role: "SALES_ADMIN";
            profileLabel: string;
        };
        partnerProfile: {
            enabled: boolean;
            commissionPercent: number;
            notes: string | null;
        };
        totals: {
            confirmedPayments: number;
            totalSalesKobo: number;
            estimatedEarningsKobo: number;
            currency: string;
        };
        payments: {
            id: string;
            estateId: string;
            estate: {
                id: string;
                name: string;
                location: string;
            };
            plan: {
                name: string;
                code: string;
            };
            amountKobo: number | null;
            currency: string;
            reference: string | null;
            confirmedAt: Date | null;
        }[];
    }>;
    getSalesPartnerEarnings(salesAdminId: string, user: RequestUser): Promise<{
        salesAdmin: {
            id: string;
            name: string;
            phone: string;
            role: "SALES_ADMIN";
            profileLabel: string;
        };
        partnerProfile: {
            enabled: boolean;
            commissionPercent: number;
            notes: string | null;
        };
        totals: {
            confirmedPayments: number;
            totalSalesKobo: number;
            estimatedEarningsKobo: number;
            currency: string;
        };
        payments: {
            id: string;
            estateId: string;
            estate: {
                id: string;
                name: string;
                location: string;
            };
            plan: {
                name: string;
                code: string;
            };
            amountKobo: number | null;
            currency: string;
            reference: string | null;
            confirmedAt: Date | null;
        }[];
    }>;
    updateSalesPartnerProfile(salesAdminId: string, dto: UpdateSalesPartnerProfileDto, user: RequestUser): Promise<{
        id: string;
        name: string;
        phone: string;
        role: import(".prisma/client").$Enums.UserRole;
        status: import(".prisma/client").$Enums.AccountStatus;
        profileLabel: string;
        partnerProfile: {
            enabled: boolean;
            commissionPercent: number;
            notes: string | null;
        };
        assignedEstates: {
            id: string;
            name: string;
            location: string;
            status: import(".prisma/client").EstateStatus;
            signupStatus: import(".prisma/client").EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").SubscriptionStatus;
        }[];
    }>;
    assignEstateSalesPartner(id: string, dto: AssignEstatePartnerDto, user: RequestUser): Promise<{
        salesPartner: {
            id: string;
            name: string;
            phone: string;
            role: import(".prisma/client").$Enums.UserRole;
        } | null;
    } & {
        status: import(".prisma/client").$Enums.EstateStatus;
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        location: string;
        unitCount: number;
        estateType: string | null;
        signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
        subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
        subscriptionPlanId: string | null;
        selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
        activatedAt: Date | null;
        rejectedAt: Date | null;
        suspendedAt: Date | null;
        reviewNotes: string | null;
        settings: import("@prisma/client/runtime/library").JsonValue;
        branding: import("@prisma/client/runtime/library").JsonValue;
        salesPartnerId: string | null;
    }>;
    contactEstateAdmin(estateId: string, dto: ContactEstateAdminDto, user: RequestUser): Promise<{
        status: string;
        estate: {
            id: string;
            name: string;
        };
        recipients: {
            id: string;
            name: string;
            phone: string;
        }[];
        channel: "SMS" | "EMAIL" | "WHATSAPP" | "CALL";
    }>;
    updateEstate(id: string, dto: UpdateEstateDto, user: RequestUser): Promise<{
        status: import(".prisma/client").$Enums.EstateStatus;
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        location: string;
        unitCount: number;
        estateType: string | null;
        signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
        subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
        subscriptionPlanId: string | null;
        selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
        activatedAt: Date | null;
        rejectedAt: Date | null;
        suspendedAt: Date | null;
        reviewNotes: string | null;
        settings: import("@prisma/client/runtime/library").JsonValue;
        branding: import("@prisma/client/runtime/library").JsonValue;
        salesPartnerId: string | null;
    }>;
    listResidents(user: RequestUser, estateId?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        };
        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;
        };
    } & {
        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;
    })[]>;
    updateResident(id: string, dto: UpdateResidentDto, user: RequestUser): Promise<{
        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;
    }>;
    listGuards(user: RequestUser, estateId?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        };
        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;
        };
    } & {
        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;
    })[]>;
    updateGuard(id: string, dto: UpdateGuardDto, user: RequestUser): Promise<{
        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;
    }>;
    listVisitors(user: RequestUser, estateId?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        } | null;
    } & {
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        estateId: string | null;
        name: string;
        phone: string | null;
        createdAt: Date;
        updatedAt: Date;
        photoUrl: string | null;
        vehiclePlate: string | null;
        riskScore: number;
        flagged: boolean;
        blacklisted: boolean;
        riskNotes: string | null;
        riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
    })[]>;
    updateVisitor(id: string, dto: UpdateVisitorDto, user: RequestUser): Promise<{
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        estateId: string | null;
        name: string;
        phone: string | null;
        createdAt: Date;
        updatedAt: Date;
        photoUrl: string | null;
        vehiclePlate: string | null;
        riskScore: number;
        flagged: boolean;
        blacklisted: boolean;
        riskNotes: string | null;
        riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
    }>;
    listVisitorPasses(user: RequestUser, estateId?: string, status?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        };
        visitor: {
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string | null;
            name: string;
            phone: string | null;
            createdAt: Date;
            updatedAt: Date;
            photoUrl: string | null;
            vehiclePlate: string | null;
            riskScore: number;
            flagged: boolean;
            blacklisted: boolean;
            riskNotes: string | null;
            riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
        };
        hostResident: {
            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;
        };
    } & {
        status: import(".prisma/client").$Enums.VisitorPassStatus;
        id: string;
        estateId: string;
        createdAt: Date;
        updatedAt: Date;
        passType: import(".prisma/client").$Enums.VisitorPassType;
        validFrom: Date;
        validUntil: Date;
        maxEntries: number;
        entryCount: number;
        visitorId: string;
        hostResidentId: string;
        visitorCode: string;
        qrToken: string;
        revokedAt: Date | null;
    })[]>;
    updateVisitorPass(id: string, dto: UpdateVisitorPassDto, user: RequestUser): Promise<{
        status: import(".prisma/client").$Enums.VisitorPassStatus;
        id: string;
        estateId: string;
        createdAt: Date;
        updatedAt: Date;
        passType: import(".prisma/client").$Enums.VisitorPassType;
        validFrom: Date;
        validUntil: Date;
        maxEntries: number;
        entryCount: number;
        visitorId: string;
        hostResidentId: string;
        visitorCode: string;
        qrToken: string;
        revokedAt: Date | null;
    }>;
    listVisitSessions(user: RequestUser, estateId?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        };
        visitorPass: {
            visitor: {
                id: string;
                metadata: import("@prisma/client/runtime/library").JsonValue;
                estateId: string | null;
                name: string;
                phone: string | null;
                createdAt: Date;
                updatedAt: Date;
                photoUrl: string | null;
                vehiclePlate: string | null;
                riskScore: number;
                flagged: boolean;
                blacklisted: boolean;
                riskNotes: string | null;
                riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
            };
            hostResident: {
                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;
            };
        } & {
            status: import(".prisma/client").$Enums.VisitorPassStatus;
            id: string;
            estateId: string;
            createdAt: Date;
            updatedAt: Date;
            passType: import(".prisma/client").$Enums.VisitorPassType;
            validFrom: Date;
            validUntil: Date;
            maxEntries: number;
            entryCount: number;
            visitorId: string;
            hostResidentId: string;
            visitorCode: string;
            qrToken: string;
            revokedAt: Date | null;
        };
        guard: {
            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;
        };
        gate: {
            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.VisitSessionStatus;
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        estateId: string;
        deviceId: string | null;
        createdAt: Date;
        updatedAt: Date;
        guardId: string;
        hostResidentId: string | null;
        visitorPassId: string;
        gateId: string | null;
        visitorPhone: string | null;
        checkinTime: Date;
        checkoutTime: Date | null;
        entryGate: string | null;
        exitGate: string | null;
        offlineEventId: string | null;
        scanLocation: import("@prisma/client/runtime/library").JsonValue;
    })[]>;
    listIncidents(user: RequestUser, estateId?: string): Promise<({
        estate: {
            status: import(".prisma/client").$Enums.EstateStatus;
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            location: string;
            unitCount: number;
            estateType: string | null;
            signupStatus: import(".prisma/client").$Enums.EstateSignupStatus;
            subscriptionStatus: import(".prisma/client").$Enums.SubscriptionStatus;
            subscriptionPlanId: string | null;
            selectedPaymentProvider: import(".prisma/client").$Enums.PaymentProvider | null;
            activatedAt: Date | null;
            rejectedAt: Date | null;
            suspendedAt: Date | null;
            reviewNotes: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            branding: import("@prisma/client/runtime/library").JsonValue;
            salesPartnerId: string | null;
        };
        guard: {
            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;
        };
    } & {
        description: string;
        type: string;
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        timestamp: Date;
        estateId: string;
        guardId: string;
    })[]>;
    updateIncident(id: string, dto: UpdateIncidentDto, user: RequestUser): Promise<{
        description: string;
        type: string;
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        timestamp: Date;
        estateId: string;
        guardId: string;
    }>;
    listAuditLogs(estateId: string | undefined, user: RequestUser): Promise<{
        id: string;
        actorType: string;
        actorId: string;
        action: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        timestamp: Date;
        estateId: string | null;
    }[]>;
}
