import { Repository, DataSource } from 'typeorm';
export declare class Contract {
    id: string;
    tenantId: string;
    proposalId: string;
    clientId: string;
    createdBy: string;
    number: string;
    title: string;
    startDate: string;
    endDate: string;
    adjustmentIndex: string;
    adjustmentRate: number;
    adjustmentMonth: number;
    noticeDays: number;
    subtotal: number;
    discount: number;
    total: number;
    autentiqueDocId: string;
    autentiqueDocUrl: string;
    autentiqueStatus: string;
    signedAt: Date;
    billingDay: number;
    paymentTerms: number;
    invoiceTrigger: string;
    invoiceDaysBefore: number;
    installmentsCount: number;
    installmentAmount: number;
    firstDueDate: string;
    notes: string;
    internalNotes: string;
    status: string;
    cancelledAt: Date;
    cancellationReason: string;
    items: ContractItem[];
    createdAt: Date;
    updatedAt: Date;
}
export declare class ContractItem {
    id: string;
    contractId: string;
    tenantId: string;
    productId: string;
    productVariantId: string;
    name: string;
    description: string;
    billingCycle: string;
    unitPrice: number;
    quantity: number;
    discount: number;
    total: number;
    serviceListItem: string;
    issAliquota: number;
    discrimination: string;
    sortOrder: number;
    contract: Contract;
    createdAt: Date;
}
export declare class CreateContractDto {
    proposalId?: string;
    clientId?: string;
    title?: string;
    startDate: string;
    endDate?: string;
    adjustmentIndex?: string;
    adjustmentRate?: number;
    adjustmentMonth?: number;
    noticeDays?: number;
    billingDay?: number;
    paymentTerms?: number;
    invoiceTrigger?: string;
    invoiceDaysBefore?: number;
    installmentsCount?: number;
    installmentAmount?: number;
    firstDueDate?: string;
    notes?: string;
    internalNotes?: string;
}
export declare class CancelContractDto {
    reason: string;
}
export declare class TerminateContractDto {
    reason: string;
    terminationDate?: string;
}
export declare class ContractsService {
    private readonly contractRepo;
    private readonly itemRepo;
    private readonly dataSource;
    constructor(contractRepo: Repository<Contract>, itemRepo: Repository<ContractItem>, dataSource: DataSource);
    private nextNumber;
    createFromProposal(tenantId: string, userId: string, proposalId: string, dto: CreateContractDto): Promise<Contract>;
    private createWithItems;
    findAll(tenantId: string, status?: string, clientId?: string): Promise<Contract[]>;
    findOne(tenantId: string, id: string): Promise<Contract>;
    activate(tenantId: string, id: string): Promise<Contract>;
    linkAutentique(tenantId: string, id: string, docId: string, docUrl?: string): Promise<void>;
    revertToDraft(tenantId: string, id: string): Promise<void>;
    markSigned(tenantId: string, id: string, docUrl?: string): Promise<Contract>;
    cancel(tenantId: string, id: string, dto: CancelContractDto): Promise<Contract>;
    terminate(tenantId: string, id: string, dto: TerminateContractDto): Promise<Contract>;
    generatePdf(tenantId: string, contractId: string): Promise<{
        pdfBase64: string;
        filename: string;
    }>;
    private replaceMnemonics;
    private buildPdf;
}
export declare class ContractsController {
    private readonly contractsService;
    constructor(contractsService: ContractsService);
    fromProposal(proposalId: string, dto: CreateContractDto, req: any): Promise<Contract>;
    findAll(req: any, status?: string, clientId?: string): Promise<Contract[]>;
    findOne(id: string, req: any): Promise<Contract>;
    activate(id: string, req: any): Promise<Contract>;
    markSigned(id: string, req: any): Promise<Contract>;
    cancel(id: string, dto: CancelContractDto, req: any): Promise<Contract>;
    terminate(id: string, dto: TerminateContractDto, req: any): Promise<Contract>;
    generatePdf(id: string, req: any): Promise<{
        pdfBase64: string;
        filename: string;
    }>;
}
export declare class ContractsModule {
}
