import { DeliveryStatus } from '../entities';
export declare const WEBHOOK_EVENTS: readonly ["user.created", "user.updated", "user.deleted", "subscription.created", "subscription.updated", "subscription.cancelled", "invoice.paid", "invoice.failed", "file.uploaded", "file.deleted", "tenant.updated"];
export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];
export declare class CreateWebhookDto {
    name: string;
    description?: string;
    url: string;
    events: string[];
    headers?: Record<string, string>;
}
export declare class UpdateWebhookDto {
    name?: string;
    description?: string;
    url?: string;
    events?: string[];
    headers?: Record<string, string>;
    isActive?: boolean;
}
export declare class WebhookResponseDto {
    id: string;
    name: string;
    description: string | null;
    url: string;
    events: string[];
    headers: Record<string, string>;
    isActive: boolean;
    createdAt: Date;
    updatedAt: Date;
    stats?: WebhookStatsDto;
}
export declare class WebhookStatsDto {
    totalDeliveries: number;
    successfulDeliveries: number;
    failedDeliveries: number;
    pendingDeliveries: number;
    successRate: number;
    lastDeliveryAt: Date | null;
}
export declare class DeliveryResponseDto {
    id: string;
    webhookId: string;
    eventType: string;
    payload: Record<string, any>;
    status: DeliveryStatus;
    responseStatus: number | null;
    responseBody: string | null;
    attempt: number;
    maxAttempts: number;
    nextRetryAt: Date | null;
    lastError: string | null;
    createdAt: Date;
    deliveredAt: Date | null;
}
export declare class TestWebhookDto {
    eventType?: string;
    payload?: Record<string, any>;
}
export declare class ListDeliveriesQueryDto {
    status?: DeliveryStatus;
    eventType?: string;
    page?: number;
    limit?: number;
}
export declare class PaginatedDeliveriesDto {
    items: DeliveryResponseDto[];
    total: number;
    page: number;
    limit: number;
    totalPages: number;
}
export declare class AvailableEventsDto {
    events: {
        name: string;
        description: string;
    }[];
}
