import { CollectionRequestParams, Dictionary, OrderBy } from "../base/types";
import { GetBriefcaseListUrlParams } from "./briefcase/BriefcaseOperationParams";
import { ChangesetIdOrIndex, GetChangesetListUrlParams } from "./changeset/ChangesetOperationParams";
import { GetChangesetExtendedDataListUrlParams } from "./changeset-extended-data/ChangesetExtendedDataOperationParams";
import { GetChangesetGroupListUrlParams } from "./changeset-group/ChangesetGroupOperationParams";
import { CheckpointParentEntityId } from "./checkpoint/CheckpointOperationParams";
import { GetFavoriteIModelListUrlParams } from "./favorite-imodel/FavoriteIModelOperationParams";
import { GetIModelListUrlParams } from "./imodel/IModelOperationParams";
import { GetLockListUrlParams } from "./lock/LockOperationParams";
import { GetNamedVersionListUrlParams } from "./named-version/NamedVersionOperationParams";
import { DownloadThumbnailUrlParams } from "./OperationParamExports";
import { GetRecentIModelListUrlParams } from "./recent-imodel/RecentIModelOperationParams";
type SingleOrderByForAnyEntity = OrderBy<{
    [key: string]: unknown;
}, string>;
type MultipleOrderByForAnyEntity = SingleOrderByForAnyEntity[];
type OrderByForAnyEntity = SingleOrderByForAnyEntity | MultipleOrderByForAnyEntity;
type UrlParameterValue = string | number | OrderByForAnyEntity;
export declare class IModelsApiUrlFormatter {
    protected readonly baseUrl: string;
    private readonly _regexIgnoreCaseOption;
    private readonly _groupNames;
    private readonly _numericRegex;
    private readonly _changesetUrlRegex;
    private readonly _checkpointUrlRegex;
    private readonly _namedVersionUrlRegex;
    private readonly _userUrlRegex;
    private readonly _iModelUrlRegex;
    constructor(baseUrl: string);
    getCreateIModelUrl(): string;
    getCloneIModelUrl(params: {
        iModelId: string;
    }): string;
    getForkIModelUrl(params: {
        iModelId: string;
    }): string;
    getSingleIModelUrl(params: {
        iModelId: string;
    }): string;
    getIModelListUrl(params: {
        urlParams: GetIModelListUrlParams;
    }): string;
    getSingleBriefcaseUrl(params: {
        iModelId: string;
    } & {
        briefcaseId: number;
    }): string;
    getBriefcaseListUrl(params: {
        iModelId: string;
        urlParams?: GetBriefcaseListUrlParams;
    }): string;
    getSingleChangesetUrl(params: {
        iModelId: string;
    } & ChangesetIdOrIndex): string;
    getChangesetListUrl(params: {
        iModelId: string;
        urlParams?: GetChangesetListUrlParams;
    }): string;
    getSingleChangesetExtendedDataUrl(params: {
        iModelId: string;
    } & ChangesetIdOrIndex): string;
    getChangesetExtendedDataListUrl(params: {
        iModelId: string;
        urlParams?: GetChangesetExtendedDataListUrlParams;
    }): string;
    getSingleChangesetGroupUrl(params: {
        iModelId: string;
    } & {
        changesetGroupId: string;
    }): string;
    getChangesetGroupListUrl(params: {
        iModelId: string;
        urlParams?: GetChangesetGroupListUrlParams;
    }): string;
    parseChangesetUrl(url: string): {
        iModelId: string;
    } & ChangesetIdOrIndex;
    getSingleNamedVersionUrl(params: {
        iModelId: string;
    } & {
        namedVersionId: string;
    }): string;
    getNamedVersionListUrl(params: {
        iModelId: string;
        urlParams?: GetNamedVersionListUrlParams;
    }): string;
    getCheckpointUrl(params: {
        iModelId: string;
    } & CheckpointParentEntityId): string;
    getThumbnailUrl(params: {
        iModelId: string;
        urlParams?: DownloadThumbnailUrlParams;
    }): string;
    getUserListUrl(params: {
        iModelId: string;
        urlParams?: CollectionRequestParams;
    }): string;
    getSingleUserUrl(params: {
        iModelId: string;
    } & {
        userId: string;
    }): string;
    getUserPermissionsUrl(params: {
        iModelId: string;
    }): string;
    getFavoriteIModelListUrl(params: {
        urlParams: GetFavoriteIModelListUrlParams;
    }): string;
    getFavoriteIModelUrl(params: {
        iModelId: string;
    }): string;
    getRecentIModelListUrl(params: {
        urlParams: GetRecentIModelListUrlParams;
    }): string;
    getRecentIModelUrl(params: {
        iModelId: string;
    }): string;
    getLockListUrl(params: {
        iModelId: string;
        urlParams?: GetLockListUrlParams;
    }): string;
    getReleaseLocksChunkUrl(params: {
        iModelId: string;
    }): string;
    getCreateIModelOperationDetailsUrl(params: {
        iModelId: string;
    }): string;
    parseCheckpointUrl(url: string): {
        iModelId: string;
    } & ChangesetIdOrIndex;
    parseNamedVersionUrl(url: string): {
        iModelId: string;
        namedVersionId: string;
    };
    parseUserUrl(url: string): {
        iModelId: string;
        userId: string;
    };
    parseIModelUrl(url: string): {
        iModelId: string;
    };
    protected formQueryString(urlParameters: Dictionary<UrlParameterValue> | undefined): string;
    /**
     * API could return Changeset urls that either contain id or index since both are valid identifiers
     * so here we handle both scenarios. We assume if the value contains only digits and is shorter than 40
     * symbols it is a numeric index, otherwise, it is a string id.
     */
    private parseChangesetIdOrIndex;
    private shouldAppendToUrl;
    private appendToQueryString;
    private stringify;
    private isSingleOrderBy;
    private isMultipleOrderBy;
    private stringifyOrderByParameterValue;
}
export {};
//# sourceMappingURL=IModelsApiUrlFormatter.d.ts.map