import { Reducer, Store, StoreDef } from '@ngneat/elf'; import { MonoTypeOperatorFunction, Observable } from 'rxjs'; import { RequestsCacheState, skipWhileCached, updateRequestCache } from './requests-cache'; import { RecordKeys, RequestsStatusState, selectRequestStatus, trackRequestStatus } from './requests-status'; type KeyProp = { key: any; }; type ReturnedData = { [K in 'loading' | 'error' | DataKey]: K extends DataKey ? Data : K extends 'loading' ? boolean : K extends 'error' ? Error : never; }; export type DataSource = { trackRequestStatus: (options?: Parameters[2]) => MonoTypeOperatorFunction; setSuccess(): Reducer; data$: () => Observable>; } & (S extends RequestsCacheState ? { skipWhileCached: (options?: Parameters[2]) => MonoTypeOperatorFunction; setCached(options?: Parameters[1]): Reducer; } : Record); export type DynamicKeyDataSource = { trackRequestStatus: (options: KeyProp & Parameters[2]) => MonoTypeOperatorFunction; setSuccess(options: KeyProp): Reducer; data$: (options: KeyProp) => Observable>; } & (S extends RequestsCacheState ? { skipWhileCached: (options: KeyProp & Parameters[2]) => MonoTypeOperatorFunction; setCached(options: KeyProp & Parameters[1]): Reducer; } : Record); interface DataSourceCreationDefaultParams { store: Store>; dataKey: DataKey; idleAsPending?: boolean; requestStatusOptions?: Parameters[1]; } interface DataSourceCreationParams, DataKey extends string> extends DataSourceCreationDefaultParams { data$: () => Observable; requestKey: RequestKey; } interface DynamicKeyDataSourceCreationParams extends DataSourceCreationDefaultParams { data$: (key: any) => Observable; } export declare function createRequestDataSource, DataKey extends string, Error = unknown>(params: DataSourceCreationParams): DataSource; export declare function createRequestDataSource(params: DynamicKeyDataSourceCreationParams): DynamicKeyDataSource; export {};