/**
 * Interface representing a Brazilian state with its code and name
 */
interface BrazilianState {
    /** Two-letter state code (e.g., 'SP', 'RJ') */
    value: string;
    /** Full state name (e.g., 'São Paulo', 'Rio de Janeiro') */
    label: string;
}

declare const brazilianStates: BrazilianState[];

declare function hideScroll(isOpen: boolean): void;

/**
 * Converts a date string in 'YYYY-MM-DD' format to 'DD/MM/YYYY' format
 * @param thisDate - Date string in 'YYYY-MM-DD' format
 * @returns Formatted date string in 'DD/MM/YYYY' format
 */
declare function formattedDate(thisDate: string): string;
/**
 * Formats a date according to the specified format string
 * @param date - The date to format
 * @param format - Format string (e.g., 'YYYY-MM-DD', 'DD/MM/YYYY')
 * @returns Formatted date string
 */
declare function formatDate(date: Date, format?: string): string;
/**
 * Formats a datetime string by separating date and time with a bullet point
 * @param dateTimeString - String containing date and time separated by space
 * @returns Formatted date and time string
 */
declare function formatDateTime(dateTimeString: string): string;
/**
 * Formats a string as a birthdate (DD/MM/YYYY)
 * @param value - String to format as birthdate
 * @returns Formatted birthdate string
 */
declare function formatBirthdate(value: string): string;
/**
 * Calculates the number of days between two dates
 * @param startDate - The first date
 * @param endDate - The second date
 * @returns The number of days between the two dates (absolute value)
 */
declare function getDaysBetween(startDate: Date, endDate: Date): number;
/**
 * Checks if a date falls on a weekend (Saturday or Sunday)
 * @param date - The date to check
 * @returns True if the date is a weekend, false otherwise
 */
declare function isWeekend(date: Date): boolean;

/**
 * Capitalizes the first letter of a string
 * @param text - The string to capitalize
 * @returns The string with first letter capitalized
 */
declare function capitalize(text: string): string;
/**
 * Capitalizes the first letter of each word in a string
 * @param text - The string to capitalize
 * @returns The string with each word capitalized
 */
declare function capitalizeText(text: string): string;
/**
 * Converts a string to a URL-friendly slug
 * @param text - The string to convert to a slug
 * @returns URL-friendly slug string
 */
declare function slugify(text: string): string;
/**
 * Truncates a string to a specified length and adds an ellipsis if truncated
 * @param text - The string to truncate
 * @param length - Maximum length of the returned string (excluding suffix)
 * @param suffix - String to append if truncated (default: '...')
 * @returns Truncated string
 */
declare function truncate(text: string, length: number, suffix?: string): string;
/**
 * Removes all characters except letters and spaces
 * @param value - The string to format
 * @returns String with only letters and spaces
 */
declare function formatTextOnly(value: string): string;
/**
 * Formats a full name by removing special characters and normalizing spaces
 * @param value - The full name to format
 * @returns Formatted full name
 */
declare function formatFullName(value: string): string;
/**
 * Creates an acronym from a full name (first letter of first name and first letter of last name)
 * @param fullName - The full name to create an acronym from
 * @returns Two-letter acronym
 */
declare function getAcronym(fullName: string): string;
/**
 * Formats a number as a percentage with two decimal places
 * @param value - The number or string to format
 * @returns Formatted percentage string
 */
declare function formatPercent(value: number | string): string;
/**
 * Formats a string as a Brazilian ZIP code (CEP)
 * @param value - The string to format as a ZIP code
 * @returns Formatted ZIP code (format: 12345-678)
 */
declare function formatZipCode(value: string): string;

declare function formatCurrencyInput(value: string): string;
declare function formatCurrency(value: number | string): string;
/**
 * Formats a number with a custom currency symbol
 * @param value - The number or string to format
 * @param currencySymbol - The currency symbol to use (defaults to $)
 * @returns Formatted currency string
 */
declare function formatWithCurrencySymbol(value: number | string, currencySymbol?: string): string;
/**
 * Formats a number as currency using internationalization API
 * @param value - The number to format
 * @param locale - The locale to use for formatting (defaults to 'pt-BR')
 * @param currencyCode - The ISO currency code (defaults to 'BRL')
 * @returns Formatted currency string
 */
declare function formatInternationalCurrency(value: number | string, locale?: string, currencyCode?: string): string;
/**
 * Formats a number as currency without the currency symbol
 * @param value - The number or string to format
 * @returns Formatted number string with decimal and thousands separators
 */
declare function formatCurrencyWithoutSymbol(value: number | string): string;
/**
 * Formats a number as currency using accounting notation (negative values in parentheses)
 * @param value - The number or string to format
 * @returns Formatted currency string in accounting format
 */
declare function formatAccountingCurrency(value: number | string): string;
declare function parseBrazilianCurrency(str: string): number;
/**
 * Converts a currency value to cents (integer)
 * @param value - The currency value as string or number
 * @returns Integer value in cents
 */
declare function toCents(value: string | number): number;

declare function formatPhoneNumberForWhatsApp(value: string): string;
declare function formatNumber(value: string): string;
declare function formatPhoneNumber(value: string): string;
declare function formatCountBankNumber(value: string): string;
declare function formatBranchNumber(value: string): string;
declare function formatBranchNumberWithDefault(value: string): string;
declare function formatCpf(value: string): string;

/**
 * Deep merges two objects together
 * @param target - The target object to merge into
 * @param source - The source object to merge from
 * @returns A new object with properties from both objects deeply merged
 */
declare function deepMerge<T extends object, U extends object>(target: T, source: U): T & U;
/**
 * Creates a new object with only the specified properties
 * @param obj - The source object
 * @param keys - Array of keys to pick from the source object
 * @returns A new object with only the specified properties
 */
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
/**
 * Creates a new object without the specified properties
 * @param obj - The source object
 * @param keys - Array of keys to omit from the source object
 * @returns A new object without the specified properties
 */
declare function omit<T extends object, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;

/**
 * Splits an array into chunks of a specified size
 * @param array - The array to split into chunks
 * @param size - The size of each chunk
 * @returns Array of array chunks
 */
declare function chunk<T>(array: T[], size: number): T[][];
/**
 * Removes duplicate values from an array
 * @param array - The array to remove duplicates from
 * @returns Array with unique values
 */
declare function unique<T>(array: T[]): T[];
/**
 * Sorts an array of objects by a specified property
 * @param array - The array of objects to sort
 * @param key - The property to sort by
 * @param direction - Sort direction: 'asc' (default) or 'desc'
 * @returns Sorted array
 */
declare function sortBy<T extends Record<string, any>>(array: T[], key: keyof T, direction?: 'asc' | 'desc'): T[];
/**
 * Groups an array of objects by a specified property
 * @param array - The array of objects to group
 * @param key - The property to group by
 * @returns Object with groups
 */
declare function groupBy<T extends Record<string, any>, K extends keyof T>(array: T[], key: K): Record<string, T[]>;
/**
 * Flattens a nested array structure by one level
 * @param array - The array to flatten
 * @returns Flattened array
 */
declare function flatten<T>(array: Array<T | T[]>): T[];
/**
 * Returns an array containing elements present in all provided arrays
 * @param arrays - Arrays to find common elements from
 * @returns Array of common elements
 */
declare function intersection<T>(...arrays: T[][]): T[];
/**
 * Returns elements from the first array that are not in the second array
 * @param array - The source array
 * @param excludeArray - The array of values to exclude
 * @returns Array with excluded values removed
 */
declare function difference<T>(array: T[], excludeArray: T[]): T[];
/**
 * Randomly shuffles elements in an array (Fisher-Yates algorithm)
 * @param array - The array to shuffle
 * @returns New shuffled array
 */
declare function shuffle<T>(array: T[]): T[];
/**
 * Divides an array into two groups based on a predicate function
 * @param array - The array to divide
 * @param predicate - Function that returns true or false for each element
 * @returns Array containing two subarrays: matches and non-matches
 */
declare function partition<T>(array: T[], predicate: (item: T) => boolean): [T[], T[]];

export { brazilianStates, capitalize, capitalizeText, chunk, deepMerge, difference, flatten, formatAccountingCurrency, formatBirthdate, formatBranchNumber, formatBranchNumberWithDefault, formatCountBankNumber, formatCpf, formatCurrency, formatCurrencyInput, formatCurrencyWithoutSymbol, formatDate, formatDateTime, formatFullName, formatInternationalCurrency, formatNumber, formatPercent, formatPhoneNumber, formatPhoneNumberForWhatsApp, formatTextOnly, formatWithCurrencySymbol, formatZipCode, formattedDate, getAcronym, getDaysBetween, groupBy, hideScroll, intersection, isWeekend, omit, parseBrazilianCurrency, partition, pick, shuffle, slugify, sortBy, toCents, truncate, unique };
