import type { UmbDetailRepository } from './detail/detail-repository.interface.js';
import type { UmbControllerHost } from '../../../libs/controller-api/index.js';
import { type Observable } from '../../../libs/observable-api/index.js';
import { UmbControllerBase } from '../../../libs/class-api/index.js';
interface UmbRepositoryRequestStatus {
    state: {
        type: 'success' | 'error' | 'loading';
        error?: string;
    };
    unique: string;
}
/**
 * @export
 * @class UmbRepositoryDetailsManager
 * @augments {UmbControllerBase}
 * @template DetailType
 */
export declare class UmbRepositoryDetailsManager<DetailType extends {
    unique: string;
}> extends UmbControllerBase {
    #private;
    repository?: UmbDetailRepository<DetailType>;
    get init(): Promise<unknown>;
    uniques: Observable<DetailType["unique"][]>;
    entries: Observable<DetailType[]>;
    statuses: Observable<UmbRepositoryRequestStatus[]>;
    /**
     * Creates an instance of UmbRepositoryDetailsManager.
     * @param {UmbControllerHost} host - The host for the controller.
     * @param {string} repository - The alias of the repository to use.
     * @memberof UmbRepositoryDetailsManager
     */
    constructor(host: UmbControllerHost, repository: UmbDetailRepository<DetailType> | string);
    /**
     * Clear the manager
     * @memberof UmbRepositoryDetailsManager
     */
    clear(): void;
    /**
     * Get the uniques in the manager
     * @returns {Array<string>} - The uniques in the manager.
     * @memberof UmbRepositoryDetailsManager
     */
    getUniques(): Array<string>;
    /**
     * Set the uniques in the manager
     * @param {(string[] | undefined)} uniques
     * @memberof UmbRepositoryDetailsManager
     */
    setUniques(uniques: Array<string> | undefined): void;
    /**
     * Add a unique to the manager
     * @param {string} unique
     * @memberof UmbRepositoryDetailsManager
     */
    addUnique(unique: string): void;
    /**
     * Add an entry to the manager
     * @param {DetailType} data
     * @memberof UmbRepositoryDetailsManager
     */
    addEntry(data: DetailType): void;
    /**
     * Get all entries in the manager
     * @returns {Array<DetailType>} - The entries in the manager.
     * @memberof UmbRepositoryDetailsManager
     */
    getEntries(): Array<DetailType>;
    /**
     * Get an entry observable by unique
     * @param {string} unique
     * @returns {Observable<DetailType | undefined>} - The entry observable.
     * @memberof UmbRepositoryDetailsManager
     */
    entryByUnique(unique: string): Observable<DetailType | undefined>;
    destroy(): void;
}
export {};
