/**
 * LINE Flex Message templates — rich message layouts for the LINE messaging channel.
 *
 * Builds LINE Flex Message JSON structures for various content types: text bubbles,
 * image carousels, button menus, confirmation dialogs, receipt-style layouts, and
 * koi tool result cards. LINE's Flex Messages are similar to Adaptive Cards.
 *
 * @module
 */
import type { messagingApi } from "@line/bot-sdk";
type FlexContainer = messagingApi.FlexContainer;
type FlexBubble = messagingApi.FlexBubble;
type FlexCarousel = messagingApi.FlexCarousel;
type FlexBox = messagingApi.FlexBox;
type FlexText = messagingApi.FlexText;
type FlexImage = messagingApi.FlexImage;
type FlexButton = messagingApi.FlexButton;
type FlexComponent = messagingApi.FlexComponent;
type Action = messagingApi.Action;
export type ListItem = {
    title: string;
    subtitle?: string;
    action?: Action;
};
export type CardAction = {
    label: string;
    action: Action;
};
/**
 * Create an info card with title, body, and optional footer
 *
 * Editorial design: Clean hierarchy with accent bar, generous spacing,
 * and subtle background zones for visual separation.
 */
export declare function createInfoCard(title: string, body: string, footer?: string): FlexBubble;
/**
 * Create a list card with title and multiple items
 *
 * Editorial design: Numbered/bulleted list with clear visual hierarchy,
 * accent dots for each item, and generous spacing.
 */
export declare function createListCard(title: string, items: ListItem[]): FlexBubble;
/**
 * Create an image card with image, title, and optional body text
 */
export declare function createImageCard(imageUrl: string, title: string, body?: string, options?: {
    aspectRatio?: "1:1" | "1.51:1" | "1.91:1" | "4:3" | "16:9" | "20:13" | "2:1" | "3:1";
    aspectMode?: "cover" | "fit";
    action?: Action;
}): FlexBubble;
/**
 * Create an action card with title, body, and action buttons
 */
export declare function createActionCard(title: string, body: string, actions: CardAction[], options?: {
    imageUrl?: string;
    aspectRatio?: "1:1" | "1.51:1" | "1.91:1" | "4:3" | "16:9" | "20:13" | "2:1" | "3:1";
}): FlexBubble;
/**
 * Create a carousel container from multiple bubbles
 * LINE allows max 12 bubbles in a carousel
 */
export declare function createCarousel(bubbles: FlexBubble[]): FlexCarousel;
/**
 * Create a notification bubble (for alerts, status updates)
 *
 * Editorial design: Bold status indicator with accent color,
 * clear typography, optional icon for context.
 */
export declare function createNotificationBubble(text: string, options?: {
    icon?: string;
    type?: "info" | "success" | "warning" | "error";
    title?: string;
}): FlexBubble;
/**
 * Create a receipt/summary card (for orders, transactions, data tables)
 *
 * Editorial design: Clean table layout with alternating row backgrounds,
 * prominent total section, and clear visual hierarchy.
 */
export declare function createReceiptCard(params: {
    title: string;
    subtitle?: string;
    items: Array<{
        name: string;
        value: string;
        highlight?: boolean;
    }>;
    total?: {
        label: string;
        value: string;
    };
    footer?: string;
}): FlexBubble;
/**
 * Create a calendar event card (for meetings, appointments, reminders)
 *
 * Editorial design: Date as hero, strong typographic hierarchy,
 * color-blocked zones, full text wrapping for readability.
 */
export declare function createEventCard(params: {
    title: string;
    date: string;
    time?: string;
    location?: string;
    description?: string;
    calendar?: string;
    isAllDay?: boolean;
    action?: Action;
}): FlexBubble;
/**
 * Create a calendar agenda card showing multiple events
 *
 * Editorial timeline design: Time-focused left column with event details
 * on the right. Visual accent bars indicate event priority/recency.
 */
export declare function createAgendaCard(params: {
    title: string;
    subtitle?: string;
    events: Array<{
        title: string;
        time?: string;
        location?: string;
        calendar?: string;
        isNow?: boolean;
    }>;
    footer?: string;
}): FlexBubble;
/**
 * Create a media player card for Sonos, Spotify, Apple Music, etc.
 *
 * Editorial design: Album art hero with gradient overlay for text,
 * prominent now-playing indicator, refined playback controls.
 */
export declare function createMediaPlayerCard(params: {
    title: string;
    subtitle?: string;
    source?: string;
    imageUrl?: string;
    isPlaying?: boolean;
    progress?: string;
    controls?: {
        previous?: {
            data: string;
        };
        play?: {
            data: string;
        };
        pause?: {
            data: string;
        };
        next?: {
            data: string;
        };
    };
    extraActions?: Array<{
        label: string;
        data: string;
    }>;
}): FlexBubble;
/**
 * Create an Apple TV remote card with a D-pad and control rows.
 */
export declare function createAppleTvRemoteCard(params: {
    deviceName: string;
    status?: string;
    actionData: {
        up: string;
        down: string;
        left: string;
        right: string;
        select: string;
        menu: string;
        home: string;
        play: string;
        pause: string;
        volumeUp: string;
        volumeDown: string;
        mute: string;
    };
}): FlexBubble;
/**
 * Create a device control card for Apple TV, smart home devices, etc.
 *
 * Editorial design: Device-focused header with status indicator,
 * clean control grid with clear visual hierarchy.
 */
export declare function createDeviceControlCard(params: {
    deviceName: string;
    deviceType?: string;
    status?: string;
    isOnline?: boolean;
    imageUrl?: string;
    controls: Array<{
        label: string;
        icon?: string;
        data: string;
        style?: "primary" | "secondary";
    }>;
}): FlexBubble;
/**
 * Wrap a FlexContainer in a FlexMessage
 */
export declare function toFlexMessage(altText: string, contents: FlexContainer): messagingApi.FlexMessage;
export type { FlexContainer, FlexBubble, FlexCarousel, FlexBox, FlexText, FlexImage, FlexButton, FlexComponent, Action, };
