export function env(name: keyof ImportMetaEnv): string { const value = import.meta.env[name]; return typeof value === 'string' ? value : ''; } const apiBaseUrl = env('VITE_API_BASE_URL'); export const config = { api: { baseUrl: apiBaseUrl, rootUrl: apiBaseUrl.split('/api')[0] }, shopFiatCurrency: env('VITE_SHOP_FIAT_CURRENCY'), productThumb: { accept: env('VITE_PRODUCT_THUMB_ALLOWED_MIMES'), maxFileBytes: parseInt(env('VITE_PRODUCT_THUMB_MAX_FILE_BYTES'), 10) }, shopLogo: { accept: env('VITE_SHOP_LOGO_ALLOWED_MIMES'), maxFileBytes: parseInt(env('VITE_SHOP_LOGO_MAX_FILE_BYTES'), 10) }, shopFavicon: { accept: env('VITE_SHOP_FAVICON_ALLOWED_MIMES'), maxFileBytes: parseInt(env('VITE_SHOP_FAVICON_MAX_FILE_BYTES'), 10) }, digitalStockAttachment: { accept: env('VITE_DIGITAL_STOCK_ATTACHMENT_ALLOWED_MIMES'), maxFileBytes: parseInt(env('VITE_DIGITAL_STOCK_ATTACHMENT_MAX_FILE_BYTES'), 10) }, validation: { productTitleMaxLength: parseInt(env('VITE_VALIDATION_PRODUCT_TITLE_MAX_LENGTH'), 10), categoryNameMaxLength: parseInt(env('VITE_VALIDATION_CATEGORY_NAME_MAX_LENGTH'), 10), discountCodeMaxLength: parseInt(env('VITE_VALIDATION_DISCOUNT_CODE_MAX_LENGTH'), 10), variantImagesMax: parseInt(env('VITE_VALIDATION_VARIANT_IMAGES_MAX'), 10), digitalStockAttachmentsMax: parseInt(env('VITE_VALIDATION_DIGITAL_STOCK_ATTACHMENTS_MAX'), 10), shippingNoteMinLength: parseInt(env('VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH'), 10), shippingNoteMaxLength: parseInt(env('VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH'), 10), orderMessageMaxLength: parseInt(env('VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH'), 10), bitcoinWithdrawMaxFeeRateSatVbyte: parseInt(env('VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE'), 10) }, orders: { detailPollIntervalMs: parseInt(env('VITE_ORDERS_DETAIL_POLL_INTERVAL_MS'), 10) } };