/**
 * Native error codes rejected on the promises returned by FreshdeskSDK methods.
 * Read `error.code` (React Native's standard `NativeModule` rejection shape) and
 * compare against this enum instead of matching the string literal directly.
 *
 * Coverage is not identical on both platforms — some codes are method-specific
 * on Android and folded into a shared code on iOS, or vice versa. Codes marked
 * (Android) / (iOS) are only ever rejected on that platform; unmarked codes can
 * occur on either.
 */
export declare enum FreshdeskErrorCode {
    /** initialize() timed out waiting for the native SDK to report ready. (Android) */
    INIT_TIMEOUT = "FRESHDESK_INIT_TIMEOUT",
    /** initialize() threw before it could start. (Android) */
    INIT_ERROR = "FRESHDESK_INIT_ERROR",
    /** initialize()'s config object was missing a required key or malformed. */
    INVALID_CONFIG = "FRESHDESK_INVALID_CONFIG",
    /** A method other than initialize() was called before initialize() resolved. */
    NOT_INITIALIZED = "FRESHDESK_NOT_INITIALIZED",
    /** initialize() resolved but the underlying native SDK isn't ready yet. (Android) */
    NOT_READY = "FRESHDESK_NOT_READY",
    /** openSupport()/openKnowledgeBase()/openTopic() had no foreground Activity to attach to. (Android) */
    NO_ACTIVITY = "FRESHDESK_NO_ACTIVITY",
    /** openSupport()/openKnowledgeBase()/openTopic() had no view controller to present from. (iOS) */
    NO_VIEW_CONTROLLER = "FRESHDESK_NO_VIEW_CONTROLLER",
    /** openSupport()/openKnowledgeBase()/openTopic() failed to present the native UI. (Android) */
    OPEN_ERROR = "FRESHDESK_OPEN_ERROR",
    /** trackEvent() failed. (Android) */
    TRACK_ERROR = "FRESHDESK_TRACK_ERROR",
    /** setUserProperties() failed. */
    USER_PROPERTIES_ERROR = "FRESHDESK_USER_PROPERTIES_ERROR",
    /** setTicketProperties() failed. (Android) */
    TICKET_PROPERTIES_ERROR = "FRESHDESK_TICKET_PROPERTIES_ERROR",
    /** authenticateAndUpdate() failed. (Android) */
    AUTH_ERROR = "FRESHDESK_AUTH_ERROR",
    /** dismiss() failed. (Android) */
    DISMISS_ERROR = "FRESHDESK_DISMISS_ERROR",
    /** getUser() failed, or its response could not be parsed. */
    USER_ERROR = "FRESHDESK_USER_ERROR",
    /** getUser()'s response could not be parsed. (iOS) */
    USER_PARSE_ERROR = "FRESHDESK_USER_PARSE_ERROR",
    /** setContentConfiguration()'s JSON payload could not be parsed. */
    CONFIG_PARSE_ERROR = "FRESHDESK_CONFIG_PARSE_ERROR"
}
/**
 * Freshdesk SDK Configuration
 */
export interface FreshdeskConfig {
    /** Account token from Freshdesk portal */
    token: string;
    /** Host URL for your Freshdesk instance */
    host: string;
    /** SDK ID from Freshdesk portal */
    sdkId: string;
    /** Locale for localization (e.g., 'en', 'ar') */
    locale?: string;
    /** JWT token for authenticated users */
    jwt?: string;
    /** Enable debug logging (Android only) */
    debugMode?: boolean;
}
/**
 * User authentication states
 */
export declare enum UserState {
    /** Default state */
    UNDEFINED = "undefined",
    /** JWT passed is successfully authenticated or restored */
    AUTHENTICATED = "authenticated",
    /** JWT passed has expired */
    AUTH_EXPIRED = "authExpired",
    /** Invalid/Expired token is passed */
    NOT_AUTHENTICATED = "notAuthenticated",
    /** Unique user identifier updated for a user */
    IDENTIFIER_UPDATED = "identifierUpdated",
    /** JWT was not passed during init for an enforced JWT SDK linked Widget */
    JWT_ABSENT = "jwtAbsent"
}
/**
 * Topic information for opening specific support topics
 */
export interface TopicInfo {
    /** The name of the topic */
    topicName: string;
    /** The ID of the topic (optional) */
    topicId?: string;
}
/**
 * Event payload for unread count changes
 */
export interface UnreadCountEvent {
    count: number;
}
/**
 * Event payload for user state changes
 */
export interface UserStateEvent {
    state: UserState;
}
/**
 * Event payload for link handler
 */
export interface LinkPressedEvent {
    url: string;
}
/**
 * Event payload for user creation
 */
export interface UserCreatedEvent {
    user: Record<string, unknown>;
}
/**
 * Properties for setting user details
 */
export type UserProperties = Record<string, string | number | boolean>;
/**
 * Properties for setting ticket details
 */
export type TicketProperties = Record<string, string | number | boolean>;
/**
 * Event properties for tracking
 */
export type EventProperties = Record<string, string | number>;
/**
 * Result of reset user operation
 */
export interface ResetUserResult {
    success: boolean;
    message?: string;
    error?: string;
}
/**
 * Channel response time configuration
 */
export interface ChannelResponseTimeUnit {
    one?: string;
    more?: string;
}
/**
 * Channel response online configuration
 */
export interface ChannelResponseOnline {
    defaultMessage?: string;
    minutes?: ChannelResponseTimeUnit;
    hours?: ChannelResponseTimeUnit;
}
/**
 * Channel response configuration
 */
export interface ChannelResponseContent {
    offline?: string;
    online?: ChannelResponseOnline;
}
/**
 * Ticket form content configuration
 */
export interface TicketFormContent {
    title?: string;
    submitBtnTitle?: string;
}
/**
 * Header content configuration
 */
export interface HeaderContent {
    chat?: string;
    faq?: string;
    faqMessageUs?: string;
    faqNotAvailable?: string;
    faqSearchNotAvailable?: string;
    faqThankyou?: string;
    faqUseful?: string;
    faqNotUseful?: string;
    channelResponse?: ChannelResponseContent;
    ticketForm?: TicketFormContent;
    typicallyRepliesFewMinsFallback?: string;
}
/**
 * Placeholder content configuration
 */
export interface PlaceholderContent {
    replyField?: string;
    searchField?: string;
}
/**
 * Privacy policy content configuration
 */
export interface PrivacyPolicyContent {
    privacyPolicyMessage?: string;
    privacyPolicyLinkText?: string;
    privacyPolicyLink?: string;
}
/**
 * Action content configuration
 */
export interface ActionContent {
    tabChat?: string;
}
/**
 * Content configuration for customizing SDK UI text
 */
export interface ContentConfiguration {
    headers?: HeaderContent;
    placeholders?: PlaceholderContent;
    privacyPolicySetting?: PrivacyPolicyContent;
    actions?: ActionContent;
    additionalFields?: Record<string, unknown>;
}
/**
 * User data returned from getUser
 */
export interface UserData {
    [key: string]: unknown;
}
/**
 * SDK version information
 */
export interface SDKVersion {
    version: string;
}
/**
 * Diagnostic check status returned by runDiagnostics
 */
export type DiagnosticStatus = 'pass' | 'warn' | 'fail' | 'skipped';
/**
 * A single diagnostic check from runDiagnostics
 */
export interface DiagnosticCheck {
    id: string;
    status: DiagnosticStatus;
    details: string;
    fixHint: string;
}
/**
 * Structured diagnostic report from runDiagnostics
 */
export interface DiagnosticReport {
    overallStatus: DiagnosticStatus | string;
    checks: DiagnosticCheck[];
    prettyPrinted: string;
    platform: 'ios' | 'android';
    /** Which React Native architecture the native module is running under */
    architecture?: 'old' | 'new';
    /** Whether the native module was resolved as a TurboModule */
    turboModule?: boolean;
}
//# sourceMappingURL=types.d.ts.map