import { Http, HttpRequestOptions, IPathEventEmitter, PromiseProgress } from '@ztimson/utils';
import { Momentum } from './momentum';
/** Overall Momentum health */
export type Health = {
    /** Momentum status */
    readonly status: 'offline' | 'ok' | 'degraded' | 'error';
    /** Actions module */
    readonly actions: ModuleStatus;
    /** AI module */
    readonly ai: ModuleStatus;
    /** Database module */
    readonly database: ModuleStatus;
    /** Email module */
    readonly email: ModuleStatus;
    /** Payments module */
    readonly payments: ModuleStatus;
    /** Phone module */
    readonly phone: ModuleStatus;
    /** WebRTC TURN server */
    readonly webrtc: ModuleStatus;
    /** Version number */
    readonly version: string;
    /** Last commit */
    readonly commit: string;
    /** Cluster nodes */
    readonly cluster?: string[];
    /** Uptime in seconds */
    readonly uptime?: number;
};
/** Momentum module status */
export type ModuleStatus = 'disabled' | 'ok' | 'warn' | 'error';
/** Create API requests */
export declare class Api extends Http implements IPathEventEmitter {
    private momentum;
    private emitter;
    private pending;
    private storageKey;
    get sameOrigin(): boolean;
    private _token;
    /** Current API token */
    get token(): string | null;
    set token(token: string | null);
    constructor(momentum: Momentum);
    emit: (event: import('@ztimson/utils').Event, ...args: any[]) => void;
    off: (listener: import('@ztimson/utils').PathListener) => void;
    on: (event: import('@ztimson/utils').Event | import('@ztimson/utils').Event[], listener: import('@ztimson/utils').PathListener) => import('@ztimson/utils').PathUnsubscribe;
    once: (event: import('@ztimson/utils').Event | import('@ztimson/utils').Event[], listener?: import('@ztimson/utils').PathListener) => Promise<any>;
    relayEvents: (emitter: IPathEventEmitter) => void;
    /**
     * Fetch current Momentum status
     * @return {Promise<Health>}
     */
    healthcheck(): Promise<Health>;
    /**
     * Create API request
     * @param {HttpRequestOptions} options Request options
     * @return {Promise} Response
     */
    request<T>(options: HttpRequestOptions): PromiseProgress<T>;
}
//# sourceMappingURL=api.d.ts.map