import type { Fragment, LinkSelection, ObjectSelection, Selector, FragmentUnionSelection, SelectionPropertyKey, ReaderFragment } from './Select'; import type { DataSnapshot, Snapshot, SnapshotRefresh } from './interfaces/Snapshot'; import type { StoreLink, StoreResolveResult } from './interfaces/Store'; import { StoreResolveResultState } from './interfaces/Store'; import { getLinkState, StoreLinkStateValues } from './reader/links'; import type { TTLStrategy } from './reader/resolve'; import type { Store } from './interfaces/Store'; import type { NormalizedKeyMetadata } from './interfaces/queryability'; import { StoreKeySet } from './main'; interface ReaderPath { key: string | number | NormalizedKeyMetadata; fullPath: string | number | NormalizedKeyMetadata; parent: ReaderPath | null; baseSnapshotValue: null | undefined | { [key: string]: any; }; } export declare function resolveLink(reader: Reader, storeLink: StoreLink, version: string | undefined): Snapshot | undefined; export declare class Reader { store: Store; variables: V; seenIds: StoreKeySet; ttlStrategy: TTLStrategy; isMissingData: boolean; hasStaleData: boolean; missingPaths: StoreKeySet; missingLinks: StoreKeySet; currentPath: ReaderPath; timestamp: number; snapshotChanged: boolean; refresh?: SnapshotRefresh; baseSnapshot?: DataSnapshot; hasPendingData: boolean; constructor(store: Store, variables: V, refresh?: SnapshotRefresh, baseSnapshot?: DataSnapshot, ttlStrategy?: TTLStrategy); resolveMetadata(source: any, version: string): D | undefined; private readFragmentUnion; read(selector: Selector): Snapshot; private getSnapshotState; private createErrorSnapshot; private createSnapshot; private opaqueCopy; private deepCopy; private selectAllArray; private selectAllObject; private selectAll; markPending(): void; markStale(): void; markMissing(): void; markMissingLink(linkKey: string | NormalizedKeyMetadata): void; unMarkMissing(): void; assignNonScalar(sink: any, key: SelectionPropertyKey, value: any): void; enterPath(key: string | number): void; exitPath(): void; readSingleLink(propertyName: SelectionPropertyKey, selection: LinkSelection, source: any, sink: any, assignmentProperty?: SelectionPropertyKey): void; private markRedirectsSeen; private resolveKey; private readStoreLinkWithRef; readObject(key: string, selection: ObjectSelection, source: any, sink: any): void; /** * Flip snapshotChanged flag to 'true' if current size of the value 'array' is different from the length of base snapshot. * * @param value - Sink array to be checked against baseSnapshotValue */ private checkIfArrayLengthChanged; /** * Flip snapshotChanged flag to 'true' if number of keys in the 'Object' is different from the length of keys in base snapshot. * * @param keys - Array of Object keys to be checked against baseSnapshotValue */ private checkIfObjectKeysLengthChanged; private checkIfChanged; private readPluralLink; private readObjectMap; private readLinkMap; private readSuccessResolveState; private readFragment; readPluralObject(propertyName: string, selection: ObjectSelection, record: any, data: any): void; private readOpaque; private readScalarMap; readScalarPlural(propertyName: string, record: any, data: any, required: boolean): void; readScalar(propertyName: SelectionPropertyKey, record: any, data: any, required?: false): void; assignScalar(key: SelectionPropertyKey, sink: any, value: any): void; storeLookup(key: string | NormalizedKeyMetadata): StoreResolveResult; private selectUnion; private selectObjectUnion; private traverseSelection; traverseSelections(node: ObjectSelection | Exclude, record: any, data: any): void; isRebuilding(): boolean; getIsDataMissing(): boolean; getTimeStamp(): number; markSeenId(key: string | NormalizedKeyMetadata): void; getFullPathString(fullPath: string | number | NormalizedKeyMetadata): string | NormalizedKeyMetadata; getLinkState: typeof getLinkState; StoreLinkStateValues: typeof StoreLinkStateValues; StoreResolveResultState: typeof StoreResolveResultState; } export {};