import type { AccessTokenCallback, ApiOptions } from "./base/interfaces/CommonInterfaces";
import type { RecursiveRequired } from "./base/interfaces/UtilityTypes";
import type { RestClient } from "./base/rest/RestClient";
import { RuleOperations } from "./operations/rule/RuleOperations";
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 { SchemaOperations } from "./operations/schema/SchemaOperations";
import type { OperationOptions } from "./operations/OperationOptions";
import type { AuthorizationCallback } from "@itwin/imodels-client-management";
/** User-configurable Property Validation client options. */
export interface PropertyValidationClientOptions {
    /**
     * 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;
    /** Property Validation API options. See {@link ApiOptions}. */
    api?: ApiOptions;
}
/**
 * Property Validation API client for property validation workflows. For more information on the API visit the
 * {@link https://developer.bentley.com/apis/validation/ Property Validation API documentation page}.
 */
export declare class PropertyValidationClient {
    protected _operationsOptions: OperationOptions;
    templateId: string;
    ruleId: string;
    testId: string;
    runId: string;
    resultId: string;
    /**
     * Class constructor.
     * @param {PropertyValidationClientOptions} options client options. If `options` are `undefined` or if some of the properties
     * are `undefined` the client uses defaults. See {@link PropertyValidationClientOptions}.
     */
    constructor(options?: PropertyValidationClientOptions, accessTokenCallback?: AccessTokenCallback);
    /** Template operations. See {@link TemplateOperations}. */
    get templates(): TemplateOperations<OperationOptions>;
    /** Rule operations. See {@link RuleOperations}. */
    get rules(): RuleOperations<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>;
    /** Schema operations. See {@link SchemaOperations}. */
    get schema(): SchemaOperations<OperationOptions>;
    /**
     * Creates a required configuration instance from user provided options and applying default ones for not specified
     * options. See {@link PropertyValidationClientOptions}.
     * @param {PropertyValidationClientOptions} options user-passed client options.
     * @returns {RecursiveRequired<PropertyValidationClientOptions>} required Property Validation client configuration options.
     */
    static fillConfiguration(options?: PropertyValidationClientOptions): RecursiveRequired<PropertyValidationClientOptions>;
    static toAuthorizationCallback(accessToken: string): AuthorizationCallback;
}
//# sourceMappingURL=PropertyValidationClient.d.ts.map