import { LitElement } from 'lit';
import type { ComponentStatesMixinInterface } from './ComponentStatesMixin.js';
import type { EventEmitterMixinInterface } from './EventEmitterMixin.js';
type Constructor<T = object> = new (...args: any[]) => T;
export declare class ClipboardMixinInterface {
    copy(text: string, timeout?: number): Promise<void>;
    readonly copiedStateKey: 'btu-copy-to-clipboard-copied';
}
/**
 * Mixin that adds clipboard copy functionality with visual feedback.
 *
 * Provides a `copy()` method that:
 * - Writes text to the system clipboard
 * - Adds a temporary `<consumer-tag>-copied` state for 3 seconds
 * - Emits a `<consumer-tag>-copied` event
 * - Prevents duplicate copy operations while in success state
 *
 * The state and event name are resolved from the host element's tagName
 * at runtime (per LESSONS-NAMING §3) so the mixin stays reusable across
 * different consumers without a hardcoded `btu-clipboard-*` prefix.
 *
 * @mixin
 *
 * @requires ComponentStatesMixin - For state management
 * @requires EventEmitterMixin - For event emission
 *
 * @example
 * ```typescript
 * class MyComponent extends ClipboardMixin(
 *   ComponentStatesMixin(
 *     EventEmitterMixin(
 *       ReadyMixin(LitElement)
 *     )
 *   )
 * ) {
 *   async handleCopy() {
 *     await this.copy('Hello, World!')
 *   }
 * }
 * ```
 */
export declare const ClipboardMixin: <T extends Constructor<LitElement & ComponentStatesMixinInterface & EventEmitterMixinInterface>>(superClass: T) => Constructor<ClipboardMixinInterface> & T;
export {};
//# sourceMappingURL=ClipboardMixin.d.ts.map