declare global {
    interface Window {
        ChannelIO?: IChannelIO;
        ChannelIOInitialized?: boolean;
    }
}
interface IChannelIO {
    c?: (...args: any) => void;
    q?: [methodName: string, ...args: any[]][];
    (...args: any): void;
}
interface BootOption {
    appearance?: string;
    customLauncherSelector?: string;
    hideChannelButtonOnBoot?: boolean;
    hidePopup?: boolean;
    language?: string;
    memberHash?: string;
    memberId?: string;
    pluginKey: string;
    profile?: Profile;
    trackDefaultEvent?: boolean;
    trackUtmSource?: boolean;
    unsubscribe?: boolean;
    unsubscribeEmail?: boolean;
    unsubscribeTexting?: boolean;
    zIndex?: number;
}
interface Callback {
    (error: Error | null, user: CallbackUser | null): void;
}
interface CallbackUser {
    alert: number;
    avatarUrl: string;
    id: string;
    language: string;
    memberId: string;
    name?: string;
    profile?: Profile | null;
    tags?: string[] | null;
    unsubscribeEmail: boolean;
    unsubscribeTexting: boolean;
}
interface UpdateUserInfo {
    language?: string;
    profile?: Profile | null;
    profileOnce?: Profile;
    tags?: string[] | null;
    unsubscribeEmail?: boolean;
    unsubscribeTexting?: boolean;
}
interface Profile {
    [key: string]: string | number | boolean | null | undefined;
}
interface FollowUpProfile {
    name?: string | null;
    mobileNumber?: string | null;
    email?: string | null;
}
interface EventProperty {
    [key: string]: string | number | boolean | null | undefined;
}
type Appearance = 'light' | 'dark' | 'system' | null;
declare class ChannelService {
    loadScript(): void;
    boot(option: BootOption, callback?: Callback): void;
    shutdown(): void;
    showMessenger(): void;
    hideMessenger(): void;
    openChat(chatId?: string | number, message?: string): void;
    track(eventName: string, eventProperty?: EventProperty): void;
    onShowMessenger(callback: () => void): void;
    onHideMessenger(callback: () => void): void;
    onBadgeChanged(callback: (unread: number, alert: number) => void): void;
    onChatCreated(callback: () => void): void;
    onFollowUpChanged(callback: (profile: FollowUpProfile) => void): void;
    onUrlClicked(callback: (url: string) => void): void;
    clearCallbacks(): void;
    updateUser(userInfo: UpdateUserInfo, callback?: Callback): void;
    addTags(tags: string[], callback?: Callback): void;
    removeTags(tags: string[], callback?: Callback): void;
    setPage(page: string): void;
    resetPage(): void;
    showChannelButton(): void;
    hideChannelButton(): void;
    setAppearance(appearance: Appearance): void;
}
declare const _default: ChannelService;
export default _default;
