import { NullableResultPromise } from "../base-types";
import { IOptionList } from "../contracts/base/option-lists/option-list";
import OptionListDescriptionResource from "../models/option-lists/option-list-description-resource";
import { IExtendedContentHubClient } from "./extended-client";
import { CancelCallback } from "./internal-client";
export interface IOptionListClient {
    /**
     * Gets the names of all option lists that exist.
     * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
     */
    getAllNamesAsync(cancelCallback?: CancelCallback): Promise<Array<string>>;
    /**
     * Gets an array of all options list descriptions.
     * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
     */
    getAllDescriptionsAsync(cancelCallback?: CancelCallback): Promise<Array<OptionListDescriptionResource>>;
    /**
     * Gets the option list with the specified name.
     *
     * @param name - the option list name
     * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
     * @param cacheSignature - Signature of the cached resources for controlling browser caching
     */
    getAsync(name: string, cancelCallback?: CancelCallback, cacheSignature?: string): NullableResultPromise<IOptionList>;
    /**
     * Creates a new option list
     *
     * @param optionList - {@link IOptionList} - the option list instance
     * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
     */
    createAsync(optionList: IOptionList, cancelCallback?: CancelCallback): Promise<void>;
    /**
     * Update an existing option list
     *
     * @param optionList - {@link IOptionList} - the option list instance
     * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
     */
    updateAsync(optionList: IOptionList, cancelCallback?: CancelCallback): Promise<void>;
    /**
     * Delete an existing option list
     *
     * @param name - the name of the option list
     * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
     */
    deleteAsync(name: string, cancelCallback?: CancelCallback): Promise<void>;
}
export declare class OptionListClient implements IOptionListClient {
    private readonly _client;
    private readonly _mapper;
    constructor(client: IExtendedContentHubClient);
    getAllNamesAsync(cancelCallback?: CancelCallback): Promise<Array<string>>;
    getAllDescriptionsAsync(cancelCallback?: CancelCallback): Promise<Array<OptionListDescriptionResource>>;
    getAsync(name: string, cancelCallback?: CancelCallback, cacheSignature?: string): NullableResultPromise<IOptionList>;
    createAsync(optionList: IOptionList, cancelCallback?: CancelCallback): Promise<void>;
    updateAsync(optionList: IOptionList, cancelCallback?: CancelCallback): Promise<void>;
    deleteAsync(name: string, cancelCallback?: CancelCallback): Promise<void>;
}
