import type { EmitterSubscription } from 'react-native';
import type { FreshdeskConfig, TopicInfo, UserProperties, TicketProperties, EventProperties, UnreadCountEvent, UserStateEvent, LinkPressedEvent, UserCreatedEvent, ResetUserResult, ContentConfiguration, UserData, DiagnosticReport } from './types';
export { FreshdeskEvents } from './events';
export type { FreshdeskEventName } from './events';
export type { FreshdeskConfig, TopicInfo, UserProperties, TicketProperties, EventProperties, UnreadCountEvent, UserStateEvent, LinkPressedEvent, UserCreatedEvent, ResetUserResult, ContentConfiguration, HeaderContent, PlaceholderContent, PrivacyPolicyContent, ActionContent, ChannelResponseContent, ChannelResponseOnline, ChannelResponseTimeUnit, TicketFormContent, UserData, SDKVersion, DiagnosticStatus, DiagnosticCheck, DiagnosticReport, } from './types';
export { UserState, FreshdeskErrorCode } from './types';
export { formatDiagnosticReport, parseDiagnosticReport } from './diagnostics';
export { normalizeFreshdeskHost, isBareFreshdeskHost } from './utils/normalizeHost';
/**
 * Initialize the Freshdesk SDK with configuration
 * Must be called before any other SDK methods
 * @param config SDK configuration
 */
export declare function initialize(config: FreshdeskConfig): Promise<void>;
/**
 * Open the Freshdesk support home screen
 */
export declare function openSupport(): Promise<void>;
/**
 * Open the Freshdesk knowledge base / FAQ screen
 */
export declare function openKnowledgeBase(): Promise<void>;
/**
 * Open a specific support topic
 * @param topic Topic information (name and optional ID)
 */
export declare function openTopic(topic: TopicInfo): Promise<void>;
/**
 * Get the current unread message count
 *
 * Platform note: on Android this resolves a cached, broadcast-driven value and
 * is `0` until the first broadcast arrives after `initialize()`; on iOS it is
 * live. Prefer {@link addUnreadCountListener} for a value you can trust
 * immediately on both platforms. See PLATFORM_DIFFERENCES.md.
 *
 * @returns Promise resolving to the unread count
 */
export declare function getUnreadCount(): Promise<number>;
/**
 * Track a user event for analytics and context
 * @param name Event name
 * @param properties Event properties
 */
export declare function trackEvent(name: string, properties?: EventProperties): Promise<void>;
/**
 * Set user properties (only for non-JWT enforced SDKs)
 * @param properties User properties
 */
export declare function setUserProperties(properties: UserProperties): Promise<void>;
/**
 * Set ticket properties
 * @param properties Ticket properties
 */
export declare function setTicketProperties(properties: TicketProperties): Promise<void>;
/**
 * Authenticate or update user with JWT token
 * @param jwt JWT token
 */
export declare function authenticateAndUpdate(jwt: string): Promise<void>;
/**
 * Reset the current user and clear session data
 * Call this when user logs out
 *
 * Platform note: Android can resolve `{ success: false, error }` on a genuine
 * reset failure; iOS's native SDK has no failure callback for this operation
 * and always resolves `{ success: true }` once initialized (it only rejects
 * for the not-initialized usage error). Don't rely on `success: false` as a
 * cross-platform signal. See PLATFORM_DIFFERENCES.md.
 */
export declare function resetUser(): Promise<ResetUserResult>;
/**
 * Dismiss any open Freshdesk views
 */
export declare function dismiss(): Promise<void>;
/**
 * Set a custom link handler
 * When a link is pressed in the SDK, an event will be emitted
 * @param handler Callback function to handle link presses
 * @returns EmitterSubscription to remove the listener
 */
export declare function setLinkHandler(handler: (event: LinkPressedEvent) => void): EmitterSubscription | null;
/**
 * Add a listener for unread count changes
 * @param listener Callback function receiving the unread count
 * @returns EmitterSubscription to remove the listener
 */
export declare function addUnreadCountListener(listener: (event: UnreadCountEvent) => void): EmitterSubscription | null;
/**
 * Add a listener for user state changes
 * @param listener Callback function receiving the user state
 * @returns EmitterSubscription to remove the listener
 */
export declare function addUserStateListener(listener: (event: UserStateEvent) => void): EmitterSubscription | null;
/**
 * Add a listener for user creation events
 * @param listener Callback function receiving user creation event
 * @returns EmitterSubscription to remove the listener
 */
export declare function addUserCreatedListener(listener: (event: UserCreatedEvent) => void): EmitterSubscription | null;
/**
 * Remove all Freshdesk event listeners
 * Call this when cleaning up (e.g., on component unmount)
 */
export declare function removeAllListeners(): void;
/**
 * Get the SDK version string
 * @returns Promise resolving to SDK version (e.g., "1.0.1")
 */
export declare function getSDKVersion(): Promise<string>;
/**
 * Get the current user information from the SDK
 * @returns Promise resolving to user data object
 */
export declare function getUser(): Promise<UserData>;
/**
 * Set content configuration to customize SDK UI text
 * @param config Content configuration for headers, placeholders, etc.
 */
export declare function setContentConfiguration(config: ContentConfiguration): Promise<void>;
/**
 * Enable or disable Freshdesk SDK debug logs
 *
 * Platform note: reliable at runtime on iOS only. On Android, debug logging
 * can only be set at `initialize()` time (`debugMode: true`); calling this
 * afterward is a no-op there. See PLATFORM_DIFFERENCES.md.
 *
 * @param enabled Whether debug logging should be enabled
 */
export declare function enableDebugLogs(enabled: boolean): Promise<void>;
/**
 * Run Freshdesk SDK diagnostics and return a structured report
 */
export declare function runDiagnostics(): Promise<DiagnosticReport>;
/**
 * Freshdesk SDK object for convenient access
 */
export declare const FreshdeskSDK: {
    initialize: typeof initialize;
    openSupport: typeof openSupport;
    openKnowledgeBase: typeof openKnowledgeBase;
    openTopic: typeof openTopic;
    getUnreadCount: typeof getUnreadCount;
    trackEvent: typeof trackEvent;
    setUserProperties: typeof setUserProperties;
    setTicketProperties: typeof setTicketProperties;
    authenticateAndUpdate: typeof authenticateAndUpdate;
    resetUser: typeof resetUser;
    dismiss: typeof dismiss;
    setLinkHandler: typeof setLinkHandler;
    addUnreadCountListener: typeof addUnreadCountListener;
    addUserStateListener: typeof addUserStateListener;
    addUserCreatedListener: typeof addUserCreatedListener;
    removeAllListeners: typeof removeAllListeners;
    getSDKVersion: typeof getSDKVersion;
    getUser: typeof getUser;
    setContentConfiguration: typeof setContentConfiguration;
    enableDebugLogs: typeof enableDebugLogs;
    runDiagnostics: typeof runDiagnostics;
    events: {
        readonly UNREAD_COUNT_CHANGED: "unreadCountChanged";
        readonly USER_STATE_CHANGED: "userStateChanged";
        readonly USER_CREATED: "userCreated";
        readonly ON_LINK_PRESSED: "onLinkPressed";
    };
};
export default FreshdeskSDK;
//# sourceMappingURL=index.d.ts.map