import type { AppDebugOptions } from '../schemas/app';
import type { Database } from '../types/supabase.types';
export declare function markSnag(channel: string, orgId: string, apikey: string, event: string, appId?: string, icon?: string, tags?: Record<string, string | number | boolean>): Promise<void>;
export declare function cancelCommand(channel: string, command: boolean | symbol, orgId: string, apikey: string): Promise<void>;
interface Order {
    key: string;
    sortable?: 'asc' | 'desc';
}
interface QueryStats {
    appId: string;
    devicesId?: string[];
    search?: string;
    order?: Order[];
    rangeStart?: string;
    rangeEnd?: string;
    limit?: number;
}
interface LogData {
    app_id: string;
    device_id: string;
    action: Database['public']['Enums']['stats_action'];
    version_id: number;
    version?: number;
    created_at: string;
}
export declare function getStats(apikey: string, query: QueryStats, after: string | null, signal?: AbortSignal): Promise<LogData[]>;
export interface WaitLogOptions {
    deviceId?: string;
    lookbackMs?: number;
    pollMs?: number;
    now?: Date;
    waitForSkip?: (signal: AbortSignal) => Promise<void>;
    spinner?: {
        start: (message: string) => void;
        stop: (message?: string) => void;
    };
    logInfo?: (message: string) => void;
    sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
}
export declare function waitLog(channel: string, apikey: string, appId: string, orgId: string, options?: WaitLogOptions): Promise<{
    skipped: boolean;
}>;
export declare function debugApp(appId: string, options: AppDebugOptions): Promise<void>;
export {};
