import { CustomElement } from '../../Abstracts/CustomElement';
import { IFlowBoardColumnItemComposerElementProps } from './IFlowBoardColumnItemComposerElementProps';
declare const FlowBoardColumnItemComposerElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & import("../../../Behaviors/Slottable").ISlottable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * FlowBoardColumnItemComposer - A composer for creating new items in a FlowBoard column.
 *
 * @description
 * Provides a trigger+form pattern for adding new items to a column.
 * This component is completely data-agnostic - it accepts any data structure.
 * The user provides their own form fields via the `form` slot.
 *
 * @remarks
 * The composer emits generic `create` events with user-defined data:
 * - Element properties (title, description, labels, etc.)
 * - Metadata (userId, tags, priority, appointments, custom fields, etc.)
 * - Any other data the application needs
 *
 * @name FlowBoardColumnItemComposerElement
 * @element mosaik-flow-board-column-item-composer
 * @category Layouts
 *
 * @slot trigger - The trigger element that opens the form (e.g., "Add another item" button)
 * @slot form - The form content for creating new items (completely user-defined)
 *
 * @csspart container - The main container element
 * @csspart trigger - The trigger section wrapper
 * @csspart form - The form section wrapper
 *
 * @cssprop {String} --flow-board-composer-padding - Padding for the composer
 * @cssprop {String} --flow-board-composer-gap - Gap between form elements
 *
 * @fires flowBoardBeforeItemCreate {FlowBoardBeforeItemCreateEvent} - Fired before item creation (cancelable)
 * @fires flowBoardItemCreate {FlowBoardItemCreateEvent} - Fired when item is created with user-defined data
 *
 * @example
 * Basic usage with simple form:
 * ```html
 * <mosaik-flow-board-column-item-composer id="composer" slot="footer">
 *   <mosaik-button slot="trigger" variant="ghost" icon="plus">Add item</mosaik-button>
 *   <div slot="form">
 *     <mosaik-input id="title" placeholder="Enter title…"></mosaik-input>
 *     <mosaik-button @click="${submit}">Add</mosaik-button>
 *   </div>
 * </mosaik-flow-board-column-item-composer>
 *
 * <script>
 * function submit() {
 *     const composer = document.getElementById('composer');
 *     const title = document.getElementById('title').value;
 *     composer.create({ title });
 * }
 * </script>
 * ```
 *
 * @example
 * Advanced usage with metadata and custom fields:
 * ```html
 * <mosaik-flow-board-column-item-composer id="composer" slot="footer">
 *   <mosaik-button slot="trigger">Add Task</mosaik-button>
 *   <div slot="form">
 *     <mosaik-input id="title" placeholder="Title"></mosaik-input>
 *     <mosaik-textarea id="description"></mosaik-textarea>
 *     <mosaik-select id="priority">
 *       <option value="low">Low</option>
 *       <option value="high">High</option>
 *     </mosaik-select>
 *     <mosaik-user-picker id="assignee"></mosaik-user-picker>
 *     <mosaik-tag-picker id="tags"></mosaik-tag-picker>
 *     <mosaik-date-picker id="dueDate"></mosaik-date-picker>
 *     <mosaik-button @click="${submit}">Create</mosaik-button>
 *   </div>
 * </mosaik-flow-board-column-item-composer>
 *
 * <script>
 * function submit() {
 *     const composer = document.getElementById('composer');
 *     composer.create({
 *         // Element properties
 *         title: document.getElementById('title').value,
 *         description: document.getElementById('description').value,
 *
 *         // Metadata - saved to backend
 *         metadata: {
 *             priority: document.getElementById('priority').value,
 *             assigneeId: document.getElementById('assignee').selectedUserId,
 *             tags: document.getElementById('tags').selectedTags,
 *             dueDate: document.getElementById('dueDate').value,
 *
 *             // Custom fields - anything your app needs
 *             customFields: {
 *                 estimatedHours: 8,
 *                 category: 'backend',
 *                 linkedIssues: ['ISSUE-123', 'ISSUE-456']
 *             }
 *         }
 *     });
 * }
 *
 * // Listen for create events
 * composer.addEventListener('create', (e) => {
 *     const { data } = e.detail;
 *     // Save to backend API with all metadata
 *     await api.createItem({
 *         columnId: currentColumn.id,
 *         ...data
 *     });
 * });
 * </script>
 * ```
 *
 * @public
 */
export declare class FlowBoardColumnItemComposerElement extends FlowBoardColumnItemComposerElement_base implements IFlowBoardColumnItemComposerElementProps {
    private readonly _composerController;
    private readonly _flowBoardBeforeItemCreate;
    private readonly _flowBoardItemCreate;
    private readonly _inheritance;
    /**
     * Constructs a new instance of the `FlowBoardColumnItemComposerElement` class.
     *
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets whether the composer form is open.
     *
     * @public
     * @attr
     */
    get open(): boolean;
    set open(value: boolean);
    /**
     * Gets the column key from the parent column (via inheritance).
     * Useful for identifying which column the item is being added to.
     *
     * @public
     * @readonly
     */
    get columnKey(): string;
    /**
     * Creates a new item with the provided data.
     * Emits flowBoardBeforeItemCreate (cancelable) and flowBoardItemCreate events.
     *
     * @param data The data for the new item (completely user-defined)
     * @returns True if created, false if canceled
     *
     * @public
     */
    create(data: unknown): boolean;
    /**
     * Toggles the composer between open and closed state.
     *
     * @public
     */
    toggle(): void;
    /**
     * Closes the composer form.
     *
     * @public
     */
    close(): void;
}
/**
 * @public
 */
export declare namespace FlowBoardColumnItemComposerElement {
    type Props = IFlowBoardColumnItemComposerElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-flow-board-column-item-composer': FlowBoardColumnItemComposerElement;
    }
}
export {};
//# sourceMappingURL=FlowBoardColumnItemComposerElement.d.ts.map