import DataEngine from './engine/DataEngine'; import { QueryExecuteOptions } from './engine/types/ExecuteOptions'; import { FetchError } from './engine/types/FetchError'; import { JsonValue } from './engine/types/JsonValue'; import { QueryVariables, QueryResult } from './engine/types/Query'; export type { Mutation } from './engine/types/Mutation'; export type { Query } from './engine/types/Query'; 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 extends QueryState { engine: DataEngine; refetch: QueryRefetchFunction; } export interface MutationState { engine: DataEngine; called: boolean; loading: boolean; error?: FetchError; data?: JsonValue; } export type MutationRenderInput = [MutationFunction, MutationState];