import type { NobjcObject } from "objc-js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _ISyncClient } from "./ISyncClient.js";
import type { _ISyncSession } from "./ISyncSession.js";
import type { _ISyncSessionDriverDataSource } from "./ISyncSessionDriverDataSource.js";
export declare class _ISyncSessionDriver extends _NSObject {
    static alloc(): _ISyncSessionDriver;
    static new(): _ISyncSessionDriver;
    init(): _ISyncSessionDriver;
    /**
     * The designated method to create an ISyncSessionDriver. The driver can be reused for multiple sync sessions. Sample usage case: ISyncSessionDriver *sessionDriver = [[ISyncSessionDriver sessionDriverWithDataSource:myDataSource] retain]; BOOL success = [sessionDriver sync]; if (!success) myError = [sessionDriver lastError];
     * @deprecated
     */
    static sessionDriverWithDataSource$(dataSource: _ISyncSessionDriverDataSource): _ISyncSessionDriver;
    /**
     * Initiate a sync. The driver will register the ISyncClient if it is not already registered. The driver will create an ISyncSession.
     * @deprecated
     */
    sync(): boolean;
    /**
     * This initiates an asynchronous sync. If the driver is unable to create a sync session, this call will return NO, and outError will contain the error. If the driver is able to create a sync session, this call will return YES. Any errors that occur during a sync will cause sessionDriverDidCancelSession: to be called, and the error will be available via lastError Clients invoking this method must pay attention to the delegate callbacks sessionDriverDidFinishSession: and sessionDriverDidCancelSession: to determine if the sync succeeded or failed.
     * @deprecated
     */
    startAsynchronousSync$(outError: NobjcObject): boolean;
    /**
     * If a previous call to sync returned NO, this method will return the error associated with that failed sync. This error is only valid until the driver begins a new sync
     * @deprecated
     */
    lastError(): _NSError;
    /**
     * Get the data source object, which implements the ISyncSessionDriverDataSource Protocol. When an ISyncSessionDriver instance receives a sync invocation, it will call back to the data source object for its data.
     * @deprecated
     */
    dataSource(): _ISyncSessionDriverDataSource;
    /**
     * Set and get the delegate object. If no delegate is supplied, an ISyncSessionDriver will use the dataSource object as the delegate.
     * @deprecated
     */
    setDelegate$(delegate: NobjcObject): void;
    /** @deprecated */
    delegate(): NobjcObject;
    /**
     * Set and get shouldSyncOnAlert. If this is true, then the driver will register as a sync alert handler. When the client is requested to join a sync, the driver will initiate a sync, and behave as though its -sync method was invoked. This value defaults to NO
     * @deprecated
     */
    setHandlesSyncAlerts$(yesOrNo: boolean): void;
    /** @deprecated */
    handlesSyncAlerts(): boolean;
    /**
     * Get the ISyncClient. The ISyncSessionDriver will construct an ISyncClient with the clientIdentifier specified by the data source.
     * @deprecated
     */
    client(): _ISyncClient;
    /**
     * Get the ISyncSession. The ISyncSessionDriver will create an ISyncSession as part of its sync method. When the driver returns from an invocation of sync, and when either of the delegate methods - (void)sessionDriverDidFinishSession:(ISyncSessionDriver *)sender; - (void)sessionDriverDidCancelSession:(ISyncSessionDriver *)sender; are called, the session object is no longer valid, and the driver will return nil. This method should be called only on the same thread in which the sync method has been invoked.
     * @deprecated
     */
    session(): _ISyncSession;
    /**
     * Finish the current sync session. This method should be used when a client wants to prematurely finish a sync session. This method should be used instead of [[sessionDriver session] finishSyncing] for all ISyncSessionDriverDataSources. If this method is invoked while the Driver is waiting for the Data Source to return from a callback, the return value of that callback is dropped.
     * @deprecated
     */
    finishSyncing(): void;
}
