API reference > @kontsedal/olas-core > QuerySpec
QuerySpec type
Configuration passed to defineQuery({ ... }). The Args tuple is what callers pass as cache keys and to the fetcher. Spec §20.4.
The fetcher's first argument is a FetchCtx (signal + deps); positional cache args come after. This shape lets module-scoped queries readctx.deps.api etc. — no setApiForQuery(api) module-level capture needed.
Signature:
typescript
type QuerySpec<Args extends unknown[], T> = {
id: string;
key: (...args: Args) => unknown[];
fetcher: (ctx: FetchCtx, ...args: Args) => Promise<T>;
staleTime?: number;
gcTime?: number;
refetchInterval?: RefetchInterval<T>;
refetchOnWindowFocus?: boolean;
refetchOnReconnect?: boolean;
keepPreviousData?: boolean;
retry?: RetryPolicy;
retryDelay?: RetryDelay;
networkMode?: NetworkMode;
structuralShare?: boolean;
meta?: QueryMeta;
};References: FetchCtx, RefetchInterval, RetryPolicy, RetryDelay, NetworkMode, QueryMeta