import { default as React, Ref, RefObject } from 'react';
import { AnimationFileName, LoggedInUser, Logo, User, ZeniDate } from '@zeniai/client-epic-state';
import { Colors } from '../designSystem/zeniConstants';
/**
 * Common Helpers
 */
export declare const usePrevious: (value: any) => undefined;
export declare const useFocus: () => [React.MutableRefObject<HTMLInputElement | null>, (isBlur?: boolean) => void];
export declare function mergeRefs<T>(...refs: Ref<T>[]): Ref<T>;
export declare const capitaliseWords: (text: string) => string;
export declare const useDeviceDetect: () => {
    isMobileOrTabletScreen: boolean;
};
export declare const useIPadDeviceDetect: () => {
    isIPadScreen: boolean;
};
export declare const useIPhoneDeviceDetect: () => {
    isIPhoneScreen: boolean;
};
export declare const useAndroidDeviceDetect: () => {
    isAndroidScreen: boolean;
};
export declare function useLockBodyScroll(): void;
export declare const useOnScreen: (ref: RefObject<HTMLElement>) => boolean;
/**
 * Hook for playing audio with conditional loading.
 * Audio is only loaded when `enabled` is true, improving page load performance.
 * Uses useRef to allow dynamic creation when enabled changes from false to true.
 *
 * @param audioUrl - URL of the audio file to play
 * @param enabled - If false, audio will not be loaded or played (default: true for backward compatibility)
 */
export declare const useMusic: (audioUrl: string, enabled?: boolean) => [boolean, (start: boolean) => void];
export declare const formHasDirtyFields: (dirtyFields: any) => boolean;
export declare const capitalizeFirstLetter: (string: string) => string;
export declare const capitalizeFirstLetterString: (string: string) => string;
export declare const isZeniAIUser: (users: User[], userId: string | undefined) => boolean;
export declare const getFullName: (user: User, includeMiddleName?: boolean, includeEmail?: boolean) => string;
export declare const getLoggedInUserName: (user: LoggedInUser | undefined) => string;
export declare const JPEG_IMAGE_BASE_64 = "data:image/jpeg;base64,";
export declare const PNG_IMAGE_BASE_64 = "data:image/png;base64,";
export declare const PDF_BASE_64 = "data:application/pdf;base64,";
/**
 * Builds an `<img src>` data URI for institution logos (Plaid PNG base64, CDN url).
 * Defaults to PNG when base64 is present — Plaid institution logos are PNG.
 */
export declare const toInstitutionLogoDataUri: (logo: Logo | undefined) => string | undefined;
export declare const SUCCESS_SOUND_SOURCE = "https://storage.googleapis.com/zeni-apis.appspot.com/data/upload_complete_notification.mp3";
export declare const base64FileSize: (base64String: string) => string;
export declare const formatFileSize: (bytes: number, decimals?: number) => string;
export declare function isDateMoreThanHoursAgo(hours: number, dateToCheck: Date): boolean;
export declare const isDateOfNDay: (date: ZeniDate, day: number) => boolean;
export declare const isDateOnOrBetweenRange: (startDate: ZeniDate, endDate: ZeniDate, date: ZeniDate) => boolean;
export declare const getColorForALabel: (props: Readonly<{
    label: string;
    index?: number;
}>) => Colors;
/**
 * Function to wait for react props - predicates.
 * @param {function() : Promise.<Boolean> | function() : Boolean} predicate
 * - A function that returns a bool
 * @param {Number} [timeout] - Optional maximum waiting time in ms after rejected
 */
export declare const waitFor: (predicate: () => boolean, timeout?: number) => Promise<boolean>;
export declare const toAbsoluteUrl: (url: string) => string | undefined;
export declare const mapIndexToString: (index: number) => string;
export declare const fetchAnimationFile: (animationFileName: AnimationFileName) => Promise<any>;
export declare const fetchAnimationData: (endPointUrl: string | undefined, animationFileName: AnimationFileName) => Promise<any>;
export declare const toMonthStr: (month: number) => string;
export declare const toKebabCase: (str: string) => string;
export declare const generateDataTestId: (label: string, secondaryLabel?: string) => string;
export declare const scrollContainerToTargetAdjusted: (element: HTMLDivElement | null, container: HTMLDivElement | null) => void;
export declare const scrollToTop: () => void;
export declare function escapeRegExp(keyword: string): string;
export declare const formatToSentenceCase: (text: string) => string;
export declare const convertMinutesToDays: (minutes: number) => number;
export declare const convertMinutesToWeeks: (minutes: number) => number;
export declare const formatMonthYear: (monthStr: string) => string;
type YearMonthPeriod = string & {
    readonly __brand: "YearMonthPeriod";
};
export declare const toYearMonthPeriodOrThrow: (period: string) => YearMonthPeriod;
export declare const isCurrentMonthPeriod: (period: YearMonthPeriod) => boolean;
export declare const roundAmountIfNeeded: (amount: number) => number;
export declare const flowFromUrl: () => string;
export declare const isEqualProps: <T extends Record<string, unknown>>(prevProps: T, newProps: T, listOfProps: ReadonlyArray<keyof T>) => boolean;
export declare const normalizeString: (str: string | undefined) => string;
export {};
