import DataLoader from 'dataloader';
import type { Currency } from '../../../shared/enums.js';
import { AdminContextProvider } from '../../admin-context/providers/admin-context.provider.js';
import { TenantAwareDBClient } from '../../app-providers/tenant-db-client.js';
import type { IDeleteBusinessTaxCategoryParams, IGetAllTaxCategoriesResult, IInsertBusinessTaxCategoryParams, IInsertTaxCategoryParams, IUpdateBusinessTaxCategoryParams, IUpdateTaxCategoryParams } from '../types.js';
export declare class TaxCategoriesProvider {
    private db;
    private adminContextProvider;
    constructor(db: TenantAwareDBClient, adminContextProvider: AdminContextProvider);
    private batchTaxCategoryByBusinessIDs;
    taxCategoryByBusinessIDsLoader: DataLoader<string, IGetAllTaxCategoriesResult | undefined, string>;
    private batchTaxCategoryByIDs;
    taxCategoryByIdLoader: DataLoader<string, IGetAllTaxCategoriesResult | undefined, string>;
    private batchTaxCategoriesBySortCodes;
    taxCategoriesBySortCodeLoader: DataLoader<number, IGetAllTaxCategoriesResult[], number>;
    private batchTaxCategoryByFinancialAccountIdsAndCurrencies;
    taxCategoryByFinancialAccountIdsAndCurrenciesLoader: DataLoader<{
        financialAccountId: string;
        currency: Currency;
    }, IGetAllTaxCategoriesResult | undefined, string>;
    private batchTaxCategoryByFinancialAccountOwnerIds;
    taxCategoryByFinancialAccountOwnerIdsLoader: DataLoader<string, import("../types.js").IGetTaxCategoryByFinancialAccountOwnerIdsResult[], string>;
    private batchTaxCategoryByFinancialAccountIds;
    taxCategoryByFinancialAccountIdsLoader: DataLoader<string, import("../types.js").IGetTaxCategoryByFinancialAccountIdsResult[], string>;
    getAllTaxCategories(): Promise<IGetAllTaxCategoriesResult[]>;
    updateTaxCategory(params: IUpdateTaxCategoryParams): Promise<import("../types.js").IUpdateTaxCategoryResult[]>;
    updateBusinessTaxCategory(params: IUpdateBusinessTaxCategoryParams): Promise<import("../types.js").IUpdateBusinessTaxCategoryResult[]>;
    insertTaxCategory(params: IInsertTaxCategoryParams): Promise<import("../types.js").IInsertTaxCategoryResult[]>;
    insertBusinessTaxCategory(params: IInsertBusinessTaxCategoryParams): Promise<import("../types.js").IInsertBusinessTaxCategoryResult[]>;
    deleteBusinessTaxCategory(params: IDeleteBusinessTaxCategoryParams): Promise<import("../types.js").IDeleteBusinessTaxCategoryResult[]>;
    deleteTaxCategoryById(taxCategoryId: string): Promise<void>;
    replaceTaxCategory(targetTaxCategoryId: string, taxCategoryIdToReplace: string, deleteTaxCategory?: boolean): Promise<void>;
    invalidateTaxCategoryById(taxCategoryId: string): void;
    clearCache(): void;
}
