/**
 * Contract Entity
 * Contratos con clientes y subcontratistas
 *
 * @module Contracts
 * @table contracts.contracts
 */
import { Tenant } from '../../core/entities/tenant.entity';
import { User } from '../../core/entities/user.entity';
import { ContractAddendum } from './contract-addendum.entity';
export type ContractType = 'client' | 'subcontractor';
export type ContractStatus = 'draft' | 'review' | 'approved' | 'active' | 'completed' | 'terminated';
export type ClientContractType = 'desarrollo' | 'llave_en_mano' | 'administracion';
export declare class Contract {
    id: string;
    tenantId: string;
    projectId: string;
    fraccionamientoId: string;
    contractNumber: string;
    contractType: ContractType;
    clientContractType: ClientContractType;
    name: string;
    description: string;
    clientName: string;
    clientRfc: string;
    clientAddress: string;
    subcontractorId: string;
    specialty: string;
    startDate: Date;
    endDate: Date;
    contractAmount: number;
    currency: string;
    paymentTerms: string;
    retentionPercentage: number;
    advancePercentage: number;
    status: ContractStatus;
    submittedAt: Date;
    submittedById: string;
    legalApprovedAt: Date;
    legalApprovedById: string;
    approvedAt: Date;
    approvedById: string;
    signedAt: Date;
    terminatedAt: Date;
    terminationReason: string;
    documentUrl: string;
    signedDocumentUrl: string;
    progressPercentage: number;
    invoicedAmount: number;
    paidAmount: number;
    notes: string;
    createdAt: Date;
    createdById: string;
    updatedAt: Date;
    updatedById: string;
    deletedAt: Date;
    deletedById: string;
    get remainingAmount(): number;
    get isExpiring(): boolean;
    tenant: Tenant;
    createdBy: User;
    approvedBy: User;
    addendums: ContractAddendum[];
}
//# sourceMappingURL=contract.entity.d.ts.map