import type { DataEngine, QueryExecuteOptions, FetchError, JsonValue, QueryVariables, QueryResult, } from '@dhis2/data-engine' export type { Mutation, Query } from '@dhis2/data-engine' export interface ContextType { engine: DataEngine } export interface ContextInput { baseUrl: string apiVersion: number } export type ExecuteOptions = QueryExecuteOptions export type RefetchOptions = QueryVariables export type RefetchFunction = ( options?: RefetchOptions ) => Promise export type QueryRefetchFunction = RefetchFunction export type MutationFunction = RefetchFunction export type ExecuteFunction = (options: QueryExecuteOptions) => Promise export interface ExecuteHookInput { execute: ExecuteFunction variables: QueryVariables singular: boolean immediate: boolean transformData?: (data: JsonValue[]) => JsonValue onComplete?: (data: any) => void onError?: (error: FetchError) => void } export interface ExecuteHookResult { refetch: RefetchFunction abort: () => void called: boolean loading: boolean error?: FetchError data?: ReturnType } export interface QueryState { called: boolean loading: boolean fetching: boolean error?: FetchError data?: TQueryResult } export interface QueryRenderInput< TQueryResult = QueryResult, > extends QueryState { engine: DataEngine refetch: QueryRefetchFunction } export interface MutationState { engine: DataEngine called: boolean loading: boolean error?: FetchError data?: JsonValue } export type MutationRenderInput = [MutationFunction, MutationState]