import { AxiosInstance } from 'axios';
import { FrappeAuth } from '..';
import { FrappeCall } from '../call';
import { FrappeDB } from '../db';
import { FrappeFileUpload } from '../file';
import { TokenParams } from './types';
export declare class FrappeApp {
    /** URL of the Frappe instance */
    readonly url: string;
    /** Name of the Frappe App instance */
    readonly name: string;
    /** Axios instance */
    readonly axios: AxiosInstance;
    /** Whether to use token based auth */
    readonly useToken: boolean;
    /** Function that returns the token to be used for authentication */
    readonly token?: () => string;
    /** Type of token to be used for authentication */
    readonly tokenType?: 'Bearer' | 'token';
    /** Custom Headers to be passed in each request */
    readonly customHeaders?: object;
    constructor(url: string, tokenParams?: TokenParams, name?: string, customHeaders?: object);
    /** Returns a FrappeAuth object for the app */
    auth(): FrappeAuth;
    /** Returns a FrappeDB object for the app */
    db(): FrappeDB;
    /** Returns a FrappeFileUpload object for the app */
    file(): FrappeFileUpload;
    /** Returns a FrappeCall object for the app */
    call(): FrappeCall;
}
