import { VerbType, MessagePayload, EventMessage } from "../message";
import { FinancialEntry } from "./financial_entry";
export declare enum ExpenseClass {
    INBOUND_SHIPMENT = "IS",
    ORDER = "ORD",
    PURCHASE_ORDER = "PO",
    ITEM = "ITM",
    STORE = "STR"
}
export declare enum ExpenseWeightType {
    VOLUMETRIC = "VOLUMETRIC",
    UNITARY = "UNITARY",
    MONETARY = "MONETARY"
}
export declare class ExpenseRelation {
    targetId: string;
    weight: number;
    constructor(targetId: string, weight: number);
}
export declare class Payment {
    id: string;
    date: Date;
    vat?: FinancialEntry;
    amount: FinancialEntry;
    constructor(id: string, date: Date, amount: FinancialEntry);
}
export declare class Expense {
    id: string;
    accountableEntity: string;
    purchaseDate: Date;
    title: string;
    note: string;
    label: string;
    class: ExpenseClass;
    weightType: ExpenseWeightType;
    payments: Array<Payment>;
    relations: Array<ExpenseRelation>;
    constructor(id: string, accoundableEntity: string, purchaseDate: Date, _class: ExpenseClass);
    strip: () => void;
    buildMessage: (storeId: string, service: string, verb: VerbType, payloadEnricher: (expense: Expense) => MessagePayload) => EventMessage;
}
