import type { NobjcObject } from "objc-js";
import type { _NSEntityDescription } from "./NSEntityDescription.js";
import type { _NSIncrementalStoreNode } from "./NSIncrementalStoreNode.js";
import type { _NSManagedObjectContext } from "./NSManagedObjectContext.js";
import type { _NSManagedObjectID } from "./NSManagedObjectID.js";
import type { _NSPersistentStore } from "./NSPersistentStore.js";
import type { _NSPersistentStoreRequest } from "./NSPersistentStoreRequest.js";
import type { _NSRelationshipDescription } from "./NSRelationshipDescription.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSURL } from "../Foundation/NSURL.js";
export declare class _NSIncrementalStore extends _NSPersistentStore {
    static alloc(): _NSIncrementalStore;
    static new(): _NSIncrementalStore;
    init(): _NSIncrementalStore;
    /** API methods that may be overriden: */
    static identifierForNewStoreAtURL$(storeURL: _NSURL): NobjcObject;
    /**
     * CoreData expects loadMetadata: to validate that the URL used to create the store is usable (location exists, is writable (if applicable), schema is compatible, etc) and return an error if there is an issue. Any subclass of NSIncrementalStore which is file-based must be able to handle being initialized with a URL pointing to a zero-length file. This serves as an indicator that a new store is to be constructed at the specified location and allows applications using the store to securly create reservation files in known locations.
     */
    loadMetadata$(error: NobjcObject | null): boolean;
    /**
     * Return a value as appropriate for the request, or nil if the request cannot be completed. If the request is a fetch request whose result type is set to one of NSManagedObjectResultType, NSManagedObjectIDResultType, NSDictionaryResultType, return an array containing all objects in the store matching the request. If the request is a fetch request whose result type is set to NSCountResultType, return an array containing an NSNumber of all objects in the store matching the request. If the request is a save request, the result should be an empty array. Note that save requests may have nil inserted/updated/deleted/locked collections; this should be treated as a request to save the store metadata. Note that subclasses of NSIncrementalStore should implement this method conservatively, and expect that unknown request types may at some point be passed to the method. The correct behavior in these cases would be to return nil and an error.
     */
    executeRequest$withContext$error$(request: _NSPersistentStoreRequest, context: _NSManagedObjectContext | null, error: NobjcObject | null): NobjcObject | null;
    /**
     * Returns an NSIncrementalStoreNode encapsulating the persistent external values for the object for an objectID. It should include all attributes values and may include to-one relationship values as NSManagedObjectIDs. Should return nil and set the error if the object cannot be found.
     */
    newValuesForObjectWithID$withContext$error$(objectID: _NSManagedObjectID, context: _NSManagedObjectContext, error: NobjcObject | null): _NSIncrementalStoreNode | null;
    /**
     * Returns the relationship for the given relationship on the object with ID objectID. If the relationship is a to-one it should return an NSManagedObjectID corresponding to the destination or NSNull if the relationship value is nil. If the relationship is a to-many, should return an NSSet or NSArray containing the NSManagedObjectIDs of the related objects. Should return nil and set the error if the source object cannot be found.
     */
    newValueForRelationship$forObjectWithID$withContext$error$(relationship: _NSRelationshipDescription, objectID: _NSManagedObjectID, context: _NSManagedObjectContext | null, error: NobjcObject | null): NobjcObject | null;
    /**
     * Called before executeRequest with a save request, to assign permanent IDs to newly inserted objects; must return the objectIDs in the same order as the objects appear in array.
     */
    obtainPermanentIDsForObjects$error$(array: _NSArray, error: NobjcObject | null): _NSArray | null;
    /**
     * Inform the store that the objects with ids in objectIDs are in use in a client NSManagedObjectContext
     */
    managedObjectContextDidRegisterObjectsWithIDs$(objectIDs: _NSArray): void;
    /**
     * Inform the store that the objects with ids in objectIDs are no longer in use in a client NSManagedObjectContext
     */
    managedObjectContextDidUnregisterObjectsWithIDs$(objectIDs: _NSArray): void;
    /** Returns a new objectID with retain count 1 that uses data as the key. */
    newObjectIDForEntity$referenceObject$(entity: _NSEntityDescription, data: NobjcObject): _NSManagedObjectID;
    /**
     * Returns the reference data used to construct the objectID. Will raise an NSInvalidArgumentException if the objectID was not created by this store.
     */
    referenceObjectForObjectID$(objectID: _NSManagedObjectID): NobjcObject;
}
