import type { UmbDataSourceResponse } from '../data-source-response.interface.js';
import type { UmbItemDataSource } from './item-data-source.interface.js';
import { UmbControllerBase } from '../../../../libs/class-api/index.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
export interface UmbItemServerDataSourceBaseArgs<ServerItemType, ClientItemType extends {
    unique: string;
}> {
    getItems?: (uniques: Array<string>) => Promise<UmbDataSourceResponse<Array<ServerItemType>>>;
    mapper: (item: ServerItemType) => ClientItemType;
}
/**
 * A data source base for items that fetches items from the server
 * @class UmbItemServerDataSourceBase
 * @implements {DocumentTreeDataSource}
 */
export declare abstract class UmbItemServerDataSourceBase<ServerItemType, ClientItemType extends {
    unique: string;
}> extends UmbControllerBase implements UmbItemDataSource<ClientItemType> {
    #private;
    /**
     * Creates an instance of UmbItemServerDataSourceBase.
     * @param {UmbControllerHost} host - The controller host for this controller to be appended to
     * @param args
     * @memberof UmbItemServerDataSourceBase
     */
    constructor(host: UmbControllerHost, args: UmbItemServerDataSourceBaseArgs<ServerItemType, ClientItemType>);
    /**
     * Fetches the items for the given uniques from the server
     * @param {Array<string>} uniques
     * @returns {*}
     * @memberof UmbItemServerDataSourceBase
     */
    getItems(uniques: Array<string>): Promise<{
        data: ClientItemType[] | undefined;
        error: ((Error | import("../../resources/index.js").UmbApiError | import("../../resources/index.js").UmbCancelError | import("../../resources/index.js").UmbError) & (import("../../resources/index.js").UmbApiError | import("../../resources/index.js").UmbCancelError)) | undefined;
    }>;
    protected _getMappedItems(items: Array<ServerItemType> | undefined): Array<ClientItemType> | undefined;
}
