import { IDataObject, NodeApiError } from 'n8n-workflow';
export interface SalesOrderLineItem {
    item_id?: string;
    name?: string;
    description?: string;
    quantity: number;
    rate: number;
    tax_id?: string;
    discount?: number;
    unit?: string;
    item_total?: number;
    rate_includes_tax?: boolean;
}
export interface SalesOrderCustomField {
    customfield_id: string;
    value: string;
}
export interface TaxData {
    tax_id: string;
    tax_name: string;
    tax_percentage: number;
}
export interface SalesOrderPayload {
    customer_id: string;
    salesorder_number?: string;
    date?: string;
    reference_number?: string;
    billing_address_id?: string;
    shipping_address_id?: string;
    currency_id?: string;
    exchange_rate?: number;
    line_items: SalesOrderLineItem[];
    shipping_charge?: number;
    adjustment?: number;
    adjustment_description?: string;
    custom_fields?: SalesOrderCustomField[];
    notes?: string;
    terms?: string;
    subject?: string;
    discount?: number;
    discount_type?: 'entity_level' | 'item_level';
    is_discount_before_tax?: boolean;
    template_id?: string;
    salesperson_name?: string;
    delivery_date?: string;
    shipment_date?: string;
    place_of_supply?: string;
    gst_treatment?: 'business_gst' | 'business_none' | 'overseas' | 'consumer';
    gst_no?: string;
}
export interface ValidationResult {
    isValid: boolean;
    errors: string[];
    warnings: string[];
    normalizedData?: SalesOrderPayload;
}
export declare const taxPercentageCache: Map<string, number>;
export declare function getTaxPercentage(taxId: string, zohoApiRequest: any, context: any): Promise<number>;
export declare function adjustRateForTax(item: SalesOrderLineItem, taxPercentage: number, isGlobalTaxInclusive?: boolean): SalesOrderLineItem;
export declare function validateAndNormalizeSalesOrder(inputData: any, _context?: string): ValidationResult;
export declare function createValidationError(result: ValidationResult, context?: string): NodeApiError;
export declare function generateSampleSalesOrder(): SalesOrderPayload;
export declare function sanitizeSalesOrderPayload(payload: SalesOrderPayload): IDataObject;
//# sourceMappingURL=SalesOrderNormalizer.d.ts.map