import { BaseEntity } from "./base.entity";
import { User } from "./user.entity";
import { Job } from "./job.entity";
import { TimesheetLine } from "./timesheet-line.entity";
import { EscrowWalletTransaction } from "./escrow-wallet-transaction.entity";
import { Hiring } from "./hiring.entity";
export declare enum InvoiceTypeEnum {
    WEEKLY = "WEEKLY",
    MONTHLY = "MONTHLY",
    FTE = "FTE"
}
export declare enum InvoiceStatusEnum {
    SUBMITTED = "SUBMITTED",
    UNDER_REVIEW = "UNDER_REVIEW",
    APPROVED = "APPROVED",
    REJECTED = "REJECTED"
}
export declare enum InvoicePaymentStatusEnum {
    PENDING = "PENDING",
    OVERDUE = "OVERDUE",
    INTRANSACTION = "INTRANSACTION",
    PAID = "PAID",
    REFUNDED = "REFUNDED"
}
export declare class Invoice extends BaseEntity {
    timesheetLineId: number;
    timesheetLine: TimesheetLine;
    jobId: number;
    job: Job;
    clientId: number;
    client: User;
    freelancerId: number;
    freelancer: User;
    invoiceUniqueId: string;
    issuedAt: Date;
    dueAt: Date;
    billingCycleFrom: Date;
    billingCycleTo: Date;
    billingHours: string;
    hourlyRate: string;
    billingAmount: string;
    billingMarkUpAmount: string;
    billingMarkUpPercentage: string;
    freelancerBillingAmount: string;
    freelancerCommissionPercentage: string;
    freelancerCommissionAmount: string;
    invoiceType: InvoiceTypeEnum;
    status: InvoiceStatusEnum;
    paymentStatus: InvoicePaymentStatusEnum;
    clientInvoiceUrl: string;
    freelancerInvoiceUrl: string;
    escrowWalletTransaction?: EscrowWalletTransaction;
    hiring?: Hiring;
}
