// src/elements/resizable.d.ts
// Hand-authored ambient types for <kc-resizable>'s maximize capability. The
// generated element-types.d.ts emits prop/event interfaces only (not methods),
// so the imperative host API + the cross-element protocol events live here.
// NOT regenerated by `npm run build`.
import type { KcMaximizeIntentDetail, KcMaximizeStateDetail } from './resizable';

declare global {
  interface KcResizableElement extends HTMLElement {
    /** Which item index is maximized (null = none). Setting it maximizes that
     *  item (or restores when set to null) — the declarative source of truth. */
    maximizedIndex: number | null;
    /** Imperatively maximize the item at `index` (thin wrapper over maximizedIndex). */
    maximize(index: number): void;
    /** Imperatively restore from the maximized layout. */
    restore(): void;
  }
  interface HTMLElementTagNameMap {
    'kc-resizable': KcResizableElement;
  }
  interface HTMLElementEventMap {
    'kc-maximize-intent': CustomEvent<KcMaximizeIntentDetail>;
    'kc-maximize-state': CustomEvent<KcMaximizeStateDetail>;
  }
}

export {};
