import React from 'react';
import { Generic } from '@workday/canvas-kit-react/common';
import { Item } from './useBaseListModel';
type NavigationInput = Pick<ReturnType<typeof useCursorListModel>, 'state'>;
/**
 * The list and grid models accept a `navigation` config. If one is not provided, a default will be
 * chosen. It is possible to create a custom navigation manager to hand to the model if the default
 * doesn't work.
 */
export interface NavigationManager {
    /** Get the first item in a collection. This will be called when the `Home` key is pressed for
     * Lists and `Ctrl+Home` for Grids. */
    getFirst: NavigationRequestor;
    /** Get the last item in a collection. This will be called when the `End` key is pressed for Lists
     * and `Ctrl+End` for Grids. */
    getLast: NavigationRequestor;
    /** Get an item with the provided `id`. */
    getItem: (id: string, model: NavigationInput) => Item<Generic> | undefined;
    /** Get the next item after the provided `id`. This will be called when the `Right` arrow key is
     * pressed for RTL languages and when the `Left` arrow is pressed for LTR languages. */
    getNext: NavigationRequestor;
    /** **For Grids:** Get the cell in the next row from the provided `id`. This will be called when
     * the `Down` arrow is pressed.  */
    getNextRow: NavigationRequestor;
    /** Get the previous item before the provided `id`. This will be called when the `Left` arrow key
     * is pressed for RTL languages and when the `Right` arrow is pressed for LTR languages. */
    getPrevious: NavigationRequestor;
    /** **For Grids:** Get the cell in the previous row from the provided `id`. This will be called
     * when the `Up` arrow is pressed.  */
    getPreviousRow: NavigationRequestor;
    /** **For Grids:** Get the first item in a row. This will be called when the `Home` key is
     * pressed. */
    getFirstOfRow: NavigationRequestor;
    /** **For Grids:** Get the last item in a row. This will be called when the `End` key is
     * pressed. */
    getLastOfRow: NavigationRequestor;
    /** Get the next "page". A "page" is application specific and usually means next visible screen.
     * If the viewport is scrollable, it would scroll so that the last item visible is now the first
     * item visible. This is called when the `PageDown` key is pressed */
    getNextPage: NavigationRequestor;
    /** Get the next "page". A "page" is application specific and usually means previous visible
     * screen. If the viewport is scrollable, it would scroll so that the first item visible is now
     * the last item visible. This is called when the `PageUp` key is pressed */
    getPreviousPage: NavigationRequestor;
}
/**
 * Factory function that does type checking to create navigation managers. Navigation managers
 * are expected to handle all methods of a grid. If your use-case isn't meant to handle a grid,
 * pick one of the existing navigation managers and override the methods you wish to implement.
 *
 * For example,
 * ```tsx
 * import {createNavigationManager, wrappingNavigationManager} from '@workday/canvas-kit-react/collection'
 *
 * const navigationManager = createNavigationManager({
 *   ...wrappingNavigationManager,
 *   getNext(id, {state}) {
 *     //
 *   }
 * })
 * ```
 */
export declare const createNavigationManager: (manager: NavigationManager) => NavigationManager;
/**
 * Given an id and a model, return an item from the collection
 */
export type NavigationRequestor = (index: number, model: NavigationInput) => number;
/**
 * Get the first item in a list regardless of column count
 */
export declare const getFirst: NavigationRequestor;
/**
 * Get the last item in a list regardless of column count
 */
export declare const getLast: NavigationRequestor;
/**
 * Get the first item in a row. If column count is 0, it will return the results of `getFirst`
 */
export declare const getFirstOfRow: NavigationRequestor;
/**
 * get the last item in a row - if column count is 0, it will return the results of `getLast`
 */
export declare const getLastOfRow: NavigationRequestor;
/**
 * get the item in the previous page. This can be author defined. By default it will return the
 * first item for a list, and the first item in the same column for a grid.
 */
export declare const getPreviousPage: NavigationRequestor;
/**
 * get the item in the next page. This can be author defined. By default, it will return the last
 * item for a list, and the last item in the same column for a grid.
 */
export declare const getNextPage: NavigationRequestor;
/**
 * Get the current cursor id of a Collection model's state.
 */
export declare const getCursor: (state: NavigationInput['state']) => string;
/**
 * Check if the provided id is the current cursor id of a Collection model's state.
 */
export declare const isCursor: (state: NavigationInput['state'], id?: string) => boolean;
export declare const getWrappingOffsetItem: (offset: number) => (index: number, { state }: NavigationInput, tries?: number) => number;
export declare const getOffsetItem: (offset: number) => (index: number, { state }: NavigationInput, tries?: number) => number;
/**
 * The default navigation manager of lists. This navigation manager will wrap around when the edge
 * is hit. For example, if the user is the the right-most item in a list or right-most item in a
 * row, the cursor will wrap around to the beginning or the next row.
 */
export declare const wrappingNavigationManager: NavigationManager;
/**
 * The default navigation of grids. This navigation manager will not wrap, but will stop when an
 * edge is detected. This could be the last item in a list or the last item of a row in a grid.
 */
export declare const navigationManager: NavigationManager;
/**
 * A `CursorModel` extends a `ListModel` and adds a "cursor" to the list. A cursor is a pointer to a
 * current position in the list. The most common use-case is keeping track of which item currently
 * has focus within the list. Many w3c list role types specify a single tab stop within the list.
 */
export declare const useCursorListModel: (<TT_Special_Generic>(config?: (Partial<{
    /**
     * Initial cursor position. If not provided, the cursor will point to the first item in the list
     */
    initialCursorId: string | string[];
    /**
     * If this is set it will cause a wrapping of a list that will turn it into a grid
     * @default 0
     */
    columnCount: number;
    /**
     * Controls the state changes when the user sends navigation events to the model. For example,
     * when the user hits the "right" arrow, a behavior hook will determine directionality
     * (left-to-right or right-to-left) and call the correct navigation method. In our example, a
     * left-to-right language would send a `getNext`. The navigation manager may return the next item
     * in the list. Different managers can be created for slightly different use cases. The default
     * navigation manager will accept `orientation` and directionality to determine mapping.
     *
     * An example override might be a tab list with an overflow menu that is meant to be transparent
     * to screen reader users. This would require the overflow menu to accept both up/down keys as
     * well as left/right keys to give a more consistent experience to all users.
     */
    navigation: NavigationManager;
    /**
     * Controls how much a pageUp/pageDown navigation request will jump. If not provided, the size
     * of the list and number of items rendered will determine this value.
     */
    pageSize: number;
    id: string;
    getId: (item: any) => string;
    getTextValue: (item: any) => string;
    nonInteractiveIds: string[];
    orientation: import("./useBaseListModel").Orientation;
    defaultItemHeight: number;
    shouldVirtualize: boolean;
    items: any[];
}> & {
    onGoTo?: ((data: {
        id: string;
    }, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToNext?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToPrevious?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToPreviousRow?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToNextRow?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToFirst?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToLast?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToFirstOfRow?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToLastOfRow?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToNextPage?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onGoToPreviousPage?: ((data: undefined, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onRegisterItem?: ((data: {
        id: string;
        textValue: string;
    }, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onUnregisterItem?: ((data: {
        id: string;
    }, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
    onUpdateItemHeight?: ((data: {
        value: number;
    }, prevState: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => void) | undefined;
} & {
    shouldGoTo?: ((data: {
        id: string;
    }, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToNext?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToPrevious?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToPreviousRow?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToNextRow?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToFirst?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToLast?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToFirstOfRow?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToLastOfRow?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToNextPage?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldGoToPreviousPage?: ((data: undefined, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldRegisterItem?: ((data: {
        id: string;
        textValue: string;
    }, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldUnregisterItem?: ((data: {
        id: string;
    }, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
    shouldUpdateItemHeight?: ((data: {
        value: number;
    }, state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    }) => boolean) | undefined;
}) | undefined) => {
    state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    };
    events: {
        /** Directly sets the cursor to the list item by its identifier. */
        goTo(data: {
            id: string;
        }): void;
        /**
         * Set the cursor to the "next" item in the list. This event delegates to the `getNext` method of
         * the navigation manager. For a list, the default navigation manager will wrap if cursor is
         * currently on the last item. For a grid, the default navigation manager will stay on the last
         * item in a row.
         */
        goToNext(): void;
        /**
         * Set the cursor to the "previous" item in the list. If the beginning of the list is detected,
         * it will wrap to the last item
         */
        goToPrevious(): void;
        /**
         * Previous item perpendicular to the orientation of a list, or the previous row in a grid. For
         * example, if a list is horizontal, the previous row would describe an up direction. This could
         * be ignored by the navigation manager, or return the same result as `previous()`. In a grid,
         * this would be the previous row (current position - column count).
         */
        goToPreviousRow(): void;
        /**
         * Next item perpendicular to the orientation of a list, or the next row in a grid. For example,
         * if a list is horizontal, the next row would describe a down direction. This could be ignored by
         * the navigation manager, or return the same result as `next()`. In a grid, this would be the
         * next row (current position + column count).
         */
        goToNextRow(): void;
        /** Set the cursor to the first item in the list */
        goToFirst(): void;
        /** Set the cursor to the last item in the list */
        goToLast(): void;
        goToFirstOfRow(): void;
        goToLastOfRow(): void;
        goToNextPage(): void;
        goToPreviousPage(): void;
        registerItem(data: {
            id: string;
            textValue: string;
        }): void;
        unregisterItem(data: {
            id: string;
        }): void;
        updateItemHeight(data: {
            value: number;
        }): void;
    };
    navigation: NavigationManager;
    getId: (item: any) => string;
    getTextValue: (item: any) => string;
}) & import("@workday/canvas-kit-react/common").ModelExtras<{
    /**
     * Initial cursor position. If not provided, the cursor will point to the first item in the list
     */
    initialCursorId: string | string[];
    /**
     * If this is set it will cause a wrapping of a list that will turn it into a grid
     * @default 0
     */
    columnCount: number;
    /**
     * Controls the state changes when the user sends navigation events to the model. For example,
     * when the user hits the "right" arrow, a behavior hook will determine directionality
     * (left-to-right or right-to-left) and call the correct navigation method. In our example, a
     * left-to-right language would send a `getNext`. The navigation manager may return the next item
     * in the list. Different managers can be created for slightly different use cases. The default
     * navigation manager will accept `orientation` and directionality to determine mapping.
     *
     * An example override might be a tab list with an overflow menu that is meant to be transparent
     * to screen reader users. This would require the overflow menu to accept both up/down keys as
     * well as left/right keys to give a more consistent experience to all users.
     */
    navigation: NavigationManager;
    /**
     * Controls how much a pageUp/pageDown navigation request will jump. If not provided, the size
     * of the list and number of items rendered will determine this value.
     */
    pageSize: number;
    id: string;
    getId: (item: any) => string;
    getTextValue: (item: any) => string;
    nonInteractiveIds: string[];
    orientation: import("./useBaseListModel").Orientation;
    defaultItemHeight: number;
    shouldVirtualize: boolean;
    items: any[];
}, {}, {
    /** The id of the list item the cursor is pointing to */
    cursorId: string | string[];
    /**
     * Any positive non-zero value treats the list like a grid with rows and columns
     * @default 0
     * @private Use useGridModel instead to make a grid instead of a list
     */
    columnCount: number;
    /**
     * A React.Ref of the current page size. Either provided as config, or determined at runtime
     * based on the size of the list container and the number of items fitting within the container.
     */
    pageSizeRef: React.MutableRefObject<number>;
    /**
     * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
     * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
     * or the `items` change.
     *
     * @readonly
     */
    cursorIndexRef: {
        readonly current: number;
    };
    UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
    UNSTABLE_defaultItemHeight: number;
    containerRef: React.RefObject<HTMLDivElement>;
    id: string;
    orientation: "horizontal" | "vertical";
    indexRef: React.MutableRefObject<number>;
    nonInteractiveIds: string[];
    isVirtualized: boolean;
    items: Item<any>[];
}, {
    /** Directly sets the cursor to the list item by its identifier. */
    goTo(data: {
        id: string;
    }): void;
    /**
     * Set the cursor to the "next" item in the list. This event delegates to the `getNext` method of
     * the navigation manager. For a list, the default navigation manager will wrap if cursor is
     * currently on the last item. For a grid, the default navigation manager will stay on the last
     * item in a row.
     */
    goToNext(): void;
    /**
     * Set the cursor to the "previous" item in the list. If the beginning of the list is detected,
     * it will wrap to the last item
     */
    goToPrevious(): void;
    /**
     * Previous item perpendicular to the orientation of a list, or the previous row in a grid. For
     * example, if a list is horizontal, the previous row would describe an up direction. This could
     * be ignored by the navigation manager, or return the same result as `previous()`. In a grid,
     * this would be the previous row (current position - column count).
     */
    goToPreviousRow(): void;
    /**
     * Next item perpendicular to the orientation of a list, or the next row in a grid. For example,
     * if a list is horizontal, the next row would describe a down direction. This could be ignored by
     * the navigation manager, or return the same result as `next()`. In a grid, this would be the
     * next row (current position + column count).
     */
    goToNextRow(): void;
    /** Set the cursor to the first item in the list */
    goToFirst(): void;
    /** Set the cursor to the last item in the list */
    goToLast(): void;
    goToFirstOfRow(): void;
    goToLastOfRow(): void;
    goToNextPage(): void;
    goToPreviousPage(): void;
    registerItem(data: {
        id: string;
        textValue: string;
    }): void;
    unregisterItem(data: {
        id: string;
    }): void;
    updateItemHeight(data: {
        value: number;
    }): void;
}, {
    state: {
        /** The id of the list item the cursor is pointing to */
        cursorId: string | string[];
        /**
         * Any positive non-zero value treats the list like a grid with rows and columns
         * @default 0
         * @private Use useGridModel instead to make a grid instead of a list
         */
        columnCount: number;
        /**
         * A React.Ref of the current page size. Either provided as config, or determined at runtime
         * based on the size of the list container and the number of items fitting within the container.
         */
        pageSizeRef: React.MutableRefObject<number>;
        /**
         * A readonly [React.Ref](https://react.dev/learn/referencing-values-with-refs) that tracks the
         * index of the `state.cursorId`. This value is automatically updated when the `state.cursorId`
         * or the `items` change.
         *
         * @readonly
         */
        cursorIndexRef: {
            readonly current: number;
        };
        UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
        UNSTABLE_defaultItemHeight: number;
        containerRef: React.RefObject<HTMLDivElement>;
        id: string;
        orientation: "horizontal" | "vertical";
        indexRef: React.MutableRefObject<number>;
        nonInteractiveIds: string[];
        isVirtualized: boolean;
        items: Item<any>[];
    };
    events: {
        /** Directly sets the cursor to the list item by its identifier. */
        goTo(data: {
            id: string;
        }): void;
        /**
         * Set the cursor to the "next" item in the list. This event delegates to the `getNext` method of
         * the navigation manager. For a list, the default navigation manager will wrap if cursor is
         * currently on the last item. For a grid, the default navigation manager will stay on the last
         * item in a row.
         */
        goToNext(): void;
        /**
         * Set the cursor to the "previous" item in the list. If the beginning of the list is detected,
         * it will wrap to the last item
         */
        goToPrevious(): void;
        /**
         * Previous item perpendicular to the orientation of a list, or the previous row in a grid. For
         * example, if a list is horizontal, the previous row would describe an up direction. This could
         * be ignored by the navigation manager, or return the same result as `previous()`. In a grid,
         * this would be the previous row (current position - column count).
         */
        goToPreviousRow(): void;
        /**
         * Next item perpendicular to the orientation of a list, or the next row in a grid. For example,
         * if a list is horizontal, the next row would describe a down direction. This could be ignored by
         * the navigation manager, or return the same result as `next()`. In a grid, this would be the
         * next row (current position + column count).
         */
        goToNextRow(): void;
        /** Set the cursor to the first item in the list */
        goToFirst(): void;
        /** Set the cursor to the last item in the list */
        goToLast(): void;
        goToFirstOfRow(): void;
        goToLastOfRow(): void;
        goToNextPage(): void;
        goToPreviousPage(): void;
        registerItem(data: {
            id: string;
            textValue: string;
        }): void;
        unregisterItem(data: {
            id: string;
        }): void;
        updateItemHeight(data: {
            value: number;
        }): void;
    };
    navigation: NavigationManager;
    getId: (item: any) => string;
    getTextValue: (item: any) => string;
}>;
export {};
//# sourceMappingURL=useCursorListModel.d.ts.map