import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSDiffableDataSourceSnapshot } from "./NSDiffableDataSourceSnapshot.js";
import type { _NSTableColumn } from "./NSTableColumn.js";
import type { _NSTableRowView } from "./NSTableRowView.js";
import type { _NSTableView } from "./NSTableView.js";
import type { _NSTableViewDataSource } from "./NSTableViewDataSource.js";
import type { _NSView } from "./NSView.js";
import type { NSTableViewAnimationOptions } from "./NSTableViewAnimationOptions.js";
export declare class _NSTableViewDiffableDataSource extends _NSObject {
    static alloc(): _NSTableViewDiffableDataSource;
    static new(): _NSTableViewDiffableDataSource;
    init(): _NSTableViewDiffableDataSource;
    initWithTableView$cellProvider$(tableView: _NSTableView, cellProvider: (arg0: _NSTableView, arg1: _NSTableColumn, arg2: number, arg3: NobjcObject) => _NSView): _NSTableViewDiffableDataSource;
    /**
     * Create a mutable "snapshot" of the data source state. This can be mutated via transactional updates which, when completed, can be "applied" back to a connected data source
     */
    snapshot(): _NSDiffableDataSourceSnapshot;
    /**
     * Apply a snapshot to the connected data source. To perform an animated diff of the changes: animatingDifferences == YES For non-animated update (i.e. reloadData) without the diff overhead: animatingDifferences == NO If the (optional) completion block is specified, it will be called on the main queue when the animations are completed.
     */
    applySnapshot$animatingDifferences$(snapshot: _NSDiffableDataSourceSnapshot, animatingDifferences: boolean): void;
    applySnapshot$animatingDifferences$completion$(snapshot: _NSDiffableDataSourceSnapshot, animatingDifferences: boolean, completion: (() => void) | null): void;
    /** Row <-> item identifier conversion */
    itemIdentifierForRow$(row: number): NobjcObject | null;
    rowForItemIdentifier$(identifier: NobjcObject): number;
    /** Row <-> section identifier conversion */
    sectionIdentifierForRow$(row: number): NobjcObject | null;
    rowForSectionIdentifier$(identifier: NobjcObject): number;
    rowViewProvider(): ((arg0: _NSTableView, arg1: number, arg2: NobjcObject) => _NSTableRowView) | null;
    setRowViewProvider$(value: ((arg0: _NSTableView, arg1: number, arg2: NobjcObject) => _NSTableRowView) | null): void;
    sectionHeaderViewProvider(): ((arg0: _NSTableView, arg1: number, arg2: NobjcObject) => _NSView) | null;
    setSectionHeaderViewProvider$(value: ((arg0: _NSTableView, arg1: number, arg2: NobjcObject) => _NSView) | null): void;
    /**
     * Default value is NSTableViewAnimationEffectFade. Change takes effect on the next update.
     */
    defaultRowAnimation(): NSTableViewAnimationOptions;
    setDefaultRowAnimation$(value: NSTableViewAnimationOptions): void;
}
export interface _NSTableViewDiffableDataSource extends _NSTableViewDataSource {
}
