@layerfi/components 0.1.105 → 0.1.106-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1065,6 +1065,7 @@ declare module '@layerfi/components/components/Badge/Badge' {
1065
1065
  import { ReactNode } from 'react';
1066
1066
  import { ButtonProps } from '@layerfi/components/components/Button/Button';
1067
1067
  export enum BadgeSize {
1068
+ EXTRA_SMALL = "xs",
1068
1069
  SMALL = "small",
1069
1070
  MEDIUM = "medium"
1070
1071
  }
@@ -1076,15 +1077,16 @@ declare module '@layerfi/components/components/Badge/Badge' {
1076
1077
  ERROR = "error"
1077
1078
  }
1078
1079
  export interface BadgeProps {
1079
- children: ReactNode;
1080
+ children?: ReactNode;
1080
1081
  icon?: ReactNode;
1081
1082
  onClick?: ButtonProps['onClick'];
1082
1083
  tooltip?: ReactNode;
1083
1084
  size?: BadgeSize;
1084
1085
  variant?: BadgeVariant;
1085
1086
  hoverable?: boolean;
1087
+ iconOnly?: boolean;
1086
1088
  }
1087
- export const Badge: ({ icon, onClick, children, tooltip, size, variant, hoverable, }: BadgeProps) => import("react/jsx-runtime").JSX.Element;
1089
+ export const Badge: ({ icon, onClick, children, tooltip, size, variant, hoverable, iconOnly, }: BadgeProps) => import("react/jsx-runtime").JSX.Element;
1088
1090
 
1089
1091
  }
1090
1092
  declare module '@layerfi/components/components/Badge/index' {
@@ -1122,6 +1124,7 @@ declare module '@layerfi/components/components/BalanceSheet/BalanceSheet' {
1122
1124
  asWidget?: boolean;
1123
1125
  stringOverrides?: BalanceSheetStringOverrides;
1124
1126
  }>;
1127
+ export const StandaloneBalanceSheet: (props: BalanceSheetProps) => import("react/jsx-runtime").JSX.Element;
1125
1128
  export const BalanceSheet: (props: BalanceSheetProps) => import("react/jsx-runtime").JSX.Element;
1126
1129
 
1127
1130
  }
@@ -1160,7 +1163,7 @@ declare module '@layerfi/components/components/BalanceSheet/download/useBalanceS
1160
1163
 
1161
1164
  }
1162
1165
  declare module '@layerfi/components/components/BalanceSheet/index' {
1163
- export { BalanceSheet } from '@layerfi/components/components/BalanceSheet/BalanceSheet';
1166
+ export { BalanceSheet, StandaloneBalanceSheet } from '@layerfi/components/components/BalanceSheet/BalanceSheet';
1164
1167
 
1165
1168
  }
1166
1169
  declare module '@layerfi/components/components/BalanceSheetDatePicker/BalanceSheetDatePicker' {
@@ -1553,6 +1556,7 @@ declare module '@layerfi/components/components/BankTransactions/BankTransactions
1553
1556
  * @deprecated `mode` can be inferred from the bookkeeping configuration of a business
1554
1557
  */
1555
1558
  mode?: BankTransactionsMode;
1559
+ showCustomerVendor?: boolean;
1556
1560
  showDescriptions?: boolean;
1557
1561
  showReceiptUploads?: boolean;
1558
1562
  showTooltips?: boolean;
@@ -1568,7 +1572,7 @@ declare module '@layerfi/components/components/BankTransactions/BankTransactions
1568
1572
  onError?: (error: LayerError) => void;
1569
1573
  showTags?: boolean;
1570
1574
  }
1571
- export const BankTransactions: ({ onError, showTags, mode, ...props }: BankTransactionsWithErrorProps) => import("react/jsx-runtime").JSX.Element;
1575
+ export const BankTransactions: ({ onError, showTags, showCustomerVendor, mode, ...props }: BankTransactionsWithErrorProps) => import("react/jsx-runtime").JSX.Element;
1572
1576
 
1573
1577
  }
1574
1578
  declare module '@layerfi/components/components/BankTransactions/BankTransactionsHeader' {
@@ -1691,6 +1695,18 @@ declare module '@layerfi/components/components/BaseConfirmationModal/BaseConfirm
1691
1695
  };
1692
1696
  export function BaseConfirmationModal({ isOpen, onOpenChange, title, description, onConfirm, confirmLabel, retryLabel, cancelLabel, errorText, }: BaseConfirmationModalProps): import("react/jsx-runtime").JSX.Element;
1693
1697
 
1698
+ }
1699
+ declare module '@layerfi/components/components/BaseDetailView/BaseDetailView' {
1700
+ import type { PropsWithChildren } from 'react';
1701
+ export type BaseDetailViewProps = PropsWithChildren<{
1702
+ name: string;
1703
+ onGoBack: () => void;
1704
+ slots: {
1705
+ Header: React.FC;
1706
+ };
1707
+ }>;
1708
+ export const BaseDetailView: ({ name, onGoBack, slots, children }: BaseDetailViewProps) => import("react/jsx-runtime").JSX.Element;
1709
+
1694
1710
  }
1695
1711
  declare module '@layerfi/components/components/Bills/BillSummary' {
1696
1712
  import type { Bill } from '@layerfi/components/types';
@@ -2598,6 +2614,14 @@ declare module '@layerfi/components/components/CustomAccountForm/useCustomAccoun
2598
2614
  };
2599
2615
  export {};
2600
2616
 
2617
+ }
2618
+ declare module '@layerfi/components/components/DataPoint/DataPoint' {
2619
+ import type { PropsWithChildren } from 'react';
2620
+ export type DataPointProps = PropsWithChildren<{
2621
+ label: string;
2622
+ }>;
2623
+ export const DataPoint: ({ label, children }: DataPointProps) => import("react/jsx-runtime").JSX.Element;
2624
+
2601
2625
  }
2602
2626
  declare module '@layerfi/components/components/DataState/DataState' {
2603
2627
  import { ReactNode } from 'react';
@@ -2624,6 +2648,75 @@ declare module '@layerfi/components/components/DataState/DataState' {
2624
2648
  declare module '@layerfi/components/components/DataState/index' {
2625
2649
  export { DataState, DataStateStatus } from '@layerfi/components/components/DataState/DataState';
2626
2650
 
2651
+ }
2652
+ declare module '@layerfi/components/components/DataTable/DataTable' {
2653
+ export type Column<TData, K> = {
2654
+ id: K;
2655
+ header?: React.ReactNode;
2656
+ cell: (row: TData) => React.ReactNode;
2657
+ isRowHeader?: true;
2658
+ };
2659
+ export type ColumnConfig<TData, TColumns extends string> = {
2660
+ [K in TColumns]: Column<TData, K>;
2661
+ };
2662
+ export interface DataTableProps<TData, TColumns extends string> {
2663
+ columnConfig: ColumnConfig<TData, TColumns>;
2664
+ data: TData[] | undefined;
2665
+ componentName: string;
2666
+ ariaLabel: string;
2667
+ isLoading: boolean;
2668
+ isError: boolean;
2669
+ slots: {
2670
+ EmptyState: React.FC;
2671
+ ErrorState: React.FC;
2672
+ };
2673
+ }
2674
+ export const DataTable: <TData extends {
2675
+ id: string;
2676
+ }, TColumns extends string>({ columnConfig, data, isLoading, isError, componentName, ariaLabel, slots, }: DataTableProps<TData, TColumns>) => import("react/jsx-runtime").JSX.Element;
2677
+
2678
+ }
2679
+ declare module '@layerfi/components/components/DataTable/DataTableHeader' {
2680
+ import { type SearchFieldProps } from '@layerfi/components/components/SearchField/SearchField';
2681
+ interface CountProps {
2682
+ showCount?: true;
2683
+ totalCount?: string;
2684
+ }
2685
+ interface ClearFiltersButtonProps {
2686
+ onClick: () => void;
2687
+ }
2688
+ interface DataTableHeaderProps {
2689
+ name: string;
2690
+ count?: CountProps;
2691
+ slotProps?: {
2692
+ SearchField?: SearchFieldProps;
2693
+ ClearFiltersButton?: ClearFiltersButtonProps;
2694
+ };
2695
+ slots?: {
2696
+ HeaderActions?: React.FC;
2697
+ HeaderFilters?: React.FC;
2698
+ Filters?: React.FC;
2699
+ };
2700
+ }
2701
+ export const DataTableHeader: ({ name, count, slotProps, slots }: DataTableHeaderProps) => import("react/jsx-runtime").JSX.Element;
2702
+ export {};
2703
+
2704
+ }
2705
+ declare module '@layerfi/components/components/DataTable/PaginatedTable' {
2706
+ import { type DataTableProps } from '@layerfi/components/components/DataTable/DataTable';
2707
+ interface PaginationProps {
2708
+ pageSize?: number;
2709
+ hasMore?: boolean;
2710
+ fetchMore?: () => void;
2711
+ }
2712
+ interface PaginatedTableProps<TData, TColumns extends string> extends DataTableProps<TData, TColumns> {
2713
+ paginationProps: PaginationProps;
2714
+ }
2715
+ export function PaginatedTable<TData extends {
2716
+ id: string;
2717
+ }, TColumns extends string>({ data, isLoading, isError, columnConfig, componentName, ariaLabel, paginationProps, slots, }: PaginatedTableProps<TData, TColumns>): import("react/jsx-runtime").JSX.Element;
2718
+ export {};
2719
+
2627
2720
  }
2628
2721
  declare module '@layerfi/components/components/DatePicker/DatePicker' {
2629
2722
  import { type FC } from 'react';
@@ -2706,7 +2799,7 @@ declare module '@layerfi/components/components/DateTime/index' {
2706
2799
  declare module '@layerfi/components/components/DetailsList/DetailsList' {
2707
2800
  import { ReactNode } from 'react';
2708
2801
  export interface DetailsListProps {
2709
- title?: string;
2802
+ title?: ReactNode;
2710
2803
  className?: string;
2711
2804
  titleClassName?: string;
2712
2805
  children: ReactNode;
@@ -3127,13 +3220,12 @@ declare module '@layerfi/components/components/Input/index' {
3127
3220
  }
3128
3221
  declare module '@layerfi/components/components/Integrations/Integrations' {
3129
3222
  export interface IntegrationsProps {
3130
- elevated?: boolean;
3131
3223
  stringOverrides?: {
3132
3224
  title?: string;
3133
3225
  };
3134
3226
  }
3135
3227
  export const Integrations: (props: IntegrationsProps) => import("react/jsx-runtime").JSX.Element;
3136
- export const IntegrationsComponent: ({ elevated, stringOverrides, }: IntegrationsProps) => import("react/jsx-runtime").JSX.Element;
3228
+ export const IntegrationsComponent: ({ stringOverrides, }: IntegrationsProps) => import("react/jsx-runtime").JSX.Element;
3137
3229
 
3138
3230
  }
3139
3231
  declare module '@layerfi/components/components/Integrations/IntegrationsConnectMenu/IntegrationsConnectMenu' {
@@ -3174,6 +3266,1337 @@ declare module '@layerfi/components/components/Integrations/IntegrationsQuickboo
3174
3266
  }
3175
3267
  export const getQuickbooksConnectionSyncUiState: (quickbooksConnectionStatus: StatusOfQuickbooksConnection) => QuickbooksConnectionSyncUiState;
3176
3268
 
3269
+ }
3270
+ declare module '@layerfi/components/components/Invoices/InvoiceDetail/InvoiceDetail' {
3271
+ import { type InvoiceFormProps } from '@layerfi/components/components/Invoices/InvoiceForm/InvoiceForm';
3272
+ export type InvoiceDetailProps = InvoiceFormProps & {
3273
+ onGoBack: () => void;
3274
+ };
3275
+ export const InvoiceDetail: (props: InvoiceDetailProps) => import("react/jsx-runtime").JSX.Element;
3276
+
3277
+ }
3278
+ declare module '@layerfi/components/components/Invoices/InvoiceForm/InvoiceForm' {
3279
+ import type { Invoice } from '@layerfi/components/features/invoices/invoiceSchemas';
3280
+ import { UpsertInvoiceMode } from '@layerfi/components/features/invoices/api/useUpsertInvoice';
3281
+ export type InvoiceFormMode = {
3282
+ mode: UpsertInvoiceMode.Update;
3283
+ invoice: Invoice;
3284
+ } | {
3285
+ mode: UpsertInvoiceMode.Create;
3286
+ };
3287
+ export type InvoiceFormProps = InvoiceFormMode & {
3288
+ onSuccess?: (invoice: Invoice) => void;
3289
+ };
3290
+ export const InvoiceForm: (props: InvoiceFormProps) => import("react/jsx-runtime").JSX.Element;
3291
+
3292
+ }
3293
+ declare module '@layerfi/components/components/Invoices/InvoiceForm/useInvoiceForm' {
3294
+ import { type Invoice } from '@layerfi/components/features/invoices/invoiceSchemas';
3295
+ import { UpsertInvoiceMode } from '@layerfi/components/features/invoices/api/useUpsertInvoice';
3296
+ import { BigDecimal as BD } from 'effect';
3297
+ export const EMPTY_LINE_ITEM: {
3298
+ product: string;
3299
+ description: string;
3300
+ unitPrice: number;
3301
+ quantity: BD.BigDecimal;
3302
+ amount: number;
3303
+ };
3304
+ type UseInvoiceFormProps = {
3305
+ onSuccess?: (invoice: Invoice) => void;
3306
+ mode: UpsertInvoiceMode.Create;
3307
+ } | {
3308
+ onSuccess?: (invoice: Invoice) => void;
3309
+ mode: UpsertInvoiceMode.Update;
3310
+ invoice: Invoice;
3311
+ };
3312
+ export const useInvoiceForm: (props: UseInvoiceFormProps) => {
3313
+ form: import("@tanstack/react-form").FormApi<{
3314
+ invoiceNumber: string;
3315
+ customer: null;
3316
+ email: string;
3317
+ address: string;
3318
+ lineItems: {
3319
+ product: string;
3320
+ description: string;
3321
+ unitPrice: number;
3322
+ quantity: BD.BigDecimal;
3323
+ amount: number;
3324
+ }[];
3325
+ } | {
3326
+ invoiceNumber: string | null;
3327
+ customer: {
3328
+ readonly id: string;
3329
+ readonly externalId: string | null;
3330
+ readonly individualName: string | null;
3331
+ readonly companyName: string | null;
3332
+ readonly email: string | null;
3333
+ readonly mobilePhone: string | null;
3334
+ readonly officePhone: string | null;
3335
+ readonly addressString: string | null;
3336
+ readonly status: "ACTIVE" | "ARCHIVED";
3337
+ readonly memo: string | null;
3338
+ readonly _local?: {
3339
+ readonly isOptimistic: boolean;
3340
+ } | undefined;
3341
+ } | null;
3342
+ email: string | null | undefined;
3343
+ address: string | null | undefined;
3344
+ lineItems: {
3345
+ amount: number;
3346
+ id: string;
3347
+ externalId: string | null;
3348
+ memo: string | null;
3349
+ description: string | null;
3350
+ product: string | null;
3351
+ subtotal: number;
3352
+ quantity: BD.BigDecimal;
3353
+ invoiceId: string;
3354
+ unitPrice: number;
3355
+ discountAmount: number;
3356
+ salesTaxTotal: number;
3357
+ totalAmount: number;
3358
+ }[];
3359
+ }, import("@tanstack/react-form").FormValidateOrFn<{
3360
+ invoiceNumber: string;
3361
+ customer: null;
3362
+ email: string;
3363
+ address: string;
3364
+ lineItems: {
3365
+ product: string;
3366
+ description: string;
3367
+ unitPrice: number;
3368
+ quantity: BD.BigDecimal;
3369
+ amount: number;
3370
+ }[];
3371
+ } | {
3372
+ invoiceNumber: string | null;
3373
+ customer: {
3374
+ readonly id: string;
3375
+ readonly externalId: string | null;
3376
+ readonly individualName: string | null;
3377
+ readonly companyName: string | null;
3378
+ readonly email: string | null;
3379
+ readonly mobilePhone: string | null;
3380
+ readonly officePhone: string | null;
3381
+ readonly addressString: string | null;
3382
+ readonly status: "ACTIVE" | "ARCHIVED";
3383
+ readonly memo: string | null;
3384
+ readonly _local?: {
3385
+ readonly isOptimistic: boolean;
3386
+ } | undefined;
3387
+ } | null;
3388
+ email: string | null | undefined;
3389
+ address: string | null | undefined;
3390
+ lineItems: {
3391
+ amount: number;
3392
+ id: string;
3393
+ externalId: string | null;
3394
+ memo: string | null;
3395
+ description: string | null;
3396
+ product: string | null;
3397
+ subtotal: number;
3398
+ quantity: BD.BigDecimal;
3399
+ invoiceId: string;
3400
+ unitPrice: number;
3401
+ discountAmount: number;
3402
+ salesTaxTotal: number;
3403
+ totalAmount: number;
3404
+ }[];
3405
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
3406
+ invoiceNumber: string;
3407
+ customer: null;
3408
+ email: string;
3409
+ address: string;
3410
+ lineItems: {
3411
+ product: string;
3412
+ description: string;
3413
+ unitPrice: number;
3414
+ quantity: BD.BigDecimal;
3415
+ amount: number;
3416
+ }[];
3417
+ } | {
3418
+ invoiceNumber: string | null;
3419
+ customer: {
3420
+ readonly id: string;
3421
+ readonly externalId: string | null;
3422
+ readonly individualName: string | null;
3423
+ readonly companyName: string | null;
3424
+ readonly email: string | null;
3425
+ readonly mobilePhone: string | null;
3426
+ readonly officePhone: string | null;
3427
+ readonly addressString: string | null;
3428
+ readonly status: "ACTIVE" | "ARCHIVED";
3429
+ readonly memo: string | null;
3430
+ readonly _local?: {
3431
+ readonly isOptimistic: boolean;
3432
+ } | undefined;
3433
+ } | null;
3434
+ email: string | null | undefined;
3435
+ address: string | null | undefined;
3436
+ lineItems: {
3437
+ amount: number;
3438
+ id: string;
3439
+ externalId: string | null;
3440
+ memo: string | null;
3441
+ description: string | null;
3442
+ product: string | null;
3443
+ subtotal: number;
3444
+ quantity: BD.BigDecimal;
3445
+ invoiceId: string;
3446
+ unitPrice: number;
3447
+ discountAmount: number;
3448
+ salesTaxTotal: number;
3449
+ totalAmount: number;
3450
+ }[];
3451
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
3452
+ invoiceNumber: string;
3453
+ customer: null;
3454
+ email: string;
3455
+ address: string;
3456
+ lineItems: {
3457
+ product: string;
3458
+ description: string;
3459
+ unitPrice: number;
3460
+ quantity: BD.BigDecimal;
3461
+ amount: number;
3462
+ }[];
3463
+ } | {
3464
+ invoiceNumber: string | null;
3465
+ customer: {
3466
+ readonly id: string;
3467
+ readonly externalId: string | null;
3468
+ readonly individualName: string | null;
3469
+ readonly companyName: string | null;
3470
+ readonly email: string | null;
3471
+ readonly mobilePhone: string | null;
3472
+ readonly officePhone: string | null;
3473
+ readonly addressString: string | null;
3474
+ readonly status: "ACTIVE" | "ARCHIVED";
3475
+ readonly memo: string | null;
3476
+ readonly _local?: {
3477
+ readonly isOptimistic: boolean;
3478
+ } | undefined;
3479
+ } | null;
3480
+ email: string | null | undefined;
3481
+ address: string | null | undefined;
3482
+ lineItems: {
3483
+ amount: number;
3484
+ id: string;
3485
+ externalId: string | null;
3486
+ memo: string | null;
3487
+ description: string | null;
3488
+ product: string | null;
3489
+ subtotal: number;
3490
+ quantity: BD.BigDecimal;
3491
+ invoiceId: string;
3492
+ unitPrice: number;
3493
+ discountAmount: number;
3494
+ salesTaxTotal: number;
3495
+ totalAmount: number;
3496
+ }[];
3497
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
3498
+ invoiceNumber: string;
3499
+ customer: null;
3500
+ email: string;
3501
+ address: string;
3502
+ lineItems: {
3503
+ product: string;
3504
+ description: string;
3505
+ unitPrice: number;
3506
+ quantity: BD.BigDecimal;
3507
+ amount: number;
3508
+ }[];
3509
+ } | {
3510
+ invoiceNumber: string | null;
3511
+ customer: {
3512
+ readonly id: string;
3513
+ readonly externalId: string | null;
3514
+ readonly individualName: string | null;
3515
+ readonly companyName: string | null;
3516
+ readonly email: string | null;
3517
+ readonly mobilePhone: string | null;
3518
+ readonly officePhone: string | null;
3519
+ readonly addressString: string | null;
3520
+ readonly status: "ACTIVE" | "ARCHIVED";
3521
+ readonly memo: string | null;
3522
+ readonly _local?: {
3523
+ readonly isOptimistic: boolean;
3524
+ } | undefined;
3525
+ } | null;
3526
+ email: string | null | undefined;
3527
+ address: string | null | undefined;
3528
+ lineItems: {
3529
+ amount: number;
3530
+ id: string;
3531
+ externalId: string | null;
3532
+ memo: string | null;
3533
+ description: string | null;
3534
+ product: string | null;
3535
+ subtotal: number;
3536
+ quantity: BD.BigDecimal;
3537
+ invoiceId: string;
3538
+ unitPrice: number;
3539
+ discountAmount: number;
3540
+ salesTaxTotal: number;
3541
+ totalAmount: number;
3542
+ }[];
3543
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
3544
+ invoiceNumber: string;
3545
+ customer: null;
3546
+ email: string;
3547
+ address: string;
3548
+ lineItems: {
3549
+ product: string;
3550
+ description: string;
3551
+ unitPrice: number;
3552
+ quantity: BD.BigDecimal;
3553
+ amount: number;
3554
+ }[];
3555
+ } | {
3556
+ invoiceNumber: string | null;
3557
+ customer: {
3558
+ readonly id: string;
3559
+ readonly externalId: string | null;
3560
+ readonly individualName: string | null;
3561
+ readonly companyName: string | null;
3562
+ readonly email: string | null;
3563
+ readonly mobilePhone: string | null;
3564
+ readonly officePhone: string | null;
3565
+ readonly addressString: string | null;
3566
+ readonly status: "ACTIVE" | "ARCHIVED";
3567
+ readonly memo: string | null;
3568
+ readonly _local?: {
3569
+ readonly isOptimistic: boolean;
3570
+ } | undefined;
3571
+ } | null;
3572
+ email: string | null | undefined;
3573
+ address: string | null | undefined;
3574
+ lineItems: {
3575
+ amount: number;
3576
+ id: string;
3577
+ externalId: string | null;
3578
+ memo: string | null;
3579
+ description: string | null;
3580
+ product: string | null;
3581
+ subtotal: number;
3582
+ quantity: BD.BigDecimal;
3583
+ invoiceId: string;
3584
+ unitPrice: number;
3585
+ discountAmount: number;
3586
+ salesTaxTotal: number;
3587
+ totalAmount: number;
3588
+ }[];
3589
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
3590
+ invoiceNumber: string;
3591
+ customer: null;
3592
+ email: string;
3593
+ address: string;
3594
+ lineItems: {
3595
+ product: string;
3596
+ description: string;
3597
+ unitPrice: number;
3598
+ quantity: BD.BigDecimal;
3599
+ amount: number;
3600
+ }[];
3601
+ } | {
3602
+ invoiceNumber: string | null;
3603
+ customer: {
3604
+ readonly id: string;
3605
+ readonly externalId: string | null;
3606
+ readonly individualName: string | null;
3607
+ readonly companyName: string | null;
3608
+ readonly email: string | null;
3609
+ readonly mobilePhone: string | null;
3610
+ readonly officePhone: string | null;
3611
+ readonly addressString: string | null;
3612
+ readonly status: "ACTIVE" | "ARCHIVED";
3613
+ readonly memo: string | null;
3614
+ readonly _local?: {
3615
+ readonly isOptimistic: boolean;
3616
+ } | undefined;
3617
+ } | null;
3618
+ email: string | null | undefined;
3619
+ address: string | null | undefined;
3620
+ lineItems: {
3621
+ amount: number;
3622
+ id: string;
3623
+ externalId: string | null;
3624
+ memo: string | null;
3625
+ description: string | null;
3626
+ product: string | null;
3627
+ subtotal: number;
3628
+ quantity: BD.BigDecimal;
3629
+ invoiceId: string;
3630
+ unitPrice: number;
3631
+ discountAmount: number;
3632
+ salesTaxTotal: number;
3633
+ totalAmount: number;
3634
+ }[];
3635
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
3636
+ invoiceNumber: string;
3637
+ customer: null;
3638
+ email: string;
3639
+ address: string;
3640
+ lineItems: {
3641
+ product: string;
3642
+ description: string;
3643
+ unitPrice: number;
3644
+ quantity: BD.BigDecimal;
3645
+ amount: number;
3646
+ }[];
3647
+ } | {
3648
+ invoiceNumber: string | null;
3649
+ customer: {
3650
+ readonly id: string;
3651
+ readonly externalId: string | null;
3652
+ readonly individualName: string | null;
3653
+ readonly companyName: string | null;
3654
+ readonly email: string | null;
3655
+ readonly mobilePhone: string | null;
3656
+ readonly officePhone: string | null;
3657
+ readonly addressString: string | null;
3658
+ readonly status: "ACTIVE" | "ARCHIVED";
3659
+ readonly memo: string | null;
3660
+ readonly _local?: {
3661
+ readonly isOptimistic: boolean;
3662
+ } | undefined;
3663
+ } | null;
3664
+ email: string | null | undefined;
3665
+ address: string | null | undefined;
3666
+ lineItems: {
3667
+ amount: number;
3668
+ id: string;
3669
+ externalId: string | null;
3670
+ memo: string | null;
3671
+ description: string | null;
3672
+ product: string | null;
3673
+ subtotal: number;
3674
+ quantity: BD.BigDecimal;
3675
+ invoiceId: string;
3676
+ unitPrice: number;
3677
+ discountAmount: number;
3678
+ salesTaxTotal: number;
3679
+ totalAmount: number;
3680
+ }[];
3681
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
3682
+ invoiceNumber: string;
3683
+ customer: null;
3684
+ email: string;
3685
+ address: string;
3686
+ lineItems: {
3687
+ product: string;
3688
+ description: string;
3689
+ unitPrice: number;
3690
+ quantity: BD.BigDecimal;
3691
+ amount: number;
3692
+ }[];
3693
+ } | {
3694
+ invoiceNumber: string | null;
3695
+ customer: {
3696
+ readonly id: string;
3697
+ readonly externalId: string | null;
3698
+ readonly individualName: string | null;
3699
+ readonly companyName: string | null;
3700
+ readonly email: string | null;
3701
+ readonly mobilePhone: string | null;
3702
+ readonly officePhone: string | null;
3703
+ readonly addressString: string | null;
3704
+ readonly status: "ACTIVE" | "ARCHIVED";
3705
+ readonly memo: string | null;
3706
+ readonly _local?: {
3707
+ readonly isOptimistic: boolean;
3708
+ } | undefined;
3709
+ } | null;
3710
+ email: string | null | undefined;
3711
+ address: string | null | undefined;
3712
+ lineItems: {
3713
+ amount: number;
3714
+ id: string;
3715
+ externalId: string | null;
3716
+ memo: string | null;
3717
+ description: string | null;
3718
+ product: string | null;
3719
+ subtotal: number;
3720
+ quantity: BD.BigDecimal;
3721
+ invoiceId: string;
3722
+ unitPrice: number;
3723
+ discountAmount: number;
3724
+ salesTaxTotal: number;
3725
+ totalAmount: number;
3726
+ }[];
3727
+ }> | undefined, unknown> & import("@tanstack/react-form").ReactFormApi<{
3728
+ invoiceNumber: string;
3729
+ customer: null;
3730
+ email: string;
3731
+ address: string;
3732
+ lineItems: {
3733
+ product: string;
3734
+ description: string;
3735
+ unitPrice: number;
3736
+ quantity: BD.BigDecimal;
3737
+ amount: number;
3738
+ }[];
3739
+ } | {
3740
+ invoiceNumber: string | null;
3741
+ customer: {
3742
+ readonly id: string;
3743
+ readonly externalId: string | null;
3744
+ readonly individualName: string | null;
3745
+ readonly companyName: string | null;
3746
+ readonly email: string | null;
3747
+ readonly mobilePhone: string | null;
3748
+ readonly officePhone: string | null;
3749
+ readonly addressString: string | null;
3750
+ readonly status: "ACTIVE" | "ARCHIVED";
3751
+ readonly memo: string | null;
3752
+ readonly _local?: {
3753
+ readonly isOptimistic: boolean;
3754
+ } | undefined;
3755
+ } | null;
3756
+ email: string | null | undefined;
3757
+ address: string | null | undefined;
3758
+ lineItems: {
3759
+ amount: number;
3760
+ id: string;
3761
+ externalId: string | null;
3762
+ memo: string | null;
3763
+ description: string | null;
3764
+ product: string | null;
3765
+ subtotal: number;
3766
+ quantity: BD.BigDecimal;
3767
+ invoiceId: string;
3768
+ unitPrice: number;
3769
+ discountAmount: number;
3770
+ salesTaxTotal: number;
3771
+ totalAmount: number;
3772
+ }[];
3773
+ }, import("@tanstack/react-form").FormValidateOrFn<{
3774
+ invoiceNumber: string;
3775
+ customer: null;
3776
+ email: string;
3777
+ address: string;
3778
+ lineItems: {
3779
+ product: string;
3780
+ description: string;
3781
+ unitPrice: number;
3782
+ quantity: BD.BigDecimal;
3783
+ amount: number;
3784
+ }[];
3785
+ } | {
3786
+ invoiceNumber: string | null;
3787
+ customer: {
3788
+ readonly id: string;
3789
+ readonly externalId: string | null;
3790
+ readonly individualName: string | null;
3791
+ readonly companyName: string | null;
3792
+ readonly email: string | null;
3793
+ readonly mobilePhone: string | null;
3794
+ readonly officePhone: string | null;
3795
+ readonly addressString: string | null;
3796
+ readonly status: "ACTIVE" | "ARCHIVED";
3797
+ readonly memo: string | null;
3798
+ readonly _local?: {
3799
+ readonly isOptimistic: boolean;
3800
+ } | undefined;
3801
+ } | null;
3802
+ email: string | null | undefined;
3803
+ address: string | null | undefined;
3804
+ lineItems: {
3805
+ amount: number;
3806
+ id: string;
3807
+ externalId: string | null;
3808
+ memo: string | null;
3809
+ description: string | null;
3810
+ product: string | null;
3811
+ subtotal: number;
3812
+ quantity: BD.BigDecimal;
3813
+ invoiceId: string;
3814
+ unitPrice: number;
3815
+ discountAmount: number;
3816
+ salesTaxTotal: number;
3817
+ totalAmount: number;
3818
+ }[];
3819
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
3820
+ invoiceNumber: string;
3821
+ customer: null;
3822
+ email: string;
3823
+ address: string;
3824
+ lineItems: {
3825
+ product: string;
3826
+ description: string;
3827
+ unitPrice: number;
3828
+ quantity: BD.BigDecimal;
3829
+ amount: number;
3830
+ }[];
3831
+ } | {
3832
+ invoiceNumber: string | null;
3833
+ customer: {
3834
+ readonly id: string;
3835
+ readonly externalId: string | null;
3836
+ readonly individualName: string | null;
3837
+ readonly companyName: string | null;
3838
+ readonly email: string | null;
3839
+ readonly mobilePhone: string | null;
3840
+ readonly officePhone: string | null;
3841
+ readonly addressString: string | null;
3842
+ readonly status: "ACTIVE" | "ARCHIVED";
3843
+ readonly memo: string | null;
3844
+ readonly _local?: {
3845
+ readonly isOptimistic: boolean;
3846
+ } | undefined;
3847
+ } | null;
3848
+ email: string | null | undefined;
3849
+ address: string | null | undefined;
3850
+ lineItems: {
3851
+ amount: number;
3852
+ id: string;
3853
+ externalId: string | null;
3854
+ memo: string | null;
3855
+ description: string | null;
3856
+ product: string | null;
3857
+ subtotal: number;
3858
+ quantity: BD.BigDecimal;
3859
+ invoiceId: string;
3860
+ unitPrice: number;
3861
+ discountAmount: number;
3862
+ salesTaxTotal: number;
3863
+ totalAmount: number;
3864
+ }[];
3865
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
3866
+ invoiceNumber: string;
3867
+ customer: null;
3868
+ email: string;
3869
+ address: string;
3870
+ lineItems: {
3871
+ product: string;
3872
+ description: string;
3873
+ unitPrice: number;
3874
+ quantity: BD.BigDecimal;
3875
+ amount: number;
3876
+ }[];
3877
+ } | {
3878
+ invoiceNumber: string | null;
3879
+ customer: {
3880
+ readonly id: string;
3881
+ readonly externalId: string | null;
3882
+ readonly individualName: string | null;
3883
+ readonly companyName: string | null;
3884
+ readonly email: string | null;
3885
+ readonly mobilePhone: string | null;
3886
+ readonly officePhone: string | null;
3887
+ readonly addressString: string | null;
3888
+ readonly status: "ACTIVE" | "ARCHIVED";
3889
+ readonly memo: string | null;
3890
+ readonly _local?: {
3891
+ readonly isOptimistic: boolean;
3892
+ } | undefined;
3893
+ } | null;
3894
+ email: string | null | undefined;
3895
+ address: string | null | undefined;
3896
+ lineItems: {
3897
+ amount: number;
3898
+ id: string;
3899
+ externalId: string | null;
3900
+ memo: string | null;
3901
+ description: string | null;
3902
+ product: string | null;
3903
+ subtotal: number;
3904
+ quantity: BD.BigDecimal;
3905
+ invoiceId: string;
3906
+ unitPrice: number;
3907
+ discountAmount: number;
3908
+ salesTaxTotal: number;
3909
+ totalAmount: number;
3910
+ }[];
3911
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
3912
+ invoiceNumber: string;
3913
+ customer: null;
3914
+ email: string;
3915
+ address: string;
3916
+ lineItems: {
3917
+ product: string;
3918
+ description: string;
3919
+ unitPrice: number;
3920
+ quantity: BD.BigDecimal;
3921
+ amount: number;
3922
+ }[];
3923
+ } | {
3924
+ invoiceNumber: string | null;
3925
+ customer: {
3926
+ readonly id: string;
3927
+ readonly externalId: string | null;
3928
+ readonly individualName: string | null;
3929
+ readonly companyName: string | null;
3930
+ readonly email: string | null;
3931
+ readonly mobilePhone: string | null;
3932
+ readonly officePhone: string | null;
3933
+ readonly addressString: string | null;
3934
+ readonly status: "ACTIVE" | "ARCHIVED";
3935
+ readonly memo: string | null;
3936
+ readonly _local?: {
3937
+ readonly isOptimistic: boolean;
3938
+ } | undefined;
3939
+ } | null;
3940
+ email: string | null | undefined;
3941
+ address: string | null | undefined;
3942
+ lineItems: {
3943
+ amount: number;
3944
+ id: string;
3945
+ externalId: string | null;
3946
+ memo: string | null;
3947
+ description: string | null;
3948
+ product: string | null;
3949
+ subtotal: number;
3950
+ quantity: BD.BigDecimal;
3951
+ invoiceId: string;
3952
+ unitPrice: number;
3953
+ discountAmount: number;
3954
+ salesTaxTotal: number;
3955
+ totalAmount: number;
3956
+ }[];
3957
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
3958
+ invoiceNumber: string;
3959
+ customer: null;
3960
+ email: string;
3961
+ address: string;
3962
+ lineItems: {
3963
+ product: string;
3964
+ description: string;
3965
+ unitPrice: number;
3966
+ quantity: BD.BigDecimal;
3967
+ amount: number;
3968
+ }[];
3969
+ } | {
3970
+ invoiceNumber: string | null;
3971
+ customer: {
3972
+ readonly id: string;
3973
+ readonly externalId: string | null;
3974
+ readonly individualName: string | null;
3975
+ readonly companyName: string | null;
3976
+ readonly email: string | null;
3977
+ readonly mobilePhone: string | null;
3978
+ readonly officePhone: string | null;
3979
+ readonly addressString: string | null;
3980
+ readonly status: "ACTIVE" | "ARCHIVED";
3981
+ readonly memo: string | null;
3982
+ readonly _local?: {
3983
+ readonly isOptimistic: boolean;
3984
+ } | undefined;
3985
+ } | null;
3986
+ email: string | null | undefined;
3987
+ address: string | null | undefined;
3988
+ lineItems: {
3989
+ amount: number;
3990
+ id: string;
3991
+ externalId: string | null;
3992
+ memo: string | null;
3993
+ description: string | null;
3994
+ product: string | null;
3995
+ subtotal: number;
3996
+ quantity: BD.BigDecimal;
3997
+ invoiceId: string;
3998
+ unitPrice: number;
3999
+ discountAmount: number;
4000
+ salesTaxTotal: number;
4001
+ totalAmount: number;
4002
+ }[];
4003
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
4004
+ invoiceNumber: string;
4005
+ customer: null;
4006
+ email: string;
4007
+ address: string;
4008
+ lineItems: {
4009
+ product: string;
4010
+ description: string;
4011
+ unitPrice: number;
4012
+ quantity: BD.BigDecimal;
4013
+ amount: number;
4014
+ }[];
4015
+ } | {
4016
+ invoiceNumber: string | null;
4017
+ customer: {
4018
+ readonly id: string;
4019
+ readonly externalId: string | null;
4020
+ readonly individualName: string | null;
4021
+ readonly companyName: string | null;
4022
+ readonly email: string | null;
4023
+ readonly mobilePhone: string | null;
4024
+ readonly officePhone: string | null;
4025
+ readonly addressString: string | null;
4026
+ readonly status: "ACTIVE" | "ARCHIVED";
4027
+ readonly memo: string | null;
4028
+ readonly _local?: {
4029
+ readonly isOptimistic: boolean;
4030
+ } | undefined;
4031
+ } | null;
4032
+ email: string | null | undefined;
4033
+ address: string | null | undefined;
4034
+ lineItems: {
4035
+ amount: number;
4036
+ id: string;
4037
+ externalId: string | null;
4038
+ memo: string | null;
4039
+ description: string | null;
4040
+ product: string | null;
4041
+ subtotal: number;
4042
+ quantity: BD.BigDecimal;
4043
+ invoiceId: string;
4044
+ unitPrice: number;
4045
+ discountAmount: number;
4046
+ salesTaxTotal: number;
4047
+ totalAmount: number;
4048
+ }[];
4049
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
4050
+ invoiceNumber: string;
4051
+ customer: null;
4052
+ email: string;
4053
+ address: string;
4054
+ lineItems: {
4055
+ product: string;
4056
+ description: string;
4057
+ unitPrice: number;
4058
+ quantity: BD.BigDecimal;
4059
+ amount: number;
4060
+ }[];
4061
+ } | {
4062
+ invoiceNumber: string | null;
4063
+ customer: {
4064
+ readonly id: string;
4065
+ readonly externalId: string | null;
4066
+ readonly individualName: string | null;
4067
+ readonly companyName: string | null;
4068
+ readonly email: string | null;
4069
+ readonly mobilePhone: string | null;
4070
+ readonly officePhone: string | null;
4071
+ readonly addressString: string | null;
4072
+ readonly status: "ACTIVE" | "ARCHIVED";
4073
+ readonly memo: string | null;
4074
+ readonly _local?: {
4075
+ readonly isOptimistic: boolean;
4076
+ } | undefined;
4077
+ } | null;
4078
+ email: string | null | undefined;
4079
+ address: string | null | undefined;
4080
+ lineItems: {
4081
+ amount: number;
4082
+ id: string;
4083
+ externalId: string | null;
4084
+ memo: string | null;
4085
+ description: string | null;
4086
+ product: string | null;
4087
+ subtotal: number;
4088
+ quantity: BD.BigDecimal;
4089
+ invoiceId: string;
4090
+ unitPrice: number;
4091
+ discountAmount: number;
4092
+ salesTaxTotal: number;
4093
+ totalAmount: number;
4094
+ }[];
4095
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
4096
+ invoiceNumber: string;
4097
+ customer: null;
4098
+ email: string;
4099
+ address: string;
4100
+ lineItems: {
4101
+ product: string;
4102
+ description: string;
4103
+ unitPrice: number;
4104
+ quantity: BD.BigDecimal;
4105
+ amount: number;
4106
+ }[];
4107
+ } | {
4108
+ invoiceNumber: string | null;
4109
+ customer: {
4110
+ readonly id: string;
4111
+ readonly externalId: string | null;
4112
+ readonly individualName: string | null;
4113
+ readonly companyName: string | null;
4114
+ readonly email: string | null;
4115
+ readonly mobilePhone: string | null;
4116
+ readonly officePhone: string | null;
4117
+ readonly addressString: string | null;
4118
+ readonly status: "ACTIVE" | "ARCHIVED";
4119
+ readonly memo: string | null;
4120
+ readonly _local?: {
4121
+ readonly isOptimistic: boolean;
4122
+ } | undefined;
4123
+ } | null;
4124
+ email: string | null | undefined;
4125
+ address: string | null | undefined;
4126
+ lineItems: {
4127
+ amount: number;
4128
+ id: string;
4129
+ externalId: string | null;
4130
+ memo: string | null;
4131
+ description: string | null;
4132
+ product: string | null;
4133
+ subtotal: number;
4134
+ quantity: BD.BigDecimal;
4135
+ invoiceId: string;
4136
+ unitPrice: number;
4137
+ discountAmount: number;
4138
+ salesTaxTotal: number;
4139
+ totalAmount: number;
4140
+ }[];
4141
+ }> | undefined, unknown> & {
4142
+ AppField: import("@tanstack/react-form").FieldComponent<{
4143
+ invoiceNumber: string;
4144
+ customer: null;
4145
+ email: string;
4146
+ address: string;
4147
+ lineItems: {
4148
+ product: string;
4149
+ description: string;
4150
+ unitPrice: number;
4151
+ quantity: BD.BigDecimal;
4152
+ amount: number;
4153
+ }[];
4154
+ } | {
4155
+ invoiceNumber: string | null;
4156
+ customer: {
4157
+ readonly id: string;
4158
+ readonly externalId: string | null;
4159
+ readonly individualName: string | null;
4160
+ readonly companyName: string | null;
4161
+ readonly email: string | null;
4162
+ readonly mobilePhone: string | null;
4163
+ readonly officePhone: string | null;
4164
+ readonly addressString: string | null;
4165
+ readonly status: "ACTIVE" | "ARCHIVED";
4166
+ readonly memo: string | null;
4167
+ readonly _local?: {
4168
+ readonly isOptimistic: boolean;
4169
+ } | undefined;
4170
+ } | null;
4171
+ email: string | null | undefined;
4172
+ address: string | null | undefined;
4173
+ lineItems: {
4174
+ amount: number;
4175
+ id: string;
4176
+ externalId: string | null;
4177
+ memo: string | null;
4178
+ description: string | null;
4179
+ product: string | null;
4180
+ subtotal: number;
4181
+ quantity: BD.BigDecimal;
4182
+ invoiceId: string;
4183
+ unitPrice: number;
4184
+ discountAmount: number;
4185
+ salesTaxTotal: number;
4186
+ totalAmount: number;
4187
+ }[];
4188
+ }, import("@tanstack/react-form").FormValidateOrFn<{
4189
+ invoiceNumber: string;
4190
+ customer: null;
4191
+ email: string;
4192
+ address: string;
4193
+ lineItems: {
4194
+ product: string;
4195
+ description: string;
4196
+ unitPrice: number;
4197
+ quantity: BD.BigDecimal;
4198
+ amount: number;
4199
+ }[];
4200
+ } | {
4201
+ invoiceNumber: string | null;
4202
+ customer: {
4203
+ readonly id: string;
4204
+ readonly externalId: string | null;
4205
+ readonly individualName: string | null;
4206
+ readonly companyName: string | null;
4207
+ readonly email: string | null;
4208
+ readonly mobilePhone: string | null;
4209
+ readonly officePhone: string | null;
4210
+ readonly addressString: string | null;
4211
+ readonly status: "ACTIVE" | "ARCHIVED";
4212
+ readonly memo: string | null;
4213
+ readonly _local?: {
4214
+ readonly isOptimistic: boolean;
4215
+ } | undefined;
4216
+ } | null;
4217
+ email: string | null | undefined;
4218
+ address: string | null | undefined;
4219
+ lineItems: {
4220
+ amount: number;
4221
+ id: string;
4222
+ externalId: string | null;
4223
+ memo: string | null;
4224
+ description: string | null;
4225
+ product: string | null;
4226
+ subtotal: number;
4227
+ quantity: BD.BigDecimal;
4228
+ invoiceId: string;
4229
+ unitPrice: number;
4230
+ discountAmount: number;
4231
+ salesTaxTotal: number;
4232
+ totalAmount: number;
4233
+ }[];
4234
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
4235
+ invoiceNumber: string;
4236
+ customer: null;
4237
+ email: string;
4238
+ address: string;
4239
+ lineItems: {
4240
+ product: string;
4241
+ description: string;
4242
+ unitPrice: number;
4243
+ quantity: BD.BigDecimal;
4244
+ amount: number;
4245
+ }[];
4246
+ } | {
4247
+ invoiceNumber: string | null;
4248
+ customer: {
4249
+ readonly id: string;
4250
+ readonly externalId: string | null;
4251
+ readonly individualName: string | null;
4252
+ readonly companyName: string | null;
4253
+ readonly email: string | null;
4254
+ readonly mobilePhone: string | null;
4255
+ readonly officePhone: string | null;
4256
+ readonly addressString: string | null;
4257
+ readonly status: "ACTIVE" | "ARCHIVED";
4258
+ readonly memo: string | null;
4259
+ readonly _local?: {
4260
+ readonly isOptimistic: boolean;
4261
+ } | undefined;
4262
+ } | null;
4263
+ email: string | null | undefined;
4264
+ address: string | null | undefined;
4265
+ lineItems: {
4266
+ amount: number;
4267
+ id: string;
4268
+ externalId: string | null;
4269
+ memo: string | null;
4270
+ description: string | null;
4271
+ product: string | null;
4272
+ subtotal: number;
4273
+ quantity: BD.BigDecimal;
4274
+ invoiceId: string;
4275
+ unitPrice: number;
4276
+ discountAmount: number;
4277
+ salesTaxTotal: number;
4278
+ totalAmount: number;
4279
+ }[];
4280
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
4281
+ invoiceNumber: string;
4282
+ customer: null;
4283
+ email: string;
4284
+ address: string;
4285
+ lineItems: {
4286
+ product: string;
4287
+ description: string;
4288
+ unitPrice: number;
4289
+ quantity: BD.BigDecimal;
4290
+ amount: number;
4291
+ }[];
4292
+ } | {
4293
+ invoiceNumber: string | null;
4294
+ customer: {
4295
+ readonly id: string;
4296
+ readonly externalId: string | null;
4297
+ readonly individualName: string | null;
4298
+ readonly companyName: string | null;
4299
+ readonly email: string | null;
4300
+ readonly mobilePhone: string | null;
4301
+ readonly officePhone: string | null;
4302
+ readonly addressString: string | null;
4303
+ readonly status: "ACTIVE" | "ARCHIVED";
4304
+ readonly memo: string | null;
4305
+ readonly _local?: {
4306
+ readonly isOptimistic: boolean;
4307
+ } | undefined;
4308
+ } | null;
4309
+ email: string | null | undefined;
4310
+ address: string | null | undefined;
4311
+ lineItems: {
4312
+ amount: number;
4313
+ id: string;
4314
+ externalId: string | null;
4315
+ memo: string | null;
4316
+ description: string | null;
4317
+ product: string | null;
4318
+ subtotal: number;
4319
+ quantity: BD.BigDecimal;
4320
+ invoiceId: string;
4321
+ unitPrice: number;
4322
+ discountAmount: number;
4323
+ salesTaxTotal: number;
4324
+ totalAmount: number;
4325
+ }[];
4326
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
4327
+ invoiceNumber: string;
4328
+ customer: null;
4329
+ email: string;
4330
+ address: string;
4331
+ lineItems: {
4332
+ product: string;
4333
+ description: string;
4334
+ unitPrice: number;
4335
+ quantity: BD.BigDecimal;
4336
+ amount: number;
4337
+ }[];
4338
+ } | {
4339
+ invoiceNumber: string | null;
4340
+ customer: {
4341
+ readonly id: string;
4342
+ readonly externalId: string | null;
4343
+ readonly individualName: string | null;
4344
+ readonly companyName: string | null;
4345
+ readonly email: string | null;
4346
+ readonly mobilePhone: string | null;
4347
+ readonly officePhone: string | null;
4348
+ readonly addressString: string | null;
4349
+ readonly status: "ACTIVE" | "ARCHIVED";
4350
+ readonly memo: string | null;
4351
+ readonly _local?: {
4352
+ readonly isOptimistic: boolean;
4353
+ } | undefined;
4354
+ } | null;
4355
+ email: string | null | undefined;
4356
+ address: string | null | undefined;
4357
+ lineItems: {
4358
+ amount: number;
4359
+ id: string;
4360
+ externalId: string | null;
4361
+ memo: string | null;
4362
+ description: string | null;
4363
+ product: string | null;
4364
+ subtotal: number;
4365
+ quantity: BD.BigDecimal;
4366
+ invoiceId: string;
4367
+ unitPrice: number;
4368
+ discountAmount: number;
4369
+ salesTaxTotal: number;
4370
+ totalAmount: number;
4371
+ }[];
4372
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
4373
+ invoiceNumber: string;
4374
+ customer: null;
4375
+ email: string;
4376
+ address: string;
4377
+ lineItems: {
4378
+ product: string;
4379
+ description: string;
4380
+ unitPrice: number;
4381
+ quantity: BD.BigDecimal;
4382
+ amount: number;
4383
+ }[];
4384
+ } | {
4385
+ invoiceNumber: string | null;
4386
+ customer: {
4387
+ readonly id: string;
4388
+ readonly externalId: string | null;
4389
+ readonly individualName: string | null;
4390
+ readonly companyName: string | null;
4391
+ readonly email: string | null;
4392
+ readonly mobilePhone: string | null;
4393
+ readonly officePhone: string | null;
4394
+ readonly addressString: string | null;
4395
+ readonly status: "ACTIVE" | "ARCHIVED";
4396
+ readonly memo: string | null;
4397
+ readonly _local?: {
4398
+ readonly isOptimistic: boolean;
4399
+ } | undefined;
4400
+ } | null;
4401
+ email: string | null | undefined;
4402
+ address: string | null | undefined;
4403
+ lineItems: {
4404
+ amount: number;
4405
+ id: string;
4406
+ externalId: string | null;
4407
+ memo: string | null;
4408
+ description: string | null;
4409
+ product: string | null;
4410
+ subtotal: number;
4411
+ quantity: BD.BigDecimal;
4412
+ invoiceId: string;
4413
+ unitPrice: number;
4414
+ discountAmount: number;
4415
+ salesTaxTotal: number;
4416
+ totalAmount: number;
4417
+ }[];
4418
+ }> | undefined, import("@tanstack/react-form").FormValidateOrFn<{
4419
+ invoiceNumber: string;
4420
+ customer: null;
4421
+ email: string;
4422
+ address: string;
4423
+ lineItems: {
4424
+ product: string;
4425
+ description: string;
4426
+ unitPrice: number;
4427
+ quantity: BD.BigDecimal;
4428
+ amount: number;
4429
+ }[];
4430
+ } | {
4431
+ invoiceNumber: string | null;
4432
+ customer: {
4433
+ readonly id: string;
4434
+ readonly externalId: string | null;
4435
+ readonly individualName: string | null;
4436
+ readonly companyName: string | null;
4437
+ readonly email: string | null;
4438
+ readonly mobilePhone: string | null;
4439
+ readonly officePhone: string | null;
4440
+ readonly addressString: string | null;
4441
+ readonly status: "ACTIVE" | "ARCHIVED";
4442
+ readonly memo: string | null;
4443
+ readonly _local?: {
4444
+ readonly isOptimistic: boolean;
4445
+ } | undefined;
4446
+ } | null;
4447
+ email: string | null | undefined;
4448
+ address: string | null | undefined;
4449
+ lineItems: {
4450
+ amount: number;
4451
+ id: string;
4452
+ externalId: string | null;
4453
+ memo: string | null;
4454
+ description: string | null;
4455
+ product: string | null;
4456
+ subtotal: number;
4457
+ quantity: BD.BigDecimal;
4458
+ invoiceId: string;
4459
+ unitPrice: number;
4460
+ discountAmount: number;
4461
+ salesTaxTotal: number;
4462
+ totalAmount: number;
4463
+ }[];
4464
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
4465
+ invoiceNumber: string;
4466
+ customer: null;
4467
+ email: string;
4468
+ address: string;
4469
+ lineItems: {
4470
+ product: string;
4471
+ description: string;
4472
+ unitPrice: number;
4473
+ quantity: BD.BigDecimal;
4474
+ amount: number;
4475
+ }[];
4476
+ } | {
4477
+ invoiceNumber: string | null;
4478
+ customer: {
4479
+ readonly id: string;
4480
+ readonly externalId: string | null;
4481
+ readonly individualName: string | null;
4482
+ readonly companyName: string | null;
4483
+ readonly email: string | null;
4484
+ readonly mobilePhone: string | null;
4485
+ readonly officePhone: string | null;
4486
+ readonly addressString: string | null;
4487
+ readonly status: "ACTIVE" | "ARCHIVED";
4488
+ readonly memo: string | null;
4489
+ readonly _local?: {
4490
+ readonly isOptimistic: boolean;
4491
+ } | undefined;
4492
+ } | null;
4493
+ email: string | null | undefined;
4494
+ address: string | null | undefined;
4495
+ lineItems: {
4496
+ amount: number;
4497
+ id: string;
4498
+ externalId: string | null;
4499
+ memo: string | null;
4500
+ description: string | null;
4501
+ product: string | null;
4502
+ subtotal: number;
4503
+ quantity: BD.BigDecimal;
4504
+ invoiceId: string;
4505
+ unitPrice: number;
4506
+ discountAmount: number;
4507
+ salesTaxTotal: number;
4508
+ totalAmount: number;
4509
+ }[];
4510
+ }> | undefined, import("@tanstack/react-form").FormAsyncValidateOrFn<{
4511
+ invoiceNumber: string;
4512
+ customer: null;
4513
+ email: string;
4514
+ address: string;
4515
+ lineItems: {
4516
+ product: string;
4517
+ description: string;
4518
+ unitPrice: number;
4519
+ quantity: BD.BigDecimal;
4520
+ amount: number;
4521
+ }[];
4522
+ } | {
4523
+ invoiceNumber: string | null;
4524
+ customer: {
4525
+ readonly id: string;
4526
+ readonly externalId: string | null;
4527
+ readonly individualName: string | null;
4528
+ readonly companyName: string | null;
4529
+ readonly email: string | null;
4530
+ readonly mobilePhone: string | null;
4531
+ readonly officePhone: string | null;
4532
+ readonly addressString: string | null;
4533
+ readonly status: "ACTIVE" | "ARCHIVED";
4534
+ readonly memo: string | null;
4535
+ readonly _local?: {
4536
+ readonly isOptimistic: boolean;
4537
+ } | undefined;
4538
+ } | null;
4539
+ email: string | null | undefined;
4540
+ address: string | null | undefined;
4541
+ lineItems: {
4542
+ amount: number;
4543
+ id: string;
4544
+ externalId: string | null;
4545
+ memo: string | null;
4546
+ description: string | null;
4547
+ product: string | null;
4548
+ subtotal: number;
4549
+ quantity: BD.BigDecimal;
4550
+ invoiceId: string;
4551
+ unitPrice: number;
4552
+ discountAmount: number;
4553
+ salesTaxTotal: number;
4554
+ totalAmount: number;
4555
+ }[];
4556
+ }> | undefined, unknown, NoInfer<{
4557
+ readonly BaseFormTextField: typeof import("@layerfi/components/features/forms/components/BaseFormTextField").BaseFormTextField;
4558
+ readonly FormBigDecimalField: typeof import("@layerfi/components/features/forms/components/FormBigDecimalField").FormBigDecimalField;
4559
+ readonly FormCurrencyField: typeof import("@layerfi/components/features/forms/components/FormCurrencyField").FormCurrencyField;
4560
+ readonly FormTextAreaField: typeof import("@layerfi/components/features/forms/components/FormTextAreaField").FormTextAreaField;
4561
+ readonly FormTextField: typeof import("@layerfi/components/features/forms/components/FormTextField").FormTextField;
4562
+ }>>;
4563
+ AppForm: import("react").ComponentType<import("react").PropsWithChildren>;
4564
+ };
4565
+ submitError: string | undefined;
4566
+ isFormValid: boolean;
4567
+ };
4568
+ export {};
4569
+
4570
+ }
4571
+ declare module '@layerfi/components/components/Invoices/InvoiceStatusCell/InvoiceStatusCell' {
4572
+ import { type Invoice } from '@layerfi/components/features/invoices/invoiceSchemas';
4573
+ export const InvoiceStatusCell: ({ invoice, inline }: {
4574
+ invoice: Invoice;
4575
+ inline?: boolean;
4576
+ }) => import("react/jsx-runtime").JSX.Element;
4577
+
4578
+ }
4579
+ declare module '@layerfi/components/components/Invoices/Invoices' {
4580
+ interface InvoicesStringOverrides {
4581
+ title?: string;
4582
+ }
4583
+ export interface InvoicesProps {
4584
+ showTitle?: boolean;
4585
+ stringOverrides?: InvoicesStringOverrides;
4586
+ }
4587
+ export const unstable_Invoices: ({ showTitle, stringOverrides, }: InvoicesProps) => import("react/jsx-runtime").JSX.Element;
4588
+ export {};
4589
+
4590
+ }
4591
+ declare module '@layerfi/components/components/Invoices/InvoicesTable/InvoicesTable' {
4592
+ import { type Invoice } from '@layerfi/components/features/invoices/invoiceSchemas';
4593
+ interface InvoicesTableProps {
4594
+ onCreateInvoice: () => void;
4595
+ onSelectInvoice: (invoice: Invoice) => void;
4596
+ }
4597
+ export const InvoicesTable: ({ onCreateInvoice, onSelectInvoice }: InvoicesTableProps) => import("react/jsx-runtime").JSX.Element;
4598
+ export {};
4599
+
3177
4600
  }
3178
4601
  declare module '@layerfi/components/components/Journal/Journal' {
3179
4602
  import { JournalTableStringOverrides } from '@layerfi/components/components/JournalTable/JournalTableWithPanel';
@@ -3353,12 +4776,14 @@ declare module '@layerfi/components/components/LedgerAccount/LedgerAccountIndex'
3353
4776
  declare module '@layerfi/components/components/LedgerAccount/LedgerAccountRow' {
3354
4777
  import { LedgerAccountLineItem } from '@layerfi/components/types';
3355
4778
  import { View } from '@layerfi/components/types/general';
4779
+ import { LedgerAccountNodeType } from '@layerfi/components/types/chart_of_accounts';
3356
4780
  export interface LedgerAccountRowProps {
3357
4781
  row: LedgerAccountLineItem;
3358
4782
  index: number;
3359
4783
  view: View;
4784
+ nodeType?: LedgerAccountNodeType;
3360
4785
  }
3361
- export const LedgerAccountRow: ({ row, index, view, }: LedgerAccountRowProps) => import("react/jsx-runtime").JSX.Element;
4786
+ export const LedgerAccountRow: ({ row, index, view, nodeType, }: LedgerAccountRowProps) => import("react/jsx-runtime").JSX.Element;
3362
4787
 
3363
4788
  }
3364
4789
  declare module '@layerfi/components/components/LedgerAccount/index' {
@@ -3723,13 +5148,7 @@ declare module '@layerfi/components/components/Pagination/Pagination' {
3723
5148
  hasMore?: boolean;
3724
5149
  fetchMore?: () => void;
3725
5150
  }
3726
- /**
3727
- * Pagination wrapped into container with spacing and positioning.
3728
- * Use PaginationContent component, if you want to render plain pagination element
3729
- * without spacings and positioning.
3730
- */
3731
- export const Pagination: (props: PaginationProps) => import("react/jsx-runtime").JSX.Element;
3732
- export const PaginationContent: ({ onPageChange, totalCount, siblingCount, currentPage, pageSize, hasMore, fetchMore, }: PaginationProps) => import("react/jsx-runtime").JSX.Element | null;
5151
+ export const Pagination: ({ onPageChange, totalCount, siblingCount, currentPage, pageSize, hasMore, fetchMore, }: PaginationProps) => import("react/jsx-runtime").JSX.Element | null;
3733
5152
 
3734
5153
  }
3735
5154
  declare module '@layerfi/components/components/Pagination/index' {
@@ -3844,9 +5263,10 @@ declare module '@layerfi/components/components/ProfitAndLoss/ProfitAndLoss' {
3844
5263
  comparisonConfig?: ProfitAndLossCompareConfig;
3845
5264
  reportingBasis?: ReportingBasis;
3846
5265
  asContainer?: boolean;
5266
+ withReportsModeProvider?: boolean;
3847
5267
  };
3848
5268
  const ProfitAndLoss: {
3849
- ({ children, tagFilter, comparisonConfig, reportingBasis, asContainer, }: Props): import("react/jsx-runtime").JSX.Element;
5269
+ ({ withReportsModeProvider, ...restProps }: Props): import("react/jsx-runtime").JSX.Element;
3850
5270
  Chart: ({ forceRerenderOnDataChange, tagFilter, }: import("@layerfi/components/components/ProfitAndLossChart/ProfitAndLossChart").Props) => import("react/jsx-runtime").JSX.Element;
3851
5271
  Context: import("react").Context<{
3852
5272
  data: import("@layerfi/components/types").ProfitAndLoss | undefined;
@@ -3857,11 +5277,6 @@ declare module '@layerfi/components/components/ProfitAndLoss/ProfitAndLoss' {
3857
5277
  isLoading: boolean;
3858
5278
  isValidating: boolean;
3859
5279
  error: unknown;
3860
- dateRange: {
3861
- startDate: Date;
3862
- endDate: Date;
3863
- };
3864
- changeDateRange: ({ startDate: start, endDate: end }: import("@layerfi/components/types").DateRange) => void;
3865
5280
  refetch: () => void;
3866
5281
  sidebarScope: import("@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss").SidebarScope;
3867
5282
  setSidebarScope: import("react").Dispatch<import("react").SetStateAction<import("../../hooks/useProfitAndLoss/useProfitAndLoss").SidebarScope>>;
@@ -3869,6 +5284,10 @@ declare module '@layerfi/components/components/ProfitAndLoss/ProfitAndLoss' {
3869
5284
  filters: import("@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss").ProfitAndLossFilters;
3870
5285
  setFilterTypes: (scope: import("@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss").Scope, types: string[]) => void;
3871
5286
  tagFilter: import("@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss").PnlTagFilter | undefined;
5287
+ dateRange: {
5288
+ startDate: Date;
5289
+ endDate: Date;
5290
+ };
3872
5291
  }>;
3873
5292
  ComparisonContext: import("react").Context<{
3874
5293
  data: import("@layerfi/components/types/profit_and_loss").ProfitAndLossComparisonItem[] | undefined;
@@ -4246,14 +5665,13 @@ declare module '@layerfi/components/components/ProjectProfitability/ProjectSelec
4246
5665
 
4247
5666
  }
4248
5667
  declare module '@layerfi/components/components/SearchField/SearchField' {
4249
- type SearchFieldProps = {
5668
+ export type SearchFieldProps = {
4250
5669
  value: string;
4251
5670
  slot?: string;
4252
5671
  onChange: (value: string) => void;
4253
5672
  label: string;
4254
5673
  };
4255
5674
  export function SearchField({ slot, label, ...restProps }: SearchFieldProps): import("react/jsx-runtime").JSX.Element;
4256
- export {};
4257
5675
 
4258
5676
  }
4259
5677
  declare module '@layerfi/components/components/SelectVendor/SelectVendor' {
@@ -4322,6 +5740,7 @@ declare module '@layerfi/components/components/StatementOfCashFlow/StatementOfCa
4322
5740
  export type StatementOfCashFlowProps = TimeRangePickerConfig & {
4323
5741
  stringOverrides?: StatementOfCashFlowStringOverrides;
4324
5742
  };
5743
+ export const StandaloneStatementOfCashFlow: (props: StatementOfCashFlowProps) => import("react/jsx-runtime").JSX.Element;
4325
5744
  export const StatementOfCashFlow: (props: StatementOfCashFlowProps) => import("react/jsx-runtime").JSX.Element;
4326
5745
 
4327
5746
  }
@@ -4373,7 +5792,7 @@ declare module '@layerfi/components/components/StatementOfCashFlow/download/useC
4373
5792
 
4374
5793
  }
4375
5794
  declare module '@layerfi/components/components/StatementOfCashFlow/index' {
4376
- export { StatementOfCashFlow } from '@layerfi/components/components/StatementOfCashFlow/StatementOfCashFlow';
5795
+ export { StatementOfCashFlow, StandaloneStatementOfCashFlow } from '@layerfi/components/components/StatementOfCashFlow/StatementOfCashFlow';
4377
5796
 
4378
5797
  }
4379
5798
  declare module '@layerfi/components/components/StatementOfCashFlowTable/StatementOfCashFlowTable' {
@@ -4762,13 +6181,13 @@ declare module '@layerfi/components/components/Tooltip/useTooltip' {
4762
6181
  floating: HTMLElement | null;
4763
6182
  } & import("@floating-ui/react").ExtendedElements<import("@floating-ui/react").ReferenceType>;
4764
6183
  context: {
4765
- update: () => void;
6184
+ placement: import("@floating-ui/utils").Placement;
4766
6185
  x: number;
4767
6186
  y: number;
4768
- placement: import("@floating-ui/utils").Placement;
4769
6187
  strategy: import("@floating-ui/utils").Strategy;
4770
6188
  middlewareData: import("@floating-ui/core").MiddlewareData;
4771
6189
  isPositioned: boolean;
6190
+ update: () => void;
4772
6191
  floatingStyles: React.CSSProperties;
4773
6192
  open: boolean;
4774
6193
  onOpenChange: (open: boolean, event?: Event, reason?: import("@floating-ui/react").OpenChangeReason) => void;
@@ -4811,13 +6230,13 @@ declare module '@layerfi/components/components/Tooltip/useTooltip' {
4811
6230
  floating: HTMLElement | null;
4812
6231
  } & import("@floating-ui/react").ExtendedElements<import("@floating-ui/react").ReferenceType>;
4813
6232
  context: {
4814
- update: () => void;
6233
+ placement: import("@floating-ui/utils").Placement;
4815
6234
  x: number;
4816
6235
  y: number;
4817
- placement: import("@floating-ui/utils").Placement;
4818
6236
  strategy: import("@floating-ui/utils").Strategy;
4819
6237
  middlewareData: import("@floating-ui/core").MiddlewareData;
4820
6238
  isPositioned: boolean;
6239
+ update: () => void;
4821
6240
  floatingStyles: React.CSSProperties;
4822
6241
  open: boolean;
4823
6242
  onOpenChange: (open: boolean, event?: Event, reason?: import("@floating-ui/react").OpenChangeReason) => void;
@@ -5097,6 +6516,50 @@ declare module '@layerfi/components/components/ui/Checkbox/Checkbox' {
5097
6516
  export function CheckboxWithTooltip({ tooltip, ...props }: CheckboxWithTooltipProps): import("react/jsx-runtime").JSX.Element;
5098
6517
  export {};
5099
6518
 
6519
+ }
6520
+ declare module '@layerfi/components/components/ui/ComboBox/ComboBox' {
6521
+ import { type ReactNode } from 'react';
6522
+ import type { OneOf } from '@layerfi/components/types/utility/oneOf';
6523
+ type ComboBoxOption = {
6524
+ label: string;
6525
+ value: string;
6526
+ isDisabled?: boolean;
6527
+ };
6528
+ type OptionsOrGroups<T> = OneOf<[
6529
+ {
6530
+ options: ReadonlyArray<T>;
6531
+ },
6532
+ {
6533
+ groups: ReadonlyArray<{
6534
+ label: string;
6535
+ options: ReadonlyArray<T>;
6536
+ }>;
6537
+ }
6538
+ ]>;
6539
+ type AriaLabelProps = Pick<React.AriaAttributes, 'aria-label' | 'aria-labelledby' | 'aria-describedby'>;
6540
+ type ComboBoxProps<T extends ComboBoxOption> = {
6541
+ className?: string;
6542
+ selectedValue: T | null;
6543
+ onSelectedValueChange: (value: T | null) => void;
6544
+ onInputValueChange?: (value: string) => void;
6545
+ placeholder?: string;
6546
+ slots?: {
6547
+ EmptyMessage?: ReactNode;
6548
+ ErrorMessage?: ReactNode;
6549
+ SelectedValue?: ReactNode;
6550
+ };
6551
+ inputId?: string;
6552
+ isDisabled?: boolean;
6553
+ isError?: boolean;
6554
+ isLoading?: boolean;
6555
+ isMutating?: boolean;
6556
+ isSearchable?: boolean;
6557
+ isClearable?: boolean;
6558
+ displayDisabledAsSelected?: boolean;
6559
+ } & OptionsOrGroups<T> & AriaLabelProps;
6560
+ export function ComboBox<T extends ComboBoxOption>({ className, selectedValue, onSelectedValueChange, options, groups, onInputValueChange, placeholder, slots, inputId, isDisabled, isError, isLoading, isMutating, isSearchable, isClearable, displayDisabledAsSelected, ...ariaProps }: ComboBoxProps<T>): import("react/jsx-runtime").JSX.Element;
6561
+ export {};
6562
+
5100
6563
  }
5101
6564
  declare module '@layerfi/components/components/ui/DropdownMenu/DropdownMenu' {
5102
6565
  import React, { PropsWithChildren } from 'react';
@@ -5125,6 +6588,22 @@ declare module '@layerfi/components/components/ui/DropdownMenu/DropdownMenu' {
5125
6588
  export const DropdownMenu: ({ children, ariaLabel, slots, slotProps }: DropdownMenuProps) => import("react/jsx-runtime").JSX.Element;
5126
6589
  export {};
5127
6590
 
6591
+ }
6592
+ declare module '@layerfi/components/components/ui/Form/Form' {
6593
+ import { type FormProps as ReactAriaFormProps, type TextFieldProps as ReactAriaTextFieldProps, type FieldErrorProps as ReactAriaFieldErrorProps } from 'react-aria-components';
6594
+ export const Form: import("react").ForwardRefExoticComponent<ReactAriaFormProps & import("react").RefAttributes<HTMLFormElement>>;
6595
+ export type TextFieldProps = ReactAriaTextFieldProps & {
6596
+ inline?: boolean;
6597
+ textarea?: boolean;
6598
+ };
6599
+ export const TextField: import("react").ForwardRefExoticComponent<ReactAriaTextFieldProps & {
6600
+ inline?: boolean;
6601
+ textarea?: boolean;
6602
+ } & import("react").RefAttributes<HTMLDivElement>>;
6603
+ type FieldErrorProps = Omit<ReactAriaFieldErrorProps, 'className'>;
6604
+ export const FieldError: import("react").ForwardRefExoticComponent<FieldErrorProps & import("react").RefAttributes<HTMLElement>>;
6605
+ export {};
6606
+
5128
6607
  }
5129
6608
  declare module '@layerfi/components/components/ui/Input/Input' {
5130
6609
  import { type ComponentProps } from 'react';
@@ -5143,6 +6622,16 @@ declare module '@layerfi/components/components/ui/Input/InputGroup' {
5143
6622
  actionCount?: 1 | 2;
5144
6623
  } & import("react").RefAttributes<HTMLDivElement>>;
5145
6624
 
6625
+ }
6626
+ declare module '@layerfi/components/components/ui/Input/TextArea' {
6627
+ import { type ComponentProps } from 'react';
6628
+ import { TextArea as ReactAriaTextArea } from 'react-aria-components';
6629
+ type TextAreaProps = Omit<ComponentProps<typeof ReactAriaTextArea>, 'className'> & {
6630
+ resize?: 'both' | 'vertical' | 'horizontal' | 'none';
6631
+ };
6632
+ export const TextArea: import("react").ForwardRefExoticComponent<Omit<TextAreaProps, "ref"> & import("react").RefAttributes<HTMLTextAreaElement>>;
6633
+ export {};
6634
+
5146
6635
  }
5147
6636
  declare module '@layerfi/components/components/ui/ListBox/ListBox' {
5148
6637
  import { type ForwardedRef, type Ref } from 'react';
@@ -5168,7 +6657,7 @@ declare module '@layerfi/components/components/ui/ListBox/ListBox' {
5168
6657
  pbs?: import("@layerfi/components/components/ui/sharedUITypes").Spacing;
5169
6658
  size?: "xs" | "sm" | "md" | "lg";
5170
6659
  status?: "error";
5171
- variant?: "subtle";
6660
+ variant?: "placeholder" | "subtle";
5172
6661
  weight?: "normal" | "bold";
5173
6662
  } & {
5174
6663
  children?: import("react").ReactNode | undefined;
@@ -5247,7 +6736,7 @@ declare module '@layerfi/components/components/ui/Modal/ModalSlots' {
5247
6736
  pbs?: import("@layerfi/components/components/ui/sharedUITypes").Spacing;
5248
6737
  size?: "xs" | "sm" | "md" | "lg";
5249
6738
  status?: "error";
5250
- variant?: "subtle";
6739
+ variant?: "placeholder" | "subtle";
5251
6740
  weight?: "normal" | "bold";
5252
6741
  } & {
5253
6742
  children?: import("react").ReactNode | undefined;
@@ -5272,6 +6761,10 @@ declare module '@layerfi/components/components/ui/Popover/Popover' {
5272
6761
  export const Popover: import("react").ForwardRefExoticComponent<PopoverProps & import("react").RefAttributes<HTMLElement>>;
5273
6762
  export {};
5274
6763
 
6764
+ }
6765
+ declare module '@layerfi/components/components/ui/Portal/Portal' {
6766
+ export const PORTAL_CLASS_NAME = "Layer__Portal";
6767
+
5275
6768
  }
5276
6769
  declare module '@layerfi/components/components/ui/SearchField/MinimalSearchField' {
5277
6770
  import { type SearchFieldProps as ReactAriaSearchFieldProps } from 'react-aria-components';
@@ -5296,7 +6789,7 @@ declare module '@layerfi/components/components/ui/Stack/Stack' {
5296
6789
  import { type PropsWithChildren } from 'react';
5297
6790
  import type { Spacing } from '@layerfi/components/components/ui/sharedUITypes';
5298
6791
  export type StackProps = PropsWithChildren<{
5299
- align?: 'start' | 'center';
6792
+ align?: 'start' | 'center' | 'baseline' | 'end';
5300
6793
  gap?: Spacing;
5301
6794
  justify?: 'start' | 'center' | 'end' | 'space-between';
5302
6795
  overflow?: 'scroll' | 'hidden' | 'auto' | 'clip' | 'visible';
@@ -5311,7 +6804,7 @@ declare module '@layerfi/components/components/ui/Stack/Stack' {
5311
6804
  className?: string;
5312
6805
  }>;
5313
6806
  export const VStack: import("react").ForwardRefExoticComponent<{
5314
- align?: "start" | "center";
6807
+ align?: "start" | "center" | "baseline" | "end";
5315
6808
  gap?: Spacing;
5316
6809
  justify?: "start" | "center" | "end" | "space-between";
5317
6810
  overflow?: "scroll" | "hidden" | "auto" | "clip" | "visible";
@@ -5328,7 +6821,7 @@ declare module '@layerfi/components/components/ui/Stack/Stack' {
5328
6821
  children?: import("react").ReactNode | undefined;
5329
6822
  } & import("react").RefAttributes<HTMLDivElement>>;
5330
6823
  export const HStack: import("react").ForwardRefExoticComponent<{
5331
- align?: "start" | "center";
6824
+ align?: "start" | "center" | "baseline" | "end";
5332
6825
  gap?: Spacing;
5333
6826
  justify?: "start" | "center" | "end" | "space-between";
5334
6827
  overflow?: "scroll" | "hidden" | "auto" | "clip" | "visible";
@@ -5346,6 +6839,32 @@ declare module '@layerfi/components/components/ui/Stack/Stack' {
5346
6839
  } & import("react").RefAttributes<HTMLDivElement>>;
5347
6840
  export const Spacer: () => import("react/jsx-runtime").JSX.Element;
5348
6841
 
6842
+ }
6843
+ declare module '@layerfi/components/components/ui/Table/Table' {
6844
+ import { type CellProps, type ColumnProps, type RowProps, type TableBodyProps, type TableHeaderProps, type TableProps } from 'react-aria-components';
6845
+ const Table: import("react").ForwardRefExoticComponent<TableProps & import("react").RefAttributes<HTMLTableElement>>;
6846
+ const TableHeader: (<T>(props: TableHeaderProps<T> & {
6847
+ ref?: React.Ref<HTMLTableSectionElement>;
6848
+ }) => React.ReactElement) & {
6849
+ displayName?: string;
6850
+ };
6851
+ const TableBody: (<T>(props: TableBodyProps<T> & {
6852
+ ref?: React.Ref<HTMLTableSectionElement>;
6853
+ }) => React.ReactElement) & {
6854
+ displayName?: string;
6855
+ };
6856
+ const Row: (<T>(props: RowProps<T> & {
6857
+ ref?: React.Ref<HTMLTableRowElement>;
6858
+ }) => React.ReactElement) & {
6859
+ displayName?: string;
6860
+ };
6861
+ type ColumnStyleProps = {
6862
+ textAlign?: 'left' | 'center' | 'right';
6863
+ };
6864
+ const Column: import("react").ForwardRefExoticComponent<ColumnProps & ColumnStyleProps & import("react").RefAttributes<HTMLTableColElement>>;
6865
+ const Cell: import("react").ForwardRefExoticComponent<CellProps & import("react").RefAttributes<HTMLTableCellElement>>;
6866
+ export { Table, TableBody, TableHeader, Cell, Column, Row, };
6867
+
5349
6868
  }
5350
6869
  declare module '@layerfi/components/components/ui/TagGroup/TagGroup' {
5351
6870
  import { TagGroup as ReactAriaTagGroup, TagList as ReactAriaTagList, Tag as ReactAriaTag } from 'react-aria-components';
@@ -5398,7 +6917,7 @@ declare module '@layerfi/components/components/ui/Typography/Text' {
5398
6917
  pbs?: Spacing;
5399
6918
  size?: 'xs' | 'sm' | 'md' | 'lg';
5400
6919
  status?: 'error';
5401
- variant?: 'subtle';
6920
+ variant?: 'placeholder' | 'subtle';
5402
6921
  weight?: 'normal' | 'bold';
5403
6922
  };
5404
6923
  type TextRenderingProps = {
@@ -5864,8 +7383,8 @@ declare module '@layerfi/components/contexts/LedgerAccountsContext/LedgerAccount
5864
7383
  error?: unknown;
5865
7384
  errorEntry?: unknown;
5866
7385
  refetch: () => void;
5867
- accountId?: string;
5868
- setAccountId: (id?: string) => void;
7386
+ selectedAccount: import("@layerfi/components/types/chart_of_accounts").LedgerAccountBalanceWithNodeType | undefined;
7387
+ setSelectedAccount: (account: import("@layerfi/components/types/chart_of_accounts").LedgerAccountBalanceWithNodeType | undefined) => void;
5869
7388
  selectedEntryId?: string;
5870
7389
  setSelectedEntryId: (id?: string) => void;
5871
7390
  closeSelectedEntry: () => void;
@@ -6109,10 +7628,11 @@ declare module '@layerfi/components/features/customerVendor/components/CustomerV
6109
7628
  type CustomerVendorSelectorProps = {
6110
7629
  selectedCustomerVendor: CustomerVendor | null;
6111
7630
  onSelectedCustomerVendorChange: (customerVendor: CustomerVendor | null) => void;
7631
+ placeholder: string;
6112
7632
  isMutating?: boolean;
6113
7633
  isReadOnly?: boolean;
6114
7634
  };
6115
- export function CustomerVendorSelector({ selectedCustomerVendor, onSelectedCustomerVendorChange, isMutating, isReadOnly, }: CustomerVendorSelectorProps): import("react/jsx-runtime").JSX.Element | null;
7635
+ export function CustomerVendorSelector({ selectedCustomerVendor, onSelectedCustomerVendorChange, placeholder, isMutating, isReadOnly, }: CustomerVendorSelectorProps): import("react/jsx-runtime").JSX.Element | null;
6116
7636
  export {};
6117
7637
 
6118
7638
  }
@@ -6128,6 +7648,7 @@ declare module '@layerfi/components/features/customerVendor/customerVendorSchema
6128
7648
  email: Schema.NullOr<typeof Schema.String>;
6129
7649
  mobilePhone: Schema.PropertySignature<":", string | null, "mobile_phone", ":", string | null, false, never>;
6130
7650
  officePhone: Schema.PropertySignature<":", string | null, "office_phone", ":", string | null, false, never>;
7651
+ addressString: Schema.PropertySignature<":", string | null, "address_string", ":", string | null, false, never>;
6131
7652
  status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<"ACTIVE" | "ARCHIVED", "ACTIVE" | "ARCHIVED", never>>;
6132
7653
  memo: Schema.NullOr<typeof Schema.String>;
6133
7654
  _local: Schema.optional<Schema.Struct<{
@@ -6156,6 +7677,7 @@ declare module '@layerfi/components/features/customerVendor/customerVendorSchema
6156
7677
  readonly email: string | null;
6157
7678
  readonly mobile_phone: string | null;
6158
7679
  readonly office_phone: string | null;
7680
+ readonly address_string: string | null;
6159
7681
  readonly status: string;
6160
7682
  readonly memo: string | null;
6161
7683
  readonly customerVendorType: "CUSTOMER";
@@ -6184,6 +7706,7 @@ declare module '@layerfi/components/features/customerVendor/customerVendorSchema
6184
7706
  readonly email: string | null;
6185
7707
  readonly mobilePhone: string | null;
6186
7708
  readonly officePhone: string | null;
7709
+ readonly addressString: string | null;
6187
7710
  readonly status: "ACTIVE" | "ARCHIVED";
6188
7711
  readonly memo: string | null;
6189
7712
  readonly _local?: {
@@ -6219,6 +7742,7 @@ declare module '@layerfi/components/features/customers/api/useListCustomers' {
6219
7742
  email: Schema.NullOr<typeof Schema.String>;
6220
7743
  mobilePhone: Schema.PropertySignature<":", string | null, "mobile_phone", ":", string | null, false, never>;
6221
7744
  officePhone: Schema.PropertySignature<":", string | null, "office_phone", ":", string | null, false, never>;
7745
+ addressString: Schema.PropertySignature<":", string | null, "address_string", ":", string | null, false, never>;
6222
7746
  status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<"ACTIVE" | "ARCHIVED", "ACTIVE" | "ARCHIVED", never>>;
6223
7747
  memo: Schema.NullOr<typeof Schema.String>;
6224
7748
  _local: Schema.optional<Schema.Struct<{
@@ -6246,6 +7770,7 @@ declare module '@layerfi/components/features/customers/api/useListCustomers' {
6246
7770
  readonly email: string | null;
6247
7771
  readonly mobilePhone: string | null;
6248
7772
  readonly officePhone: string | null;
7773
+ readonly addressString: string | null;
6249
7774
  readonly status: "ACTIVE" | "ARCHIVED";
6250
7775
  readonly memo: string | null;
6251
7776
  readonly _local?: {
@@ -6267,8 +7792,22 @@ declare module '@layerfi/components/features/customers/api/useListCustomers' {
6267
7792
  query?: string;
6268
7793
  isEnabled?: boolean;
6269
7794
  };
6270
- export function useListCustomers({ query, isEnabled }?: UseListCustomersParams): ListCustomersSWRResponse;
6271
- export function usePreloadCustomers(parameters?: UseListCustomersParams): void;
7795
+ export function useListCustomers({ query, isEnabled }?: UseListCustomersParams): ListCustomersSWRResponse;
7796
+ export function usePreloadCustomers(parameters?: UseListCustomersParams): void;
7797
+ export {};
7798
+
7799
+ }
7800
+ declare module '@layerfi/components/features/customers/components/CustomerSelector' {
7801
+ import { Customer } from '@layerfi/components/features/customers/customersSchemas';
7802
+ type CustomerSelectorProps = {
7803
+ selectedCustomer: Customer | null;
7804
+ onSelectedCustomerChange: (customer: Customer | null) => void;
7805
+ placeholder?: string;
7806
+ isReadOnly?: boolean;
7807
+ inline?: boolean;
7808
+ className?: string;
7809
+ };
7810
+ export function CustomerSelector({ selectedCustomer, onSelectedCustomerChange, placeholder, isReadOnly, inline, className, }: CustomerSelectorProps): import("react/jsx-runtime").JSX.Element | null;
6272
7811
  export {};
6273
7812
 
6274
7813
  }
@@ -6282,12 +7821,14 @@ declare module '@layerfi/components/features/customers/customersSchemas' {
6282
7821
  email: Schema.NullOr<typeof Schema.String>;
6283
7822
  mobilePhone: Schema.PropertySignature<":", string | null, "mobile_phone", ":", string | null, false, never>;
6284
7823
  officePhone: Schema.PropertySignature<":", string | null, "office_phone", ":", string | null, false, never>;
7824
+ addressString: Schema.PropertySignature<":", string | null, "address_string", ":", string | null, false, never>;
6285
7825
  status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<"ACTIVE" | "ARCHIVED", "ACTIVE" | "ARCHIVED", never>>;
6286
7826
  memo: Schema.NullOr<typeof Schema.String>;
6287
7827
  _local: Schema.optional<Schema.Struct<{
6288
7828
  isOptimistic: typeof Schema.Boolean;
6289
7829
  }>>;
6290
7830
  }>;
7831
+ export type Customer = typeof CustomerSchema.Type;
6291
7832
  export const encodeCustomer: (a: {
6292
7833
  readonly id: string;
6293
7834
  readonly externalId: string | null;
@@ -6296,6 +7837,7 @@ declare module '@layerfi/components/features/customers/customersSchemas' {
6296
7837
  readonly email: string | null;
6297
7838
  readonly mobilePhone: string | null;
6298
7839
  readonly officePhone: string | null;
7840
+ readonly addressString: string | null;
6299
7841
  readonly status: "ACTIVE" | "ARCHIVED";
6300
7842
  readonly memo: string | null;
6301
7843
  readonly _local?: {
@@ -6309,6 +7851,7 @@ declare module '@layerfi/components/features/customers/customersSchemas' {
6309
7851
  readonly email: string | null;
6310
7852
  readonly mobile_phone: string | null;
6311
7853
  readonly office_phone: string | null;
7854
+ readonly address_string: string | null;
6312
7855
  readonly status: string;
6313
7856
  readonly memo: string | null;
6314
7857
  readonly _local?: {
@@ -6316,6 +7859,792 @@ declare module '@layerfi/components/features/customers/customersSchemas' {
6316
7859
  } | undefined;
6317
7860
  };
6318
7861
 
7862
+ }
7863
+ declare module '@layerfi/components/features/forms/components/BaseFormTextField' {
7864
+ import type { PropsWithChildren } from 'react';
7865
+ import { type TextFieldProps } from '@layerfi/components/components/ui/Form/Form';
7866
+ export interface BaseFormTextFieldProps {
7867
+ label: string;
7868
+ className?: string;
7869
+ inline?: boolean;
7870
+ showLabel?: boolean;
7871
+ showFieldError?: boolean;
7872
+ inputMode?: TextFieldProps['inputMode'];
7873
+ isTextArea?: boolean;
7874
+ }
7875
+ export function BaseFormTextField<TData>({ label, className, inline, showLabel, showFieldError, isTextArea, children, }: PropsWithChildren<BaseFormTextFieldProps>): import("react/jsx-runtime").JSX.Element;
7876
+
7877
+ }
7878
+ declare module '@layerfi/components/features/forms/components/FormBigDecimalField' {
7879
+ import { type BaseFormTextFieldProps } from '@layerfi/components/features/forms/components/BaseFormTextField';
7880
+ type FormBigDecimalFieldProps = {
7881
+ slotProps: {
7882
+ BaseFormTextField: Omit<BaseFormTextFieldProps, 'inputMode'>;
7883
+ };
7884
+ maxInputLength?: number;
7885
+ allowNegative?: boolean;
7886
+ };
7887
+ export function FormBigDecimalField({ slotProps, maxInputLength, allowNegative, }: FormBigDecimalFieldProps): import("react/jsx-runtime").JSX.Element;
7888
+ export {};
7889
+
7890
+ }
7891
+ declare module '@layerfi/components/features/forms/components/FormCurrencyField' {
7892
+ import { type BaseFormTextFieldProps } from '@layerfi/components/features/forms/components/BaseFormTextField';
7893
+ type FormCurrencyFieldProps = {
7894
+ slotProps: {
7895
+ BaseFormTextField: Omit<BaseFormTextFieldProps, 'inputMode'>;
7896
+ };
7897
+ };
7898
+ export function FormCurrencyField({ slotProps }: FormCurrencyFieldProps): import("react/jsx-runtime").JSX.Element;
7899
+ export {};
7900
+
7901
+ }
7902
+ declare module '@layerfi/components/features/forms/components/FormTextAreaField' {
7903
+ import { type BaseFormTextFieldProps } from '@layerfi/components/features/forms/components/BaseFormTextField';
7904
+ type FormTextAreaFieldProps = {
7905
+ slotProps: {
7906
+ BaseFormTextField: BaseFormTextFieldProps;
7907
+ };
7908
+ };
7909
+ export function FormTextAreaField({ slotProps }: FormTextAreaFieldProps): import("react/jsx-runtime").JSX.Element;
7910
+ export {};
7911
+
7912
+ }
7913
+ declare module '@layerfi/components/features/forms/components/FormTextField' {
7914
+ import { type BaseFormTextFieldProps } from '@layerfi/components/features/forms/components/BaseFormTextField';
7915
+ type FormTextFieldProps = {
7916
+ slotProps: {
7917
+ BaseFormTextField: BaseFormTextFieldProps;
7918
+ };
7919
+ };
7920
+ export function FormTextField({ slotProps }: FormTextFieldProps): import("react/jsx-runtime").JSX.Element;
7921
+ export {};
7922
+
7923
+ }
7924
+ declare module '@layerfi/components/features/forms/hooks/useForm' {
7925
+ import { BaseFormTextField } from '@layerfi/components/features/forms/components/BaseFormTextField';
7926
+ import { FormBigDecimalField } from '@layerfi/components/features/forms/components/FormBigDecimalField';
7927
+ import { FormCurrencyField } from '@layerfi/components/features/forms/components/FormCurrencyField';
7928
+ import { FormTextAreaField } from '@layerfi/components/features/forms/components/FormTextAreaField';
7929
+ import { FormTextField } from '@layerfi/components/features/forms/components/FormTextField';
7930
+ export const fieldContext: import("react").Context<import("@tanstack/react-form").AnyFieldApi>, useFieldContext: <TData>() => import("@tanstack/react-form").FieldApi<any, string, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>, formContext: import("react").Context<import("@tanstack/react-form").AnyFormApi>, useFormContext: () => import("@tanstack/react-form").ReactFormExtendedApi<Record<string, never>, any, any, any, any, any, any, any, any, any>;
7931
+ export const useAppForm: <TFormData, TOnMount extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnChange extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnChangeAsync extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TOnBlur extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnBlurAsync extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TOnSubmit extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnSubmitAsync extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TOnServer extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TSubmitMeta>(props: import("@tanstack/react-form").FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnServer, TSubmitMeta>) => import("@tanstack/react-form").FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnServer, TSubmitMeta> & import("@tanstack/react-form").ReactFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnServer, TSubmitMeta> & {
7932
+ AppField: import("@tanstack/react-form").FieldComponent<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnServer, TSubmitMeta, NoInfer<{
7933
+ readonly BaseFormTextField: typeof BaseFormTextField;
7934
+ readonly FormBigDecimalField: typeof FormBigDecimalField;
7935
+ readonly FormCurrencyField: typeof FormCurrencyField;
7936
+ readonly FormTextAreaField: typeof FormTextAreaField;
7937
+ readonly FormTextField: typeof FormTextField;
7938
+ }>>;
7939
+ AppForm: import("react").ComponentType<import("react").PropsWithChildren>;
7940
+ }, withForm: <TFormData, TOnMount extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnChange extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnChangeAsync extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TOnBlur extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnBlurAsync extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TOnSubmit extends import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined, TOnSubmitAsync extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TOnServer extends import("@tanstack/react-form").FormAsyncValidateOrFn<TFormData> | undefined, TSubmitMeta, TRenderProps extends Record<string, unknown> = {}>({ render, props, }: import("@tanstack/react-form").WithFormProps<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnServer, TSubmitMeta, {
7941
+ readonly BaseFormTextField: typeof BaseFormTextField;
7942
+ readonly FormBigDecimalField: typeof FormBigDecimalField;
7943
+ readonly FormCurrencyField: typeof FormCurrencyField;
7944
+ readonly FormTextAreaField: typeof FormTextAreaField;
7945
+ readonly FormTextField: typeof FormTextField;
7946
+ }, {}, TRenderProps>) => (props: import("react").PropsWithChildren<NoInfer<[unknown] extends [TRenderProps] ? any : TRenderProps> & {
7947
+ form: import("@tanstack/react-form").FormApi<[unknown] extends [TFormData] ? any : TFormData, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnMount] ? [TOnMount] extends [TOnMount & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnMount : TOnMount, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnChange] ? [TOnChange] extends [TOnChange & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChange : TOnChange, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnChangeAsync] ? [TOnChangeAsync] extends [TOnChangeAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChangeAsync : TOnChangeAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnBlur] ? [TOnBlur] extends [TOnBlur & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlur : TOnBlur, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnBlurAsync] ? [TOnBlurAsync] extends [TOnBlurAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlurAsync : TOnBlurAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmit] ? [TOnSubmit] extends [TOnSubmit & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmit : TOnSubmit, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmitAsync] ? [TOnSubmitAsync] extends [TOnSubmitAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmitAsync : TOnSubmitAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnServer] ? [TOnServer] extends [TOnServer & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnServer : TOnServer, [unknown] extends [TSubmitMeta] ? any : TSubmitMeta> & import("@tanstack/react-form").ReactFormApi<[unknown] extends [TFormData] ? any : TFormData, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnMount] ? [TOnMount] extends [TOnMount & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnMount : TOnMount, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnChange] ? [TOnChange] extends [TOnChange & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChange : TOnChange, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnChangeAsync] ? [TOnChangeAsync] extends [TOnChangeAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChangeAsync : TOnChangeAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnBlur] ? [TOnBlur] extends [TOnBlur & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlur : TOnBlur, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnBlurAsync] ? [TOnBlurAsync] extends [TOnBlurAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlurAsync : TOnBlurAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmit] ? [TOnSubmit] extends [TOnSubmit & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmit : TOnSubmit, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmitAsync] ? [TOnSubmitAsync] extends [TOnSubmitAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmitAsync : TOnSubmitAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnServer] ? [TOnServer] extends [TOnServer & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnServer : TOnServer, [unknown] extends [TSubmitMeta] ? any : TSubmitMeta> & {
7948
+ AppField: import("@tanstack/react-form").FieldComponent<[unknown] extends [TFormData] ? any : TFormData, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnMount] ? [TOnMount] extends [TOnMount & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnMount : TOnMount, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnChange] ? [TOnChange] extends [TOnChange & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChange : TOnChange, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnChangeAsync] ? [TOnChangeAsync] extends [TOnChangeAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChangeAsync : TOnChangeAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnBlur] ? [TOnBlur] extends [TOnBlur & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlur : TOnBlur, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnBlurAsync] ? [TOnBlurAsync] extends [TOnBlurAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlurAsync : TOnBlurAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmit] ? [TOnSubmit] extends [TOnSubmit & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmit : TOnSubmit, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmitAsync] ? [TOnSubmitAsync] extends [TOnSubmitAsync & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmitAsync : TOnSubmitAsync, [import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined] extends [TOnServer] ? [TOnServer] extends [TOnServer & (import("@tanstack/react-form").FormValidateOrFn<TFormData> | undefined)] ? any : TOnServer : TOnServer, [unknown] extends [TSubmitMeta] ? any : TSubmitMeta, NoInfer<{
7949
+ readonly BaseFormTextField: typeof BaseFormTextField;
7950
+ readonly FormBigDecimalField: typeof FormBigDecimalField;
7951
+ readonly FormCurrencyField: typeof FormCurrencyField;
7952
+ readonly FormTextAreaField: typeof FormTextAreaField;
7953
+ readonly FormTextField: typeof FormTextField;
7954
+ }>>;
7955
+ AppForm: import("react").ComponentType<import("react").PropsWithChildren>;
7956
+ };
7957
+ }>) => import("react").JSX.Element;
7958
+
7959
+ }
7960
+ declare module '@layerfi/components/features/invoices/api/useListInvoices' {
7961
+ import { type SWRInfiniteResponse } from 'swr/infinite';
7962
+ import { Schema } from 'effect';
7963
+ import { type PaginationParams, type SortParams } from '@layerfi/components/types/utility/pagination';
7964
+ import { InvoiceStatus, type Invoice } from '@layerfi/components/features/invoices/invoiceSchemas';
7965
+ export const LIST_INVOICES_TAG_KEY = "#list-invoices";
7966
+ type ListInvoicesBaseParams = {
7967
+ businessId: string;
7968
+ };
7969
+ type ListInvoicesFilterParams = {
7970
+ status?: ReadonlyArray<InvoiceStatus>;
7971
+ dueAtStart?: Date;
7972
+ dueAtEnd?: Date;
7973
+ };
7974
+ enum SortBy {
7975
+ SentAt = "sent_at"
7976
+ }
7977
+ type ListInvoicesOptions = ListInvoicesFilterParams & PaginationParams & SortParams<SortBy>;
7978
+ type ListInvoicesParams = ListInvoicesBaseParams & ListInvoicesOptions;
7979
+ const ListInvoicesReturnSchema: Schema.Struct<{
7980
+ data: Schema.Array$<Schema.Struct<{
7981
+ id: typeof Schema.UUID;
7982
+ businessId: Schema.PropertySignature<":", string, "business_id", ":", string, false, never>;
7983
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
7984
+ status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<InvoiceStatus, InvoiceStatus, never>>;
7985
+ sentAt: Schema.PropertySignature<":", Date | null, "sent_at", ":", string | null, false, never>;
7986
+ dueAt: Schema.PropertySignature<":", Date | null, "due_at", ":", string | null, false, never>;
7987
+ paidAt: Schema.PropertySignature<":", Date | null, "paid_at", ":", string | null, false, never>;
7988
+ voidedAt: Schema.PropertySignature<":", Date | null, "voided_at", ":", string | null, false, never>;
7989
+ invoiceNumber: Schema.PropertySignature<":", string | null, "invoice_number", ":", string | null, false, never>;
7990
+ recipientName: Schema.PropertySignature<":", string | null, "recipient_name", ":", string | null, false, never>;
7991
+ customer: Schema.NullOr<Schema.Struct<{
7992
+ id: typeof Schema.UUID;
7993
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
7994
+ individualName: Schema.PropertySignature<":", string | null, "individual_name", ":", string | null, false, never>;
7995
+ companyName: Schema.PropertySignature<":", string | null, "company_name", ":", string | null, false, never>;
7996
+ email: Schema.NullOr<typeof Schema.String>;
7997
+ mobilePhone: Schema.PropertySignature<":", string | null, "mobile_phone", ":", string | null, false, never>;
7998
+ officePhone: Schema.PropertySignature<":", string | null, "office_phone", ":", string | null, false, never>;
7999
+ addressString: Schema.PropertySignature<":", string | null, "address_string", ":", string | null, false, never>;
8000
+ status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<"ACTIVE" | "ARCHIVED", "ACTIVE" | "ARCHIVED", never>>;
8001
+ memo: Schema.NullOr<typeof Schema.String>;
8002
+ _local: Schema.optional<Schema.Struct<{
8003
+ isOptimistic: typeof Schema.Boolean;
8004
+ }>>;
8005
+ }>>;
8006
+ lineItems: Schema.PropertySignature<":", readonly {
8007
+ readonly id: string;
8008
+ readonly externalId: string | null;
8009
+ readonly memo: string | null;
8010
+ readonly description: string | null;
8011
+ readonly product: string | null;
8012
+ readonly subtotal: number;
8013
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8014
+ readonly invoiceId: string;
8015
+ readonly unitPrice: number;
8016
+ readonly discountAmount: number;
8017
+ readonly salesTaxTotal: number;
8018
+ readonly totalAmount: number;
8019
+ }[], "line_items", ":", readonly {
8020
+ readonly id: string;
8021
+ readonly external_id: string | null;
8022
+ readonly memo: string | null;
8023
+ readonly description: string | null;
8024
+ readonly product: string | null;
8025
+ readonly subtotal: number;
8026
+ readonly quantity: string;
8027
+ readonly invoice_id: string;
8028
+ readonly unit_price: number;
8029
+ readonly discount_amount: number;
8030
+ readonly sales_taxes_total: number;
8031
+ readonly total_amount: number;
8032
+ }[], false, never>;
8033
+ subtotal: typeof Schema.Number;
8034
+ additionalDiscount: Schema.PropertySignature<":", number, "additional_discount", ":", number, false, never>;
8035
+ additionalSalesTaxesTotal: Schema.PropertySignature<":", number, "additional_sales_taxes_total", ":", number, false, never>;
8036
+ totalAmount: Schema.PropertySignature<":", number, "total_amount", ":", number, false, never>;
8037
+ outstandingBalance: Schema.PropertySignature<":", number, "outstanding_balance", ":", number, false, never>;
8038
+ importedAt: Schema.PropertySignature<":", Date, "imported_at", ":", string, false, never>;
8039
+ updatedAt: Schema.PropertySignature<":", Date | null, "updated_at", ":", string | null, false, never>;
8040
+ memo: Schema.NullOr<typeof Schema.String>;
8041
+ }>>;
8042
+ meta: Schema.Struct<{
8043
+ pagination: Schema.Struct<{
8044
+ cursor: Schema.NullOr<typeof Schema.String>;
8045
+ hasMore: Schema.PropertySignature<":", boolean, "has_more", ":", boolean, false, never>;
8046
+ totalCount: Schema.PropertySignature<":", number | undefined, "total_count", ":", number | undefined, false, never>;
8047
+ }>;
8048
+ }>;
8049
+ }>;
8050
+ type ListInvoicesReturn = typeof ListInvoicesReturnSchema.Type;
8051
+ class ListInvoicesSWRResponse {
8052
+ private swrResponse;
8053
+ constructor(swrResponse: SWRInfiniteResponse<ListInvoicesReturn>);
8054
+ get data(): {
8055
+ readonly data: readonly {
8056
+ readonly id: string;
8057
+ readonly externalId: string | null;
8058
+ readonly status: InvoiceStatus;
8059
+ readonly memo: string | null;
8060
+ readonly customer: {
8061
+ readonly id: string;
8062
+ readonly externalId: string | null;
8063
+ readonly individualName: string | null;
8064
+ readonly companyName: string | null;
8065
+ readonly email: string | null;
8066
+ readonly mobilePhone: string | null;
8067
+ readonly officePhone: string | null;
8068
+ readonly addressString: string | null;
8069
+ readonly status: "ACTIVE" | "ARCHIVED";
8070
+ readonly memo: string | null;
8071
+ readonly _local?: {
8072
+ readonly isOptimistic: boolean;
8073
+ } | undefined;
8074
+ } | null;
8075
+ readonly businessId: string;
8076
+ readonly updatedAt: Date | null;
8077
+ readonly subtotal: number;
8078
+ readonly paidAt: Date | null;
8079
+ readonly totalAmount: number;
8080
+ readonly sentAt: Date | null;
8081
+ readonly dueAt: Date | null;
8082
+ readonly voidedAt: Date | null;
8083
+ readonly invoiceNumber: string | null;
8084
+ readonly recipientName: string | null;
8085
+ readonly lineItems: readonly {
8086
+ readonly id: string;
8087
+ readonly externalId: string | null;
8088
+ readonly memo: string | null;
8089
+ readonly description: string | null;
8090
+ readonly product: string | null;
8091
+ readonly subtotal: number;
8092
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8093
+ readonly invoiceId: string;
8094
+ readonly unitPrice: number;
8095
+ readonly discountAmount: number;
8096
+ readonly salesTaxTotal: number;
8097
+ readonly totalAmount: number;
8098
+ }[];
8099
+ readonly additionalDiscount: number;
8100
+ readonly additionalSalesTaxesTotal: number;
8101
+ readonly outstandingBalance: number;
8102
+ readonly importedAt: Date;
8103
+ }[];
8104
+ readonly meta: {
8105
+ readonly pagination: {
8106
+ readonly cursor: string | null;
8107
+ readonly totalCount: number | undefined;
8108
+ readonly hasMore: boolean;
8109
+ };
8110
+ };
8111
+ }[] | undefined;
8112
+ get size(): number;
8113
+ get setSize(): (size: number | ((_size: number) => number)) => Promise<{
8114
+ readonly data: readonly {
8115
+ readonly id: string;
8116
+ readonly externalId: string | null;
8117
+ readonly status: InvoiceStatus;
8118
+ readonly memo: string | null;
8119
+ readonly customer: {
8120
+ readonly id: string;
8121
+ readonly externalId: string | null;
8122
+ readonly individualName: string | null;
8123
+ readonly companyName: string | null;
8124
+ readonly email: string | null;
8125
+ readonly mobilePhone: string | null;
8126
+ readonly officePhone: string | null;
8127
+ readonly addressString: string | null;
8128
+ readonly status: "ACTIVE" | "ARCHIVED";
8129
+ readonly memo: string | null;
8130
+ readonly _local?: {
8131
+ readonly isOptimistic: boolean;
8132
+ } | undefined;
8133
+ } | null;
8134
+ readonly businessId: string;
8135
+ readonly updatedAt: Date | null;
8136
+ readonly subtotal: number;
8137
+ readonly paidAt: Date | null;
8138
+ readonly totalAmount: number;
8139
+ readonly sentAt: Date | null;
8140
+ readonly dueAt: Date | null;
8141
+ readonly voidedAt: Date | null;
8142
+ readonly invoiceNumber: string | null;
8143
+ readonly recipientName: string | null;
8144
+ readonly lineItems: readonly {
8145
+ readonly id: string;
8146
+ readonly externalId: string | null;
8147
+ readonly memo: string | null;
8148
+ readonly description: string | null;
8149
+ readonly product: string | null;
8150
+ readonly subtotal: number;
8151
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8152
+ readonly invoiceId: string;
8153
+ readonly unitPrice: number;
8154
+ readonly discountAmount: number;
8155
+ readonly salesTaxTotal: number;
8156
+ readonly totalAmount: number;
8157
+ }[];
8158
+ readonly additionalDiscount: number;
8159
+ readonly additionalSalesTaxesTotal: number;
8160
+ readonly outstandingBalance: number;
8161
+ readonly importedAt: Date;
8162
+ }[];
8163
+ readonly meta: {
8164
+ readonly pagination: {
8165
+ readonly cursor: string | null;
8166
+ readonly totalCount: number | undefined;
8167
+ readonly hasMore: boolean;
8168
+ };
8169
+ };
8170
+ }[] | undefined>;
8171
+ get isLoading(): boolean;
8172
+ get isValidating(): boolean;
8173
+ get isError(): boolean;
8174
+ get refetch(): import("swr/infinite").SWRInfiniteKeyedMutator<{
8175
+ readonly data: readonly {
8176
+ readonly id: string;
8177
+ readonly externalId: string | null;
8178
+ readonly status: InvoiceStatus;
8179
+ readonly memo: string | null;
8180
+ readonly customer: {
8181
+ readonly id: string;
8182
+ readonly externalId: string | null;
8183
+ readonly individualName: string | null;
8184
+ readonly companyName: string | null;
8185
+ readonly email: string | null;
8186
+ readonly mobilePhone: string | null;
8187
+ readonly officePhone: string | null;
8188
+ readonly addressString: string | null;
8189
+ readonly status: "ACTIVE" | "ARCHIVED";
8190
+ readonly memo: string | null;
8191
+ readonly _local?: {
8192
+ readonly isOptimistic: boolean;
8193
+ } | undefined;
8194
+ } | null;
8195
+ readonly businessId: string;
8196
+ readonly updatedAt: Date | null;
8197
+ readonly subtotal: number;
8198
+ readonly paidAt: Date | null;
8199
+ readonly totalAmount: number;
8200
+ readonly sentAt: Date | null;
8201
+ readonly dueAt: Date | null;
8202
+ readonly voidedAt: Date | null;
8203
+ readonly invoiceNumber: string | null;
8204
+ readonly recipientName: string | null;
8205
+ readonly lineItems: readonly {
8206
+ readonly id: string;
8207
+ readonly externalId: string | null;
8208
+ readonly memo: string | null;
8209
+ readonly description: string | null;
8210
+ readonly product: string | null;
8211
+ readonly subtotal: number;
8212
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8213
+ readonly invoiceId: string;
8214
+ readonly unitPrice: number;
8215
+ readonly discountAmount: number;
8216
+ readonly salesTaxTotal: number;
8217
+ readonly totalAmount: number;
8218
+ }[];
8219
+ readonly additionalDiscount: number;
8220
+ readonly additionalSalesTaxesTotal: number;
8221
+ readonly outstandingBalance: number;
8222
+ readonly importedAt: Date;
8223
+ }[];
8224
+ readonly meta: {
8225
+ readonly pagination: {
8226
+ readonly cursor: string | null;
8227
+ readonly totalCount: number | undefined;
8228
+ readonly hasMore: boolean;
8229
+ };
8230
+ };
8231
+ }[]>;
8232
+ }
8233
+ export const listInvoices: (baseUrl: string, accessToken: string | undefined, options?: {
8234
+ params?: ListInvoicesParams | undefined;
8235
+ } | undefined) => () => Promise<{
8236
+ readonly data: readonly {
8237
+ readonly id: string;
8238
+ readonly externalId: string | null;
8239
+ readonly status: InvoiceStatus;
8240
+ readonly memo: string | null;
8241
+ readonly customer: {
8242
+ readonly id: string;
8243
+ readonly externalId: string | null;
8244
+ readonly individualName: string | null;
8245
+ readonly companyName: string | null;
8246
+ readonly email: string | null;
8247
+ readonly mobilePhone: string | null;
8248
+ readonly officePhone: string | null;
8249
+ readonly addressString: string | null;
8250
+ readonly status: "ACTIVE" | "ARCHIVED";
8251
+ readonly memo: string | null;
8252
+ readonly _local?: {
8253
+ readonly isOptimistic: boolean;
8254
+ } | undefined;
8255
+ } | null;
8256
+ readonly businessId: string;
8257
+ readonly updatedAt: Date | null;
8258
+ readonly subtotal: number;
8259
+ readonly paidAt: Date | null;
8260
+ readonly totalAmount: number;
8261
+ readonly sentAt: Date | null;
8262
+ readonly dueAt: Date | null;
8263
+ readonly voidedAt: Date | null;
8264
+ readonly invoiceNumber: string | null;
8265
+ readonly recipientName: string | null;
8266
+ readonly lineItems: readonly {
8267
+ readonly id: string;
8268
+ readonly externalId: string | null;
8269
+ readonly memo: string | null;
8270
+ readonly description: string | null;
8271
+ readonly product: string | null;
8272
+ readonly subtotal: number;
8273
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8274
+ readonly invoiceId: string;
8275
+ readonly unitPrice: number;
8276
+ readonly discountAmount: number;
8277
+ readonly salesTaxTotal: number;
8278
+ readonly totalAmount: number;
8279
+ }[];
8280
+ readonly additionalDiscount: number;
8281
+ readonly additionalSalesTaxesTotal: number;
8282
+ readonly outstandingBalance: number;
8283
+ readonly importedAt: Date;
8284
+ }[];
8285
+ readonly meta: {
8286
+ readonly pagination: {
8287
+ readonly cursor: string | null;
8288
+ readonly totalCount: number | undefined;
8289
+ readonly hasMore: boolean;
8290
+ };
8291
+ };
8292
+ }>;
8293
+ export function useListInvoices({ status, dueAtStart, dueAtEnd, sortBy, sortOrder, limit, showTotalCount, }?: ListInvoicesOptions): ListInvoicesSWRResponse;
8294
+ export function useInvoicesInvalidator(): {
8295
+ invalidateInvoices: () => Promise<undefined[]>;
8296
+ debouncedInvalidateInvoices: import("lodash").DebouncedFunc<() => Promise<undefined[]>>;
8297
+ };
8298
+ export function useInvoicesOptimisticUpdater(): {
8299
+ optimisticallyUpdateInvoices: (transformInvoice: (invoice: Invoice) => Invoice) => Promise<undefined[]>;
8300
+ };
8301
+ export {};
8302
+
8303
+ }
8304
+ declare module '@layerfi/components/features/invoices/api/useUpsertInvoice' {
8305
+ import type { Key } from 'swr';
8306
+ import { type SWRMutationResponse } from 'swr/mutation';
8307
+ import { type UpsertInvoice } from '@layerfi/components/features/invoices/invoiceSchemas';
8308
+ import { Schema } from 'effect';
8309
+ export enum UpsertInvoiceMode {
8310
+ Create = "Create",
8311
+ Update = "Update"
8312
+ }
8313
+ const UpsertInvoiceReturnSchema: Schema.Struct<{
8314
+ data: Schema.Struct<{
8315
+ id: typeof Schema.UUID;
8316
+ businessId: Schema.PropertySignature<":", string, "business_id", ":", string, false, never>;
8317
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
8318
+ status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<import("@layerfi/components/features/invoices/invoiceSchemas").InvoiceStatus, import("../invoiceSchemas").InvoiceStatus, never>>;
8319
+ sentAt: Schema.PropertySignature<":", Date | null, "sent_at", ":", string | null, false, never>;
8320
+ dueAt: Schema.PropertySignature<":", Date | null, "due_at", ":", string | null, false, never>;
8321
+ paidAt: Schema.PropertySignature<":", Date | null, "paid_at", ":", string | null, false, never>;
8322
+ voidedAt: Schema.PropertySignature<":", Date | null, "voided_at", ":", string | null, false, never>;
8323
+ invoiceNumber: Schema.PropertySignature<":", string | null, "invoice_number", ":", string | null, false, never>;
8324
+ recipientName: Schema.PropertySignature<":", string | null, "recipient_name", ":", string | null, false, never>;
8325
+ customer: Schema.NullOr<Schema.Struct<{
8326
+ id: typeof Schema.UUID;
8327
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
8328
+ individualName: Schema.PropertySignature<":", string | null, "individual_name", ":", string | null, false, never>;
8329
+ companyName: Schema.PropertySignature<":", string | null, "company_name", ":", string | null, false, never>;
8330
+ email: Schema.NullOr<typeof Schema.String>;
8331
+ mobilePhone: Schema.PropertySignature<":", string | null, "mobile_phone", ":", string | null, false, never>;
8332
+ officePhone: Schema.PropertySignature<":", string | null, "office_phone", ":", string | null, false, never>;
8333
+ addressString: Schema.PropertySignature<":", string | null, "address_string", ":", string | null, false, never>;
8334
+ status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<"ACTIVE" | "ARCHIVED", "ACTIVE" | "ARCHIVED", never>>;
8335
+ memo: Schema.NullOr<typeof Schema.String>;
8336
+ _local: Schema.optional<Schema.Struct<{
8337
+ isOptimistic: typeof Schema.Boolean;
8338
+ }>>;
8339
+ }>>;
8340
+ lineItems: Schema.PropertySignature<":", readonly {
8341
+ readonly id: string;
8342
+ readonly externalId: string | null;
8343
+ readonly memo: string | null;
8344
+ readonly description: string | null;
8345
+ readonly product: string | null;
8346
+ readonly subtotal: number;
8347
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8348
+ readonly invoiceId: string;
8349
+ readonly unitPrice: number;
8350
+ readonly discountAmount: number;
8351
+ readonly salesTaxTotal: number;
8352
+ readonly totalAmount: number;
8353
+ }[], "line_items", ":", readonly {
8354
+ readonly id: string;
8355
+ readonly external_id: string | null;
8356
+ readonly memo: string | null;
8357
+ readonly description: string | null;
8358
+ readonly product: string | null;
8359
+ readonly subtotal: number;
8360
+ readonly quantity: string;
8361
+ readonly invoice_id: string;
8362
+ readonly unit_price: number;
8363
+ readonly discount_amount: number;
8364
+ readonly sales_taxes_total: number;
8365
+ readonly total_amount: number;
8366
+ }[], false, never>;
8367
+ subtotal: typeof Schema.Number;
8368
+ additionalDiscount: Schema.PropertySignature<":", number, "additional_discount", ":", number, false, never>;
8369
+ additionalSalesTaxesTotal: Schema.PropertySignature<":", number, "additional_sales_taxes_total", ":", number, false, never>;
8370
+ totalAmount: Schema.PropertySignature<":", number, "total_amount", ":", number, false, never>;
8371
+ outstandingBalance: Schema.PropertySignature<":", number, "outstanding_balance", ":", number, false, never>;
8372
+ importedAt: Schema.PropertySignature<":", Date, "imported_at", ":", string, false, never>;
8373
+ updatedAt: Schema.PropertySignature<":", Date | null, "updated_at", ":", string | null, false, never>;
8374
+ memo: Schema.NullOr<typeof Schema.String>;
8375
+ }>;
8376
+ }>;
8377
+ type UpsertInvoiceReturn = typeof UpsertInvoiceReturnSchema.Type;
8378
+ type UpsertInvoiceSWRMutationResponse = SWRMutationResponse<UpsertInvoiceReturn, unknown, Key, UpsertInvoice>;
8379
+ class UpsertInvoiceSWRResponse {
8380
+ private swrResponse;
8381
+ constructor(swrResponse: UpsertInvoiceSWRMutationResponse);
8382
+ get data(): {
8383
+ readonly data: {
8384
+ readonly id: string;
8385
+ readonly externalId: string | null;
8386
+ readonly status: import("@layerfi/components/features/invoices/invoiceSchemas").InvoiceStatus;
8387
+ readonly memo: string | null;
8388
+ readonly customer: {
8389
+ readonly id: string;
8390
+ readonly externalId: string | null;
8391
+ readonly individualName: string | null;
8392
+ readonly companyName: string | null;
8393
+ readonly email: string | null;
8394
+ readonly mobilePhone: string | null;
8395
+ readonly officePhone: string | null;
8396
+ readonly addressString: string | null;
8397
+ readonly status: "ACTIVE" | "ARCHIVED";
8398
+ readonly memo: string | null;
8399
+ readonly _local?: {
8400
+ readonly isOptimistic: boolean;
8401
+ } | undefined;
8402
+ } | null;
8403
+ readonly businessId: string;
8404
+ readonly updatedAt: Date | null;
8405
+ readonly subtotal: number;
8406
+ readonly paidAt: Date | null;
8407
+ readonly totalAmount: number;
8408
+ readonly sentAt: Date | null;
8409
+ readonly dueAt: Date | null;
8410
+ readonly voidedAt: Date | null;
8411
+ readonly invoiceNumber: string | null;
8412
+ readonly recipientName: string | null;
8413
+ readonly lineItems: readonly {
8414
+ readonly id: string;
8415
+ readonly externalId: string | null;
8416
+ readonly memo: string | null;
8417
+ readonly description: string | null;
8418
+ readonly product: string | null;
8419
+ readonly subtotal: number;
8420
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8421
+ readonly invoiceId: string;
8422
+ readonly unitPrice: number;
8423
+ readonly discountAmount: number;
8424
+ readonly salesTaxTotal: number;
8425
+ readonly totalAmount: number;
8426
+ }[];
8427
+ readonly additionalDiscount: number;
8428
+ readonly additionalSalesTaxesTotal: number;
8429
+ readonly outstandingBalance: number;
8430
+ readonly importedAt: Date;
8431
+ };
8432
+ } | undefined;
8433
+ get trigger(): import("swr/mutation").TriggerWithArgs<{
8434
+ readonly data: {
8435
+ readonly id: string;
8436
+ readonly externalId: string | null;
8437
+ readonly status: import("@layerfi/components/features/invoices/invoiceSchemas").InvoiceStatus;
8438
+ readonly memo: string | null;
8439
+ readonly customer: {
8440
+ readonly id: string;
8441
+ readonly externalId: string | null;
8442
+ readonly individualName: string | null;
8443
+ readonly companyName: string | null;
8444
+ readonly email: string | null;
8445
+ readonly mobilePhone: string | null;
8446
+ readonly officePhone: string | null;
8447
+ readonly addressString: string | null;
8448
+ readonly status: "ACTIVE" | "ARCHIVED";
8449
+ readonly memo: string | null;
8450
+ readonly _local?: {
8451
+ readonly isOptimistic: boolean;
8452
+ } | undefined;
8453
+ } | null;
8454
+ readonly businessId: string;
8455
+ readonly updatedAt: Date | null;
8456
+ readonly subtotal: number;
8457
+ readonly paidAt: Date | null;
8458
+ readonly totalAmount: number;
8459
+ readonly sentAt: Date | null;
8460
+ readonly dueAt: Date | null;
8461
+ readonly voidedAt: Date | null;
8462
+ readonly invoiceNumber: string | null;
8463
+ readonly recipientName: string | null;
8464
+ readonly lineItems: readonly {
8465
+ readonly id: string;
8466
+ readonly externalId: string | null;
8467
+ readonly memo: string | null;
8468
+ readonly description: string | null;
8469
+ readonly product: string | null;
8470
+ readonly subtotal: number;
8471
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8472
+ readonly invoiceId: string;
8473
+ readonly unitPrice: number;
8474
+ readonly discountAmount: number;
8475
+ readonly salesTaxTotal: number;
8476
+ readonly totalAmount: number;
8477
+ }[];
8478
+ readonly additionalDiscount: number;
8479
+ readonly additionalSalesTaxesTotal: number;
8480
+ readonly outstandingBalance: number;
8481
+ readonly importedAt: Date;
8482
+ };
8483
+ }, unknown, Key, {
8484
+ readonly memo: string | null;
8485
+ readonly sentAt: Date;
8486
+ readonly dueAt: Date;
8487
+ readonly invoiceNumber: string | undefined;
8488
+ readonly lineItems: readonly {
8489
+ readonly description: string;
8490
+ readonly product: string;
8491
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8492
+ readonly unitPrice: number;
8493
+ }[];
8494
+ readonly additionalDiscount: number | undefined;
8495
+ readonly customerId: string;
8496
+ readonly additionalSalesTaxes: readonly {
8497
+ readonly amount: number;
8498
+ }[] | undefined;
8499
+ }>;
8500
+ get isMutating(): boolean;
8501
+ get isError(): boolean;
8502
+ }
8503
+ const CreateParamsSchema: Schema.Struct<{
8504
+ businessId: typeof Schema.String;
8505
+ }>;
8506
+ const UpdateParamsSchema: Schema.Struct<{
8507
+ businessId: typeof Schema.String;
8508
+ invoiceId: typeof Schema.String;
8509
+ }>;
8510
+ export type CreateParams = typeof CreateParamsSchema.Type;
8511
+ export type UpdateParams = typeof UpdateParamsSchema.Type;
8512
+ export type UpsertParams = CreateParams | UpdateParams;
8513
+ type UseUpsertInvoiceProps = {
8514
+ mode: UpsertInvoiceMode.Create;
8515
+ } | {
8516
+ mode: UpsertInvoiceMode.Update;
8517
+ invoiceId: string;
8518
+ };
8519
+ export const useUpsertInvoice: (props: UseUpsertInvoiceProps) => UpsertInvoiceSWRResponse;
8520
+ export {};
8521
+
8522
+ }
8523
+ declare module '@layerfi/components/features/invoices/invoiceSchemas' {
8524
+ import { Schema } from 'effect';
8525
+ export enum InvoiceStatus {
8526
+ Voided = "VOIDED",
8527
+ Paid = "PAID",
8528
+ WrittenOff = "WRITTEN_OFF",
8529
+ PartiallyWrittenOff = "PARTIALLY_WRITTEN_OFF",
8530
+ PartiallyPaid = "PARTIALLY_PAID",
8531
+ Sent = "SENT"
8532
+ }
8533
+ export const TransformedInvoiceStatusSchema: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<InvoiceStatus, InvoiceStatus, never>>;
8534
+ export const InvoiceLineItemSchema: Schema.Struct<{
8535
+ id: typeof Schema.UUID;
8536
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
8537
+ invoiceId: Schema.PropertySignature<":", string, "invoice_id", ":", string, false, never>;
8538
+ description: Schema.NullOr<typeof Schema.String>;
8539
+ product: Schema.NullOr<typeof Schema.String>;
8540
+ unitPrice: Schema.PropertySignature<":", number, "unit_price", ":", number, false, never>;
8541
+ quantity: typeof Schema.BigDecimal;
8542
+ subtotal: typeof Schema.Number;
8543
+ discountAmount: Schema.PropertySignature<":", number, "discount_amount", ":", number, false, never>;
8544
+ salesTaxTotal: Schema.PropertySignature<":", number, "sales_taxes_total", ":", number, false, never>;
8545
+ totalAmount: Schema.PropertySignature<":", number, "total_amount", ":", number, false, never>;
8546
+ memo: Schema.NullOr<typeof Schema.String>;
8547
+ }>;
8548
+ export type InvoiceLineItem = typeof InvoiceLineItemSchema.Type;
8549
+ export const InvoiceSchema: Schema.Struct<{
8550
+ id: typeof Schema.UUID;
8551
+ businessId: Schema.PropertySignature<":", string, "business_id", ":", string, false, never>;
8552
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
8553
+ status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<InvoiceStatus, InvoiceStatus, never>>;
8554
+ sentAt: Schema.PropertySignature<":", Date | null, "sent_at", ":", string | null, false, never>;
8555
+ dueAt: Schema.PropertySignature<":", Date | null, "due_at", ":", string | null, false, never>;
8556
+ paidAt: Schema.PropertySignature<":", Date | null, "paid_at", ":", string | null, false, never>;
8557
+ voidedAt: Schema.PropertySignature<":", Date | null, "voided_at", ":", string | null, false, never>;
8558
+ invoiceNumber: Schema.PropertySignature<":", string | null, "invoice_number", ":", string | null, false, never>;
8559
+ recipientName: Schema.PropertySignature<":", string | null, "recipient_name", ":", string | null, false, never>;
8560
+ customer: Schema.NullOr<Schema.Struct<{
8561
+ id: typeof Schema.UUID;
8562
+ externalId: Schema.PropertySignature<":", string | null, "external_id", ":", string | null, false, never>;
8563
+ individualName: Schema.PropertySignature<":", string | null, "individual_name", ":", string | null, false, never>;
8564
+ companyName: Schema.PropertySignature<":", string | null, "company_name", ":", string | null, false, never>;
8565
+ email: Schema.NullOr<typeof Schema.String>;
8566
+ mobilePhone: Schema.PropertySignature<":", string | null, "mobile_phone", ":", string | null, false, never>;
8567
+ officePhone: Schema.PropertySignature<":", string | null, "office_phone", ":", string | null, false, never>;
8568
+ addressString: Schema.PropertySignature<":", string | null, "address_string", ":", string | null, false, never>;
8569
+ status: Schema.transform<typeof Schema.NonEmptyTrimmedString, Schema.SchemaClass<"ACTIVE" | "ARCHIVED", "ACTIVE" | "ARCHIVED", never>>;
8570
+ memo: Schema.NullOr<typeof Schema.String>;
8571
+ _local: Schema.optional<Schema.Struct<{
8572
+ isOptimistic: typeof Schema.Boolean;
8573
+ }>>;
8574
+ }>>;
8575
+ lineItems: Schema.PropertySignature<":", readonly {
8576
+ readonly id: string;
8577
+ readonly externalId: string | null;
8578
+ readonly memo: string | null;
8579
+ readonly description: string | null;
8580
+ readonly product: string | null;
8581
+ readonly subtotal: number;
8582
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8583
+ readonly invoiceId: string;
8584
+ readonly unitPrice: number;
8585
+ readonly discountAmount: number;
8586
+ readonly salesTaxTotal: number;
8587
+ readonly totalAmount: number;
8588
+ }[], "line_items", ":", readonly {
8589
+ readonly id: string;
8590
+ readonly external_id: string | null;
8591
+ readonly memo: string | null;
8592
+ readonly description: string | null;
8593
+ readonly product: string | null;
8594
+ readonly subtotal: number;
8595
+ readonly quantity: string;
8596
+ readonly invoice_id: string;
8597
+ readonly unit_price: number;
8598
+ readonly discount_amount: number;
8599
+ readonly sales_taxes_total: number;
8600
+ readonly total_amount: number;
8601
+ }[], false, never>;
8602
+ subtotal: typeof Schema.Number;
8603
+ additionalDiscount: Schema.PropertySignature<":", number, "additional_discount", ":", number, false, never>;
8604
+ additionalSalesTaxesTotal: Schema.PropertySignature<":", number, "additional_sales_taxes_total", ":", number, false, never>;
8605
+ totalAmount: Schema.PropertySignature<":", number, "total_amount", ":", number, false, never>;
8606
+ outstandingBalance: Schema.PropertySignature<":", number, "outstanding_balance", ":", number, false, never>;
8607
+ importedAt: Schema.PropertySignature<":", Date, "imported_at", ":", string, false, never>;
8608
+ updatedAt: Schema.PropertySignature<":", Date | null, "updated_at", ":", string | null, false, never>;
8609
+ memo: Schema.NullOr<typeof Schema.String>;
8610
+ }>;
8611
+ export type Invoice = typeof InvoiceSchema.Type;
8612
+ export const UpsertInvoiceTaxLineItemSchema: Schema.Struct<{
8613
+ amount: typeof Schema.Number;
8614
+ }>;
8615
+ export const UpsertInvoiceLineItemSchema: Schema.Struct<{
8616
+ description: typeof Schema.String;
8617
+ product: typeof Schema.String;
8618
+ unitPrice: Schema.PropertySignature<":", number, "unit_price", ":", number, false, never>;
8619
+ quantity: typeof Schema.BigDecimal;
8620
+ }>;
8621
+ export type UpsertInvoiceLineItem = typeof UpsertInvoiceLineItemSchema.Type;
8622
+ export const UpsertInvoiceSchema: Schema.Struct<{
8623
+ sentAt: Schema.PropertySignature<":", Date, "sent_at", ":", string, false, never>;
8624
+ dueAt: Schema.PropertySignature<":", Date, "due_at", ":", string, false, never>;
8625
+ invoiceNumber: Schema.PropertySignature<":", string | undefined, "invoice_number", ":", string | undefined, false, never>;
8626
+ customerId: Schema.PropertySignature<":", string, "customer_id", ":", string, false, never>;
8627
+ memo: Schema.NullOr<typeof Schema.String>;
8628
+ lineItems: Schema.PropertySignature<":", readonly {
8629
+ readonly description: string;
8630
+ readonly product: string;
8631
+ readonly quantity: import("effect/BigDecimal").BigDecimal;
8632
+ readonly unitPrice: number;
8633
+ }[], "line_items", ":", readonly {
8634
+ readonly description: string;
8635
+ readonly product: string;
8636
+ readonly quantity: string;
8637
+ readonly unit_price: number;
8638
+ }[], false, never>;
8639
+ additionalDiscount: Schema.PropertySignature<":", number | undefined, "additional_discount", ":", number | undefined, false, never>;
8640
+ additionalSalesTaxes: Schema.PropertySignature<":", readonly {
8641
+ readonly amount: number;
8642
+ }[] | undefined, "additional_sales_taxes", ":", readonly {
8643
+ readonly amount: number;
8644
+ }[] | undefined, false, never>;
8645
+ }>;
8646
+ export type UpsertInvoice = typeof UpsertInvoiceSchema.Type;
8647
+
6319
8648
  }
6320
8649
  declare module '@layerfi/components/features/ledger/accounts/[ledgerAccountId]/api/useListLedgerAccountLines' {
6321
8650
  import { LedgerAccountLineItem, LedgerAccountLineItems } from '@layerfi/components/types/ledger_accounts';
@@ -6561,11 +8890,11 @@ declare module '@layerfi/components/features/tags/components/TagSelector' {
6561
8890
  export type Tag = typeof TagSchema.Type;
6562
8891
  type TagSelectorProps = {
6563
8892
  selectedTags: ReadonlyArray<Tag>;
6564
- isReadOnly?: boolean;
6565
8893
  onAddTag: (tagValue: TagValue) => void;
6566
8894
  onRemoveTag: (tag: Tag) => void;
8895
+ isReadOnly?: boolean;
6567
8896
  };
6568
- export function TagSelector({ selectedTags, isReadOnly, onAddTag, onRemoveTag, }: TagSelectorProps): import("react/jsx-runtime").JSX.Element | null;
8897
+ export function TagSelector({ selectedTags, onAddTag, onRemoveTag, isReadOnly, }: TagSelectorProps): import("react/jsx-runtime").JSX.Element | null;
6569
8898
  export {};
6570
8899
 
6571
8900
  }
@@ -7159,6 +9488,24 @@ declare module '@layerfi/components/hooks/customAccounts/useCustomAccounts' {
7159
9488
  export function useCustomAccounts({ userCreated }?: useCustomAccountsParams): import("swr").SWRResponse<import("./types").CustomAccount[], any, any>;
7160
9489
  export {};
7161
9490
 
9491
+ }
9492
+ declare module '@layerfi/components/hooks/mutation/useMinMutatingMutation' {
9493
+ import type { Key } from 'swr';
9494
+ import type { SWRMutationResponse } from 'swr/mutation';
9495
+ type UseMinLoadingMutationOptions<TData, TError, TMutationKey extends Key, TExtraArg> = {
9496
+ swrMutationResponse: SWRMutationResponse<TData, TError, TMutationKey, TExtraArg>;
9497
+ minMutatingMs?: number;
9498
+ };
9499
+ /**
9500
+ * Motivation:
9501
+ * - Some mutations are so fast that relying on the `isMutating` state can cause flickering.
9502
+ *
9503
+ * Any SWR mutation response wrapped in this hook will appear to be mutating for a minimum
9504
+ * duration.
9505
+ */
9506
+ export function useMinMutatingMutation<TData, TError, TMutationKey extends Key, TExtraArg>({ swrMutationResponse, minMutatingMs, }: UseMinLoadingMutationOptions<TData, TError, TMutationKey, TExtraArg>): SWRMutationResponse<TData, TError, TMutationKey, TExtraArg>;
9507
+ export {};
9508
+
7162
9509
  }
7163
9510
  declare module '@layerfi/components/hooks/ref/useStopClickEventsRef' {
7164
9511
  export function useStopClickEventsRefCallback(): (element: HTMLElement | null) => void;
@@ -7267,13 +9614,17 @@ declare module '@layerfi/components/hooks/useBankTransactions/useBankTransaction
7267
9614
  tagFilterQueryString?: string;
7268
9615
  };
7269
9616
  export function useBankTransactions({ categorized, direction, query, startDate, endDate, tagFilterQueryString, }: UseBankTransactionsOptions): import("swr/infinite").SWRInfiniteResponse<GetBankTransactionsReturn, any>;
9617
+ type BankTransactionsInvalidateOptions = {
9618
+ withPrecedingOptimisticUpdate?: boolean;
9619
+ };
7270
9620
  export function useBankTransactionsInvalidator(): {
7271
- invalidateBankTransactions: () => Promise<undefined[]>;
7272
- debouncedInvalidateBankTransactions: import("lodash").DebouncedFunc<() => Promise<undefined[]>>;
9621
+ invalidateBankTransactions: (invalidateOptions?: BankTransactionsInvalidateOptions) => Promise<undefined[]>;
9622
+ debouncedInvalidateBankTransactions: import("lodash").DebouncedFunc<(invalidateOptions?: BankTransactionsInvalidateOptions) => Promise<undefined[]>>;
7273
9623
  };
7274
9624
  export function useBankTransactionsOptimisticUpdater(): {
7275
9625
  optimisticallyUpdateBankTransactions: (transformTransaction: (txn: BankTransaction) => BankTransaction) => Promise<undefined[]>;
7276
9626
  };
9627
+ export {};
7277
9628
 
7278
9629
  }
7279
9630
  declare module '@layerfi/components/hooks/useBankTransactions/useBankTransactionsDownload' {
@@ -7594,6 +9945,7 @@ declare module '@layerfi/components/hooks/useLedgerAccounts/index' {
7594
9945
  }
7595
9946
  declare module '@layerfi/components/hooks/useLedgerAccounts/useLedgerAccounts' {
7596
9947
  import { LedgerAccounts, LedgerAccountsEntry } from '@layerfi/components/types';
9948
+ import type { LedgerAccountBalanceWithNodeType } from '@layerfi/components/types/chart_of_accounts';
7597
9949
  type UseLedgerAccounts = (showReversalEntries: boolean) => {
7598
9950
  data?: LedgerAccounts;
7599
9951
  entryData?: LedgerAccountsEntry;
@@ -7604,8 +9956,8 @@ declare module '@layerfi/components/hooks/useLedgerAccounts/useLedgerAccounts' {
7604
9956
  error?: unknown;
7605
9957
  errorEntry?: unknown;
7606
9958
  refetch: () => void;
7607
- accountId?: string;
7608
- setAccountId: (id?: string) => void;
9959
+ selectedAccount: LedgerAccountBalanceWithNodeType | undefined;
9960
+ setSelectedAccount: (account: LedgerAccountBalanceWithNodeType | undefined) => void;
7609
9961
  selectedEntryId?: string;
7610
9962
  setSelectedEntryId: (id?: string) => void;
7611
9963
  closeSelectedEntry: () => void;
@@ -7658,24 +10010,23 @@ declare module '@layerfi/components/hooks/useLinkedAccounts/useListExternalAccou
7658
10010
  export function useListExternalAccounts(): import("swr").SWRResponse<import("../../types/linked_accounts").LinkedAccount[], any, any>;
7659
10011
 
7660
10012
  }
7661
- declare module '@layerfi/components/hooks/usePagination/index' {
7662
- export { usePagination, DOTS } from '@layerfi/components/hooks/usePagination/usePagination';
7663
-
7664
- }
7665
- declare module '@layerfi/components/hooks/usePagination/usePagination' {
7666
- export const DOTS = "...";
10013
+ declare module '@layerfi/components/hooks/usePaginationRange/usePaginationRange' {
10014
+ export enum Dots {
10015
+ DotsLeft = "DotsLeft",
10016
+ DotsRight = "DotsRight"
10017
+ }
7667
10018
  export interface UsePaginationProps {
7668
10019
  totalCount: number;
7669
10020
  pageSize: number;
7670
10021
  siblingCount?: number;
7671
10022
  currentPage: number;
7672
10023
  }
7673
- export type UsePaginationReturn = (string | number)[] | undefined;
7674
- export const usePagination: ({ totalCount, pageSize, siblingCount, currentPage, }: UsePaginationProps) => UsePaginationReturn;
10024
+ export type UsePaginationReturn = (Dots | number)[];
10025
+ export const usePaginationRange: ({ totalCount, pageSize, siblingCount, currentPage, }: UsePaginationProps) => UsePaginationReturn;
7675
10026
 
7676
10027
  }
7677
10028
  declare module '@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss' {
7678
- import { ReportingBasis, SortDirection, type DateRange } from '@layerfi/components/types';
10029
+ import { ReportingBasis, SortDirection } from '@layerfi/components/types';
7679
10030
  export type Scope = 'expenses' | 'revenue';
7680
10031
  export type SidebarScope = Scope | undefined;
7681
10032
  export type PnlTagFilter = {
@@ -7701,11 +10052,6 @@ declare module '@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss' {
7701
10052
  isLoading: boolean;
7702
10053
  isValidating: boolean;
7703
10054
  error: unknown;
7704
- dateRange: {
7705
- startDate: Date;
7706
- endDate: Date;
7707
- };
7708
- changeDateRange: ({ startDate: start, endDate: end }: DateRange) => void;
7709
10055
  refetch: () => void;
7710
10056
  sidebarScope: SidebarScope;
7711
10057
  setSidebarScope: import("react").Dispatch<import("react").SetStateAction<SidebarScope>>;
@@ -7713,6 +10059,10 @@ declare module '@layerfi/components/hooks/useProfitAndLoss/useProfitAndLoss' {
7713
10059
  filters: ProfitAndLossFilters;
7714
10060
  setFilterTypes: (scope: Scope, types: string[]) => void;
7715
10061
  tagFilter: PnlTagFilter | undefined;
10062
+ dateRange: {
10063
+ startDate: Date;
10064
+ endDate: Date;
10065
+ };
7716
10066
  };
7717
10067
  export {};
7718
10068
 
@@ -8047,6 +10397,12 @@ declare module '@layerfi/components/icons/ChevronRight' {
8047
10397
  const ChevronRight: ({ ...props }: IconSvgProps) => import("react/jsx-runtime").JSX.Element;
8048
10398
  export default ChevronRight;
8049
10399
 
10400
+ }
10401
+ declare module '@layerfi/components/icons/ChevronRightFill' {
10402
+ import { IconSvgProps } from '@layerfi/components/icons/types';
10403
+ const ChevronRightFill: ({ size, ...props }: IconSvgProps) => import("react/jsx-runtime").JSX.Element;
10404
+ export default ChevronRightFill;
10405
+
8050
10406
  }
8051
10407
  declare module '@layerfi/components/icons/ChevronUp' {
8052
10408
  import { SVGProps } from 'react';
@@ -8337,8 +10693,8 @@ declare module '@layerfi/components/index' {
8337
10693
  export { BankTransactions } from '@layerfi/components/components/BankTransactions/BankTransactions';
8338
10694
  export { Integrations } from '@layerfi/components/components/Integrations/Integrations';
8339
10695
  export { ProfitAndLoss } from '@layerfi/components/components/ProfitAndLoss/index';
8340
- export { BalanceSheet } from '@layerfi/components/components/BalanceSheet/index';
8341
- export { StatementOfCashFlow } from '@layerfi/components/components/StatementOfCashFlow/index';
10696
+ export { StandaloneBalanceSheet as BalanceSheet } from '@layerfi/components/components/BalanceSheet/index';
10697
+ export { StandaloneStatementOfCashFlow as StatementOfCashFlow } from '@layerfi/components/components/StatementOfCashFlow/index';
8342
10698
  export { ChartOfAccounts } from '@layerfi/components/components/ChartOfAccounts/index';
8343
10699
  export { Journal } from '@layerfi/components/components/Journal/index';
8344
10700
  export { Tasks } from '@layerfi/components/components/Tasks/Tasks';
@@ -8353,6 +10709,7 @@ declare module '@layerfi/components/index' {
8353
10709
  export { unstable_BillsView } from '@layerfi/components/views/Bills';
8354
10710
  export { Reports } from '@layerfi/components/views/Reports/index';
8355
10711
  export { ProfitAndLossView } from '@layerfi/components/components/ProfitAndLossView/index';
10712
+ export { unstable_Invoices } from '@layerfi/components/components/Invoices/Invoices';
8356
10713
  export { useLayerContext } from '@layerfi/components/contexts/LayerContext/index';
8357
10714
  export { useBankTransactionsContext } from '@layerfi/components/contexts/BankTransactionsContext/index';
8358
10715
  export { BankTransactionsProvider } from '@layerfi/components/providers/BankTransactionsProvider/index';
@@ -8513,36 +10870,35 @@ declare module '@layerfi/components/providers/Environment/environmentConfigs' {
8513
10870
  }
8514
10871
  declare module '@layerfi/components/providers/GlobalDateStore/GlobalDateStoreProvider' {
8515
10872
  import { type PropsWithChildren } from 'react';
10873
+ import type { UnifiedPickerMode } from '@layerfi/components/components/DatePicker/ModeSelector/DatePickerModeSelector';
8516
10874
  const _DATE_PICKER_MODES: readonly ["dayPicker"];
8517
10875
  export type DatePickerMode = typeof _DATE_PICKER_MODES[number];
8518
10876
  const _RANGE_PICKER_MODES: readonly ["dayRangePicker", "monthPicker", "monthRangePicker", "yearPicker"];
8519
10877
  export type DateRangePickerMode = typeof _RANGE_PICKER_MODES[number];
10878
+ export const isDateRangePickerMode: (mode: string) => mode is DateRangePickerMode;
8520
10879
  export function useGlobalDate(): {
8521
10880
  date: Date;
8522
- displayMode: "dayPicker";
8523
10881
  };
8524
10882
  export function useGlobalDateActions(): {
8525
- set: (options: {
10883
+ setDate: (options: {
8526
10884
  date: Date;
8527
10885
  }) => void;
8528
10886
  };
8529
- export function useGlobalDateRange(): {
10887
+ export function useGlobalDateRange({ displayMode }: {
10888
+ displayMode: DateRangePickerMode;
10889
+ }): {
8530
10890
  start: Date;
8531
10891
  end: Date;
8532
- rangeDisplayMode: "dayRangePicker" | "monthPicker" | "monthRangePicker" | "yearPicker";
8533
10892
  };
8534
10893
  export function useGlobalDateRangeActions(): {
8535
- setRange: (options: {
10894
+ setRangeWithExplicitDisplayMode: (options: {
8536
10895
  start: Date;
8537
10896
  end: Date;
10897
+ displayMode: UnifiedPickerMode;
8538
10898
  }) => void;
8539
- setRangeDisplayMode: (options: {
8540
- rangeDisplayMode: DateRangePickerMode;
8541
- }) => void;
8542
- setRangeWithExplicitDisplayMode: (options: {
10899
+ setDateRange: (options: {
8543
10900
  start: Date;
8544
10901
  end: Date;
8545
- rangeDisplayMode: DateRangePickerMode;
8546
10902
  }) => void;
8547
10903
  setMonth: (options: {
8548
10904
  start: Date;
@@ -8567,23 +10923,26 @@ declare module '@layerfi/components/providers/GlobalDateStore/GlobalDateStorePro
8567
10923
 
8568
10924
  }
8569
10925
  declare module '@layerfi/components/providers/GlobalDateStore/useGlobalDateRangePicker' {
8570
- import { type DateRangePickerMode } from '@layerfi/components/providers/GlobalDateStore/GlobalDateStoreProvider';
8571
- export function useGlobalDateRangePicker({ allowedDatePickerModes, defaultDatePickerMode, onSetMonth, }: {
10926
+ import { DateRangePickerMode } from '@layerfi/components/providers/GlobalDateStore/GlobalDateStoreProvider';
10927
+ import { type UnifiedPickerMode } from '@layerfi/components/components/DatePicker/ModeSelector/DatePickerModeSelector';
10928
+ import { type ReadonlyArrayWithAtLeastOne } from '@layerfi/components/utils/array/getArrayWithAtLeastOneOrFallback';
10929
+ export const getAllowedDateRangePickerModes: ({ allowedDatePickerModes, defaultDatePickerMode, }: {
8572
10930
  allowedDatePickerModes?: ReadonlyArray<DateRangePickerMode>;
8573
10931
  defaultDatePickerMode?: DateRangePickerMode;
8574
- onSetMonth?: (startOfMonth: Date) => void;
8575
- }): {
8576
- allowedDateRangePickerModes: import("@layerfi/components/utils/array/getArrayWithAtLeastOneOrFallback").ReadonlyArrayWithAtLeastOne<"dayRangePicker" | "monthPicker" | "monthRangePicker" | "yearPicker">;
8577
- dateFormat: "MMM d" | undefined;
10932
+ }) => ReadonlyArrayWithAtLeastOne<DateRangePickerMode>;
10933
+ export const getInitialDateRangePickerMode: ({ allowedDatePickerModes, defaultDatePickerMode, }: {
10934
+ allowedDatePickerModes?: ReadonlyArray<DateRangePickerMode>;
10935
+ defaultDatePickerMode?: DateRangePickerMode;
10936
+ }) => DateRangePickerMode;
10937
+ export type UseGlobalDateRangePickerProps = {
10938
+ displayMode: DateRangePickerMode;
10939
+ setDisplayMode: (displayMode: DateRangePickerMode) => void;
10940
+ };
10941
+ export function useGlobalDateRangePicker({ displayMode, setDisplayMode }: UseGlobalDateRangePickerProps): {
8578
10942
  rangeDisplayMode: "dayRangePicker" | "monthPicker" | "monthRangePicker" | "yearPicker";
8579
- selected: Date | [Date, Date];
8580
- setSelected: ({ start, end }: {
8581
- start: Date;
8582
- end: Date;
8583
- }) => void;
8584
- setRangeDisplayMode: (options: {
8585
- rangeDisplayMode: DateRangePickerMode;
8586
- }) => void;
10943
+ onChangeMode: (newMode: UnifiedPickerMode) => void;
10944
+ dateOrDateRange: Date | [Date, Date];
10945
+ onChangeDateOrDateRange: (dates: Date | [Date, Date | null]) => void;
8587
10946
  };
8588
10947
 
8589
10948
  }
@@ -8654,6 +11013,41 @@ declare module '@layerfi/components/providers/ReceiptsProvider/ReceiptsProvider'
8654
11013
  declare module '@layerfi/components/providers/ReceiptsProvider/index' {
8655
11014
  export { ReceiptsProvider } from '@layerfi/components/providers/ReceiptsProvider/ReceiptsProvider';
8656
11015
 
11016
+ }
11017
+ declare module '@layerfi/components/providers/ReportsModeStoreProvider/ReportsModeStoreProvider' {
11018
+ import { type PropsWithChildren } from 'react';
11019
+ import type { DatePickerMode, DateRangePickerMode } from '@layerfi/components/providers/GlobalDateStore/GlobalDateStoreProvider';
11020
+ export enum ReportKey {
11021
+ ProfitAndLoss = "ProfitAndLoss",
11022
+ BalanceSheet = "BalanceSheet",
11023
+ StatementOfCashFlows = "StatementOfCashFlows"
11024
+ }
11025
+ export type ReportModes = {
11026
+ [ReportKey.ProfitAndLoss]: DateRangePickerMode;
11027
+ [ReportKey.BalanceSheet]: DatePickerMode;
11028
+ [ReportKey.StatementOfCashFlows]: DateRangePickerMode;
11029
+ };
11030
+ type MutableReportKey = Exclude<ReportKey, ReportKey.BalanceSheet>;
11031
+ type ReportsModeStoreShape = {
11032
+ resetPnLModeToDefaultOnMount: boolean;
11033
+ modeByReport: ReportModes;
11034
+ actions: {
11035
+ setModeForReport: <K extends MutableReportKey>(report: K, mode: ReportModes[K]) => void;
11036
+ };
11037
+ };
11038
+ export function useReportModeStore(): ReportsModeStoreShape;
11039
+ export function useReportMode<K extends ReportKey>(report: K): ReportModes[K] | undefined;
11040
+ export function useReportModeActions(): {
11041
+ setModeForReport: <K extends MutableReportKey>(report: K, mode: ReportModes[K]) => void;
11042
+ };
11043
+ export function useReportModeWithFallback<K extends ReportKey>(report: K, fallback: ReportModes[K]): ReportModes[K];
11044
+ type ReportsModeStoreProviderProps = PropsWithChildren<{
11045
+ initialModes: Partial<ReportModes>;
11046
+ resetPnLModeToDefaultOnMount?: boolean;
11047
+ }>;
11048
+ export function ReportsModeStoreProvider({ children, initialModes, resetPnLModeToDefaultOnMount, }: ReportsModeStoreProviderProps): import("react/jsx-runtime").JSX.Element;
11049
+ export {};
11050
+
8657
11051
  }
8658
11052
  declare module '@layerfi/components/public/styles/publicClassname' {
8659
11053
  export const PUBLIC_CLASSNAME = "Layer__Public";
@@ -9084,6 +11478,14 @@ declare module '@layerfi/components/types/chart_of_accounts' {
9084
11478
  stable_name: string;
9085
11479
  };
9086
11480
  };
11481
+ export enum LedgerAccountNodeType {
11482
+ Leaf = "Leaf",
11483
+ Root = "Root",
11484
+ Parent = "Parent"
11485
+ }
11486
+ export type LedgerAccountBalanceWithNodeType = LedgerAccountBalance & {
11487
+ nodeType: LedgerAccountNodeType;
11488
+ };
9087
11489
 
9088
11490
  }
9089
11491
  declare module '@layerfi/components/types/file_upload' {
@@ -9943,6 +12345,32 @@ declare module '@layerfi/components/types/utility/oneOf' {
9943
12345
  export type OneOf<Types extends Array<unknown>, Result = never, AllProperties = MergeTypes<Types>> = Types extends [infer Head, ...infer Remaining] ? OneOf<Remaining, Result | OnlyFirst<Head, AllProperties>, AllProperties> : Result;
9944
12346
  export {};
9945
12347
 
12348
+ }
12349
+ declare module '@layerfi/components/types/utility/pagination' {
12350
+ import { Schema } from 'effect';
12351
+ export enum SortOrder {
12352
+ ASC = "ASC",
12353
+ ASCENDING = "ASCENDING",
12354
+ DES = "DES",
12355
+ DESC = "DESC",
12356
+ DESCENDING = "DESCENDING"
12357
+ }
12358
+ export type SortParams<T> = {
12359
+ sortBy?: T;
12360
+ sortOrder?: SortOrder;
12361
+ };
12362
+ export type PaginationParams = {
12363
+ cursor?: string | null;
12364
+ limit?: number;
12365
+ showTotalCount?: boolean;
12366
+ };
12367
+ export const PaginatedResponseMetaSchema: Schema.Struct<{
12368
+ cursor: Schema.NullOr<typeof Schema.String>;
12369
+ hasMore: Schema.PropertySignature<":", boolean, "has_more", ":", boolean, false, never>;
12370
+ totalCount: Schema.PropertySignature<":", number | undefined, "total_count", ":", number | undefined, false, never>;
12371
+ }>;
12372
+ export type PaginatedResponseMeta = typeof PaginatedResponseMetaSchema.Type;
12373
+
9946
12374
  }
9947
12375
  declare module '@layerfi/components/types/utility/promises' {
9948
12376
  export type Awaitable<T> = T | Promise<T>;
@@ -10044,6 +12472,22 @@ declare module '@layerfi/components/utils/bankTransactions' {
10044
12472
  };
10045
12473
  export const hasReceipts: (bankTransaction?: BankTransaction) => boolean | undefined;
10046
12474
 
12475
+ }
12476
+ declare module '@layerfi/components/utils/bigDecimalUtils' {
12477
+ import { BigDecimal as BD } from 'effect';
12478
+ export const BIG_DECIMAL_ZERO: BD.BigDecimal;
12479
+ export const BIG_DECIMAL_ONE: BD.BigDecimal;
12480
+ export const BIG_DECIMAL_ONE_HUNDRED: BD.BigDecimal;
12481
+ export const DECIMAL_CHARS_REGEX: RegExp;
12482
+ export const NON_NEGATIVE_DECIMAL_CHARS_REGEX: RegExp;
12483
+ /**
12484
+ * Converts a BigDecimal dollar amount to its equivalent in cents as a number.
12485
+ * Example: 123.45 → 12345
12486
+ */
12487
+ export const convertBigDecimalToCents: (amount: BD.BigDecimal) => number;
12488
+ export const convertCentsToBigDecimal: (cents: number) => BD.BigDecimal;
12489
+ export function formatBigDecimalToString(value: BD.BigDecimal, maxDecimalPlaces?: number): string;
12490
+
10047
12491
  }
10048
12492
  declare module '@layerfi/components/utils/bills' {
10049
12493
  import { Bill } from '@layerfi/components/types/bills';
@@ -10268,12 +12712,16 @@ declare module '@layerfi/components/utils/swr/defaultSWRConfig' {
10268
12712
 
10269
12713
  }
10270
12714
  declare module '@layerfi/components/utils/swr/useGlobalInvalidator' {
12715
+ type GlobalInvalidateOptions = {
12716
+ withPrecedingOptimisticUpdate?: boolean;
12717
+ };
10271
12718
  export function useGlobalInvalidator(): {
10272
- invalidate: (predicate: (tags: ReadonlyArray<string>) => boolean) => Promise<undefined[]>;
12719
+ invalidate: (predicate: (tags: ReadonlyArray<string>) => boolean, { withPrecedingOptimisticUpdate }?: GlobalInvalidateOptions) => Promise<undefined[]>;
10273
12720
  };
10274
12721
  export function useGlobalOptimisticUpdater(): {
10275
12722
  optimisticUpdate: <unsafe_TData>(predicate: (tags: ReadonlyArray<string>) => boolean, optimisticUpdateCallback: (displayedData: unsafe_TData) => unsafe_TData) => Promise<undefined[]>;
10276
12723
  };
12724
+ export {};
10277
12725
 
10278
12726
  }
10279
12727
  declare module '@layerfi/components/utils/swr/withSWRKeyTags' {
@@ -10282,6 +12730,7 @@ declare module '@layerfi/components/utils/swr/withSWRKeyTags' {
10282
12730
  }
10283
12731
  declare module '@layerfi/components/utils/time/timeUtils' {
10284
12732
  export const toLocalDateString: (date: Date) => string;
12733
+ export function getDueDifference(dueDate: Date): number;
10285
12734
 
10286
12735
  }
10287
12736
  declare module '@layerfi/components/utils/vendors' {
@@ -10368,6 +12817,7 @@ declare module '@layerfi/components/views/BankTransactionsWithLinkedAccounts/Ban
10368
12817
  showTitle?: boolean;
10369
12818
  elevatedLinkedAccounts?: boolean;
10370
12819
  showBreakConnection?: boolean;
12820
+ showCustomerVendor?: boolean;
10371
12821
  showDescriptions?: boolean;
10372
12822
  showLedgerBalance?: boolean;
10373
12823
  showReceiptUploads?: boolean;
@@ -10382,7 +12832,7 @@ declare module '@layerfi/components/views/BankTransactionsWithLinkedAccounts/Ban
10382
12832
  mobileComponent?: MobileComponentType;
10383
12833
  stringOverrides?: BankTransactionsWithLinkedAccountsStringOverrides;
10384
12834
  }
10385
- export const BankTransactionsWithLinkedAccounts: ({ title, showTitle, elevatedLinkedAccounts, mode, showBreakConnection, showDescriptions, showLedgerBalance, showReceiptUploads, showTags, showTooltips, showUnlinkItem, showUploadOptions, mobileComponent, stringOverrides, }: BankTransactionsWithLinkedAccountsProps) => import("react/jsx-runtime").JSX.Element;
12835
+ export const BankTransactionsWithLinkedAccounts: ({ title, showTitle, elevatedLinkedAccounts, mode, showBreakConnection, showCustomerVendor, showDescriptions, showLedgerBalance, showReceiptUploads, showTags, showTooltips, showUnlinkItem, showUploadOptions, mobileComponent, stringOverrides, }: BankTransactionsWithLinkedAccountsProps) => import("react/jsx-runtime").JSX.Element;
10386
12836
  export {};
10387
12837
 
10388
12838
  }