import { UmbControllerBase } from '../../../../../../libs/class-api/index.js';
import type { UmbEntityModel } from '../../../../entity/index.js';
export declare class UmbTargetPaginationManager<ItemModelType extends UmbEntityModel = UmbEntityModel> extends UmbControllerBase {
    #private;
    readonly takeSize: import("rxjs").Observable<number>;
    readonly totalItems: import("rxjs").Observable<number>;
    readonly totalPrevItems: import("rxjs").Observable<number>;
    readonly totalNextItems: import("rxjs").Observable<number>;
    /**
     * Gets the target that the pagination is based around
     * @returns {UmbEntityModel | undefined} - The target item that the pagination is based around
     * @memberof UmbTargetPaginationManager
     */
    getBaseTarget(): UmbEntityModel | undefined;
    /**
     * Set the target that the pagination will be based around
     * @param {(UmbEntityModel | undefined)} target - The target
     * @memberof UmbTargetPaginationManager
     */
    setBaseTarget(target: UmbEntityModel | undefined): void;
    /**
     * Gets a new baseTarget from the already loaded items
     * @returns {UmbEntityModel | undefined} - The new target item or undefined if no new target could be found
     * @memberof UmbTargetPaginationManager
     */
    getNewBaseTarget(): UmbEntityModel | undefined;
    /**
     * Checks if the Base Target is part of the current items
     * @returns {boolean} True if the Base Target is in the current items, false otherwise
     * @memberof UmbTargetPaginationManager
     */
    hasBaseTargetInCurrentItems(): boolean;
    /**
     * Gets the number of items per page
     * @returns {number}
     * @memberof UmbPaginationManager
     */
    getTakeSize(): number;
    /**
     * Sets the number of items per page and recalculates the total number of pages
     * @param {number} pageSize
     * @memberof UmbPaginationManager
     */
    setTakeSize(pageSize: number): void;
    /**
     * Gets the items currently used in the pagination calculations.
     * @returns {Array<ItemModelType>} - The current items that are part of the paging
     * @memberof UmbTargetPaginationManager
     */
    getCurrentItems(): Array<ItemModelType>;
    /**
     * Sets the items that will be used in the pagination manager. The items will be used to calculate start and end targets.
     * @param {Array<ItemModelType>} items - The items to set
     * @memberof UmbTargetPaginationManager
     */
    setCurrentItems(items: Array<ItemModelType>): void;
    /**
     * Prepend more items to the manager. Use when more items before the base target has been loaded.
     * @param {Array<ItemModelType>} items - The items to prepend
     * @memberof UmbTargetPaginationManager
     */
    prependCurrentItems(items: Array<ItemModelType>): void;
    /**
     * Append more items to the manager. Use when more item after the base target has been loaded.
     * @param {Array<ItemModelType>} items - The items to append
     * @returns {void}
     * @memberof UmbTargetPaginationManager
     */
    appendCurrentItems(items: Array<ItemModelType>): void;
    /**
     * Removes an item from the current items
     * @param {UmbEntityModel} entity
     * @memberof UmbTargetPaginationManager
     */
    removeFromCurrentItems(entity: UmbEntityModel): void;
    /**
     * Gets the total number of items
     * @returns {number}
     * @memberof UmbPaginationManager
     */
    getTotalItems(): number;
    /**
     * Sets the total number of items and recalculates the total number of pages
     * @param {number} totalItems
     * @memberof UmbPaginationManager
     */
    setTotalItems(totalItems: number): void;
    /**
     * Gets the first target of the current item. Use for loading more items before the base target
     * @returns {UmbEntityModel} - The target item to load more items before
     * @memberof UmbTargetPaginationManager
     */
    getStartTarget(): UmbEntityModel;
    /**
     * Gets a new start target for the current item. Use for loading more items before the base target
     * @returns {UmbEntityModel | undefined} - The target item to load more items before
     * @memberof UmbTargetPaginationManager
     */
    getNewStartTarget(): UmbEntityModel | undefined;
    /**
     * Gets the last target of the current items. Use for load more items after the base target
     * @returns {UmbEntityModel} - The target item to load more items before
     * @memberof UmbTargetPaginationManager
     */
    getEndTarget(): UmbEntityModel;
    /**
     * Gets a new end target for the current item. Use for loading more items after the base target
     * @returns {UmbEntityModel | undefined} - The target item to load more items after
     * @memberof UmbTargetPaginationManager
     */
    getNewEndTarget(): UmbEntityModel | undefined;
    setTotalItemsBeforeStartTarget(totalItems: number | undefined): void;
    setTotalItemsAfterEndTarget(totalItems: number | undefined): void;
    /**
     * Gets the number of current items before the target
     * @returns {number} - The number of items
     * @memberof UmbTargetPaginationManager
     */
    getNumberOfCurrentItemsBeforeBaseTarget(): number;
    /**
     * Gets the number of current items after the target
     * @returns {number} - The number of items
     * @memberof UmbTargetPaginationManager
     */
    getNumberOfCurrentItemsAfterBaseTarget(): number;
    /**
     * Clears the pagination manager values and resets them to their default values
     * @memberof UmbPaginationManager
     */
    clear(): void;
}
