interface HeartbeepConfig {
    siteId: string;
    apiUrl?: string;
    debug?: boolean;
}
interface TrackEventPayload {
    name?: string;
    metadata?: Record<string, any>;
}
interface TrackEventData {
    event: string;
    name?: string;
    url: string;
    timestamp: number;
    metadata?: Record<string, any>;
}
type EventType = "pageview" | "click" | "purchase" | string;

declare class Heartbeep {
    private config;
    private queue;
    private isReady;
    constructor(config: HeartbeepConfig);
    private init;
    private processQueue;
    private send;
    track(event: EventType, payload?: TrackEventPayload): void;
    pageview(name?: string): void;
    click(name: string, metadata?: Record<string, any>): void;
    purchase(name: string, metadata?: Record<string, any>): void;
}
declare function beep(event: EventType, name?: string): void;

export { type EventType, Heartbeep, type HeartbeepConfig, type TrackEventData, type TrackEventPayload, beep };
