import { Source, SourceStore, AllExternalSources, AllSources } from './types';
import { Filters, FilterType } from '@carto/api-client';
/**
 * Zustand store providing global state for all data sources and their filters.
 *
 * @remarks
 * Use selective subscriptions to prevent unnecessary re-renders:
 * `const setSource = useSourceStore((state) => state.setSource)`.
 */
export declare const useSourceStore: import('node_modules/zustand/esm/react.mjs').UseBoundStore<import('node_modules/zustand/esm/vanilla.mjs').StoreApi<SourceStore>>;
/**
 * Shortcut to grabbing the source from the sources store object
 * @param id - the id of the source you want to grab
 * @returns source object without filters
 */
export declare function useSource<T extends AllSources = AllExternalSources>(id: string): Source<T>;
/**
 * Shortcut to grabbing the source from the sources store object
 * @param ids - the ids of the sources you want to grab
 * @returns source object without filters
 */
export declare function useSources<T extends AllSources = AllExternalSources>(ids: string[]): Source<T>[];
/**
 * Shortcut to grabbing the filters from the filters store object
 * @param ids - the ids of the sources the filters are applied to
 * @returns filters object as used in the `@carto/api-client` methods calls
 */
export declare function useFilters(ids: string): Filters | undefined;
export declare function useFilters(ids: string[]): (Filters | undefined)[];
/**
 * Returns a source together with its filters, pulling from the separate `sources` and `filters` state objects
 * @param id - the id of the source
 * @returns source object as used in `@carto/api-client`
 */
export declare function useSourceWithFilters<T extends AllSources = AllExternalSources>(id: string): (Omit<T, "filters"> & {
    filters: Filters;
    id: string;
}) | undefined;
/**
 * Extracts filter values for a specific column and filter type from a filters object.
 *
 * @param filters - The filters object to extract values from.
 * @param options - Object with `column` name and `type` (FilterType) to look up.
 * @returns The array of filter values, or an empty array if not found.
 */
export declare function getFilterValues(filters: Filters | undefined, { column, type }: {
    column: string;
    type: FilterType;
}): string[] | number[] | number[][];
