@cranberry-money/shared-constants
Version:
Shared constants for Blueberry platform
233 lines • 8.64 kB
TypeScript
export declare const DECIMAL_PLACES: 2;
export declare const DEFAULT_NUMERIC_ZERO: 0;
export declare const DEFAULT_EMPTY_STRING: "";
export declare const QUANTITY_FORMAT_THRESHOLD_MILLION: 1000000;
export declare const QUANTITY_FORMAT_THRESHOLD_THOUSAND: 1000;
export declare const ERROR_TYPE_BUSINESS_LOGIC = "business_logic";
export declare const ERROR_TYPE_PERMISSION = "permission";
export declare const ERROR_TYPE_SERVER = "server";
export declare const LOCALE_AUSTRALIA: "en-AU";
export declare const NUMBER_FORMAT_OPTIONS_CURRENCY: {
readonly style: "currency";
readonly minimumFractionDigits: 2;
readonly maximumFractionDigits: 2;
};
export declare const NUMBER_FORMAT_OPTIONS_CURRENCY_SIGNED: {
readonly style: "currency";
readonly minimumFractionDigits: 2;
readonly maximumFractionDigits: 2;
readonly signDisplay: "always";
};
export declare const QUERY_PARAM_ORDER_BY = "order_by";
export declare const ORDER_BY_CREATED_AT = "created_at";
export declare const DEFAULT_UNKNOWN_VALUE: "Unknown";
export declare const DEFAULT_ERROR_MESSAGE: "An error occurred";
export declare const DEFAULT_VALUES: {
readonly ZERO: "0";
readonly EMPTY_STRING: "";
readonly UNKNOWN: "UNKNOWN";
readonly NOT_APPLICABLE: "N/A";
readonly NULL_UUID: "00000000-0000-0000-0000-000000000000";
};
export declare const NUMERIC_DEFAULTS: {
readonly MIN_AMOUNT: 0;
readonly MAX_AMOUNT: 999999999.99;
readonly DEFAULT_PRECISION: 2;
readonly PERCENTAGE_PRECISION: 2;
readonly QUANTITY_PRECISION: 6;
};
export declare const THRESHOLDS: {
readonly MIN_PORTFOLIO_VALUE: 1000;
readonly MIN_TRADE_AMOUNT: 10;
readonly MIN_WITHDRAWAL_AMOUNT: 100;
readonly MAX_PORTFOLIOS_PER_USER: 10;
readonly MAX_TRADES_PER_DAY: 100;
};
export declare const DISPLAY_LIMITS: {
readonly MAX_NAME_LENGTH: 100;
readonly MAX_DESCRIPTION_LENGTH: 500;
readonly MAX_NOTES_LENGTH: 1000;
readonly MAX_FILE_SIZE_MB: 10;
readonly MAX_FILE_NAME_LENGTH: 255;
readonly DASHBOARD_RECENT_TRADES: 5;
readonly DASHBOARD_ORDERS: 5;
readonly DASHBOARD_TRANSACTIONS: 5;
readonly DASHBOARD_WITHDRAWALS: 5;
readonly DEFAULT_PAGE_SIZE: 20;
readonly PAGE_SIZE_OPTIONS: readonly [10, 20, 50, 100];
readonly AUTOCOMPLETE_MAX_RESULTS: 10;
readonly RECENT_SEARCHES_MAX: 5;
};
export declare const ALLOCATION_DEFAULTS: {
readonly DEFAULT_PERCENTAGE: 10;
readonly PERCENTAGE_PRECISION: 0.01;
readonly TARGET_TOTAL: 100;
};
export declare const SORT_DIRECTION: {
readonly ASC: "asc";
readonly DESC: "desc";
};
export type SortDirection = (typeof SORT_DIRECTION)[keyof typeof SORT_DIRECTION];
export declare const SORT_FIELDS: {
readonly CREATED_AT: "created_at";
readonly UPDATED_AT: "updated_at";
readonly DATE: "date";
readonly NAME: "name";
readonly TITLE: "title";
readonly AMOUNT: "amount";
readonly VALUE: "value";
readonly PRICE: "price";
readonly QUANTITY: "quantity";
readonly STATUS: "status";
readonly PRIORITY: "priority";
readonly SYMBOL: "symbol";
readonly TYPE: "type";
};
export type SortField = (typeof SORT_FIELDS)[keyof typeof SORT_FIELDS];
export declare const DEFAULT_SORT_CONFIG: {
readonly PORTFOLIOS: {
readonly field: "updated_at";
readonly direction: "desc";
};
readonly TRADES: {
readonly field: "created_at";
readonly direction: "desc";
};
readonly WITHDRAWALS: {
readonly field: "created_at";
readonly direction: "desc";
};
readonly TRANSACTIONS: {
readonly field: "date";
readonly direction: "desc";
};
};
export declare const SORT_DIRECTION_ASC: "asc";
export declare const SORT_DIRECTION_DESC: "desc";
export declare const MILLISECONDS: {
readonly SECOND: 1000;
readonly MINUTE: number;
readonly HOUR: number;
readonly DAY: number;
readonly WEEK: number;
};
export declare const SECONDS: {
readonly MINUTE: 60;
readonly HOUR: number;
readonly DAY: number;
readonly WEEK: number;
};
export declare const DATE_FORMATS: {
readonly DISPLAY_DATE: "MMM dd, yyyy";
readonly DISPLAY_DATE_TIME: "MMM dd, yyyy HH:mm";
readonly DISPLAY_DATE_TIME_SECONDS: "MMM dd, yyyy HH:mm:ss";
readonly DISPLAY_SHORT: "MM/dd/yy";
readonly API_DATE: "yyyy-MM-dd";
readonly API_DATETIME: "yyyy-MM-dd'T'HH:mm:ss";
readonly API_DATETIME_WITH_TIMEZONE: "yyyy-MM-dd'T'HH:mm:ss'Z'";
readonly MONTH_YEAR: "MMM yyyy";
readonly YEAR: "yyyy";
readonly TIME: "HH:mm";
readonly TIME_WITH_SECONDS: "HH:mm:ss";
};
export declare const TIME_ZONES: {
readonly UTC: "UTC";
readonly EST: "America/New_York";
readonly PST: "America/Los_Angeles";
readonly SYDNEY: "Australia/Sydney";
readonly MELBOURNE: "Australia/Melbourne";
};
export type TimeZone = (typeof TIME_ZONES)[keyof typeof TIME_ZONES];
export declare const SESSION_DURATIONS: {
readonly DEFAULT: number;
readonly EXTENDED: number;
readonly REMEMBER_ME: number;
};
export declare const MILLISECONDS_PER_DAY: number;
export declare const DEFAULT_RECENT_TRANSACTIONS_DAYS = 30;
export declare const DATE_ISO_TIME_SEPARATOR = "T";
export type TimeRange = '1W' | '1M' | '6M' | '1Y' | '3Y' | '5Y' | '10Y';
export interface TimeRangeConfig {
label: string;
value: TimeRange;
days: number;
}
export declare const TIME_RANGES: TimeRangeConfig[];
export declare const REGEX_PATTERNS: {
readonly EMAIL: RegExp;
readonly PHONE: RegExp;
readonly USERNAME: RegExp;
readonly PASSWORD: RegExp;
readonly UUID: RegExp;
readonly NUMERIC: RegExp;
readonly DECIMAL: RegExp;
readonly ALPHA_ONLY: RegExp;
readonly ALPHANUMERIC: RegExp;
readonly URL: RegExp;
};
export declare const VALIDATION_RULES: {
readonly MIN_USERNAME_LENGTH: 3;
readonly MAX_USERNAME_LENGTH: 30;
readonly MIN_PASSWORD_LENGTH: 8;
readonly MAX_PASSWORD_LENGTH: 128;
readonly MIN_NAME_LENGTH: 2;
readonly MAX_NAME_LENGTH: 50;
readonly MIN_PORTFOLIO_NAME_LENGTH: 3;
readonly MAX_PORTFOLIO_NAME_LENGTH: 100;
readonly MIN_PORTFOLIO_DESCRIPTION_LENGTH: 0;
readonly MAX_PORTFOLIO_DESCRIPTION_LENGTH: 500;
readonly MIN_TRADE_AMOUNT: 0.01;
readonly MAX_TRADE_AMOUNT: 1000000;
readonly MIN_TRADE_QUANTITY: 0.001;
readonly MAX_TRADE_QUANTITY: 1000000;
readonly MIN_PRICE: 0.01;
readonly MAX_PRICE: 1000000;
readonly MIN_WITHDRAWAL_AMOUNT: 100;
readonly MAX_WITHDRAWAL_AMOUNT: 1000000;
readonly MAX_DESCRIPTION_LENGTH: 500;
readonly MAX_NOTES_LENGTH: 1000;
readonly MAX_FILE_SIZE_MB: 10;
readonly MAX_FILE_NAME_LENGTH: 255;
readonly MIN_ADDRESS_LENGTH: 10;
readonly MAX_ADDRESS_LENGTH: 200;
readonly MIN_POSTAL_CODE_LENGTH: 3;
readonly MAX_POSTAL_CODE_LENGTH: 10;
};
export declare const VALIDATION_ERRORS: {
readonly REQUIRED: "This field is required";
readonly INVALID_EMAIL: "Please enter a valid email address";
readonly INVALID_PHONE: "Please enter a valid phone number";
readonly INVALID_USERNAME: "Username must be 3-30 characters, letters, numbers, underscores, and hyphens only";
readonly INVALID_PASSWORD: "Password must be at least 8 characters with uppercase, lowercase, and numbers";
readonly MIN_LENGTH: (field: string, min: number) => string;
readonly MAX_LENGTH: (field: string, max: number) => string;
readonly MIN_VALUE: (field: string, min: number) => string;
readonly MAX_VALUE: (field: string, max: number) => string;
readonly INVALID_FORMAT: (field: string) => string;
readonly PASSWORDS_DONT_MATCH: "Passwords do not match";
};
export declare const PASSWORD_VALIDATION: {
readonly MIN_LENGTH: 8;
};
export declare const EMAIL_CONFIRMATION_VALIDATION: {
readonly TOKEN_LENGTH: 6;
readonly TOKEN_MIN_LENGTH: 6;
readonly TOKEN_MAX_LENGTH: 20;
};
export declare const USER_PROFILE_VALIDATION: {
readonly MIN_NAME_PARTS: 2;
readonly MIN_AGE: 13;
readonly MAX_AGE: 120;
readonly MIN_ADDRESS_LENGTH: 10;
readonly MIN_PHONE_LENGTH: 8;
};
export declare const INVESTMENT_PREFERENCES_VALIDATION: {
readonly MIN_INVESTMENT_AMOUNT: 100;
readonly MAX_INVESTMENT_AMOUNT: 10000000;
readonly MIN_SOURCE_OF_FUNDS: 1;
};
export type PasswordValidation = typeof PASSWORD_VALIDATION;
export type EmailConfirmationValidation = typeof EMAIL_CONFIRMATION_VALIDATION;
export type UserProfileValidation = typeof USER_PROFILE_VALIDATION;
export type InvestmentPreferencesValidation = typeof INVESTMENT_PREFERENCES_VALIDATION;
//# sourceMappingURL=utilities.d.ts.map