export interface AdminUserSummary {
    id: number;
    email: string;
    name: string;
    role: "admin" | "user";
    status: "active" | "blocked" | "pending_deletion";
    email_verified: boolean;
    access_type: "google" | "password" | "mixed";
    avatar_url: string | null;
    created_at: string;
    product_count: number;
    expiring_count: number;
    expired_count: number;
    last_product_at: string | null;
}
export interface AdminPlatformSummary {
    total_users: number;
    admin_users: number;
    regular_users: number;
    blocked_users: number;
    total_products: number;
    products_expiring_soon: number;
    expired_products: number;
    users_with_products: number;
    recent_users: AdminUserSummary[];
}
export interface AdminUserDetail extends AdminUserSummary {
    active_count: number;
    recent_products: Array<{
        id: number;
        name: string;
        brand: string;
        category: string;
        warranty_end_date: string;
        created_at: string;
    }>;
}
export interface AdminAuditEntry {
    id: number;
    actor_user_id: number | null;
    actor_name: string | null;
    actor_email: string | null;
    target_user_id: number | null;
    target_name: string | null;
    target_email: string | null;
    action: string;
    details: Record<string, unknown>;
    created_at: string;
}
export interface AdminAppLogEntry {
    id: number;
    level: "info" | "warning" | "error";
    source: string;
    message: string;
    details: Record<string, unknown>;
    created_at: string;
}
export interface AdminEmailOutboxEntry {
    id: number;
    user_id: number | null;
    recipient: string;
    subject: string;
    body: string;
    status: "pending" | "sent" | "failed";
    created_at: string;
    sent_at: string | null;
}
export interface AdminPublicReviewEntry {
    id: number;
    user_id: number;
    user_name: string;
    user_email: string;
    incident_number: string;
    title: string;
    store_label: string;
    brand_label: string;
    product_name: string;
    rating: number;
    notes: string;
    share_public_rating: boolean;
    updated_at: string;
}
export interface AdminIncidentEntry {
    id: number;
    incident_number: string;
    title: string;
    status: string;
    incident_type: string;
    user_id: number;
    user_name: string;
    user_email: string;
    product_name: string;
    product_brand: string;
    product_model: string;
    user_rating: number | null;
    share_public_rating: boolean;
    attachment_count: number;
    media_count: number;
    updated_at: string;
}
export interface AdminIncidentDetail extends AdminIncidentEntry {
    product_id: number;
    product_status: string;
    product_days_remaining: number;
    description: string;
    symptom: string;
    accessories: string;
    sat_name: string;
    sat_reference: string;
    diagnosis: string;
    technician_notes: string;
    estimated_cost: string | null;
    resolution: string;
    replaced_with_new: boolean;
    replaced_with_refurbished: boolean;
    closed_at: string | null;
    created_at: string;
    attachments: Array<{
        id: number;
        file_url: string;
        file_name: string;
        mime_type: string;
        caption: string;
        sort_order: number;
        created_at: string;
    }>;
    media: Array<{
        id: number;
        file_url: string;
        file_name: string;
        mime_type: string;
        caption: string;
        sort_order: number;
        created_at: string;
    }>;
}
export interface AdminPublicReviewFilters {
    search?: string;
    sharePublicRating?: boolean;
    page: number;
    pageSize: number;
}
export interface PaginatedResult<T> {
    items: T[];
    total: number;
    page: number;
    pageSize: number;
    totalPages: number;
}
export interface AdminUserFilters {
    search?: string;
    role?: "admin" | "user";
    status?: "active" | "blocked" | "pending_deletion";
    emailVerified?: boolean;
    accessType?: "google" | "password" | "mixed";
    page: number;
    pageSize: number;
}
export interface AdminIncidentFilters {
    search?: string;
    status?: string;
    page: number;
    pageSize: number;
}
export interface AdminAuditFilters {
    search?: string;
    action?: "user.role.update" | "user.status.update" | "user.deletion.cancel" | "user.delete";
    from?: string;
    to?: string;
    page: number;
    pageSize: number;
}
export interface AdminAppLogFilters {
    search?: string;
    level?: "info" | "warning" | "error";
    source?: string;
    from?: string;
    to?: string;
    page: number;
    pageSize: number;
}
export interface AdminEmailOutboxFilters {
    search?: string;
    status?: "pending" | "sent" | "failed";
    page: number;
    pageSize: number;
}
export interface AdminSystemHealth {
    api: {
        status: "ok";
        nodeEnv: string;
        uptimeSeconds: number;
        version: string;
    };
    database: {
        status: "ok" | "error";
        migrations: number;
    };
    storage: {
        status: "ok" | "error";
        root: string;
        receiptsPath: string;
        receiptFiles: number;
    };
    security: {
        jwtSecretConfigured: boolean;
        jwtSecretLooksDefault: boolean;
        googleOAuthConfigured: boolean;
        smtpConfigured: boolean;
        smtpAuthenticated: boolean;
        smtpLastError: string | null;
        smtpLastErrorAt: string | null;
    };
    maintenance: {
        pendingPurgeUsers: number;
        expiredEmailVerificationTokens: number;
        expiredPasswordResetTokens: number;
        expiredAccountDeletionTokens: number;
        expiredAppLogs: number;
        expiredAdminAuditEntries: number;
        warrantyReminderCandidates: number;
        failedEmailOutbox: number;
        pendingEmailOutbox: number;
        pushSubscriptions: number;
        pushDeliveryFailures: number;
        appLogRetentionDays: number;
        adminAuditRetentionDays: number;
        warrantyReminderDays: number[];
        notificationEmailBatchLimit: number;
    };
}
export declare function getAdminSummary(): Promise<AdminPlatformSummary>;
export declare function listAdminUsers(filters: AdminUserFilters): Promise<PaginatedResult<AdminUserSummary>>;
export declare function getAdminUserDetail(id: number): Promise<AdminUserDetail | null>;
export declare function updateAdminUserRole(actorUserId: number, targetUserId: number, role: "admin" | "user"): Promise<AdminUserSummary | null>;
export declare function updateAdminUserStatus(actorUserId: number, targetUserId: number, status: "active" | "blocked" | "pending_deletion"): Promise<AdminUserSummary | null>;
export declare function deleteAdminUser(actorUserId: number, targetUserId: number): Promise<boolean>;
export declare function listAdminPublicReviews(filters: AdminPublicReviewFilters): Promise<PaginatedResult<AdminPublicReviewEntry>>;
export declare function listAdminIncidents(filters: AdminIncidentFilters): Promise<PaginatedResult<AdminIncidentEntry>>;
export declare function getAdminIncidentDetail(id: number): Promise<AdminIncidentDetail | null>;
export declare function setAdminPublicReviewVisibility(actorUserId: number, reviewId: number, sharePublicRating: boolean): Promise<AdminPublicReviewEntry | null>;
export declare function listAdminAuditLog(filters: AdminAuditFilters): Promise<PaginatedResult<AdminAuditEntry>>;
export declare function exportAdminUsersCsv(): Promise<string>;
export declare function exportAdminMetricsCsv(): Promise<string>;
export declare function getAdminSystemHealth(): Promise<AdminSystemHealth>;
export declare function retryAdminEmailOutbox(id: number): Promise<boolean | null>;
export declare function listAdminAppLogs(filters: AdminAppLogFilters): Promise<PaginatedResult<AdminAppLogEntry>>;
export declare function purgeAdminAppLogs(before: string): Promise<number>;
export declare function listAdminEmailOutbox(filters: AdminEmailOutboxFilters): Promise<PaginatedResult<AdminEmailOutboxEntry>>;
//# sourceMappingURL=admin.service.d.ts.map