import type { AccessTokenCallback, ApiOptions } from "./base/interfaces/CommonInterfaces";
import type { RecursiveRequired } from "./base/interfaces/UtilityTypes";
import type { RestClient } from "./base/rest/RestClient";
import { IModelOperations } from "./operations/imodel/IModelOperations";
import { SuppressionRuleOperations } from "./operations/suppressionRule/SuppressionRuleOperations";
import { RunOperations } from "./operations/run/RunOperations";
import { ResultOperations } from "./operations/result/ResultOperations";
import { TestOperations } from "./operations/test/TestOperations";
import { TemplateOperations } from "./operations/template/TemplateOperations";
import type { OperationOptions } from "./operations/OperationOptions";
import type { AuthorizationCallback } from "@itwin/imodels-client-management";
/** User-configurable Clash Detection client options. */
export interface ClashDetectionClientOptions {
    /**
     * 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;
    /** Clash Detection API options. See {@link ApiOptions}. */
    api?: ApiOptions;
}
/**
 * Clash Detection API client for clash detection workflows. For more information on the API visit the
 * {@link https://developer.bentley.com/apis/clash-detection/ Clash Detection API documentation page}.
 */
export declare class ClashDetectionClient {
    protected _operationsOptions: OperationOptions;
    templateId: string;
    ruleId: string;
    testId: string;
    runId: string;
    resultId: string;
    /**
     * Class constructor.
     * @param {ClashDetectionClientOptions} options client options. If `options` are `undefined` or if some of the properties
     * are `undefined` the client uses defaults. See {@link ClashDetectionClientOptions}.
     */
    constructor(options?: ClashDetectionClientOptions, accessTokenCallback?: AccessTokenCallback);
    /** Template operations. See {@link TemplateOperations}. */
    get templates(): TemplateOperations<OperationOptions>;
    /** Suppression Rule operations. See {@link SuppressionRuleOperations}. */
    get rules(): SuppressionRuleOperations<OperationOptions>;
    /** Test operations. See {@link TestOperations}. */
    get tests(): TestOperations<OperationOptions>;
    /** Run operations. See {@link RunOperations}. */
    get runs(): RunOperations<OperationOptions>;
    /** Result operations. See {@link ResultOperations}. */
    get results(): ResultOperations<OperationOptions>;
    /** IModel operations. See {@link IModelOperations}. */
    get imodel(): IModelOperations<OperationOptions>;
    /**
     * Creates a required configuration instance from user provided options and applying default ones for not specified
     * options. See {@link ClashDetectionClientOptions}.
     * @param {ClashDetectionClientOptions} options user-passed client options.
     * @returns {RecursiveRequired<ClashDetectionClientOptions>} required Clash Detection client configuration options.
     */
    static fillConfiguration(options?: ClashDetectionClientOptions): RecursiveRequired<ClashDetectionClientOptions>;
    static toAuthorizationCallback(accessToken: string): AuthorizationCallback;
}
//# sourceMappingURL=ClashDetectionClient.d.ts.map