import type { ObjectTypeDefinition, PrimaryKeyType } from "@osdk/api";
import type { Connectable, Observable, Subject } from "rxjs";
import type { ObjectHolder } from "../../../object/convertWireToOsdkObjects/ObjectHolder.js";
import type { ObjectPayload } from "../../ObjectPayload.js";
import type { CommonObserveOptions, Status } from "../../ObservableClient/common.js";
import type { BatchContext } from "../BatchContext.js";
import type { Changes } from "../Changes.js";
import type { Entry } from "../Layer.js";
import { Query } from "../Query.js";
import type { Store } from "../Store.js";
import type { SubjectPayload } from "../SubjectPayload.js";
import { type ObjectCacheKey } from "./ObjectCacheKey.js";
export declare class ObjectQuery extends Query<ObjectCacheKey, ObjectPayload, CommonObserveOptions> {
	#private;
	constructor(store: Store, subject: Subject<SubjectPayload<ObjectCacheKey>>, type: string, pk: PrimaryKeyType<ObjectTypeDefinition>, cacheKey: ObjectCacheKey, opts: CommonObserveOptions);
	protected _createConnectable(subject: Observable<SubjectPayload<ObjectCacheKey>>): Connectable<ObjectPayload>;
	_fetchAndStore(): Promise<void>;
	writeToStore(data: ObjectHolder, status: Status, batch: BatchContext): Entry<ObjectCacheKey>;
	deleteFromStore(status: Status, batch: BatchContext): Entry<ObjectCacheKey> | undefined;
	invalidateObjectType: (objectType: string, changes: Changes | undefined) => Promise<void>;
}
