import { BaseGridPlugin, GridElement, PluginDependency } from '../../core/plugin/base-plugin';
import { ClipboardConfig } from './types';
/**
 * Clipboard Plugin for tbw-grid
 *
 * Brings familiar copy/cut/paste functionality with full keyboard shortcut support
 * (Ctrl+C, Ctrl+X, Ctrl+V). Handles single cells, multi-cell selections, and integrates
 * seamlessly with Excel and other spreadsheet applications via tab-delimited output.
 *
 * > **Optional Dependency:** Works best with SelectionPlugin for copying/pasting selected
 * > cells. Without SelectionPlugin, copies the entire grid and pastes at row 0, column 0.
 *
 * ## Installation
 *
 * ```ts
 * import { ClipboardPlugin } from '@toolbox-web/grid/plugins/clipboard';
 * ```
 *
 * ## Configuration Options
 *
 * | Option | Type | Default | Description |
 * |--------|------|---------|-------------|
 * | `includeHeaders` | `boolean` | `false` | Include column headers in copied data |
 * | `delimiter` | `string` | `'\t'` | Column delimiter (tab for Excel compatibility) |
 * | `newline` | `string` | `'\n'` | Row delimiter |
 * | `quoteStrings` | `boolean` | `false` | Wrap string values in quotes |
 * | `processCell` | `(value, field, row) => string` | - | Custom cell value processor |
 * | `pasteHandler` | `PasteHandler \| null` | `defaultPasteHandler` | Custom paste handler |
 *
 * ## Keyboard Shortcuts
 *
 * | Shortcut | Action |
 * |----------|--------|
 * | `Ctrl+C` / `Cmd+C` | Copy selected cells |
 * | `Ctrl+V` / `Cmd+V` | Paste into selected cells |
 * | `Ctrl+X` / `Cmd+X` | Cut selected cells |
 *
 * ## Paste Behavior by Selection Type
 *
 * | Selection Type | Paste Behavior |
 * |----------------|----------------|
 * | Single cell | Paste expands freely from that cell |
 * | Range selection | Paste is clipped to fit within the selected range |
 * | Row selection | Paste is clipped to the selected rows |
 * | No selection | Paste starts at row 0, column 0 |
 *
 * ## Programmatic API
 *
 * | Method | Signature | Description |
 * |--------|-----------|-------------|
 * | `copy` | `(options?) => Promise<void>` | Copy selection to clipboard |
 * | `paste` | `() => Promise<void>` | Paste from clipboard |
 * | `getSelectionAsText` | `() => string` | Get clipboard text without copying |
 *
 * @example Basic Usage with Excel Compatibility
 * ```ts
 * import '@toolbox-web/grid';
 * import { ClipboardPlugin } from '@toolbox-web/grid/plugins/clipboard';
 * import { SelectionPlugin } from '@toolbox-web/grid/plugins/selection';
 *
 * grid.gridConfig = {
 *   columns: [
 *     { field: 'name', header: 'Name' },
 *     { field: 'email', header: 'Email' },
 *   ],
 *   plugins: [
 *     new SelectionPlugin({ mode: 'range' }),
 *     new ClipboardPlugin({
 *       includeHeaders: true,
 *       delimiter: '\t', // Tab for Excel
 *     }),
 *   ],
 * };
 * ```
 *
 * @example Custom Paste Handler
 * ```ts
 * new ClipboardPlugin({
 *   pasteHandler: (grid, target, data) => {
 *     // Validate or transform data before applying
 *     console.log('Pasting', data.length, 'rows');
 *     return defaultPasteHandler(grid, target, data);
 *   },
 * })
 * ```
 *
 * @see {@link ClipboardConfig} for all configuration options
 * @see {@link SelectionPlugin} for enhanced copy/paste with selection
 *
 * @internal Extends BaseGridPlugin
 */
export declare class ClipboardPlugin extends BaseGridPlugin<ClipboardConfig> {
    #private;
    /**
     * Plugin dependencies - ClipboardPlugin works best with SelectionPlugin.
     *
     * Without SelectionPlugin: copies entire grid, pastes at row 0 col 0.
     * With SelectionPlugin: copies/pastes based on selection.
     */
    /** @internal */
    static readonly dependencies: PluginDependency[];
    /** @internal */
    readonly name = "clipboard";
    /** @internal */
    protected get defaultConfig(): Partial<ClipboardConfig>;
    /** The last copied text (for reference/debugging) */
    private lastCopied;
    /** @internal */
    attach(grid: GridElement): void;
    /** @internal */
    detach(): void;
    /** @internal */
    onKeyDown(event: KeyboardEvent): boolean;
    /**
     * Copy currently selected rows to clipboard.
     * @returns The copied text
     */
    copy(): Promise<string>;
    /**
     * Copy specific rows by index to clipboard.
     * @param indices - Array of row indices to copy
     * @returns The copied text
     */
    copyRows(indices: number[]): Promise<string>;
    /**
     * Read and parse clipboard content.
     * @returns Parsed 2D array of cell values, or null if clipboard is empty
     */
    paste(): Promise<string[][] | null>;
    /**
     * Get the last copied text and timestamp.
     * @returns The last copied info or null
     */
    getLastCopied(): {
        text: string;
        timestamp: number;
    } | null;
}
export type { ClipboardConfig, CopyDetail, PasteDetail } from './types';
//# sourceMappingURL=ClipboardPlugin.d.ts.map