import { StateInterface, LibraryContext, Source, ProducerConfig, CachedState, State, UpdateQueue, RunTask, LastSuccessSavedState, PromiseLike, AbortFn, Producer, PendingUpdate, PendingTimeout, StateSubscription, InstanceEvents, CreateSourceObject } from './types.js';

declare class AsyncState<TData, TArgs extends unknown[], TError> implements StateInterface<TData, TArgs, TError> {
    readonly ctx: LibraryContext | null;
    journal?: any[] | null;
    actions: Source<TData, TArgs, TError>;
    id: number;
    key: string;
    version: number;
    config: ProducerConfig<TData, TArgs, TError>;
    payload: Record<string, any> | null;
    cache: Record<string, CachedState<TData, TArgs, TError>> | null;
    parent: StateInterface<TData, TArgs, TError> | null;
    lanes: Record<string, StateInterface<TData, TArgs, TError>> | null;
    state: State<TData, TArgs, TError>;
    queue: UpdateQueue<TData, TArgs, TError> | null;
    latestRun: RunTask<TData, TArgs, TError> | null;
    lastSuccess: LastSuccessSavedState<TData, TArgs>;
    promise: PromiseLike<TData, TError> | null;
    res: {
        res: (data: TData) => void;
        rej: (error: TError) => void;
    } | null;
    currentAbort: AbortFn | null;
    fn: Producer<TData, TArgs, TError> | null;
    pendingUpdate: PendingUpdate | null;
    pendingTimeout: PendingTimeout | null;
    subsIndex: number | null;
    subscriptions: Record<number, StateSubscription<TData, TArgs, TError>> | null;
    eventsIndex: number | null;
    events: InstanceEvents<TData, TArgs, TError> | null;
    global: boolean | null;
    constructor(key: string, producer: Producer<TData, TArgs, TError> | undefined | null, config?: ProducerConfig<TData, TArgs, TError>);
}
declare function getSource<TData, TArgs extends unknown[], TError>(key: string, context?: unknown): Source<TData, TArgs, TError> | undefined;
declare function createSource<TData, TArgs extends unknown[] = [], TError = Error>(props: CreateSourceObject<TData, TArgs, TError>): Source<TData, TArgs, TError>;
declare function createSource<TData, TArgs extends unknown[] = [], TError = Error>(key: string, producer?: Producer<TData, TArgs, TError> | undefined | null, config?: ProducerConfig<TData, TArgs, TError>): Source<TData, TArgs, TError>;

export { AsyncState, createSource, getSource };
