import { AxiosRequestConfig } from 'axios';
import { Ref } from 'vue';
import { APIConsumer } from '../../api_consumer/namespace';
import { IDetailViewApi, PrimaryKeyBaseType, DetailViewOptions } from './namespace';
export default class DetailViewApi<T = any> implements IDetailViewApi<T> {
    protected readonly baseUrl: Ref<string>;
    protected readonly trailingSlash: boolean;
    protected readonly pk?: Ref<PrimaryKeyBaseType>;
    protected readonly query?: Ref<URLSearchParams>;
    protected readonly useQueryInRetrieveOnly: boolean;
    readonly detail_url: Ref<string>;
    readonly definition_url: Ref<string>;
    readonly data_url: Ref<string>;
    constructor(options: DetailViewOptions);
    compose_url(url: string | Ref<string>, useQuery: boolean): string;
    componentDefinition: (config?: AxiosRequestConfig) => Promise<APIConsumer.FormUXDefinition>;
    /**
     * Retrieve the record.
     * @throws {AxiosError} Throws an error if the request fails.
     */
    retrieve: (config?: AxiosRequestConfig) => Promise<T>;
    /**
     * POST the record to the backend.
     * @throws {AxiosError} Throws an error if the request fails.
     */
    create: (data: T, config?: AxiosRequestConfig) => Promise<T>;
    /**
     * Update the record.
     * @throws {AxiosError} Throws an error if the request fails.
     */
    update: (data: T, config?: AxiosRequestConfig) => Promise<T>;
    /**
     * Delete the record.
     * @throws {AxiosError} Throws an error if the request fails.
     */
    delete: (config?: AxiosRequestConfig) => Promise<T>;
}
//# sourceMappingURL=detail-view-api.d.ts.map