export declare const $c: (cls: string, parent?: JQuery) => JQuery<HTMLElement>;

export declare const $i: (id: string, parent?: JQuery) => JQuery<HTMLElement>;

export declare const academicTablerIconClass = "tabler-icon-school";

export declare const addCodeBlocksDbListener: (listener: CodeBlocksDbListenersOptional) => void;

declare type AnswerBarType = 'perplexity' | 'pro' | 'reasoning' | 'research';

export declare const areCodeBlockInfosEqual: (a: CodeBlockInfo, b: CodeBlockInfo) => boolean;

export declare const arrowRightTablerIconClass = "tabler-icon-arrow-right";

export declare const arrowUpRightTablerIconClass = "tabler-icon-arrow-up-right";

export declare const arrowUpTablerIconClass = "tabler-icon-arrow-up";

export declare const atomSvgPathPrefixes: string[];

export declare const autoTablerIconClass = "tabler-icon-arrows-shuffle";

export declare const bulbSvgPathPrefix = "M11.92 1.889a7.035 7.035 0 0 1 7.034";

export declare const calcNewPromptValueFromTextAndPosition: (originalValue: string, toAdd: string, position: InputTextPosition, caretPos: number) => {
    newValue: string;
    newCaretPosition: number;
};

export declare const changeValueOfTextAreaViaEvent: (selector: HTMLTextAreaElement, value: string) => void;

export declare const checkCodeBlocks: () => void;

export declare type CodeBlockInfo = {
    cbId: string;
    answerIndex: number;
    codeBlockIndex: number;
    language: string;
    code: string;
    finished: boolean;
};

declare namespace codeBlockInfo {
    export {
        CodeBlockInfo,
        WindowWithDebugCodeBlocksInfo,
        getCodeAndLanguageFromCodeEl,
        getCodeBlockInfo,
        getCodeBlockElementFromCodeBlockInfo
    }
}

declare namespace codeBlocksDb {
    export {
        WindowWithDebugCodeBlocksDb,
        CodeBlocksDbListeners,
        CodeBlocksDbListenersOptional,
        addCodeBlocksDbListener,
        removeCodeBlocksDbListener,
        areCodeBlockInfosEqual,
        updateCodeBlocksDb,
        checkCodeBlocks,
        getCodeBlocksDb
    }
}

export declare interface CodeBlocksDbListeners {
    onCodeBlocksDbAdded: (item: CodeBlockInfo) => void;
    onCodeBlocksDbRemoved: (item: CodeBlockInfo) => void;
    onCodeBlocksDbUpdated: (oldItem: CodeBlockInfo, newItem: CodeBlockInfo) => void;
}

export declare type CodeBlocksDbListenersOptional = Partial<CodeBlocksDbListeners>;

declare type Company = 'perplexity' | 'openai' | 'anthropic' | 'google' | 'xai' | 'deepseek' | 'meta';

export declare const copyTablerIconClass = "tabler-icon-copy";

export declare const copyToClipboard: (text: string) => Promise<void>;

export declare const cpuTablerIconClass = "tabler-icon-cpu";

export declare const debugWrapperFunctions: {
    all: {
        readonly wrapperHasFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasAcademicFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasMathFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasWritingFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasVideoFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasSocialFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasWebSearchIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasAnyFocusIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasSourcesIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasAttachIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasCollectionIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasRecencyIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasFileIcon: (wrapper: JQuery) => boolean;
        readonly wrapperHasUploadButtonWithImagePreview: ($wrapper: JQuery) => boolean;
        readonly wrapperIsSticky: ($wrapper: JQuery) => boolean;
    };
    test: (wrapper: JQuery) => {
        [k: string]: boolean;
    };
};

export declare const deepResearchTablerIconClass = "tabler-icon-atom";

export declare const disablePromptArea: () => void;

export declare const doSelectModel: (index: number, parent?: JQuery) => Promise<boolean>;

export declare const doSelectQueryMode: (queryMode: QueryMode, parent?: JQuery) => Promise<boolean>;

export declare const doSetSourcesSelectionListValues: (parent?: JQuery) => (values: (boolean | null)[], options?: SetSourcesSelectionListValuesOptions) => Promise<void>;

export declare const ellipsis: (maxLen: number) => (str: string) => string;

export declare const enablePromptArea: () => void;

export declare const extractFallbackModelInfo: (modelTitle: string) => FallbackModelInfo | null;

export declare interface FallbackModelInfo {
    usedModel: string;
    originalModelTooltipName: string;
    errorType: 'used-fallback-model';
    errorString: string;
}

export declare const financeTablerIconClass = "tabler-icon-report-money";

export declare const findModelDescriptorByName: (name: string) => ModelDescriptor | null;

export declare const getAllAnswerBars: () => JQuery<HTMLElement>;

export declare const getAnswerBarFromElementInAnswer: ($element: JQuery<HTMLElement>) => JQuery<HTMLElement>;

export declare const getAnswerBarType: ($answerBar: JQuery<HTMLElement>) => AnswerBarType | null;

export declare const getAnswerBarTypeFromQueryMode: (queryMode: QueryMode) => AnswerBarType;

export declare const getAnyModeButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getAnyModelButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getAnyPromptArea: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getAnyPromptAreaWrapper: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getAnySourcesButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getAnyUploadOrAttachFilesButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getAttachFilesButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getBottomRightButtonsContainer: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getBreakpointInfo: () => Record<TailwindBreakpoint, boolean>;

export declare const getCodeAndLanguageFromCodeEl: ($codeBlock: JQuery<HTMLElement>) => [string, string];

export declare const getCodeBlockElementFromCodeBlockInfo: (codeBlockInfo: CodeBlockInfo) => JQuery<HTMLElement>;

export declare const getCodeBlockElements: () => JQuery<HTMLElement>;

export declare const getCodeBlockInfo: (codeBlockEl: HTMLElement | JQuery<HTMLElement>) => CodeBlockInfo | null;

export declare const getCodeBlocksDb: () => CodeBlockInfo[];

export declare const getCodeBlockWrapper: (codeBlock: JQuery) => JQuery<HTMLElement>;

export declare const getCodeFromCodeEl: (codeEl: JQuery<HTMLElement>) => string;

export declare const getCopyToClipboardButton: ($codeBlock: JQuery<HTMLElement>) => JQuery<HTMLElement>;

export declare const getCurrentMode: (parent?: JQuery) => QueryMode | null;

export declare const getCurrentThreadId: () => string | null;

export declare const getFamiliarName: (descriptor: ModelDescriptor, includeThinkingSuffix: boolean) => string | null;

export declare const getFirstPromptEl: () => JQuery<HTMLElement>;

export declare const getHomeWidgets: () => JQuery<HTMLElement>;

/** @deprecated Use getIconsInSidebar instead */
export declare const getIconsInLeftPanel: () => JQuery<HTMLElement>;

export declare const getIconsInSidebar: () => JQuery<HTMLElement>;

export declare const getImageGenerationOverlay: () => JQuery<HTMLElement>;

export declare const getImagesInRightPanel: () => JQuery<HTMLElement>;

export declare const getLabelsInSidebar: () => JQuery<HTMLElement>;

export declare const getLanguageElFromCodeEl: (codeEl: JQuery<HTMLElement>) => JQuery<HTMLElement>;

export declare const getLanguageFromCodeEl: (codeEl: JQuery<HTMLElement>) => string;

export declare const getLanguageFromCodeElRaw: (codeEl: JQuery<HTMLElement>) => string;

export declare const getLanguageFromReactPropsOfCodeWrapper: (codeBlockWrapper: JQuery) => string | null;

/** @deprecated Use getSidebar instead */
export declare const getLeftPanel: () => JQuery<HTMLElement>;

/** @deprecated Use getSidebarHome instead */
export declare const getLeftPanelHome: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getMainCaption: () => JQuery<HTMLElement>;

export declare const getMainCaptionText: () => string;

export declare const getModeAutoButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModeLabButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModelButtonInQueryBox: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModelDescriptionFromModelButton: ($modelButton?: JQuery) => ModelDescriptor | null;

export declare const getModelDescriptorFromId: (id: string) => ModelDescriptor | null;

export declare const getModelSelectionList: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModelSelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModelSelectionListType: ($modelSelectionList: JQuery) => ModelSelectionListType | null;

export declare const getModelTitleFromModelButton: ($modelButton?: JQuery) => string | null;

export declare const getModeProButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModeReasoningButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getModeResearchButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPerplexityIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPopoverList: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPopoverListItems: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getProIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPromptAreaOfNewThread: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPromptAreaOnCollection: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPromptAreaOnThread: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPromptAreaWrapperOfNewThread: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPromptAreaWrapperOnCollection: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getPromptAreaWrapperOnThread: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getQueryModeFromAnswerBarType: (answerBarType: AnswerBarType) => QueryMode;

export declare const getReasoningIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getRecencyButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getRecencySelectionList: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getRecencySelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getRelatedSection: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getResearchIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSidebar: () => JQuery<HTMLElement>;

export declare const getSidebarHome: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesAcademicButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesCollectionButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesCount: (parent?: JQuery) => number | null;

export declare const getSourcesFinanceButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesFourCirclesButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesSelectionList: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesSelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesSelectionListValues: (parent?: JQuery) => (boolean | null)[];

export declare const getSourcesSocialButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSourcesWebButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSpaceContextButton: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getStopButtonOnFloatingPromptBox: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSubmitButtonAny: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSubmitButtonAnyExceptMic: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSubmitButtonMic: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSubmitButtonRight: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSubmitButtonUp: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getSubmitButtonVoice: (parent?: JQuery) => JQuery<HTMLElement>;

export declare const getTextOfFirstPrompt: () => string;

export declare const getUploadButtonWithImagePreview: ($wrapper: JQuery) => JQuery<HTMLButtonElement>;

export declare const id: <T>(value: T) => T;

export declare const INPUT_TEXT_POSITION: Record<string, InputTextPosition>;

export declare type InputTextPosition = 'cursor' | 'before' | 'after' | 'replace';

export declare const isBreakpoint: (breakpoint: TailwindBreakpoint) => boolean;

export declare const isButtonHighlighted: ($button: JQuery) => boolean;

export declare const isSearchPage: (url: string) => boolean;

export declare const isThinking: (descriptor: ModelDescriptor) => boolean;

export declare const jq: JQueryStatic;

export declare const layoutSidebarRightExpandTablerIconClass = "tabler-icon-layout-sidebar-right-expand";

export declare const magnifierOpenWithDotInsideSvgPathPrefixes: string[];

export declare const magnifierWithDotInsidePerfectCircleSvgPathPrefixes: string[];

export declare const microphoneFilledTablerIconClass = "tabler-icon-microphone-filled";

export declare interface ModelDescriptor {
    index: number;
    ppModelId: string;
    modelButtonTooltip?: string;
    nameEn: string;
    nameEnShort?: string;
    ownNameEn?: string;
    ownVersionEn?: string;
    ownVersionEnShort?: string;
    ownNameVersionSeparator?: string;
    abbrEn?: string;
    familiarNameEn?: string;
    descriptionEn: string;
    modelType: 'normal' | 'reasoning';
    company: Company;
    companyColor?: string;
    baseModelCompany?: Company;
    baseModelCompanyColor?: string;
    errorType?: 'used-fallback-model';
    errorString?: string;
    originalModelId?: string;
    originalModelTooltipName?: string;
    originalModelDescriptor?: ModelDescriptor;
    isThinking?: boolean;
    baseFamiliarNameEn?: string;
}

export declare const modelDescriptors: ReadonlyArray<Readonly<ModelDescriptor>>;

export declare type ModelSelectionListType = 'new' | 'rewrite';

/**
 * Restores any previous reference to PP and returns the Perplex+ object
 * @returns The Perplex+ object
 */
export declare const noConflict: () => {
    /** Restore previous PP reference */
    noConflict: /*elided*/ any;
    modelDescriptors: ReadonlyArray<Readonly<pplxModels.ModelDescriptor>>;
    getFamiliarName: (descriptor: pplxModels.ModelDescriptor, includeThinkingSuffix: boolean) => string | null;
    isThinking: (descriptor: pplxModels.ModelDescriptor) => boolean;
    id: <T>(value: T) => T;
    ellipsis: (maxLen: number) => (str: string) => string;
    reverse: <T>(arr: readonly T[]) => T[];
    sleep: (ms: number) => Promise<unknown>;
    getCodeAndLanguageFromCodeEl: ($codeBlock: JQuery<HTMLElement>) => [string, string];
    getCodeBlockInfo: (codeBlockEl: HTMLElement | JQuery<HTMLElement>) => codeBlockInfo.CodeBlockInfo | null;
    getCodeBlockElementFromCodeBlockInfo: (codeBlockInfo: codeBlockInfo.CodeBlockInfo) => JQuery<HTMLElement>;
    addCodeBlocksDbListener: (listener: codeBlocksDb.CodeBlocksDbListenersOptional) => void;
    removeCodeBlocksDbListener: (listener: codeBlocksDb.CodeBlocksDbListenersOptional) => void;
    areCodeBlockInfosEqual: (a: codeBlockInfo.CodeBlockInfo, b: codeBlockInfo.CodeBlockInfo) => boolean;
    updateCodeBlocksDb: (cbId: string, info: codeBlockInfo.CodeBlockInfo | null) => void;
    checkCodeBlocks: () => void;
    getCodeBlocksDb: () => codeBlockInfo.CodeBlockInfo[];
    tailwindBreakpoints: readonly ["sm", "md", "lg", "xl", "2xl"];
    isBreakpoint: (breakpoint: tailwindHelpers.TailwindBreakpoint) => boolean;
    getBreakpointInfo: () => Record<tailwindHelpers.TailwindBreakpoint, boolean>;
    debugWrapperFunctions: {
        all: {
            readonly wrapperHasFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasAcademicFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasMathFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasWritingFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasVideoFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasSocialFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasWebSearchIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasAnyFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasSourcesIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasAttachIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasCollectionIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasRecencyIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasFileIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasUploadButtonWithImagePreview: ($wrapper: JQuery) => boolean;
            readonly wrapperIsSticky: ($wrapper: JQuery) => boolean;
        };
        test: (wrapper: JQuery) => {
            [k: string]: boolean;
        };
    };
    getPromptAreaOfNewThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaWrapperOfNewThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaOnThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaWrapperOnThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaOnCollection: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaWrapperOnCollection: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyPromptArea: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyPromptAreaWrapper: (parent?: JQuery) => JQuery<HTMLElement>;
    perplexitySvgPathPrefix: "M29.6848 25.4603L48.3092 41.4828V65.1065L29.6848 49.0293M29.6848";
    proSpiralSvgPathPrefix: "M11.9759 1.99999L11.9879 2.00001C10.5169 2.00565";
    proSvgPathPrefix: "M5.01 17.833h11.023a6.34 6.34 0 0 0 2.91-.676 5.484 5.484 0 0 0";
    atomSvgPathPrefixes: string[];
    magnifierOpenWithDotInsideSvgPathPrefixes: string[];
    magnifierWithDotInsidePerfectCircleSvgPathPrefixes: string[];
    reasoningSvgPathPrefix: "M12 5.125C11.5168 5.125 11.125 5.51675 11.125";
    autoTablerIconClass: "tabler-icon-arrows-shuffle";
    deepResearchTablerIconClass: "tabler-icon-atom";
    worldTablerIconClass: "tabler-icon-world";
    academicTablerIconClass: "tabler-icon-school";
    socialTablerIconClass: "tabler-icon-affiliate";
    financeTablerIconClass: "tabler-icon-report-money";
    cpuTablerIconClass: "tabler-icon-cpu";
    arrowRightTablerIconClass: "tabler-icon-arrow-right";
    arrowUpTablerIconClass: "tabler-icon-arrow-up";
    microphoneFilledTablerIconClass: "tabler-icon-microphone-filled";
    layoutSidebarRightExpandTablerIconClass: "tabler-icon-layout-sidebar-right-expand";
    squareTablerIconClass: "tabler-icon-square";
    copyTablerIconClass: "tabler-icon-copy";
    arrowUpRightTablerIconClass: "tabler-icon-arrow-up-right";
    voiceSvgPathPrefix: "M0 12.6663C0 13.4018 0.59792 13.9997 1.33333";
    bulbSvgPathPrefix: "M11.92 1.889a7.035 7.035 0 0 1 7.034";
    stackStackPlusSvgPathPrefix: "M16.0799 4.39998H17.9999V6.31993H19.9201V8.23993H17.9999V10.16H1";
    getModeAutoButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeProButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeReasoningButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeLabButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeResearchButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyModeButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getAttachFilesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getUploadButtonWithImagePreview: ($wrapper: JQuery) => JQuery<HTMLButtonElement>;
    getAnyUploadOrAttachFilesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonRight: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonUp: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonMic: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonVoice: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonAny: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonAnyExceptMic: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonRight: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonUp: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonMic: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonVoice: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonAny: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonAnyExceptMic: (parent?: JQuery) => JQuery<HTMLElement>;
    isButtonHighlighted: ($button: JQuery) => boolean;
    getPopoverList: (parent?: JQuery) => JQuery<HTMLElement>;
    getPopoverListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyModelButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelButtonInQueryBox: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelSelectionList: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelSelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelSelectionListType: ($modelSelectionList: JQuery) => pplxHelpers.ModelSelectionListType | null;
    getSourcesWebButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesAcademicButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesSocialButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesFinanceButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesFourCirclesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesCollectionButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnySourcesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesCount: (parent?: JQuery) => number | null;
    getSourcesSelectionList: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesSelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    sourcesSelectionListNames: readonly ["Web", "Academic", "Social", "Finance"];
    getSourcesSelectionListValues: (parent?: JQuery) => (boolean | null)[];
    setSourcesSelectionListValues: (parent?: JQuery) => (values: (boolean | null)[], options?: pplxHelpers.SetSourcesSelectionListValuesOptions) => void;
    setSourcesSelectionListValuesByName: (parent?: JQuery, options?: pplxHelpers.SetSourcesSelectionListValuesOptions) => (name: pplxHelpers.SourcesSelectionListName) => (value: boolean) => void;
    doSetSourcesSelectionListValues: (parent?: JQuery) => (values: (boolean | null)[], options?: pplxHelpers.SetSourcesSelectionListValuesOptions) => Promise<void>;
    getRecencyButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getRecencySelectionList: (parent?: JQuery) => JQuery<HTMLElement>;
    getRecencySelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    getSpaceContextButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelDescriptorFromId: (id: string) => pplxModels.ModelDescriptor | null;
    findModelDescriptorByName: (name: string) => pplxModels.ModelDescriptor | null;
    extractFallbackModelInfo: (modelTitle: string) => pplxHelpers.FallbackModelInfo | null;
    getModelTitleFromModelButton: ($modelButton?: JQuery) => string | null;
    getModelDescriptionFromModelButton: ($modelButton?: JQuery) => pplxModels.ModelDescriptor | null;
    doSelectModel: (index: number, parent?: JQuery) => Promise<boolean>;
    getCurrentMode: (parent?: JQuery) => ("reasoning" | "auto" | "pro" | "research" | "lab") | null;
    doSelectQueryMode: (queryMode: "reasoning" | "auto" | "pro" | "research" | "lab", parent?: JQuery) => Promise<boolean>;
    getPerplexityIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getProIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getReasoningIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getResearchIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnswerBarType: ($answerBar: JQuery<HTMLElement>) => ("perplexity" | "reasoning" | "pro" | "research") | null;
    getQueryModeFromAnswerBarType: (answerBarType: "perplexity" | "reasoning" | "pro" | "research") => "reasoning" | "auto" | "pro" | "research" | "lab";
    getAnswerBarTypeFromQueryMode: (queryMode: "reasoning" | "auto" | "pro" | "research" | "lab") => "perplexity" | "reasoning" | "pro" | "research";
    getSidebarHome: (parent?: JQuery) => JQuery<HTMLElement>;
    getLeftPanelHome: (parent?: JQuery) => JQuery<HTMLElement>;
    getIconsInSidebar: () => JQuery<HTMLElement>;
    getIconsInLeftPanel: () => JQuery<HTMLElement>;
    getLabelsInSidebar: () => JQuery<HTMLElement>;
    getSidebar: () => JQuery<HTMLElement>;
    getLeftPanel: () => JQuery<HTMLElement>;
    getHomeWidgets: () => JQuery<HTMLElement>;
    getImageGenerationOverlay: () => JQuery<HTMLElement>;
    getMainCaption: () => JQuery<HTMLElement>;
    getMainCaptionText: () => string;
    setMainCaptionHtml: (html: string) => JQuery<HTMLElement>;
    getCodeBlockElements: () => JQuery<HTMLElement>;
    getCodeBlockWrapper: (codeBlock: JQuery) => JQuery<HTMLElement>;
    getLanguageFromReactPropsOfCodeWrapper: (codeBlockWrapper: JQuery) => string | null;
    getImagesInRightPanel: () => JQuery<HTMLElement>;
    getBottomRightButtonsContainer: (parent?: JQuery) => JQuery<HTMLElement>;
    getFirstPromptEl: () => JQuery<HTMLElement>;
    getTextOfFirstPrompt: () => string;
    getStopButtonOnFloatingPromptBox: (parent?: JQuery) => JQuery<HTMLElement>;
    wrapperHasStopButtonOnFloatingPromptBox: (wrapper: JQuery) => boolean;
    changeValueOfTextAreaViaEvent: (selector: HTMLTextAreaElement, value: string) => void;
    INPUT_TEXT_POSITION: Record<string, pplxHelpers.InputTextPosition>;
    calcNewPromptValueFromTextAndPosition: (originalValue: string, toAdd: string, position: pplxHelpers.InputTextPosition, caretPos: number) => {
        newValue: string;
        newCaretPosition: number;
    };
    simulateInputTextToPromptArea: (text: string, options?: {
        position?: pplxHelpers.InputTextPosition;
        focus?: boolean;
    }) => boolean;
    copyToClipboard: (text: string) => Promise<void>;
    getAllAnswerBars: () => JQuery<HTMLElement>;
    getAnswerBarFromElementInAnswer: ($element: JQuery<HTMLElement>) => JQuery<HTMLElement>;
    getCurrentThreadId: () => string | null;
    getRelatedSection: (parent?: JQuery) => JQuery<HTMLElement>;
    searchPattern: RegExp;
    isSearchPage: (url: string) => boolean;
    getCopyToClipboardButton: ($codeBlock: JQuery<HTMLElement>) => JQuery<HTMLElement>;
    getCodeFromCodeEl: (codeEl: JQuery<HTMLElement>) => string;
    getLanguageFromCodeEl: (codeEl: JQuery<HTMLElement>) => string;
    getLanguageElFromCodeEl: (codeEl: JQuery<HTMLElement>) => JQuery<HTMLElement>;
    getLanguageFromCodeElRaw: (codeEl: JQuery<HTMLElement>) => string;
    translatePerplexityLanguageToRealLanguage: (language: string, _code: string) => string;
    disablePromptArea: () => void;
    enablePromptArea: () => void;
    saveStringAsFile: (filename: string, content: string) => void;
    /** Current version of the library */
    version: string;
    /** jQuery wrapper function */
    jq: JQueryStatic;
    /** Alias for jq */
    $: JQueryStatic;
    /** jQuery selector for class */
    $c: (cls: string, parent?: JQuery) => JQuery<HTMLElement>;
    /** jQuery selector for id */
    $i: (id: string, parent?: JQuery) => JQuery<HTMLElement>;
};

export declare const perplexitySvgPathPrefix = "M29.6848 25.4603L48.3092 41.4828V65.1065L29.6848 49.0293M29.6848";

/**
 * The main Perplex+ API object
 * Contains all utility functions for interacting with Perplexity AI
 */
declare const PP: {
    /** Restore previous PP reference */
    noConflict: () => /*elided*/ any;
    modelDescriptors: ReadonlyArray<Readonly<pplxModels.ModelDescriptor>>;
    getFamiliarName: (descriptor: pplxModels.ModelDescriptor, includeThinkingSuffix: boolean) => string | null;
    isThinking: (descriptor: pplxModels.ModelDescriptor) => boolean;
    id: <T>(value: T) => T;
    ellipsis: (maxLen: number) => (str: string) => string;
    reverse: <T>(arr: readonly T[]) => T[];
    sleep: (ms: number) => Promise<unknown>;
    getCodeAndLanguageFromCodeEl: ($codeBlock: JQuery<HTMLElement>) => [string, string];
    getCodeBlockInfo: (codeBlockEl: HTMLElement | JQuery<HTMLElement>) => codeBlockInfo.CodeBlockInfo | null;
    getCodeBlockElementFromCodeBlockInfo: (codeBlockInfo: codeBlockInfo.CodeBlockInfo) => JQuery<HTMLElement>;
    addCodeBlocksDbListener: (listener: codeBlocksDb.CodeBlocksDbListenersOptional) => void;
    removeCodeBlocksDbListener: (listener: codeBlocksDb.CodeBlocksDbListenersOptional) => void;
    areCodeBlockInfosEqual: (a: codeBlockInfo.CodeBlockInfo, b: codeBlockInfo.CodeBlockInfo) => boolean;
    updateCodeBlocksDb: (cbId: string, info: codeBlockInfo.CodeBlockInfo | null) => void;
    checkCodeBlocks: () => void;
    getCodeBlocksDb: () => codeBlockInfo.CodeBlockInfo[];
    tailwindBreakpoints: readonly ["sm", "md", "lg", "xl", "2xl"];
    isBreakpoint: (breakpoint: tailwindHelpers.TailwindBreakpoint) => boolean;
    getBreakpointInfo: () => Record<tailwindHelpers.TailwindBreakpoint, boolean>;
    debugWrapperFunctions: {
        all: {
            readonly wrapperHasFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasAcademicFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasMathFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasWritingFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasVideoFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasSocialFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasWebSearchIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasAnyFocusIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasSourcesIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasAttachIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasCollectionIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasRecencyIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasFileIcon: (wrapper: JQuery) => boolean;
            readonly wrapperHasUploadButtonWithImagePreview: ($wrapper: JQuery) => boolean;
            readonly wrapperIsSticky: ($wrapper: JQuery) => boolean;
        };
        test: (wrapper: JQuery) => {
            [k: string]: boolean;
        };
    };
    getPromptAreaOfNewThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaWrapperOfNewThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaOnThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaWrapperOnThread: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaOnCollection: (parent?: JQuery) => JQuery<HTMLElement>;
    getPromptAreaWrapperOnCollection: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyPromptArea: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyPromptAreaWrapper: (parent?: JQuery) => JQuery<HTMLElement>;
    perplexitySvgPathPrefix: "M29.6848 25.4603L48.3092 41.4828V65.1065L29.6848 49.0293M29.6848";
    proSpiralSvgPathPrefix: "M11.9759 1.99999L11.9879 2.00001C10.5169 2.00565";
    proSvgPathPrefix: "M5.01 17.833h11.023a6.34 6.34 0 0 0 2.91-.676 5.484 5.484 0 0 0";
    atomSvgPathPrefixes: string[];
    magnifierOpenWithDotInsideSvgPathPrefixes: string[];
    magnifierWithDotInsidePerfectCircleSvgPathPrefixes: string[];
    reasoningSvgPathPrefix: "M12 5.125C11.5168 5.125 11.125 5.51675 11.125";
    autoTablerIconClass: "tabler-icon-arrows-shuffle";
    deepResearchTablerIconClass: "tabler-icon-atom";
    worldTablerIconClass: "tabler-icon-world";
    academicTablerIconClass: "tabler-icon-school";
    socialTablerIconClass: "tabler-icon-affiliate";
    financeTablerIconClass: "tabler-icon-report-money";
    cpuTablerIconClass: "tabler-icon-cpu";
    arrowRightTablerIconClass: "tabler-icon-arrow-right";
    arrowUpTablerIconClass: "tabler-icon-arrow-up";
    microphoneFilledTablerIconClass: "tabler-icon-microphone-filled";
    layoutSidebarRightExpandTablerIconClass: "tabler-icon-layout-sidebar-right-expand";
    squareTablerIconClass: "tabler-icon-square";
    copyTablerIconClass: "tabler-icon-copy";
    arrowUpRightTablerIconClass: "tabler-icon-arrow-up-right";
    voiceSvgPathPrefix: "M0 12.6663C0 13.4018 0.59792 13.9997 1.33333";
    bulbSvgPathPrefix: "M11.92 1.889a7.035 7.035 0 0 1 7.034";
    stackStackPlusSvgPathPrefix: "M16.0799 4.39998H17.9999V6.31993H19.9201V8.23993H17.9999V10.16H1";
    getModeAutoButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeProButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeReasoningButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeLabButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModeResearchButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyModeButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getAttachFilesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getUploadButtonWithImagePreview: ($wrapper: JQuery) => JQuery<HTMLButtonElement>;
    getAnyUploadOrAttachFilesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonRight: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonUp: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonMic: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonVoice: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonAny: (parent?: JQuery) => JQuery<HTMLElement>;
    getSubmitButtonAnyExceptMic: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonRight: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonUp: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonMic: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonVoice: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonAny: (parent?: JQuery) => JQuery<HTMLElement>;
    submitButtonAnyExceptMic: (parent?: JQuery) => JQuery<HTMLElement>;
    isButtonHighlighted: ($button: JQuery) => boolean;
    getPopoverList: (parent?: JQuery) => JQuery<HTMLElement>;
    getPopoverListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnyModelButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelButtonInQueryBox: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelSelectionList: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelSelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelSelectionListType: ($modelSelectionList: JQuery) => pplxHelpers.ModelSelectionListType | null;
    getSourcesWebButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesAcademicButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesSocialButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesFinanceButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesFourCirclesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesCollectionButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnySourcesButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesCount: (parent?: JQuery) => number | null;
    getSourcesSelectionList: (parent?: JQuery) => JQuery<HTMLElement>;
    getSourcesSelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    sourcesSelectionListNames: readonly ["Web", "Academic", "Social", "Finance"];
    getSourcesSelectionListValues: (parent?: JQuery) => (boolean | null)[];
    setSourcesSelectionListValues: (parent?: JQuery) => (values: (boolean | null)[], options?: pplxHelpers.SetSourcesSelectionListValuesOptions) => void;
    setSourcesSelectionListValuesByName: (parent?: JQuery, options?: pplxHelpers.SetSourcesSelectionListValuesOptions) => (name: pplxHelpers.SourcesSelectionListName) => (value: boolean) => void;
    doSetSourcesSelectionListValues: (parent?: JQuery) => (values: (boolean | null)[], options?: pplxHelpers.SetSourcesSelectionListValuesOptions) => Promise<void>;
    getRecencyButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getRecencySelectionList: (parent?: JQuery) => JQuery<HTMLElement>;
    getRecencySelectionListItems: (parent?: JQuery) => JQuery<HTMLElement>;
    getSpaceContextButton: (parent?: JQuery) => JQuery<HTMLElement>;
    getModelDescriptorFromId: (id: string) => pplxModels.ModelDescriptor | null;
    findModelDescriptorByName: (name: string) => pplxModels.ModelDescriptor | null;
    extractFallbackModelInfo: (modelTitle: string) => pplxHelpers.FallbackModelInfo | null;
    getModelTitleFromModelButton: ($modelButton?: JQuery) => string | null;
    getModelDescriptionFromModelButton: ($modelButton?: JQuery) => pplxModels.ModelDescriptor | null;
    doSelectModel: (index: number, parent?: JQuery) => Promise<boolean>;
    getCurrentMode: (parent?: JQuery) => ("reasoning" | "auto" | "pro" | "research" | "lab") | null;
    doSelectQueryMode: (queryMode: "reasoning" | "auto" | "pro" | "research" | "lab", parent?: JQuery) => Promise<boolean>;
    getPerplexityIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getProIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getReasoningIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getResearchIconFromAnswerBar: (parent?: JQuery) => JQuery<HTMLElement>;
    getAnswerBarType: ($answerBar: JQuery<HTMLElement>) => ("perplexity" | "reasoning" | "pro" | "research") | null;
    getQueryModeFromAnswerBarType: (answerBarType: "perplexity" | "reasoning" | "pro" | "research") => "reasoning" | "auto" | "pro" | "research" | "lab";
    getAnswerBarTypeFromQueryMode: (queryMode: "reasoning" | "auto" | "pro" | "research" | "lab") => "perplexity" | "reasoning" | "pro" | "research";
    getSidebarHome: (parent?: JQuery) => JQuery<HTMLElement>;
    getLeftPanelHome: (parent?: JQuery) => JQuery<HTMLElement>;
    getIconsInSidebar: () => JQuery<HTMLElement>;
    getIconsInLeftPanel: () => JQuery<HTMLElement>;
    getLabelsInSidebar: () => JQuery<HTMLElement>;
    getSidebar: () => JQuery<HTMLElement>;
    getLeftPanel: () => JQuery<HTMLElement>;
    getHomeWidgets: () => JQuery<HTMLElement>;
    getImageGenerationOverlay: () => JQuery<HTMLElement>;
    getMainCaption: () => JQuery<HTMLElement>;
    getMainCaptionText: () => string;
    setMainCaptionHtml: (html: string) => JQuery<HTMLElement>;
    getCodeBlockElements: () => JQuery<HTMLElement>;
    getCodeBlockWrapper: (codeBlock: JQuery) => JQuery<HTMLElement>;
    getLanguageFromReactPropsOfCodeWrapper: (codeBlockWrapper: JQuery) => string | null;
    getImagesInRightPanel: () => JQuery<HTMLElement>;
    getBottomRightButtonsContainer: (parent?: JQuery) => JQuery<HTMLElement>;
    getFirstPromptEl: () => JQuery<HTMLElement>;
    getTextOfFirstPrompt: () => string;
    getStopButtonOnFloatingPromptBox: (parent?: JQuery) => JQuery<HTMLElement>;
    wrapperHasStopButtonOnFloatingPromptBox: (wrapper: JQuery) => boolean;
    changeValueOfTextAreaViaEvent: (selector: HTMLTextAreaElement, value: string) => void;
    INPUT_TEXT_POSITION: Record<string, pplxHelpers.InputTextPosition>;
    calcNewPromptValueFromTextAndPosition: (originalValue: string, toAdd: string, position: pplxHelpers.InputTextPosition, caretPos: number) => {
        newValue: string;
        newCaretPosition: number;
    };
    simulateInputTextToPromptArea: (text: string, options?: {
        position?: pplxHelpers.InputTextPosition;
        focus?: boolean;
    }) => boolean;
    copyToClipboard: (text: string) => Promise<void>;
    getAllAnswerBars: () => JQuery<HTMLElement>;
    getAnswerBarFromElementInAnswer: ($element: JQuery<HTMLElement>) => JQuery<HTMLElement>;
    getCurrentThreadId: () => string | null;
    getRelatedSection: (parent?: JQuery) => JQuery<HTMLElement>;
    searchPattern: RegExp;
    isSearchPage: (url: string) => boolean;
    getCopyToClipboardButton: ($codeBlock: JQuery<HTMLElement>) => JQuery<HTMLElement>;
    getCodeFromCodeEl: (codeEl: JQuery<HTMLElement>) => string;
    getLanguageFromCodeEl: (codeEl: JQuery<HTMLElement>) => string;
    getLanguageElFromCodeEl: (codeEl: JQuery<HTMLElement>) => JQuery<HTMLElement>;
    getLanguageFromCodeElRaw: (codeEl: JQuery<HTMLElement>) => string;
    translatePerplexityLanguageToRealLanguage: (language: string, _code: string) => string;
    disablePromptArea: () => void;
    enablePromptArea: () => void;
    saveStringAsFile: (filename: string, content: string) => void;
    /** Current version of the library */
    version: string;
    /** jQuery wrapper function */
    jq: JQueryStatic;
    /** Alias for jq */
    $: JQueryStatic;
    /** jQuery selector for class */
    $c: (cls: string, parent?: JQuery) => JQuery<HTMLElement>;
    /** jQuery selector for id */
    $i: (id: string, parent?: JQuery) => JQuery<HTMLElement>;
};
export { PP }
export default PP;

declare namespace pplxHelpers {
    export {
        debugWrapperFunctions,
        getPromptAreaOfNewThread,
        getPromptAreaWrapperOfNewThread,
        getPromptAreaOnThread,
        getPromptAreaWrapperOnThread,
        getPromptAreaOnCollection,
        getPromptAreaWrapperOnCollection,
        getAnyPromptArea,
        getAnyPromptAreaWrapper,
        perplexitySvgPathPrefix,
        proSpiralSvgPathPrefix,
        proSvgPathPrefix,
        atomSvgPathPrefixes,
        magnifierOpenWithDotInsideSvgPathPrefixes,
        magnifierWithDotInsidePerfectCircleSvgPathPrefixes,
        reasoningSvgPathPrefix,
        autoTablerIconClass,
        deepResearchTablerIconClass,
        worldTablerIconClass,
        academicTablerIconClass,
        socialTablerIconClass,
        financeTablerIconClass,
        cpuTablerIconClass,
        arrowRightTablerIconClass,
        arrowUpTablerIconClass,
        microphoneFilledTablerIconClass,
        layoutSidebarRightExpandTablerIconClass,
        squareTablerIconClass,
        copyTablerIconClass,
        arrowUpRightTablerIconClass,
        voiceSvgPathPrefix,
        bulbSvgPathPrefix,
        stackStackPlusSvgPathPrefix,
        getModeAutoButton,
        getModeProButton,
        getModeReasoningButton,
        getModeLabButton,
        getModeResearchButton,
        getAnyModeButton,
        getAttachFilesButton,
        getUploadButtonWithImagePreview,
        getAnyUploadOrAttachFilesButton,
        getSubmitButtonRight,
        getSubmitButtonUp,
        getSubmitButtonMic,
        getSubmitButtonVoice,
        getSubmitButtonAny,
        getSubmitButtonAnyExceptMic,
        submitButtonRight,
        submitButtonUp,
        submitButtonMic,
        submitButtonVoice,
        submitButtonAny,
        submitButtonAnyExceptMic,
        isButtonHighlighted,
        getPopoverList,
        getPopoverListItems,
        getAnyModelButton,
        getModelButtonInQueryBox,
        getModelSelectionList,
        getModelSelectionListItems,
        ModelSelectionListType,
        getModelSelectionListType,
        getSourcesWebButton,
        getSourcesAcademicButton,
        getSourcesSocialButton,
        getSourcesFinanceButton,
        getSourcesFourCirclesButton,
        getSourcesCollectionButton,
        getAnySourcesButton,
        getSourcesCount,
        getSourcesSelectionList,
        getSourcesSelectionListItems,
        sourcesSelectionListNames,
        SourcesSelectionListName,
        getSourcesSelectionListValues,
        SetSourcesSelectionListValuesOptions,
        setSourcesSelectionListValues,
        setSourcesSelectionListValuesByName,
        doSetSourcesSelectionListValues,
        getRecencyButton,
        getRecencySelectionList,
        getRecencySelectionListItems,
        getSpaceContextButton,
        getModelDescriptorFromId,
        findModelDescriptorByName,
        FallbackModelInfo,
        extractFallbackModelInfo,
        getModelTitleFromModelButton,
        getModelDescriptionFromModelButton,
        doSelectModel,
        getCurrentMode,
        doSelectQueryMode,
        getPerplexityIconFromAnswerBar,
        getProIconFromAnswerBar,
        getReasoningIconFromAnswerBar,
        getResearchIconFromAnswerBar,
        getAnswerBarType,
        getQueryModeFromAnswerBarType,
        getAnswerBarTypeFromQueryMode,
        getSidebarHome,
        getLeftPanelHome,
        getIconsInSidebar,
        getIconsInLeftPanel,
        getLabelsInSidebar,
        getSidebar,
        getLeftPanel,
        getHomeWidgets,
        getImageGenerationOverlay,
        getMainCaption,
        getMainCaptionText,
        setMainCaptionHtml,
        getCodeBlockElements,
        getCodeBlockWrapper,
        getLanguageFromReactPropsOfCodeWrapper,
        getImagesInRightPanel,
        getBottomRightButtonsContainer,
        getFirstPromptEl,
        getTextOfFirstPrompt,
        getStopButtonOnFloatingPromptBox,
        wrapperHasStopButtonOnFloatingPromptBox,
        changeValueOfTextAreaViaEvent,
        INPUT_TEXT_POSITION,
        InputTextPosition,
        calcNewPromptValueFromTextAndPosition,
        simulateInputTextToPromptArea,
        copyToClipboard,
        getAllAnswerBars,
        getAnswerBarFromElementInAnswer,
        getCurrentThreadId,
        getRelatedSection,
        searchPattern,
        isSearchPage,
        getCopyToClipboardButton,
        getCodeFromCodeEl,
        getLanguageFromCodeEl,
        getLanguageElFromCodeEl,
        getLanguageFromCodeElRaw,
        translatePerplexityLanguageToRealLanguage,
        disablePromptArea,
        enablePromptArea,
        saveStringAsFile
    }
}

declare namespace pplxModels {
    export {
        ModelDescriptor,
        modelDescriptors,
        getFamiliarName,
        isThinking
    }
}

export declare const proSpiralSvgPathPrefix = "M11.9759 1.99999L11.9879 2.00001C10.5169 2.00565";

export declare const proSvgPathPrefix = "M5.01 17.833h11.023a6.34 6.34 0 0 0 2.91-.676 5.484 5.484 0 0 0";

declare type QueryMode = 'auto' | 'pro' | 'reasoning' | 'research' | 'lab';

export declare const reasoningSvgPathPrefix = "M12 5.125C11.5168 5.125 11.125 5.51675 11.125";

export declare const removeCodeBlocksDbListener: (listener: CodeBlocksDbListenersOptional) => void;

export declare const reverse: <T>(arr: readonly T[]) => T[];

export declare const saveStringAsFile: (filename: string, content: string) => void;

export declare const searchPattern: RegExp;

export declare const setMainCaptionHtml: (html: string) => JQuery<HTMLElement>;

export declare const setSourcesSelectionListValues: (parent?: JQuery) => (values: (boolean | null)[], options?: SetSourcesSelectionListValuesOptions) => void;

export declare const setSourcesSelectionListValuesByName: (parent?: JQuery, options?: SetSourcesSelectionListValuesOptions) => (name: SourcesSelectionListName) => (value: boolean) => void;

export declare interface SetSourcesSelectionListValuesOptions {
    callback?: () => void;
}

export declare const simulateInputTextToPromptArea: (text: string, options?: {
    position?: InputTextPosition;
    focus?: boolean;
}) => boolean;

export declare const sleep: (ms: number) => Promise<unknown>;

export declare const socialTablerIconClass = "tabler-icon-affiliate";

export declare type SourcesSelectionListName = (typeof sourcesSelectionListNames)[number];

export declare const sourcesSelectionListNames: readonly ["Web", "Academic", "Social", "Finance"];

export declare const squareTablerIconClass = "tabler-icon-square";

export declare const stackStackPlusSvgPathPrefix = "M16.0799 4.39998H17.9999V6.31993H19.9201V8.23993H17.9999V10.16H1";

/** @deprecated Use getSubmitButtonAny instead */
export declare const submitButtonAny: (parent?: JQuery) => JQuery<HTMLElement>;

/** @deprecated Use getSubmitButtonAnyExceptMic instead */
export declare const submitButtonAnyExceptMic: (parent?: JQuery) => JQuery<HTMLElement>;

/** @deprecated Use getSubmitButtonMic instead */
export declare const submitButtonMic: (parent?: JQuery) => JQuery<HTMLElement>;

/** @deprecated Use getSubmitButtonRight instead */
export declare const submitButtonRight: (parent?: JQuery) => JQuery<HTMLElement>;

/** @deprecated Use getSubmitButtonUp instead */
export declare const submitButtonUp: (parent?: JQuery) => JQuery<HTMLElement>;

/** @deprecated Use getSubmitButtonVoice instead */
export declare const submitButtonVoice: (parent?: JQuery) => JQuery<HTMLElement>;

export declare type TailwindBreakpoint = typeof tailwindBreakpoints[number];

export declare const tailwindBreakpoints: readonly ["sm", "md", "lg", "xl", "2xl"];

declare namespace tailwindHelpers {
    export {
        tailwindBreakpoints,
        TailwindBreakpoint,
        isBreakpoint,
        getBreakpointInfo
    }
}

export declare const translatePerplexityLanguageToRealLanguage: (language: string, _code: string) => string;

export declare const updateCodeBlocksDb: (cbId: string, info: CodeBlockInfo | null) => void;

/**
 * Current version of the Perplex+ library
 */
export declare const version: string;

export declare const voiceSvgPathPrefix = "M0 12.6663C0 13.4018 0.59792 13.9997 1.33333";

export declare interface WindowWithDebugCodeBlocksDb extends Window {
    DEBUG_CODE_BLOCKS_DB?: boolean;
}

export declare interface WindowWithDebugCodeBlocksInfo extends Window {
    DEBUG_CODE_BLOCKS_INFO?: boolean;
}

export declare const worldTablerIconClass = "tabler-icon-world";

export declare const wrapperHasStopButtonOnFloatingPromptBox: (wrapper: JQuery) => boolean;

export { }

/**
 * Global type declarations for Perplex+
 */
declare global {
    interface Window {
        PP?: typeof PP;
    }
}


declare global {
    interface JQuery {
        nthParent: (n: number) => JQuery;
        pipeJQ: (fn: (el: JQuery) => JQuery) => JQuery;
        pipeFirst: <T>(fn: (el: JQuery) => T) => T;
        pipeAll: <T>(fn: (el: JQuery) => T[]) => T[];
    }
}


declare global {
    interface Window {
        PPD: PPGlobal;
    }
}
