import { QueryResultData } from '@sisense/sdk-data';
import { type ClientApplication } from '../../../../infra/app/types';
import { ExecuteQueryByWidgetIdParams, QueryByWidgetIdQueryParams, QueryByWidgetIdState } from '../../types';
/**
* React hook that executes a data query extracted from an existing widget in the Sisense instance.
*
* This approach, which offers an alternative to {@link ExecuteQueryByWidgetId} component, is similar to React Query's `useQuery` hook.
*
* **Note:** Widget extensions based on JS scripts and add-ons in Fusion are not supported.
*
* @example
* The example below executes a query over the existing dashboard widget with the specified widget and dashboard OIDs.
```tsx
const { data, isLoading, isError } = useExecuteQueryByWidgetId({
widgetOid: '64473e07dac1920034bce77f',
dashboardOid: '6441e728dac1920034bce737'
});
if (isLoading) {
return
Loading...
;
}
if (isError) {
return Error
;
}
if (data) {
return {`Total Rows: ${data.rows.length}`}
;
}
return null;
```
* See also hook {@link useExecuteQuery}, which execute a query specified in code.
* @returns Query state that contains the status of the query execution, the result data, the constructed query parameters, or the error if any occurred
* @group Fusion Assets
* @fusionEmbed
*/
export declare const useExecuteQueryByWidgetId: (params: ExecuteQueryByWidgetIdParams) => QueryByWidgetIdState;
/**
* {@link useExecuteQueryByWidgetId} without tracking to be used inside other hooks or components in Compose SDK.
*
* @param params - Parameters to identify the target widget
* @internal
*/
export declare function useExecuteQueryByWidgetIdInternal(params: ExecuteQueryByWidgetIdParams): QueryByWidgetIdState;
/**
* Checks if the query parameters have changed by deep comparison.
*
* @param params - New query parameters
*/
export declare function useParamsChanged(params: ExecuteQueryByWidgetIdParams): boolean;
/** @internal */
export declare function executeQueryByWidgetId({ widgetOid, dashboardOid, filters, highlights, filtersMergeStrategy, count, offset, includeDashboardFilters, app, onBeforeQuery, }: ExecuteQueryByWidgetIdParams & {
app: ClientApplication;
}): Promise<{
data: QueryResultData;
} & QueryByWidgetIdQueryParams>;