/**
 * QR Code Slide — Auto-generate QR codes for presentations.
 *
 * Features:
 * - Generate QR codes from URLs, text, contact info
 * - Link to live presentation / audience interaction
 * - Dynamic QR codes with tracking
 * - Customizable styling (colors, logo embedding)
 * - Multiple QR code types (URL, vCard, WiFi, etc.)
 */
/** QR code content types. */
export type QRContentType = 'url' | 'text' | 'email' | 'phone' | 'sms' | 'vcard' | 'wifi' | 'geo' | 'calendar' | 'presentation-link' | 'feedback-form' | 'poll';
/** Base QR code configuration. */
export interface QRCodeConfig {
    /** Unique ID. */
    id: string;
    /** Content type. */
    type: QRContentType;
    /** Raw content/data. */
    data: string | QRContentData;
    /** Display label. */
    label?: string;
    /** Description text. */
    description?: string;
    /** QR code styling. */
    style?: QRCodeStyle;
    /** Size in pixels. */
    size?: number;
    /** Error correction level. */
    errorCorrection?: 'L' | 'M' | 'Q' | 'H';
    /** Enable tracking (for dynamic QR codes). */
    enableTracking?: boolean;
    /** Short URL for tracking. */
    shortUrl?: string;
}
/** QR code content data structures. */
export type QRContentData = UrlContent | EmailContent | PhoneContent | SMSContent | VCardContent | WiFiContent | GeoContent | CalendarContent | PresentationLinkContent | FeedbackFormContent | QRPollContent;
/** URL content. */
export interface UrlContent {
    type: 'url';
    url: string;
}
/** Email content. */
export interface EmailContent {
    type: 'email';
    to: string;
    subject?: string;
    body?: string;
}
/** Phone content. */
export interface PhoneContent {
    type: 'phone';
    number: string;
}
/** SMS content. */
export interface SMSContent {
    type: 'sms';
    number: string;
    message?: string;
}
/** vCard contact content. */
export interface VCardContent {
    type: 'vcard';
    firstName: string;
    lastName: string;
    organization?: string;
    title?: string;
    email?: string;
    phone?: string;
    mobile?: string;
    address?: {
        street?: string;
        city?: string;
        state?: string;
        postalCode?: string;
        country?: string;
    };
    website?: string;
    note?: string;
}
/** WiFi network content. */
export interface WiFiContent {
    type: 'wifi';
    ssid: string;
    password?: string;
    encryption: 'WPA' | 'WEP' | 'nopass';
    hidden?: boolean;
}
/** Geographic location content. */
export interface GeoContent {
    type: 'geo';
    latitude: number;
    longitude: number;
    altitude?: number;
    label?: string;
}
/** Calendar event content. */
export interface CalendarContent {
    type: 'calendar';
    title: string;
    description?: string;
    location?: string;
    startDate: string;
    endDate: string;
    allDay?: boolean;
}
/** Presentation link content. */
export interface PresentationLinkContent {
    type: 'presentation-link';
    presentationId: string;
    slideIndex?: number;
    accessCode?: string;
    expiresAt?: string;
    allowDownload?: boolean;
}
/** Feedback form content. */
export interface FeedbackFormContent {
    type: 'feedback-form';
    formId: string;
    presentationId: string;
    questions?: FeedbackQuestion[];
    anonymous?: boolean;
}
/** Feedback question. */
export interface FeedbackQuestion {
    id: string;
    type: 'rating' | 'text' | 'choice' | 'scale';
    question: string;
    options?: string[];
    required?: boolean;
}
/** Poll content for QR codes. */
export interface QRPollContent {
    type: 'poll';
    pollId: string;
    question: string;
    options: string[];
    allowMultiple?: boolean;
    showResults?: boolean;
    closesAt?: string;
}
/** QR code styling options. */
export interface QRCodeStyle {
    /** Foreground color. */
    foregroundColor?: string;
    /** Background color. */
    backgroundColor?: string;
    /** Corner square style. */
    cornerSquareStyle?: 'square' | 'dot' | 'rounded';
    /** Corner dot style. */
    cornerDotStyle?: 'square' | 'dot';
    /** Dot style for data modules. */
    dotStyle?: 'square' | 'dots' | 'rounded' | 'classy' | 'classy-rounded';
    /** Logo/image to embed in center. */
    logo?: {
        src: string;
        size?: number;
        margin?: number;
        borderRadius?: number;
    };
    /** Gradient for foreground. */
    gradient?: {
        type: 'linear' | 'radial';
        colors: string[];
        rotation?: number;
    };
    /** Border/frame styling. */
    frame?: {
        style: 'none' | 'simple' | 'rounded' | 'banner';
        color?: string;
        text?: string;
        textColor?: string;
        fontSize?: number;
    };
}
/** QR code slide configuration. */
export interface QRCodeSlideConfig {
    /** Slide ID. */
    id: string;
    /** Slide title. */
    title: string;
    /** Subtitle. */
    subtitle?: string;
    /** QR codes on this slide. */
    qrCodes: QRCodeConfig[];
    /** Layout mode. */
    layout: 'single' | 'side-by-side' | 'grid';
    /** Call-to-action text. */
    callToAction?: string;
    /** Instructions for scanning. */
    instructions?: string;
    /** Background styling. */
    background?: {
        color?: string;
        gradient?: {
            colors: string[];
            direction?: string;
        };
        image?: string;
    };
    /** Show QR code labels. */
    showLabels?: boolean;
    /** Animate QR codes on enter. */
    animate?: boolean;
}
/** Generated QR code result. */
export interface GeneratedQRCode {
    id: string;
    dataUrl: string;
    rawData: string;
    svgString?: string;
    size: number;
    config: QRCodeConfig;
}
/** QR code tracking data. */
export interface QRCodeScanEvent {
    qrCodeId: string;
    scannedAt: string;
    userAgent?: string;
    ipAddress?: string;
    location?: {
        country?: string;
        city?: string;
    };
    referrer?: string;
}
/** QR code analytics. */
export interface QRCodeAnalytics {
    qrCodeId: string;
    totalScans: number;
    uniqueScans: number;
    scansByDate: Array<{
        date: string;
        count: number;
    }>;
    scansByLocation: Array<{
        location: string;
        count: number;
    }>;
    scansByDevice: Array<{
        device: string;
        count: number;
    }>;
    lastScanAt?: string;
}
/**
 * Encode content to QR code data string.
 */
export declare function encodeQRContent(config: QRCodeConfig): string;
/** Generated QR code slide. */
export interface QRCodeSlide {
    id: string;
    type: 'qrcode';
    title: string;
    subtitle?: string;
    config: QRCodeSlideConfig;
    qrCodes: GeneratedQRCode[];
}
/**
 * Create a QR code slide.
 */
export declare function createQRCodeSlide(config: QRCodeSlideConfig): QRCodeSlide;
/**
 * Create a presentation link QR slide.
 */
export declare function createPresentationLinkSlide(presentationId: string, options?: {
    title?: string;
    accessCode?: string;
    expiresIn?: number;
}): QRCodeSlideConfig;
/**
 * Create a feedback QR slide.
 */
export declare function createFeedbackSlide(presentationId: string, questions?: FeedbackQuestion[]): QRCodeSlideConfig;
/**
 * Create a poll QR slide.
 */
export declare function createPollSlide(question: string, options: string[], settings?: {
    allowMultiple?: boolean;
    showResults?: boolean;
    closesIn?: number;
}): QRCodeSlideConfig;
/**
 * Create a contact info QR slide.
 */
export declare function createContactSlide(contact: Omit<VCardContent, 'type'>): QRCodeSlideConfig;
/**
 * Create a WiFi QR slide.
 */
export declare function createWiFiSlide(ssid: string, password: string, encryption?: 'WPA' | 'WEP' | 'nopass'): QRCodeSlideConfig;
/**
 * Create a multi-QR slide with multiple codes.
 */
export declare function createMultiQRSlide(qrCodes: Array<{
    label: string;
    url: string;
    color?: string;
}>): QRCodeSlideConfig;
declare const _default: {
    encodeQRContent: typeof encodeQRContent;
    createQRCodeSlide: typeof createQRCodeSlide;
    createPresentationLinkSlide: typeof createPresentationLinkSlide;
    createFeedbackSlide: typeof createFeedbackSlide;
    createPollSlide: typeof createPollSlide;
    createContactSlide: typeof createContactSlide;
    createWiFiSlide: typeof createWiFiSlide;
    createMultiQRSlide: typeof createMultiQRSlide;
};
export default _default;
//# sourceMappingURL=qrCodeSlide.d.ts.map