import { ApiOptions, HeaderFactories, HttpRequestRetryPolicy, RecursiveRequired, RestClient } from "./base/types";
import { BriefcaseOperations, ChangesetOperations, IModelOperations, NamedVersionOperations, OperationOperations, ThumbnailOperations, UserOperations, UserPermissionOperations } from "./operations";
import { ChangesetExtendedDataOperations } from "./operations/changeset-extended-data/ChangesetExtendedDataOperations";
import { ChangesetGroupOperations } from "./operations/changeset-group/ChangesetGroupOperations";
import { CheckpointOperations } from "./operations/checkpoint/CheckpointOperations";
import { OperationOptions } from "./operations/OperationOptions";
/** User-configurable iModels client options. */
export interface IModelsClientOptions {
    /**
     * Rest client that is used for making HTTP requests. If `undefined` the default client is used which is implemented
     * using `axios` library. See {@link AxiosRestClient}.
     */
    restClient?: RestClient;
    /** iModels API options. See {@link ApiOptions}. */
    api?: ApiOptions;
    /** Additional headers to add to each request. See {@link HeaderFactories}. */
    headers?: HeaderFactories;
    /**
     * Retry policy that is used with {@link AxiosRestClient} when HTTP request sending fails.
     * If `undefined` the default implementation is used with exponential backoff algorithm
     * (3 retries with incremental sleep durations of 300ms, 900ms and 2700ms).
     * See {@link AxiosRetryPolicy} and {@link ExponentialBackoffAlgorithm}.
     */
    retryPolicy?: HttpRequestRetryPolicy;
}
/**
 * iModels API client for iModel management workflows. For more information on the API visit the
 * {@link https://developer.bentley.com/apis/imodels-v2/ iModels API documentation page}.
 */
export declare class IModelsClient {
    protected _operationsOptions: OperationOptions;
    /**
     * Class constructor.
     * @param {iModelsClientOptions} options client options. If `options` are `undefined` or if some of the properties
     * are `undefined` the client uses defaults. See {@link iModelsClientOptions}.
     */
    constructor(options?: IModelsClientOptions);
    /** iModel operations. See {@link iModelOperations}. */
    get iModels(): IModelOperations<OperationOptions>;
    /** Briefcase operations. See {@link BriefcaseOperations}. */
    get briefcases(): BriefcaseOperations<OperationOptions>;
    /** Changeset operations. See {@link ChangesetOperations}. */
    get changesets(): ChangesetOperations<OperationOptions>;
    /** Changeset Extended Data operations. See {@link ChangesetExtendedDataOperations}. */
    get changesetExtendedData(): ChangesetExtendedDataOperations<OperationOptions>;
    /** Changeset Group operations. See {@link ChangesetGroupOperations}. */
    get changesetGroups(): ChangesetGroupOperations<OperationOptions>;
    /** Named version operations. See {@link NamedVersionOperations}. */
    get namedVersions(): NamedVersionOperations<OperationOptions>;
    /** Checkpoint operations. See {@link CheckpointOperations}. */
    get checkpoints(): CheckpointOperations<OperationOptions>;
    /** Thumbnail operations. See {@link ThumbnailOperations}. */
    get thumbnails(): ThumbnailOperations<OperationOptions>;
    /** User operations. See {@link UserOperations}. */
    get users(): UserOperations<OperationOptions>;
    /** User Permission operations. See {@link UserPermissionOperations}. */
    get userPermissions(): UserPermissionOperations<OperationOptions>;
    /** Operation operations. See {@link OperationOperations}. */
    get operations(): OperationOperations<OperationOptions>;
    private static fillManagementClientConfiguration;
    protected static fillApiConfiguration(apiOptions: ApiOptions | undefined): RecursiveRequired<ApiOptions>;
}
//# sourceMappingURL=IModelsClient.d.ts.map