import { DomainConceptName, RemeshAction, RemeshDomainContext, RemeshEffectContext, RemeshQueryContext } from '../index'; export type DefaultAsyncData = { type: 'default'; }; export type LoadingAsyncData = { type: 'loading'; }; export type SuccessAsyncData = { type: 'success'; value: T; }; export type FailedAsyncData = { type: 'failed'; error: Error; }; export type CanceledAsyncData = { type: 'canceled'; }; export type AsyncData = DefaultAsyncData | LoadingAsyncData | SuccessAsyncData | FailedAsyncData | CanceledAsyncData; export declare const AsyncData: { default: () => DefaultAsyncData; loading: () => LoadingAsyncData; success: (value: T) => SuccessAsyncData; failed: (error: Error) => FailedAsyncData; canceled: () => CanceledAsyncData; isDefault: (data: AsyncData) => data is DefaultAsyncData; isLoading: (data: AsyncData) => data is LoadingAsyncData; isSuccess: (data: AsyncData) => data is SuccessAsyncData; isFailed: (data: AsyncData) => data is FailedAsyncData; isCanceled: (data: AsyncData) => data is CanceledAsyncData; assertDefault: (data: AsyncData) => asserts data is DefaultAsyncData; assertLoading: (data: AsyncData) => asserts data is LoadingAsyncData; assertSuccess: (data: AsyncData) => asserts data is SuccessAsyncData; assertFailed: (data: AsyncData) => asserts data is FailedAsyncData; assertCanceled: (data: AsyncData) => asserts data is CanceledAsyncData; }; export type AsyncModuleContext = { get: RemeshEffectContext['get']; }; export type AsyncModuleOptions = { name: DomainConceptName<'AsyncModule'>; load: (context: RemeshQueryContext, arg: T) => Promise; onLoading?: (context: AsyncModuleContext, arg: T) => RemeshAction; onSuccess?: (context: AsyncModuleContext, value: U, arg: T) => RemeshAction; onFailed?: (context: AsyncModuleContext, error: Error, arg: T) => RemeshAction; onCanceled?: (context: AsyncModuleContext, arg: T) => RemeshAction; onChanged?: (context: AsyncModuleContext, data: AsyncData, arg: T) => RemeshAction; default?: AsyncData; mode?: 'switch' | 'merge' | 'concat' | 'exhaust'; }; export declare const AsyncModule: (domain: RemeshDomainContext, options: AsyncModuleOptions) => { event: { CanceledEvent: import("../remesh").RemeshSubscribeOnlyEvent<[void], void>; LoadingEvent: import("../remesh").RemeshSubscribeOnlyEvent<[T], T>; SuccessEvent: import("../remesh").RemeshSubscribeOnlyEvent<[U], U>; FailedEvent: import("../remesh").RemeshSubscribeOnlyEvent<[Error], Error>; ChangedEvent: import("../remesh").RemeshSubscribeOnlyEvent<[AsyncData], AsyncData>; }; query: { AsyncDataQuery: import("../remesh").RemeshQuery<[], AsyncData>; }; command: { LoadCommand: import("../remesh").RemeshCommand<[arg: T]>; CancelCommand: import("../remesh").RemeshCommand<[]>; ReloadCommand: import("../remesh").RemeshCommand<[]>; }; };