import { Http, HttpDefaults, HttpRequestOptions, IPathEventEmitter, PromiseProgress } from '@ztimson/utils';
/** Overall Momentum health */
export type Health = {
    /** Momentum status */
    status: 'offline' | 'ok' | 'degraded' | 'error';
    /** Actions module */
    actions: ModuleStatus;
    /** AI module */
    ai: ModuleStatus;
    /** Database module */
    database: ModuleStatus;
    /** Email module */
    email: ModuleStatus;
    /** Payments module */
    payments: ModuleStatus;
    /** Phone module */
    phone: ModuleStatus;
    /** Version number */
    version: string;
    /** Last commit */
    commit: string;
};
/** Momentum module status */
export type ModuleStatus = 'disabled' | 'ok' | 'warn' | 'error';
/** API options */
export type ApiOptions = {
    http?: HttpDefaults;
    persist?: boolean;
};
/** Create API requests */
export declare class Api extends Http implements IPathEventEmitter {
    readonly url: string;
    readonly opts: ApiOptions;
    private emitter;
    private pending;
    private storageKey;
    readonly host: string;
    get sameOrigin(): boolean;
    private _token;
    /** Current API token */
    get token(): string | null;
    set token(token: string | null);
    constructor(url?: string, opts?: ApiOptions);
    emit: (event: string | import('@ztimson/utils').PathEvent, ...args: any[]) => void;
    off: (listener: import('@ztimson/utils').PathListener) => void;
    on: (event: string | string[], listener: import('@ztimson/utils').PathListener) => import('@ztimson/utils').PathUnsubscribe;
    once: (event: string | string[], 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