@freshworks/react-native-freshdesk-sdk
Version:
React Native wrapper for Freshdesk Android and iOS SDKs
167 lines • 7.25 kB
TypeScript
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