import { CSSProperties } from 'react';
import { ForwardRefExoticComponent } from 'react';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import { RefAttributes } from 'react';

declare interface AdditionalLineItem {
    bbox: BoundingBox[];
    value: string;
    name: string;
    fieldLabel?: string;
    entries?: LineItem[];
}

declare interface AdditionalLineItem_2 {
    bbox: number[] | BoundingBox_2[];
    name: string;
    value: string;
    entries: Entry[];
}

export declare interface ApplicableCOA {
    accountId: string;
    accountName: string;
}

declare interface ApplicableCOA_2 {
    accountId: string;
    accountName: string;
}

declare interface Assets {
    calculatedValue?: string;
    TotalAssets: SectionNode;
    CurrentAssets: {
        InterestReceivable: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        OtherReceivables: {
            Other: SectionNode;
        } & SectionBasicFields;
        OtherCurrentAssets: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        TotalCurrentAssets: SectionNode;
        WorkInProgress: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        GrantReceivables: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        Inventories: {
            FuelInventory: SectionNode;
            RetailInventory: SectionNode;
            WarehouseSupplies: SectionNode;
            MerchandiseInventory: SectionNode;
            RawMaterialsInventory: SectionNode;
            ConstructionInProgress: SectionNode;
            FinishedGoodsInventory: SectionNode;
            WorkInProcessInventory: SectionNode;
            PharmaceuticalInventory: SectionNode;
            FuneralAndBurialInventory: SectionNode;
            RestaurantAndBarInventory: SectionNode;
            ConstructionMaterialsInventory: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
            Other: SectionNode;
        } & SectionBasicFields;
        LoansReceivable: {
            LoanLossReserve: SectionNode;
            LoansHeldForSale: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
        } & SectionBasicFields;
        PrepaidExpenses: {
            PrepaidRent: SectionNode;
            PrepaidInsurance: SectionNode;
            PrepaidMediaBuys: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
            OtherPrepaidServices: SectionNode;
            PrepaidCloudServices: SectionNode;
            PrepaidSubscriptions: SectionNode;
            PrepaidFoodAndBeverageSupplies: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
        OriginationCosts: {
            LoanOriginationCosts: SectionNode;
            LeaseOriginationCosts: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
        } & SectionBasicFields;
        SecurityDeposits: {
            ClientDeposits: SectionNode;
            ContractDepositsHeld: SectionNode;
            SecurityDepositsHeld: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
            Other: SectionNode;
        } & SectionBasicFields;
        AdditionalLineItems?: AdditionalLineItem[];
        CashAndCashEquivalents: {
            PettyCash: SectionNode;
            fieldLabel: SectionNode;
            BankAccounts: SectionNode;
            TreasuryBills: SectionNode;
            EndowmentFunds: SectionNode;
            RestrictedCash: SectionNode;
            CommercialPaper: SectionNode;
            MoneyMarketFunds: SectionNode;
            UnrestrictedCash: SectionNode;
            Other: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
        } & SectionBasicFields;
        TradeAccountsReceivable: {
            NotesReceivable: SectionNode;
            PatientReceivables: SectionNode;
            AdditionalLineItems?: AdditionalLineItem[];
            AllowanceForBadDebts: SectionNode;
            CreditCardReceivables: SectionNode;
            TradeAccountsReceivableGross: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
    };
    NonCurrentAssets: {
        Goodwill: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        TotalNonCurrentAssets: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        RightOfUseAssets: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        DeferredTaxAssets: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        InvestmentProperty: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        LongTermInvestments: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        LongTermReceivables: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        IntangibleAssets: {
            Patents: SectionNode;
            Copyrights: SectionNode;
            Trademarks: SectionNode;
            IntangibleAssetsGross: SectionNode;
            AccumulatedAmortization: SectionNode;
            CapitalizedSoftwareDevelopment: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            Other: SectionNode;
        } & SectionBasicFields;
        AdditionalLineItems: AdditionalLineItem[];
        RelatedParties: {
            LoansToPartners: SectionNode;
            LoansToAffiliates: SectionNode;
            LoansToShareholders: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            Other: SectionNode;
        } & SectionBasicFields;
        OtherNonCurrentAssets: SectionNode & {
            AdditionalLineItems?: AdditionalLineItem[];
        };
        PropertyPlantAndEquipment: {
            Land: SectionNode;
            Vehicles: SectionNode;
            FleetVehicles: SectionNode;
            LeasedVehicles: SectionNode;
            NetworkHardware: SectionNode;
            DeliveryVehicles: SectionNode;
            LeasedRealEstate: SectionNode;
            ServiceEquipment: SectionNode;
            ComputerEquipment: SectionNode;
            WarehouseEquipment: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            DataCenterEquipment: SectionNode;
            LeasedConsumerGoods: SectionNode;
            WarehouseRealEstate: SectionNode;
            PointOfSaleEquipment: SectionNode;
            ServerInfrastructure: SectionNode;
            ConstructionEquipment: SectionNode;
            LeaseholdImprovements: SectionNode;
            MachineryAndEquipment: SectionNode;
            ManufacturingFacility: SectionNode;
            TicketingSystemAssets: SectionNode;
            VenueEquipmentAndProps: SectionNode;
            AccumulatedDepreciation: SectionNode;
            RepairToolsAndEquipment: SectionNode;
            ArtAndExhibitCollections: SectionNode;
            PrepaidBandwidthServices: SectionNode;
            StoreFixturesAndDisplays: SectionNode;
            LeasedCommercialEquipment: SectionNode;
            EventEquipmentAndMaterials: SectionNode;
            KitchenAndFoodPrepEquipment: SectionNode;
            LaundryAndCleaningEquipment: SectionNode;
            AmusementRidesAndAttractions: SectionNode;
            SpecializedEquipmentAndTools: SectionNode;
            StudioAndProductionEquipment: SectionNode;
            TechnicalSoftwareAndLicenses: SectionNode;
            PatientTransportationVehicles: SectionNode;
            ServiceVehiclesAndMobileUnits: SectionNode;
            PropertyPlantAndEquipmentGross: SectionNode;
            TrackingAndTelematicsEquipment: SectionNode;
            LodgingFacilitiesAndFurnishings: SectionNode;
            RVParkAndCampgroundInfrastructure: SectionNode;
            MedicalDiagnosticOrImagingEquipment: SectionNode;
            WasteHandlingAndRemediationEquipment: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
    };
    AdditionalLineItems: AdditionalLineItem[];
}

export declare interface BalanceSheetType {
    Financials: FinancialItem[];
    CompanyName: {
        bbox: BoundingBox[];
        value: string;
    };
    DocumentDate: {
        bbox: BoundingBox[];
        value: string;
    };
    ReportingDates: ReportingDate[];
}

declare interface BBox {
    x1: number;
    y1: number;
    x2: number;
    y2: number;
    pageWidth: number;
    pageHeight: number;
    pageNumber: number;
}

declare interface BBox_2 {
    x1: number;
    y1: number;
    x2: number;
    y2: number;
    pageWidth: number;
    pageHeight: number;
    pageNumber: number;
}

declare interface BoundingBox {
    x1: string;
    x2: string;
    y1: string;
    y2: string;
    pageWidth: string;
    pageHeight: string;
    pageNumber: string;
}

declare interface BoundingBox_2 {
    x1: number;
    x2: number;
    y1: number;
    y2: number;
    pageWidth: number;
    pageHeight: number;
    pageNumber: number;
}

declare interface CalculatedCOA {
    label: string;
    value: string;
    formula: string;
    accountId: string;
    formattedValue?: string;
}

export declare interface CashflowEntityResult {
    entityId: string;
    years: string[];
    groups: CashflowGroupByYear[];
}

export declare interface CashflowGroupByYear {
    groupKey: string;
    groupName: string;
    items: CashflowItemByYear[];
}

export declare interface CashflowItemByYear {
    key: string;
    name: string;
    isTotal?: boolean;
    format: 'currency';
    formula?: string;
    currentYearVariables?: Record<string, string>;
    priorYearVariables?: Record<string, string>;
    byYear: Record<string, CashflowItemByYearValue>;
}

export declare interface CashflowItemByYearValue {
    value: number | null;
    formatted: string | null;
    error: string | null;
}

export declare type ChartOfAccountsData = {
    entity?: {
        id: string;
        name: string;
    };
    industry?: string;
    documentData?: {
        id: string;
        url: string;
        name: string;
        mimeType?: string;
        expiresAt?: string;
    }[];
    extractions?: {
        taxScheduleAdjustments?: TaxScheduleAdjustmentExtraction[];
    };
    coasByYear: {
        id: string;
        spreadType: string;
        documentId?: string;
        subType?: string;
        formType?: string;
        year: string;
        startPeriod?: FieldObj;
        endPeriod?: FieldObj;
        coas: RawCOA_2[];
        calculatedCoas?: CalculatedCOA[];
        commonSizing?: Array<{
            accountId: string;
            value: string;
            formattedValue: string;
            entries?: {
                name: string;
                value: string;
                formattedValue: string;
            }[];
        }>;
        uncategorizedEntries?: {
            name: string;
            value: string;
            rawValue?: string;
            bbox?: BBox[];
        }[];
        /** When true, entry cells in this column use the input cell background. Defaults to true when subType === 'UWProjection'. */
        applyInputCellBackground?: boolean;
        /** When true, this extraction is used in calculations. At any given time only 1 can be selected per year/spreadType. */
        useInCalculation?: boolean;
        /** How this extraction was created. 'manual' = user-added empty year; 'document' = extracted from a document. */
        sourceType?: 'manual' | 'document' | 'calculated';
    }[];
    applicableCOAs?: Record<string, ApplicableCOA[]>;
    /** Default COA accounts per spread type. Used to pre-populate rows when adding a new year with no existing extractions. */
    defaultCOAs?: Partial<Record<COASpreadType, ApplicableCOA[]>>;
    defaultExtractions?: Record<string, ApplicableCOA[]>;
};

export declare const ChartOfAccountsReview: ForwardRefExoticComponent<ChartOfAccountsReviewProps & RefAttributes<COAReviewRef>>;

declare interface ChartOfAccountsReviewProps {
    data: ChartOfAccountsData;
    editable?: boolean;
    defaultTab?: COASpreadType;
    taxScheduleAdjustmentEditable?: boolean;
    searchText?: string;
    theme?: Theme;
    /** Controls the outer container dimensions. Merged with internal overflow styles. Defaults to da-h-full. */
    className?: string;
    /** Inline styles applied to the outer container. */
    style?: CSSProperties;
    showDocumentByDefault?: boolean;
    cashflowData?: CashflowEntityResult | null;
    onCalculateCashflow?: () => void;
    onRefreshCashflow?: () => void;
    isCashflowLoading?: boolean;
    /** When true, allows inline editing of cell values. */
    enableInlineEdit?: boolean;
    /** Called whenever any edit is made. coaIds = changed coasByYear UUIDs; extractionIds = changed taxScheduleAdjustment UUIDs. */
    onEdit?: (changes: {
        coaIds: string[];
        extractionIds: string[];
    }) => void;
    onRemove?: (changes: {
        coaIds: string[];
        extractionIds: string[];
    }) => void;
    onAdd?: (changes: {
        coaIds: string[];
        extractionIds: string[];
    }) => void;
    /** Called when a Form 8825 property is added via the Add Property dialog. Use this to also create a collateral record etc. */
    onForm8825PropertyAdded?: (data: Form8825PropertyFormData) => void;
    /** Property financial data from entity_financial_data (spread_type = EntityPropertyPnl). Displayed as property columns on the Form 8825 tab. */
    form8825Data?: Form8825PropertyData[];
    /** Called when the user clicks the Sync Aggregates button on the Income Statement tab. */
    onSyncEntityPropertyPnl?: () => void;
    /** Called when the user clicks the Recalculate button on the Aggregate tab. */
    onRecalculateAggregates?: () => void;
    /** List of tabs (spread types) to hide. */
    tabsToHide?: COASpreadType[];
}

declare const COA_SPREAD_TYPES: readonly ["BalanceSheet", "ProfitAndLossStatement", "CashFlowStatement", "EntityPropertyPnl"];

export declare interface COAReviewRef {
    getData: () => ChartOfAccountsData;
    resetData: () => void;
}

declare type COASpreadType = (typeof COA_SPREAD_TYPES)[number];

declare interface Cogs {
    calculatedValue?: string;
    [key: string]: FinancialField | string | undefined;
}

export declare const DocumentExtractionReview: ({ DocumentType, editable, searchText, reviewRef, data, extractionFeedback, theme }: DocumentExtractionReviewProps) => JSX_2.Element;

declare interface DocumentExtractionReviewProps {
    DocumentType: ExtractionReviewSupportedDocTypes;
    editable: boolean;
    searchText: string;
    reviewRef: React.Ref<ReviewRef>;
    data: any;
    extractionFeedback: any;
    theme?: Theme;
}

export declare const DocumentRaw: (props: DocumentRawProps) => JSX_2.Element;

export declare interface DocumentRawDocument {
    id?: string;
    name?: string;
    type?: string;
    url?: string;
}

export declare interface DocumentRawField {
    key: string;
    value?: string;
    bbox?: BBox[];
}

export declare interface DocumentRawProps {
    data: DocumentRawSection[];
    document: DocumentRawDocument;
}

export declare interface DocumentRawSection {
    sectionName: string;
    fields: DocumentRawField[];
}

declare interface Entry {
    bbox: BoundingBox_2[];
    name: string;
    value: string;
}

declare interface Equity {
    calculatedValue?: string;
    CommonStock: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    TotalEquity: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    PartnerDraws: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    TreasuryStock: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    PartnerCapital: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    PreferredStock: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    RetainedEarnings: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    OtherEquityEntries: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    AdditionalLineItems: AdditionalLineItem[];
    CurrentYearEarnings: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    MemberContributions: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    MemberDistributions: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    NonControllingInterest: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    AdditionalPaidInCapital: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
    AccumulatedOtherComprehensiveIncomeLoss: SectionNode & {
        AdditionalLineItems: AdditionalLineItem[];
    };
}

declare interface Expense {
    calculatedValue?: string;
    Cogs: Cogs;
    Operating: OperatingExpenses;
    AdditionalLineItems?: AdditionalLineItem_2[];
}

export declare enum ExtractionReviewSupportedDocTypes {
    BalanceSheet = "BalanceSheet",
    ProfitAndLoss = "ProfitAndLoss",
    CapitalizationTable = "CapitalizationTable",
    FixedAssetsSchedule = "FixedAssetsSchedule",
    BusinessPlan = "BusinessPlan",
    BusinessDebtSchedule = "BusinessDebtSchedule",
    BusinessInventorySchedule = "BusinessInventorySchedule",
    AccountReceivablesAgingReport = "AccountReceivablesAgingReport",
    AccountsPayableAgingReport = "AccountsPayableAgingReport",
    SourcesAndUseOfFunds = "SourcesAndUseOfFunds",
    ManagementResumes = "ManagementResumes",
    BankStatements = "BankStatements",
    BusinessCreditReport = "BusinessCreditReport",
    CommercialAppraisalReport = "CommercialAppraisalReport",
    BackgroundReportBusiness = "BackgroundReportBusiness",
    PersonalBackgroundReport = "PersonalBackgroundReport",
    CashFlowStatement = "CashFlowStatement",
    VendorQuoteOrInvoice = "VendorQuoteOrInvoice",
    CustomerList = "CustomerList",
    PersonalCreditReport = "PersonalCreditReport",
    PowersOfAttorney = "PowersOfAttorney",
    CertificateOfInsurance = "CertificateOfInsurance",
    Safer = "Safer",
    SecretaryOfState = "SecretaryOfState",
    VendorWiringInstructions = "VendorWiringInstructions",
    DrivingLicense = "DrivingLicense",
    VoidedCheck = "VoidedCheck",
    ArticlesOfIncorporation = "ArticlesOfIncorporation",
    TitleCopy = "TitleCopy",
    BusinessTaxReturn = "BusinessTaxReturn",
    PersonalTaxReturn = "PersonalTaxReturn",
    PersonalFinancialStatement = "PersonalFinancialStatement",
    AuditedBusinessFinancialStatement = "AuditedBusinessFinancialStatement",
    BusinessFinancialStatement = "BusinessFinancialStatement",
    RentRoll = "RentRoll",
    CustomerContract = "CustomerContract",
    CreditReport = "CreditReport",
    Other = "Other"
}

export declare type FieldObj = {
    value: string;
    rawValue?: string;
    bbox?: BBox[];
};

declare type FieldObj_2 = {
    value: string;
    rawValue?: string;
    bbox?: BBox_2[];
};

declare interface FinancialField {
    bbox: number[] | BoundingBox_2[];
    value: string;
    entries: Entry[];
    fieldLabel: string;
}

declare interface FinancialItem {
    Year: string;
    StatementStartPeriod: {
        value: string;
        bbox: BoundingBox[];
    };
    StatementEndPeriod: {
        value: string;
        bbox: BoundingBox[];
    };
    Assets: Assets;
    Equity: Equity;
    Liabilities: Liabilities;
    TotalLiabilitiesAndEquity: SectionNode;
    AdditionalLineItems?: AdditionalLineItem[];
}

declare interface FinancialYear {
    Year: string;
    StatementStartPeriod: {
        value: string;
        bbox: BoundingBox_2[];
    };
    StatementEndPeriod: {
        value: string;
        bbox: BoundingBox_2[];
    };
    Income: Income;
    Expense: Expense;
    NetIncome: FinancialField;
    GrossProfit: FinancialField;
    OtherIncome: OtherIncomeExpense;
    OtherExpense: OtherIncomeExpense;
    AdditionalLineItems?: AdditionalLineItem_2[];
}

declare interface Form8825PropertyData {
    id: string;
    /** Display name for the property column (e.g. property address or name). */
    propertyName: string;
    /** Tax year this data belongs to (e.g. "2022"). Used to populate the year tabs. */
    year: string;
    coas: RawCOA_2[];
    calculatedCoas?: CalculatedCOA[];
    commonSizing?: Array<{
        accountId: string;
        value: string;
        formattedValue: string;
        entries?: {
            name: string;
            value: string;
            formattedValue: string;
        }[];
    }>;
}

declare interface Form8825PropertyFormData {
    name: string;
    type: 'CommercialRealEstateOffice' | 'CommercialRealEstateMultifamily' | 'CommercialRealEstateRetail';
    address: {
        addressLine1: string;
        addressLine2?: string;
        city: string;
        state: string;
        zip: string;
    };
    taxYear: string;
    makeCollateral: boolean;
}

declare interface Income {
    calculatedValue?: string;
    Operating: OperatingIncome;
    AdditionalLineItems?: AdditionalLineItem_2[];
}

declare interface Liabilities {
    calculatedValue?: string;
    TotalLiabilities: SectionNode;
    AdditionalLineItems: AdditionalLineItem[];
    CurrentLiabilities: {
        AccountsPayable: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        AdditionalLineItems: AdditionalLineItem[];
        OtherCurrentLiabilities: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        TotalCurrentLiabilities: SectionNode;
        ShortTermDebt: {
            CreditCardsPayable: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            CreditFacilitiesPayable: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            LeaseLiabilitiesCurrent: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            LineOfCredit: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            NotesPayable: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            SecuritizedLoanLiabilities: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            ShortTermLoans: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            WarehouseLineOfCredit: SectionNode & {
                AdditionalLineItems: AdditionalLineItem[];
            };
            AdditionalLineItems: AdditionalLineItem[];
            Other: SectionNode;
        } & SectionBasicFields;
        ClientAdvances: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        AccruedExpenses: {
            AccruedTaxes: SectionNode;
            AccruedInterest: SectionNode;
            Accruedexpenses: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            AccruedSalariesAndWages: SectionNode;
            AccruedSalesTaxes: SectionNode;
            AccruedPayrollTaxes: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
        DeferredRevenue: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        PerformerAdvances: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        TaxesPayable: {
            StateIncomeTaxesPayable: SectionNode;
            FederalIncomeTaxesPayable: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
        ClientRetainersHeld: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        AccruedInterestPayable: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        CustomerEscrowLiabilities: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        CurrentPortionLongTermDebt: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        CurrentMaturitiesLongTermDebt: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        UnpaidInvoices: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        CustomerDeposits: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        ContractorPayables: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        MortgagesPayable: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        VendorPayables: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        OtherPayables: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        UnearnedIncome: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
    };
    NonCurrentLiabilities: {
        LongTermDebt: {
            Debentures: SectionNode;
            SeniorNotes: SectionNode;
            BondsPayable: SectionNode;
            ConvertibleDebt: SectionNode;
            MortgagePayable: SectionNode;
            SubordinatedDebt: SectionNode;
            LongTermBankLoans: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            CapitalLeaseObligations: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
        AdditionalLineItems: AdditionalLineItem[];
        TotalNonCurrentLiabilities: SectionNode;
        TaxesPayable: {
            SalesTaxesPayable: SectionNode;
            IncomeTaxesPayable: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            Other: SectionNode;
        } & SectionBasicFields;
        LeaseLiabilities: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        PensionLiabilities: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        DeferredIncomeTaxes: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        AssetRetirementObligations: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        LeaseLiabilitiesNonCurrent: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        RelatedParties: {
            LoansFromPartners: SectionNode;
            LoansFromAffiliates: SectionNode;
            AdditionalLineItems: AdditionalLineItem[];
            LoansFromShareholders: SectionNode;
            Other: SectionNode;
        } & SectionBasicFields;
        OtherNonCurrentLiabilities: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
        PensionAndPostretirementBenefits: SectionNode & {
            AdditionalLineItems: AdditionalLineItem[];
        };
    };
}

declare interface LineItem {
    bbox: BoundingBox[];
    name: string;
    value: string;
}

declare interface MultifamilyUnit {
    unitNumber: string;
    tenantName: string;
    type: string;
    squareFootage: number;
    tenantType: string;
    status: string;
    leaseStart: string | null;
    leaseEnd: string | null;
    avgMarketRent: number;
    monthlyRent: number;
}

declare interface OperatingExpenses {
    calculatedValue?: string;
    [key: string]: FinancialField | string | undefined;
}

declare interface OperatingIncome {
    calculatedValue?: string;
    [key: string]: FinancialField | string | undefined;
}

declare interface OtherIncomeExpense {
    calculatedValue?: string;
    [key: string]: FinancialField | string | undefined;
}

export declare interface ProfitAndLossType {
    Financials: FinancialYear[];
    CompanyName: {
        bbox: number[];
        value: string;
    };
    DocumentDate: {
        bbox: number[];
        value: string;
    };
    ReportingDates: string[];
}

export declare const PropertyReview: ForwardRefExoticComponent<PropertyReviewProps & RefAttributes<PropertyReviewRef>>;

export declare type PropertyReviewData = {
    documentData?: {
        id: string;
        url: string;
        name: string;
        expiresAt?: string;
    }[];
    property: {
        details: {
            id: FieldObj_2;
            name: FieldObj_2;
            addressline1: FieldObj_2;
            addressline2: FieldObj_2;
            city: FieldObj_2;
            state: FieldObj_2;
            zip: FieldObj_2;
        };
        coasByYear: {
            id: string;
            formType: string;
            documentId: string;
            subType?: string;
            year: string;
            startPeriod?: FieldObj_2;
            endPeriod?: FieldObj_2;
            coas: RawCOA[];
            uncategorizedEntries?: {
                name: string;
                value: string;
                rawValue?: string;
                bbox?: BBox_2[];
            }[];
        }[];
        rentRoll?: {
            multifamily?: MultifamilyUnit[];
            retail?: RetailUnit[];
        };
    }[];
    applicableCOAs?: Record<string, ApplicableCOA_2[]>;
};

export declare interface PropertyReviewProps {
    data: PropertyReviewData;
    editable?: boolean;
    searchText?: string;
    theme?: Theme;
}

export declare interface PropertyReviewRef {
    getData: () => PropertyReviewData;
    resetData: () => void;
}

export declare interface RawCOA {
    accountId: string;
    value?: string;
    rawValue?: string;
    label?: string;
    bbox?: BBox_2[];
    entries?: {
        name?: string;
        value: string;
        rawValue?: string;
        bbox?: BBox_2[];
    }[];
}

declare interface RawCOA_2 {
    accountId: string;
    value?: string;
    rawValue?: string;
    label?: string;
    bbox?: BBox[];
    entries?: {
        name?: string;
        originalLabel?: string;
        value: string;
        rawValue?: string;
        bbox?: BBox[];
        note?: string;
    }[];
    note?: string;
}

declare interface ReportingDate {
    asOf: string;
    year: string;
}

declare interface RetailUnit {
    unitNumber: string;
    tenantName: string;
    squareFootage: number;
    percentage: number;
    tenantType: string;
    status: string;
    leaseStart: string | null;
    leaseEnd: string | null;
    renewalOptions: string;
    annualBaseRent: number;
    monthlyBaseRent: number;
    annualPSF: number;
    rentIncrease: number;
    rentBump: number;
    rentBumpDate: string;
    reimbursements: number;
    leaseType: string;
}

declare interface ReviewRef {
    getData: () => any;
    resetData: () => void;
}

declare interface SectionBasicFields {
    bbox: BoundingBox[];
    value: string;
    fieldLabel: string;
    calculatedValue?: string;
}

declare interface SectionNode extends SectionBasicFields {
    entries: LineItem[];
}

declare interface TaxScheduleAdjustmentEntry {
    accountId: string;
    label?: string;
    value: string;
    rawValue?: string;
    bbox?: BBox[];
}

declare interface TaxScheduleAdjustmentExtraction {
    id: string;
    year?: string;
    subType?: string;
    startPeriod?: FieldObj;
    endPeriod?: FieldObj;
    entries: TaxScheduleAdjustmentEntry[];
    applyInputCellBackground?: boolean;
    formType?: string;
}

declare interface Theme {
    palette?: {
        background?: string;
        backgroundDefault?: string;
        foreground?: string;
        primary?: {
            default?: string;
            light?: string;
            dark?: string;
            foreground?: string;
        };
        ring?: string;
    };
    avatar?: string;
}

export { }
