import { Material, SkinnedMesh } from 'three'; export declare const hasTouchscreen: () => boolean; export declare const isMobileOrTablet: () => boolean; export declare const isiOS: () => boolean; export declare const isAndroid: () => boolean; export declare const isSafari: () => boolean; export declare const isSafariIOS: () => boolean; export declare const pwdRegEx: RegExp; export declare const mailRegEx: RegExp; export declare const usernameRegEx: RegExp; export declare const validURLRegEx: RegExp; export declare const isValidUrl: (url: string) => boolean; export declare function useDebounce(value: T, delay: number): T; export declare function useDebounceFn any>(fn: T, delay: number): T; export declare const stripDuplicates: (text: string) => string; export declare const stripEmojis: (text: string) => string; export declare const stripMarkdown: (text: string) => string; export declare const OFFICE_NATIVE_EXTENSIONS: readonly [".doc", ".docx", ".dotx", ".xls", ".xltx", ".potx"]; export declare const isOfficeNativeFilename: (filename: string) => boolean; export type ParsedDocumentAttachment = { filename: string; type: string; content: string; url: string; }; export declare const parseDocumentAttachmentsFromMessage: (text: string) => ParsedDocumentAttachment[]; export declare const extractAttachmentLinks: (content: string) => string[]; export declare const extractAttachmentLink: (content: string) => string | null; export declare const stripDocumentAttachmentTags: (text: string) => string; export declare const getDocumentAttachmentAssetUrl: (attachment: { content?: string | null; url?: string | null; }) => string; export declare const isAssetOnlyDocumentAttachment: (attachment: { title?: string; name?: string; content?: string | null; url?: string | null; }) => boolean; export declare const stripOutputTags: (text: string) => string; export declare const stripReasoningTags: (text: string) => string; export declare const stripHTML: (text: string) => string; export declare const withLinksOpenInNewTab: (html: string) => string; export declare const escapeHTML: (text: string) => string; export declare const getFieldFromCustomData: (fieldName: string, data: string | undefined) => any; export declare const truncateMessage: (message: string) => string; export declare const stripObjNulls: (obj: { [key: string]: any; }) => { [x: string]: any; }; export declare const difference: (origObj: { [key: string]: any; }, newObj: { [key: string]: any; }) => { [key: string]: any; }; export declare function cleanUrl(href: string): string | null; export declare const mathJaxConfig: { startup: { elements: string[]; }; options: { processHtmlClass: string; }; tex: { inlineMath: string[][]; displayMath: string[][]; processEscapes: boolean; }; asciimath: { fixphi: boolean; displaystyle: boolean; decimalsign: string; }; skipStartupTypeset: boolean; chtml: { displayAlign: string; }; svg: { fontCache: string; }; }; export declare const installMathJaxScript: () => void; export declare const installMathJax: () => void; export declare function correctMaterials(materials: { [key: string]: Material; }): void; export declare function isSkinnedMesh(object: any): object is SkinnedMesh; export declare function disposeObject(object: any): void; export declare const safeParseJSON: (jsonString: string, fallbackString?: boolean) => any;