import { ELimitSettings, IReceivableAvailability, IAvailabilityLimits, IAvailabilitySettings, IAvailabilitySummary, IReceivableAvailabilityView } from '../models/ReceivableAvailability.model';
import { IUser } from '../interfaces/auth-user.interface';
import { IReceivableAvailabilityItemView } from '../models/ReceivableAvailabilityItem.model';
import { IPaginatorOptions } from '../interfaces/collaterals.interface';
import { IInventoryAvailabilitySummary, InventoryAvailabilityPaginators } from '../models/InventoryAvailability.model';
import { IReserveSummary } from '../models/Reserve.model';
import { IEquipmentSummary } from '../models/Equipment.model';
import { ICollateralAdjustmentSummary } from '../models/CollateralAdjustment.model';
import { CollateralAdjustmentsService } from './collateral-adjustments.service';
import { CollateralsService } from './collaterals.service';
import { EquipmentService } from './equipment.service';
import { InventoryAvailabilityService } from './inventory-availability.service';
import { LoanStatementService } from './loan-statement.service';
import { LoanTransactionsService } from './loan-transactions.service';
import { ManualEntryService } from './manual-entry.service';
import { ReserveService } from './reserve.service';
import { SignsService } from './signs.service';
type IMappedSettings = {
    [_key in ELimitSettings]: number;
};
export interface IAvailabilityFullSummary {
    reserve: IReserveSummary;
    equipment: IEquipmentSummary;
    inventory: IInventoryAvailabilitySummary[];
    receivable: IAvailabilitySummary;
    loanBalances: {
        TERM: number;
        REVOLVER: number;
    };
    collateralAdjustment: {
        summary: ICollateralAdjustmentSummary;
    };
    manualInputs: {
        receivableAvailability: boolean;
        inventoryAvailability: boolean;
    };
    accruedStatement: number;
}
export declare const START_PAGINATORS: InventoryAvailabilityPaginators;
export declare class AvailabilityService {
    private readonly collateralAdjustmentsService;
    private readonly collateralsService;
    private readonly equipmentService;
    private readonly inventoryAvailabilityService;
    private readonly loanStatementService;
    private readonly loanTransactionsService;
    private readonly manualEntryService;
    private readonly reserveService;
    private readonly signsService;
    constructor(collateralAdjustmentsService: CollateralAdjustmentsService, collateralsService: CollateralsService, equipmentService: EquipmentService, inventoryAvailabilityService: InventoryAvailabilityService, loanStatementService: LoanStatementService, loanTransactionsService: LoanTransactionsService, manualEntryService: ManualEntryService, reserveService: ReserveService, signsService: SignsService);
    recombineGroups(calculationsSettings: IAvailabilitySettings): Promise<IMappedSettings>;
    calculateAvailability(bbcDateId: string, paginatorOptions: IPaginatorOptions, user: IUser): Promise<IReceivableAvailabilityView>;
    getAvailability(bbcDateId: string, paginatorOptions: IPaginatorOptions, user: IUser): Promise<IReceivableAvailabilityView>;
    getAvailabilityItemsWithFilter(bbcDateId: string, itemsFilter: string): Promise<{
        itemsFilter: any;
        invoiceItems: any[];
        customerItems: any[];
    }>;
    foundOrCreateAvailability(bbcDateId: string, paginatorOptions: IPaginatorOptions, user: IUser): Promise<IReceivableAvailabilityView>;
    findCalculatedAvailability(bbcDateId: string): Promise<IReceivableAvailabilityView>;
    saveCalculatedAvailabilitySettings(bbcDateId: string, settings: IAvailabilitySettings): Promise<void>;
    saveLimitSettings(bbcDateId: string, limitSettings: {
        [limitSettingsName: string]: IAvailabilityLimits[];
    }): Promise<void>;
    calculateAvailabilitySummary(newCalculation: IReceivableAvailability): Promise<IAvailabilitySummary>;
    saveCalculatedAvailability(newCalculation: IReceivableAvailability): Promise<void>;
    getCalculationSettings(bbcDateId: string): Promise<IAvailabilitySettings>;
    getAllSettings(bbcDateId?: string): Promise<{}>;
    getAvailabilityItems(availabilityId: string, paginatorOptions: IPaginatorOptions): Promise<IReceivableAvailabilityItemView[]>;
    getUniqueCustomers(availabilityId: string): Promise<{
        customerTitle: string;
    }[]>;
    getAllSummaries(bbcDateId: string, user: IUser): Promise<IAvailabilityFullSummary>;
    isBBCEditable(bbcDateId: string): Promise<boolean>;
    toggleManualReceivableAvailability(bbcDateId: string, useManualInputs: boolean): Promise<void>;
}
export {};
