import { DataSource, Dimension } from '@sisense/sdk-data';
/**
 * States of a data source dimensions load.
 */
export type DataSourceDimensionsState = DataSourceDimensionsLoadingState | DataSourceDimensionsErrorState | DataSourceDimensionsSuccessState;
/**
 * State of data source dimensions that is loading.
 */
export type DataSourceDimensionsLoadingState = {
    /** Whether the dimensions are loading */
    isLoading: true;
    /** Whether the dimensions load has failed */
    isError: false;
    /** Whether the dimensions load has succeeded */
    isSuccess: false;
    /** Error, if one occurred */
    error: undefined;
    /** Dimensions, if the load succeeded */
    dimensions: undefined;
    /** Loading status */
    status: 'loading';
};
/**
 * State of a data source dimensions load that has failed.
 */
export type DataSourceDimensionsErrorState = {
    /** Whether the dimensions are loading */
    isLoading: false;
    /** Whether the dimensions load has failed */
    isError: true;
    /** Whether the dimensions load has succeeded */
    isSuccess: false;
    /** Error, if one occurred */
    error: Error;
    /** Dimensions, if the load succeeded */
    dimensions: undefined;
    /** Loading status */
    status: 'error';
};
/**
 * State of a data source dimensions load that has succeeded.
 */
export type DataSourceDimensionsSuccessState = {
    /** Whether the dimensions are loading */
    isLoading: false;
    /** Whether the dimensions load has failed */
    isError: false;
    /** Whether the dimensions load has succeeded */
    isSuccess: true;
    /** Error, if one occurred */
    error: undefined;
    /** Dimensions, if the load succeeded */
    dimensions: Dimension[];
    /** Loading status */
    status: 'success';
};
/**
 * Parameters for {@link useGetDataSourceDimensions} hook.
 */
export interface GetDataSourceDimensionsParams {
    /** The data source to get the dimensions for. If no data source is provided, the default data source will be used. */
    dataSource: DataSource | undefined;
    /** Whether the query should be enabled. */
    enabled?: boolean;
    /** The number of items to return */
    count?: number;
    /** The offset for pagination */
    offset?: number;
    /** The search value to filter by */
    searchValue?: string;
}
/**
 * {@link useGetDataSourceDimensions} without tracking to be used inside other hooks or components.
 *
 * @param params - The parameters for getting the dimensions
 * @returns The dimensions state
 * @internal
 */
export declare function useGetDataSourceDimensionsInternal(params: GetDataSourceDimensionsParams): DataSourceDimensionsState;
/**
 * Gets the dimensions of a data source.
 *
 * @param params - The parameters for getting the dimensions
 * @returns The dimensions state
 * @group Fusion Assets
 * @fusionEmbed
 */
export declare const useGetDataSourceDimensions: (params: GetDataSourceDimensionsParams) => DataSourceDimensionsState;
