import { XhrModule } from "./xhr";
import { UserModule } from "./user";
import { MetadataModule } from "./metadata";
import { ExecutionModule } from "./execution";
import { ProjectModule } from "./project";
import { ReportModule } from "./report/report";
import { DashboardModule } from "./dashboard/dashboard";
import { IConfigStorage, ConfigModule } from "./config";
import { CatalogueModule } from "./catalogue";
import { LdmModule } from "./ldm";
import { ReferenceConverter } from "./referenceHandling";
import { MetadataModuleExt } from "./metadataExt";
import { BootstrapModule } from "./bootstrap";
/**
 * # JS SDK
 * Here is a set of functions that mostly are a thin wraper over the [GoodData API](https://developer.gooddata.com/api).
 * Before calling any of those functions, you need to authenticate with a valid GoodData
 * user credentials. After that, every subsequent call in the current session is authenticated.
 * You can find more about the GD authentication mechanism here.
 *
 * ## GD Authentication Mechansim
 * In this JS SDK library we provide you with a simple `login(username, passwd)` function
 * that does the magic for you.
 * To fully understand the authentication mechansim, please read
 * [Authentication via API article](http://developer.gooddata.com/article/authentication-via-api)
 * on [GoodData Developer Portal](http://developer.gooddata.com/)
 *
 * @module sdk
 * @class sdk
 */
export declare class SDK {
    private fetchMethod;
    config: ConfigModule;
    xhr: XhrModule;
    user: UserModule;
    md: MetadataModule;
    mdExt: MetadataModuleExt;
    execution: ExecutionModule;
    project: ProjectModule;
    report: ReportModule;
    dashboard: DashboardModule;
    catalogue: CatalogueModule;
    bootstrap: BootstrapModule;
    ldm: LdmModule;
    configStorage: IConfigStorage;
    utils: {
        loadAttributesMap: any;
        getAttributesDisplayForms: any;
        convertReferencesToUris: ReferenceConverter;
        convertUrisToReferences: ReferenceConverter;
    };
    constructor(fetchMethod: typeof fetch, config?: {});
    clone(): SDK;
}
/**
 * # Factory for creating SDK instances
 *
 * @param {object|null} config object to be passed to SDK constructor
 * @method setCustomDomain
 */
export declare const factory: (fetchMethod: typeof fetch) => (config?: {}) => SDK;
