import { HttpService } from '@nestjs/axios';
import { ConfigService } from '@nestjs/config';
import { Kysely } from 'kysely';
import { DB } from '../../database/database.type';
import { DeviceService } from '../devices/device.service';
import { AppConfig } from '../../config/configs';
import { Logger } from 'pino-nestjs';
import 'dotenv/config';
export declare const PUSH_MAX_ATTEMPTS = 3;
export declare const PUSH_RECEIPT_DELAY_MS = 30000;
export declare const EXPO_PUSH_URL: string | undefined;
export declare const EXPO_RECEIPT_URL: string | undefined;
export declare const EXPO_ANDROID_CHANNEL_ID = "furfinder-alerts";
export declare const EXPO_PUSH_TOKEN_REGEX: RegExp;
export type PushTicket = {
    status: 'ok';
    id: string;
} | {
    status: 'error';
    message: string;
    details?: {
        error?: string;
    };
};
export type PushReceipt = {
    status: 'ok';
} | {
    status: 'error';
    message: string;
    details?: {
        error?: string;
    };
};
export declare const PERMANENT_ERRORS: Set<string>;
export declare class PushService {
    private readonly httpService;
    private readonly deviceService;
    private readonly configService;
    private readonly db;
    private readonly logger;
    constructor(httpService: HttpService, deviceService: DeviceService, configService: ConfigService<AppConfig, true>, db: Kysely<DB>, logger: Logger);
    private isExpoPushToken;
    private getExpoRequestHeaders;
    clearPushToken(userId: string, pushToken: string): Promise<void>;
    checkPushReceipt(ticketId: string, userId: string, pushToken: string): Promise<void>;
    sendPushNotification(pushToken: string | null, userId: string, title: string, body: string, data?: object): Promise<void>;
}
