import type { Dispatch, SetStateAction } from "react"; import * as z from "zod"; import { InviteUsageModeSchema, type InviteUsageMode } from "../../types/inviteUsageMode"; import type { InviteUsageStrategy } from "./inviteUsageModes"; export { InviteUsageModeSchema }; export type { InviteUsageMode }; export declare const ExpiryPresetSchema: z.ZodObject<{ label: z.ZodString; hours: z.ZodNumber; }, "strip", z.ZodTypeAny, { label: string; hours: number; }, { label: string; hours: number; }>; export interface ExpiryPreset { label: string; hours: number; } export interface InviteGenerateOptions { ttlHours: number; usageMode: InviteUsageMode; } export interface QRCodeData { id: string; terreiroId: string; terreiroName: string; inviteCode: string; expiresAt: Date; createdAt: Date; usageMode?: InviteUsageMode; maxUses?: number; currentUses?: number; isActive?: boolean; } export interface ShareOptions { whatsapp?: boolean; telegram?: boolean; email?: boolean; sms?: boolean; copy?: boolean; native?: boolean; } export interface AddMediumByQRCodePageProps { qrCodeData?: QRCodeData; shareUrl?: string; isLoading?: boolean; isGenerating?: boolean; terreiroName?: string; terreiroAvatar?: string; terreiroDescription?: string; qrCodeSize?: number; qrCodeColor?: string; qrCodeBgColor?: string; logoUrl?: string; shareOptions?: ShareOptions; shareMessage?: string; onGenerateCode?: (options: InviteGenerateOptions) => void; onRegenerateCode?: (options: InviteGenerateOptions) => void; onCopyLink?: (url: string) => void; onShare?: (platform: SharePlatform, url: string) => void; onBack?: () => void; onViewRequests?: () => void; onSettings?: () => void; autoRefresh?: boolean; showExpiryTime?: boolean; showUsageCount?: boolean; enableNotifications?: boolean; expiryPresets?: ExpiryPreset[]; defaultTtlHours?: number; defaultUsageMode?: InviteUsageMode; } export type SharePlatform = "whatsapp" | "telegram" | "email" | "sms" | "copy" | "native"; export interface QRCodeStats { totalScans: number; todayScans: number; successfulRequests: number; pendingRequests: number; } export interface AddMediumByQRCodePageData { qrCodeUrl: string; safeShareUrl: string | undefined; shareMessage: string; isExpired: boolean; isConsumed: boolean; usagePercentage: number; isQRCodeVisible: boolean; shareDrawerOpen: boolean; settingsDrawerOpen: boolean; selectedTtlHours: number; pendingTtlHours: number; selectedUsageMode: InviteUsageMode; pendingUsageMode: InviteUsageMode; activeUsageMode: InviteUsageMode; usageStrategies: InviteUsageStrategy[]; settingsSummary: string; activeInviteSummary: string; expiryDescription: string; expiryPresets: ExpiryPreset[]; copiedLink: boolean; qrCodeSize: number; refreshing: boolean; formatExpiryTime: (date: Date) => string; canShare: boolean; hasClipboard: boolean; } export interface AddMediumByQRCodePageFns { handleGenerateCode: () => void; handleRegenerateCode: () => void; handleRegenerateWithPendingOptions: () => void; handleCopyLink: () => Promise; handleShare: (platform: SharePlatform) => void; handleBack: () => void; handleViewRequests: () => void; handleSettings: () => void; handleSaveInvitePreferences: () => void; handleConfirmExpirySettings: () => void; handleDownloadQR: () => void; handleRefresh: () => void; setIsQRCodeVisible: Dispatch>; setShareDrawerOpen: Dispatch>; setSettingsDrawerOpen: Dispatch>; setSelectedTtlHours: Dispatch>; setPendingTtlHours: Dispatch>; setSelectedUsageMode: Dispatch>; setPendingUsageMode: Dispatch>; setQrCodeSize: Dispatch>; } export declare const InviteGenerateOptionsSchema: z.ZodObject<{ ttlHours: z.ZodNumber; usageMode: z.ZodEnum<["single_use", "multi_until_expiry"]>; }, "strip", z.ZodTypeAny, { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }, { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }>; export declare const QRCodeDataSchema: z.ZodObject<{ id: z.ZodString; terreiroId: z.ZodString; terreiroName: z.ZodString; inviteCode: z.ZodString; expiresAt: z.ZodDate; createdAt: z.ZodDate; usageMode: z.ZodOptional>; maxUses: z.ZodOptional; currentUses: z.ZodDefault; isActive: z.ZodDefault; }, "strip", z.ZodTypeAny, { id: string; terreiroName: string; terreiroId: string; createdAt: Date; isActive: boolean; inviteCode: string; expiresAt: Date; currentUses: number; usageMode?: "single_use" | "multi_until_expiry" | undefined; maxUses?: number | undefined; }, { id: string; terreiroName: string; terreiroId: string; createdAt: Date; inviteCode: string; expiresAt: Date; isActive?: boolean | undefined; usageMode?: "single_use" | "multi_until_expiry" | undefined; maxUses?: number | undefined; currentUses?: number | undefined; }>; export declare const ShareOptionsSchema: z.ZodObject<{ whatsapp: z.ZodDefault; telegram: z.ZodDefault; email: z.ZodDefault; sms: z.ZodDefault; copy: z.ZodDefault; native: z.ZodDefault; }, "strip", z.ZodTypeAny, { email: boolean; copy: boolean; whatsapp: boolean; telegram: boolean; sms: boolean; native: boolean; }, { email?: boolean | undefined; copy?: boolean | undefined; whatsapp?: boolean | undefined; telegram?: boolean | undefined; sms?: boolean | undefined; native?: boolean | undefined; }>; export declare const AddMediumByQRCodePagePropsSchema: z.ZodObject<{ qrCodeData: z.ZodOptional>; maxUses: z.ZodOptional; currentUses: z.ZodDefault; isActive: z.ZodDefault; }, "strip", z.ZodTypeAny, { id: string; terreiroName: string; terreiroId: string; createdAt: Date; isActive: boolean; inviteCode: string; expiresAt: Date; currentUses: number; usageMode?: "single_use" | "multi_until_expiry" | undefined; maxUses?: number | undefined; }, { id: string; terreiroName: string; terreiroId: string; createdAt: Date; inviteCode: string; expiresAt: Date; isActive?: boolean | undefined; usageMode?: "single_use" | "multi_until_expiry" | undefined; maxUses?: number | undefined; currentUses?: number | undefined; }>>; shareUrl: z.ZodOptional; isLoading: z.ZodOptional; isGenerating: z.ZodOptional; terreiroName: z.ZodOptional; terreiroAvatar: z.ZodOptional; terreiroDescription: z.ZodOptional; qrCodeSize: z.ZodOptional; qrCodeColor: z.ZodOptional; qrCodeBgColor: z.ZodOptional; logoUrl: z.ZodOptional; shareOptions: z.ZodOptional; telegram: z.ZodDefault; email: z.ZodDefault; sms: z.ZodDefault; copy: z.ZodDefault; native: z.ZodDefault; }, "strip", z.ZodTypeAny, { email: boolean; copy: boolean; whatsapp: boolean; telegram: boolean; sms: boolean; native: boolean; }, { email?: boolean | undefined; copy?: boolean | undefined; whatsapp?: boolean | undefined; telegram?: boolean | undefined; sms?: boolean | undefined; native?: boolean | undefined; }>>; shareMessage: z.ZodOptional; onGenerateCode: z.ZodOptional; }, "strip", z.ZodTypeAny, { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }, { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }>], null>, z.ZodVoid>>; onRegenerateCode: z.ZodOptional; }, "strip", z.ZodTypeAny, { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }, { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }>], null>, z.ZodVoid>>; onCopyLink: z.ZodOptional, z.ZodVoid>>; onShare: z.ZodOptional, z.ZodVoid>>; onBack: z.ZodOptional, z.ZodVoid>>; onViewRequests: z.ZodOptional, z.ZodVoid>>; onSettings: z.ZodOptional, z.ZodVoid>>; autoRefresh: z.ZodOptional; showExpiryTime: z.ZodOptional; showUsageCount: z.ZodOptional; enableNotifications: z.ZodOptional; expiryPresets: z.ZodOptional, "many">>; defaultTtlHours: z.ZodOptional; defaultUsageMode: z.ZodOptional>; }, "strip", z.ZodTypeAny, { terreiroName?: string | undefined; logoUrl?: string | undefined; onBack?: (() => void) | undefined; isLoading?: boolean | undefined; terreiroDescription?: string | undefined; shareUrl?: string | undefined; onSettings?: (() => void) | undefined; qrCodeData?: { id: string; terreiroName: string; terreiroId: string; createdAt: Date; isActive: boolean; inviteCode: string; expiresAt: Date; currentUses: number; usageMode?: "single_use" | "multi_until_expiry" | undefined; maxUses?: number | undefined; } | undefined; isGenerating?: boolean | undefined; terreiroAvatar?: string | undefined; qrCodeSize?: number | undefined; qrCodeColor?: string | undefined; qrCodeBgColor?: string | undefined; shareOptions?: { email: boolean; copy: boolean; whatsapp: boolean; telegram: boolean; sms: boolean; native: boolean; } | undefined; shareMessage?: string | undefined; onGenerateCode?: ((args_0: { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }) => void) | undefined; onRegenerateCode?: ((args_0: { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }) => void) | undefined; onCopyLink?: ((args_0: string) => void) | undefined; onShare?: ((args_0: string, args_1: string) => void) | undefined; onViewRequests?: (() => void) | undefined; autoRefresh?: boolean | undefined; showExpiryTime?: boolean | undefined; showUsageCount?: boolean | undefined; enableNotifications?: boolean | undefined; expiryPresets?: { label: string; hours: number; }[] | undefined; defaultTtlHours?: number | undefined; defaultUsageMode?: "single_use" | "multi_until_expiry" | undefined; }, { terreiroName?: string | undefined; logoUrl?: string | undefined; onBack?: (() => void) | undefined; isLoading?: boolean | undefined; terreiroDescription?: string | undefined; shareUrl?: string | undefined; onSettings?: (() => void) | undefined; qrCodeData?: { id: string; terreiroName: string; terreiroId: string; createdAt: Date; inviteCode: string; expiresAt: Date; isActive?: boolean | undefined; usageMode?: "single_use" | "multi_until_expiry" | undefined; maxUses?: number | undefined; currentUses?: number | undefined; } | undefined; isGenerating?: boolean | undefined; terreiroAvatar?: string | undefined; qrCodeSize?: number | undefined; qrCodeColor?: string | undefined; qrCodeBgColor?: string | undefined; shareOptions?: { email?: boolean | undefined; copy?: boolean | undefined; whatsapp?: boolean | undefined; telegram?: boolean | undefined; sms?: boolean | undefined; native?: boolean | undefined; } | undefined; shareMessage?: string | undefined; onGenerateCode?: ((args_0: { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }) => void) | undefined; onRegenerateCode?: ((args_0: { ttlHours: number; usageMode: "single_use" | "multi_until_expiry"; }) => void) | undefined; onCopyLink?: ((args_0: string) => void) | undefined; onShare?: ((args_0: string, args_1: string) => void) | undefined; onViewRequests?: (() => void) | undefined; autoRefresh?: boolean | undefined; showExpiryTime?: boolean | undefined; showUsageCount?: boolean | undefined; enableNotifications?: boolean | undefined; expiryPresets?: { label: string; hours: number; }[] | undefined; defaultTtlHours?: number | undefined; defaultUsageMode?: "single_use" | "multi_until_expiry" | undefined; }>;