@archbase/data 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +57 -0
  2. package/dist/archbase-data-3.0.0.tgz +0 -0
  3. package/dist/datasource/ArchbaseDataSource.d.ts +472 -0
  4. package/dist/datasource/ArchbaseLocalFilterDataSource.d.ts +27 -0
  5. package/dist/datasource/ArchbaseRemoteDataSource.d.ts +17 -0
  6. package/dist/datasource/ArchbaseRemoteFilterDataSource.d.ts +28 -0
  7. package/dist/datasource/ArchbaseV1V2CompatibilityPattern.d.ts +72 -0
  8. package/dist/datasource/IArchbaseDataSourceBase.d.ts +111 -0
  9. package/dist/datasource/index.d.ts +10 -0
  10. package/dist/datasource/v2/ArchbaseDataSourceV2.d.ts +128 -0
  11. package/dist/datasource/v2/ArchbaseQueryIntegration.d.ts +210 -0
  12. package/dist/datasource/v2/ArchbaseQueryProvider.d.ts +79 -0
  13. package/dist/datasource/v2/ArchbaseRemoteDataSourceV2.d.ts +182 -0
  14. package/dist/datasource/v2/ArchbaseTanStackQueryIntegration.d.ts +132 -0
  15. package/dist/datasource/v2/index.d.ts +11 -0
  16. package/dist/datasource/v2/useArchbaseDataSourceV2.d.ts +143 -0
  17. package/dist/datasource/v2/useArchbaseRemoteDataSourceV2.d.ts +210 -0
  18. package/dist/hooks/index.d.ts +14 -0
  19. package/dist/hooks/useArchbaseDataSource.d.ts +15 -0
  20. package/dist/hooks/useArchbaseDataSourceListener.d.ts +7 -0
  21. package/dist/hooks/useArchbaseDidMount.d.ts +5 -0
  22. package/dist/hooks/useArchbaseDidUpdate.d.ts +6 -0
  23. package/dist/hooks/useArchbaseEventListener.d.ts +1 -0
  24. package/dist/hooks/useArchbaseForceRerender.d.ts +5 -0
  25. package/dist/hooks/useArchbaseForceUpdate.d.ts +5 -0
  26. package/dist/hooks/useArchbaseLocalFilterDataSource.d.ts +13 -0
  27. package/dist/hooks/useArchbaseRemoteDataSource.d.ts +36 -0
  28. package/dist/hooks/useArchbaseRemoteFilterDataSource.d.ts +34 -0
  29. package/dist/hooks/useArchbaseRemoteServiceApi.d.ts +2 -0
  30. package/dist/hooks/useArchbaseStore.d.ts +3 -0
  31. package/dist/hooks/useArchbaseWillUnmount.d.ts +5 -0
  32. package/dist/index.d.ts +9 -0
  33. package/dist/index.js +3360 -0
  34. package/dist/service/ArchbaseRemoteApiService.d.ts +103 -0
  35. package/dist/service/index.d.ts +2 -0
  36. package/dist/types/ArchbaseStateValues.d.ts +9 -0
  37. package/dist/types/index.d.ts +1 -0
  38. package/package.json +64 -0
@@ -0,0 +1,111 @@
1
+ import { DataSourceListener } from './ArchbaseDataSource';
2
+ /**
3
+ * Interface base para DataSources usados em componentes de binding.
4
+ *
5
+ * Esta interface define o contrato mínimo que TODOS os DataSources devem implementar
6
+ * para serem compatíveis com componentes como ArchbaseEdit, ArchbaseSelect, etc.
7
+ *
8
+ * Tanto ArchbaseDataSource quanto ArchbaseRemoteDataSourceV2 implementam esta interface.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * // Em componentes, use esta interface ao invés de classes concretas:
13
+ * interface MyComponentProps<T> {
14
+ * dataSource?: IArchbaseDataSourceBase<T>;
15
+ * dataField?: string;
16
+ * }
17
+ * ```
18
+ */
19
+ export interface IArchbaseDataSourceBase<T> {
20
+ /**
21
+ * Retorna o nome do DataSource
22
+ */
23
+ getName(): string;
24
+ /**
25
+ * Verifica se o DataSource está ativo
26
+ */
27
+ isActive(): boolean;
28
+ /**
29
+ * Verifica se o DataSource está vazio (sem registros)
30
+ */
31
+ isEmpty(): boolean;
32
+ /**
33
+ * Verifica se o DataSource está em modo de navegação (browse)
34
+ */
35
+ isBrowsing(): boolean;
36
+ /**
37
+ * Verifica se o DataSource está em modo de edição
38
+ */
39
+ isEditing(): boolean;
40
+ /**
41
+ * Verifica se o DataSource está em modo de inserção
42
+ */
43
+ isInserting(): boolean;
44
+ /**
45
+ * Retorna o registro atual ou undefined se não houver registro
46
+ */
47
+ getCurrentRecord(): T | undefined;
48
+ /**
49
+ * Retorna o índice do registro atual
50
+ */
51
+ getCurrentIndex(): number;
52
+ /**
53
+ * Retorna o número total de registros na coleção filtrada
54
+ */
55
+ getTotalRecords(): number;
56
+ /**
57
+ * Retorna o número total de registros no servidor (para paginação)
58
+ */
59
+ getGrandTotalRecords(): number;
60
+ /**
61
+ * Retorna todos os registros da coleção filtrada
62
+ */
63
+ browseRecords(): T[];
64
+ /**
65
+ * Localiza um registro por valores de campos
66
+ * @param values Objeto com campos/valores para busca
67
+ * @returns true se encontrou, false caso contrário
68
+ */
69
+ locate(values: any): boolean;
70
+ /**
71
+ * Vai para um registro pelo seu índice
72
+ * @param index Índice do registro
73
+ */
74
+ gotoRecord(index: number): void;
75
+ /**
76
+ * Vai para um registro pelo seu dado
77
+ * @param record Dados do registro para navegar
78
+ * @returns true se encontrou, false caso contrário
79
+ */
80
+ gotoRecordByData(record: T): boolean;
81
+ /**
82
+ * Retorna a página atual (0-indexed)
83
+ */
84
+ getCurrentPage(): number;
85
+ /**
86
+ * Retorna o tamanho da página
87
+ */
88
+ getPageSize(): number;
89
+ /**
90
+ * Obtém o valor de um campo do registro atual
91
+ * @param fieldName Nome do campo (suporta notação de ponto para campos aninhados)
92
+ * @param defaultValue Valor padrão caso o campo seja undefined
93
+ */
94
+ getFieldValue(fieldName: string, defaultValue?: any): any;
95
+ /**
96
+ * Define o valor de um campo no registro atual
97
+ * @param fieldName Nome do campo (suporta notação de ponto para campos aninhados)
98
+ * @param value Novo valor do campo
99
+ */
100
+ setFieldValue(fieldName: string, value: any): void;
101
+ /**
102
+ * Adiciona um listener para eventos do DataSource
103
+ * @param listener Função que será chamada quando eventos ocorrerem
104
+ */
105
+ addListener(listener: DataSourceListener<T>): void;
106
+ /**
107
+ * Remove um listener de eventos do DataSource
108
+ * @param listener Função a ser removida
109
+ */
110
+ removeListener(listener: DataSourceListener<T>): void;
111
+ }
@@ -0,0 +1,10 @@
1
+ export type { DataSourceEvent, DataSourceEvents, DataSourceListener, DataSourceOptions, FilterFn, IDataSource, DataSourceEventRefreshDataType } from './ArchbaseDataSource';
2
+ export type { IArchbaseDataSourceBase } from './IArchbaseDataSourceBase';
3
+ export type { IDataSourceValidator, DataSourceValidationError } from '@archbase/core';
4
+ export { DataSourceEventNames, ArchbaseDataSource } from './ArchbaseDataSource';
5
+ export { ArchbaseRemoteDataSource } from './ArchbaseRemoteDataSource';
6
+ export type { IRemoteDataSource } from './ArchbaseRemoteDataSource';
7
+ export { ArchbaseLocalFilterDataSource, LocalFilter } from './ArchbaseLocalFilterDataSource';
8
+ export { ArchbaseRemoteFilterDataSource, RemoteFilter } from './ArchbaseRemoteFilterDataSource';
9
+ export * from './ArchbaseV1V2CompatibilityPattern';
10
+ export * from './v2';
@@ -0,0 +1,128 @@
1
+ import { Draft } from 'immer';
2
+ import { DataSourceListener, IDataSourceValidator, IDataSource, DataSourceOptions, FilterFn } from '../ArchbaseDataSource';
3
+ /**
4
+ * Estados possíveis do DataSource
5
+ */
6
+ type DataSourceState = 'browse' | 'edit' | 'insert';
7
+ /**
8
+ * Configuração para ArchbaseDataSourceV2
9
+ */
10
+ export interface ArchbaseDataSourceV2Config<T> {
11
+ name: string;
12
+ label?: string;
13
+ records?: T[];
14
+ validator?: IDataSourceValidator;
15
+ onStateChange?: (prevRecords: T[], newRecords: T[]) => void;
16
+ onFieldError?: (fieldName: string, error: string) => void;
17
+ onError?: (error: string, originalError?: any) => void;
18
+ }
19
+ /**
20
+ * ArchbaseDataSourceV2 - Versão V2 com Immer
21
+ *
22
+ * Esta implementação:
23
+ * - Garante imutabilidade completa com Immer
24
+ * - Interface simplificada focada em funcionalidade V2
25
+ * - Suporte a operações em arrays com type safety
26
+ * - Event system compatível com V1
27
+ */
28
+ export declare class ArchbaseDataSourceV2<T> implements IDataSource<T> {
29
+ private name;
30
+ private label;
31
+ private records;
32
+ private currentIndex;
33
+ private state;
34
+ private listeners;
35
+ private originalRecord;
36
+ private validator?;
37
+ private lastDataChangedAt;
38
+ private active;
39
+ private onStateChange?;
40
+ private onFieldError?;
41
+ private onError?;
42
+ constructor(config: ArchbaseDataSourceV2Config<T>);
43
+ getName(): string;
44
+ getLabel(): string;
45
+ isActive(): boolean;
46
+ close(): void;
47
+ getCurrentRecord(): T | undefined;
48
+ getCurrentIndex(): number;
49
+ getTotalRecords(): number;
50
+ isEmpty(): boolean;
51
+ first(): this;
52
+ last(): this;
53
+ next(): this;
54
+ prior(): this;
55
+ goToRecord(index: number): T | undefined;
56
+ isFirst(): boolean;
57
+ isLast(): boolean;
58
+ isBOF(): boolean;
59
+ isEOF(): boolean;
60
+ isBrowsing(): boolean;
61
+ isEditing(): boolean;
62
+ isInserting(): boolean;
63
+ edit(): this;
64
+ cancel(): this;
65
+ insert(record: T): this;
66
+ save(callback?: Function): Promise<T>;
67
+ remove(callback?: Function): Promise<T | undefined>;
68
+ setFieldValue(fieldName: string, value: any): this;
69
+ getFieldValue(fieldName: string): any;
70
+ appendToFieldArray<K extends keyof T>(fieldName: K, item: T[K] extends Array<infer U> ? U : never): void;
71
+ updateFieldArrayItem<K extends keyof T>(fieldName: K, index: number, updater: (draft: T[K] extends Array<infer U> ? Draft<U> : never) => void): void;
72
+ removeFromFieldArray<K extends keyof T>(fieldName: K, index: number): void;
73
+ insertIntoFieldArray<K extends keyof T>(fieldName: K, index: number, item: T[K] extends Array<infer U> ? U : never): void;
74
+ getFieldArray<K extends keyof T>(fieldName: K): T[K] extends Array<infer U> ? U[] : never;
75
+ isFieldArray<K extends keyof T>(fieldName: K): boolean;
76
+ /**
77
+ * Abre o DataSource com os dados fornecidos.
78
+ * Aceita tanto o formato completo DataSourceOptions quanto um formato simplificado { records: T[] }
79
+ */
80
+ open(options: DataSourceOptions<T> | {
81
+ records: T[];
82
+ }): void;
83
+ clear(): void;
84
+ /**
85
+ * Define os dados do DataSource.
86
+ * Quando apenas records é informado, os valores de paginação são derivados automaticamente.
87
+ */
88
+ setData(options: DataSourceOptions<T> | {
89
+ records: T[];
90
+ }): void;
91
+ getOptions(): DataSourceOptions<T>;
92
+ refreshData(options?: DataSourceOptions<T>): void;
93
+ browseRecords(): T[];
94
+ getGrandTotalRecords(): number;
95
+ getCurrentPage(): number;
96
+ getTotalPages(): number;
97
+ isEmptyField(fieldName: string): boolean;
98
+ goToPage(pageNumber: number): this;
99
+ gotoRecordByData(record: T): boolean;
100
+ disabledAllListeners(): this;
101
+ enableAllListeners(): this;
102
+ addFieldChangeListener(fieldName: string, listener: (fieldName: string, oldValue: any, newValue: any) => void): this;
103
+ removeFieldChangeListener(fieldName: string, listener: (fieldName: string, oldValue: any, newValue: any) => void): this;
104
+ addFilter(filterFn: FilterFn<T>): this;
105
+ removeFilter(filterFn: FilterFn<T>): this;
106
+ clearFilters(): this;
107
+ locate(values: any): boolean;
108
+ locateByFilter(filterFn: (record: T) => boolean): boolean;
109
+ validate(): boolean;
110
+ addListener(...listeners: DataSourceListener<T>[]): this;
111
+ removeListener(...listeners: DataSourceListener<T>[]): this;
112
+ private emit;
113
+ getRecords(): T[];
114
+ setRecords(records: T[]): void;
115
+ getDebugSnapshot(): {
116
+ name: string;
117
+ recordCount: number;
118
+ currentIndex: number;
119
+ currentRecord: T;
120
+ state: DataSourceState;
121
+ listeners: number;
122
+ };
123
+ private validateDataSourceActive;
124
+ private notifyStateChange;
125
+ private setNestedValue;
126
+ private getNestedValue;
127
+ }
128
+ export {};
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Preparação para integração com TanStack Query
3
+ *
4
+ * Este arquivo define as estruturas e tipos necessários para integrar
5
+ * o ArchbaseDataSourceV2 com TanStack Query para gerenciamento avançado
6
+ * de cache e sincronização de dados remotos.
7
+ */
8
+ import { ArchbaseRemoteDataSourceV2Config } from './ArchbaseRemoteDataSourceV2';
9
+ import { ArchbaseRemoteApiService } from '../../service/ArchbaseRemoteApiService';
10
+ /**
11
+ * Configuração para integração com TanStack Query
12
+ */
13
+ export interface ArchbaseTanStackQueryConfig<T> {
14
+ /** Chave única para o cache do TanStack Query */
15
+ queryKey: string | string[];
16
+ /** Configuração do DataSource */
17
+ dataSourceConfig: Omit<ArchbaseRemoteDataSourceV2Config<T>, 'service'>;
18
+ /** Serviço para operações remotas */
19
+ service: ArchbaseRemoteApiService<T, any>;
20
+ /** Tempo de cache em milissegundos (padrão: 5 minutos) */
21
+ staleTime?: number;
22
+ /** Tempo para considerar dados expirados em milissegundos (padrão: 30 minutos) */
23
+ cacheTime?: number;
24
+ /** Refetch automático quando a janela ganha foco */
25
+ refetchOnWindowFocus?: boolean;
26
+ /** Refetch automático em intervalos */
27
+ refetchInterval?: number;
28
+ /** Habilitar retry automático em caso de erro */
29
+ retry?: boolean | number;
30
+ /** Função para transformar dados antes do cache */
31
+ transformData?: (data: T[]) => T[];
32
+ /** Função para validar se os dados em cache são válidos */
33
+ isDataValid?: (data: T[]) => boolean;
34
+ }
35
+ /**
36
+ * Estrutura para operações de cache do TanStack Query
37
+ */
38
+ export interface ArchbaseQueryOperations<T> {
39
+ /** Invalidar cache */
40
+ invalidateQueries: () => void;
41
+ /** Refetch dados */
42
+ refetch: () => Promise<void>;
43
+ /** Definir dados no cache manualmente */
44
+ setQueryData: (data: T[]) => void;
45
+ /** Obter dados do cache */
46
+ getQueryData: () => T[] | undefined;
47
+ /** Remover do cache */
48
+ removeQueries: () => void;
49
+ /** Pré-carregar dados */
50
+ prefetchQuery: () => Promise<void>;
51
+ }
52
+ /**
53
+ * Estado do TanStack Query para o DataSource
54
+ */
55
+ export interface ArchbaseQueryState {
56
+ /** Está carregando dados */
57
+ isLoading: boolean;
58
+ /** Está fazendo refetch */
59
+ isFetching: boolean;
60
+ /** Dados estão expirados */
61
+ isStale: boolean;
62
+ /** Erro da última operação */
63
+ error: Error | null;
64
+ /** Timestamp da última atualização */
65
+ dataUpdatedAt: number;
66
+ /** Status da query */
67
+ status: 'idle' | 'loading' | 'error' | 'success';
68
+ }
69
+ /**
70
+ * Hook futuro: useArchbaseDataSourceWithQuery
71
+ *
72
+ * Este hook combinará ArchbaseDataSourceV2 com TanStack Query
73
+ * para gerenciamento avançado de cache e sincronização.
74
+ *
75
+ * Funcionalidades planejadas:
76
+ * 1. Cache automático de dados remotos
77
+ * 2. Invalidação inteligente de cache
78
+ * 3. Refetch automático em cenários específicos
79
+ * 4. Otimistic updates para operações CRUD
80
+ * 5. Background refetch quando dados ficam stale
81
+ * 6. Retry automático em caso de falhas de rede
82
+ * 7. Prefetch de dados relacionados
83
+ * 8. Sincronização entre múltiplas instâncias do mesmo DataSource
84
+ *
85
+ * Exemplo de uso futuro:
86
+ *
87
+ * ```typescript
88
+ * const {
89
+ * dataSource,
90
+ * currentRecord,
91
+ * isLoading,
92
+ * isFetching,
93
+ * error,
94
+ * operations
95
+ * } = useArchbaseDataSourceWithQuery({
96
+ * queryKey: ['pessoas', { filter: activeFilter }],
97
+ * dataSourceConfig: {
98
+ * name: 'pessoas-datasource',
99
+ * pageSize: 20
100
+ * },
101
+ * service: pessoaService,
102
+ * staleTime: 5 * 60 * 1000, // 5 minutos
103
+ * cacheTime: 30 * 60 * 1000, // 30 minutos
104
+ * refetchOnWindowFocus: true
105
+ * });
106
+ *
107
+ * // Invalidar cache quando dados são modificados
108
+ * const handleSave = async () => {
109
+ * await dataSource.save();
110
+ * operations.invalidateQueries();
111
+ * };
112
+ *
113
+ * // Prefetch dados relacionados
114
+ * useEffect(() => {
115
+ * if (currentRecord) {
116
+ * operations.prefetchQuery(['pessoa-detalhes', currentRecord.id]);
117
+ * }
118
+ * }, [currentRecord]);
119
+ * ```
120
+ */
121
+ /**
122
+ * Utilitários para integração com TanStack Query
123
+ */
124
+ export declare class ArchbaseQueryUtils {
125
+ /**
126
+ * Gera chave de query baseada no DataSource e filtros
127
+ */
128
+ static generateQueryKey<T>(dataSourceName: string, filter?: any, sort?: any, page?: number): string[];
129
+ /**
130
+ * Determina se os dados precisam ser refetch baseado em critérios
131
+ */
132
+ static shouldRefetch(lastFetch: number, staleTime: number, userInteraction?: boolean): boolean;
133
+ /**
134
+ * Merge optimistic updates com dados em cache
135
+ */
136
+ static mergeOptimisticUpdate<T>(cachedData: T[], optimisticUpdate: Partial<T>, identifier: keyof T): T[];
137
+ }
138
+ /**
139
+ * Configurações padrão para diferentes cenários
140
+ */
141
+ export declare const ARCHBASE_QUERY_DEFAULTS: {
142
+ /** Configuração para dados que mudam raramente */
143
+ readonly STATIC_DATA: {
144
+ readonly staleTime: number;
145
+ readonly cacheTime: number;
146
+ readonly refetchOnWindowFocus: false;
147
+ readonly retry: 1;
148
+ };
149
+ /** Configuração para dados dinâmicos */
150
+ readonly DYNAMIC_DATA: {
151
+ readonly staleTime: number;
152
+ readonly cacheTime: number;
153
+ readonly refetchOnWindowFocus: true;
154
+ readonly retry: 3;
155
+ };
156
+ /** Configuração para dados em tempo real */
157
+ readonly REALTIME_DATA: {
158
+ readonly staleTime: number;
159
+ readonly cacheTime: number;
160
+ readonly refetchOnWindowFocus: true;
161
+ readonly refetchInterval: number;
162
+ readonly retry: 5;
163
+ };
164
+ };
165
+ /**
166
+ * Tipos para implementação futura
167
+ */
168
+ export type ArchbaseQueryHookReturn<T> = {
169
+ dataSource: any;
170
+ queryState: ArchbaseQueryState;
171
+ operations: ArchbaseQueryOperations<T>;
172
+ currentRecord?: T;
173
+ currentIndex: number;
174
+ totalRecords: number;
175
+ isLoading: boolean;
176
+ error: string | null;
177
+ };
178
+ /**
179
+ * Comentários para implementação futura:
180
+ *
181
+ * 1. INTEGRAÇÃO COM TANSTACK QUERY:
182
+ * - Instalar @tanstack/react-query como dependência
183
+ * - Criar wrapper que combine DataSource com useQuery/useMutation
184
+ * - Implementar cache inteligente baseado em chaves geradas automaticamente
185
+ *
186
+ * 2. OPTIMISTIC UPDATES:
187
+ * - Implementar updates otimistas para operações CRUD
188
+ * - Rollback automático em caso de erro
189
+ * - Sincronização com estado do DataSource
190
+ *
191
+ * 3. INVALIDAÇÃO DE CACHE:
192
+ * - Invalidação automática após mutations
193
+ * - Invalidação baseada em relacionamentos de dados
194
+ * - Invalidação inteligente para queries relacionadas
195
+ *
196
+ * 4. BACKGROUND SYNC:
197
+ * - Sincronização em background quando dados ficam stale
198
+ * - Notificações quando dados são atualizados
199
+ * - Merge inteligente de mudanças remotas
200
+ *
201
+ * 5. PERFORMANCE:
202
+ * - Lazy loading de dados relacionados
203
+ * - Prefetch de próximas páginas
204
+ * - Cache de queries frequentes
205
+ *
206
+ * 6. OFFLINE SUPPORT:
207
+ * - Persistência local de dados críticos
208
+ * - Queue de operações para quando voltar online
209
+ * - Indicadores de status de conexão
210
+ */
@@ -0,0 +1,79 @@
1
+ /**
2
+ * ArchbaseQueryProvider - TanStack Query Provider for Archbase React
3
+ *
4
+ * This provider sets up TanStack Query with optimized defaults for Archbase DataSources
5
+ */
6
+ import React, { ReactNode } from 'react';
7
+ import { QueryClient } from '@tanstack/react-query';
8
+ /**
9
+ * Configuration for ArchbaseQueryProvider
10
+ */
11
+ export interface ArchbaseQueryProviderConfig {
12
+ /** Enable React Query DevTools (default: true in development) */
13
+ enableDevTools?: boolean;
14
+ /** Custom QueryClient instance */
15
+ queryClient?: QueryClient;
16
+ /** Default stale time for all queries (default: 30 seconds) */
17
+ defaultStaleTime?: number;
18
+ /** Default cache time for all queries (default: 5 minutes) */
19
+ defaultCacheTime?: number;
20
+ /** Default retry count (default: 3) */
21
+ defaultRetry?: number;
22
+ /** Enable background refetch on window focus (default: false) */
23
+ refetchOnWindowFocus?: boolean;
24
+ /** Enable background refetch on reconnect (default: true) */
25
+ refetchOnReconnect?: boolean;
26
+ /** Global error handler */
27
+ onError?: (error: unknown) => void;
28
+ /** Global success handler for mutations */
29
+ onMutationSuccess?: (data: unknown) => void;
30
+ }
31
+ /**
32
+ * Create optimized QueryClient for Archbase applications
33
+ */
34
+ export declare function createArchbaseQueryClient(config?: ArchbaseQueryProviderConfig): QueryClient;
35
+ /**
36
+ * ArchbaseQueryProvider Component
37
+ */
38
+ export interface ArchbaseQueryProviderProps extends ArchbaseQueryProviderConfig {
39
+ children: ReactNode;
40
+ }
41
+ export declare function ArchbaseQueryProvider({ children, queryClient, enableDevTools, ...config }: ArchbaseQueryProviderProps): import("react/jsx-runtime").JSX.Element;
42
+ /**
43
+ * Hook to access the QueryClient
44
+ */
45
+ export declare function useArchbaseQueryClient(): QueryClient;
46
+ /**
47
+ * Hook for global query states
48
+ */
49
+ export declare function useArchbaseQueryStates(): {
50
+ stats: {
51
+ total: number;
52
+ loading: number;
53
+ error: number;
54
+ success: number;
55
+ stale: number;
56
+ fresh: number;
57
+ };
58
+ queries: import("@tanstack/react-query").Query<unknown, Error, unknown, readonly unknown[]>[];
59
+ invalidateAll: () => Promise<void>;
60
+ clearAll: () => void;
61
+ refetchAll: () => Promise<void>;
62
+ isOnline: boolean;
63
+ };
64
+ /**
65
+ * Higher-order component for providing QueryClient
66
+ */
67
+ export declare function withArchbaseQuery<P extends object>(Component: React.ComponentType<P>, config?: ArchbaseQueryProviderConfig): {
68
+ (props: P): import("react/jsx-runtime").JSX.Element;
69
+ displayName: string;
70
+ };
71
+ /**
72
+ * DevTools component for debugging query state
73
+ */
74
+ export declare function ArchbaseQueryDebugger(): import("react/jsx-runtime").JSX.Element;
75
+ /**
76
+ * Offline indicator component
77
+ */
78
+ export declare function ArchbaseOfflineIndicator(): import("react/jsx-runtime").JSX.Element;
79
+ export default ArchbaseQueryProvider;