import { UmbRepositoryBase } from '../repository-base.js';
import type { UmbRepositoryResponse, UmbRepositoryResponseWithAsObservable } from '../types.js';
import type { UmbDetailDataSource, UmbDetailDataSourceConstructor } from './detail-data-source.interface.js';
import type { UmbDetailRepository } from './detail-repository.interface.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
import type { UmbContextToken } from '../../../../libs/context-api/index.js';
import type { UmbApi } from '../../../../libs/extension-api/index.js';
import type { UmbEntityModel } from '../../entity/index.js';
import type { UmbDeepPartialObject } from '../../utils/index.js';
export declare abstract class UmbDetailRepositoryBase<DetailModelType extends UmbEntityModel, UmbDetailDataSourceType extends UmbDetailDataSource<DetailModelType> = UmbDetailDataSource<DetailModelType>> extends UmbRepositoryBase implements UmbDetailRepository<DetailModelType>, UmbApi {
    #private;
    protected detailDataSource: UmbDetailDataSourceType;
    constructor(host: UmbControllerHost, detailSource: UmbDetailDataSourceConstructor<DetailModelType>, detailStoreContextAlias: string | UmbContextToken<any, any>);
    /**
     * Creates a scaffold
     * @param {UmbDeepPartialObject<DetailModelType>} [preset]
     * @returns {*}
     * @memberof UmbDetailRepositoryBase
     */
    createScaffold(preset?: UmbDeepPartialObject<DetailModelType>): Promise<UmbRepositoryResponse<DetailModelType>>;
    /**
     * Requests the detail for the given unique
     * @param {string} unique
     * @returns {*}
     * @memberof UmbDetailRepositoryBase
     */
    requestByUnique(unique: string): Promise<UmbRepositoryResponseWithAsObservable<DetailModelType | undefined>>;
    /**
     * Returns a promise with an observable of the detail for the given unique
     * @param {DetailModelType} model
     * @param {string | null} [parentUnique]
     * @returns {*}
     * @memberof UmbDetailRepositoryBase
     */
    create(model: DetailModelType, parentUnique: string | null): Promise<UmbRepositoryResponse<DetailModelType>>;
    /**
     * Saves the given data
     * @param {DetailModelType} model
     * @returns {*}
     * @memberof UmbDetailRepositoryBase
     */
    save(model: DetailModelType): Promise<{
        data: DetailModelType | undefined;
        error: Error | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | import("../../resources/umb-error.js").UmbError | undefined;
    }>;
    /**
     * Deletes the detail for the given unique
     * @param {string} unique
     * @returns {*}
     * @memberof UmbDetailRepositoryBase
     */
    delete(unique: string): Promise<{
        error: Error | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | import("../../resources/umb-error.js").UmbError | undefined;
    }>;
    /**
     * Returns a promise with an observable of the detail for the given unique
     * @param {string} unique
     * @returns {*}
     * @memberof UmbDetailRepositoryBase
     */
    byUnique(unique: string): Promise<import("rxjs").Observable<DetailModelType | undefined>>;
    destroy(): void;
}
