import { ConfigService } from '@nestjs/config';
import { Repository, DataSource } from 'typeorm';
import { ContractsService } from '../contracts/contracts.module';
export interface AutentiqueSignerInput {
    name: string;
    email: string;
    action?: 'SIGN' | 'APPROVE' | 'WITNESS';
}
export interface AutentiqueDocumentResult {
    id: string;
    name: string;
    rejected_count?: number;
    files?: {
        original?: string;
        signed?: string;
    };
    signatures?: Array<{
        public_id: string;
        name: string;
        email: string;
        action: {
            name: string;
        };
        signed?: {
            created_at: string;
        } | null;
        link: {
            short_link: string;
        };
    }>;
}
export declare class AutentiqueService {
    private readonly config;
    private readonly logger;
    private readonly apiUrl;
    constructor(config: ConfigService);
    createDocument(token: string, params: {
        name: string;
        pdfBase64: string;
        signers: AutentiqueSignerInput[];
        deadline?: string;
    }): Promise<AutentiqueDocumentResult>;
    getDocument(token: string, documentId: string): Promise<AutentiqueDocumentResult>;
    listDocuments(token: string, page?: number): Promise<AutentiqueDocumentResult[]>;
    deleteDocument(token: string, documentId: string): Promise<boolean>;
}
export declare class Signature {
    id: string;
    tenantId: string;
    contractId: string;
    autentiqueDocId: string;
    autentiqueUrl: string;
    deadlineAt: Date;
    status: string;
    signedAt: Date;
    signers: SignatureSigner[];
    createdAt: Date;
    updatedAt: Date;
}
export declare class SignatureSigner {
    id: string;
    signatureId: string;
    tenantId: string;
    name: string;
    email: string;
    role: string;
    autentiqueActionId: string;
    signedAt: Date;
    status: string;
    signature: Signature;
    createdAt: Date;
}
export declare class SignerDto {
    name: string;
    email: string;
    action?: 'SIGN' | 'APPROVE' | 'WITNESS';
}
export declare class CreateSignatureDto {
    contractId: string;
    pdfBase64: string;
    documentName: string;
    deadline?: string;
    signers: SignerDto[];
}
export declare class SignaturesService {
    private readonly signatureRepo;
    private readonly signerRepo;
    private readonly autentiqueService;
    private readonly contractsService;
    private readonly dataSource;
    private readonly logger;
    constructor(signatureRepo: Repository<Signature>, signerRepo: Repository<SignatureSigner>, autentiqueService: AutentiqueService, contractsService: ContractsService, dataSource: DataSource);
    private getTenantToken;
    createAndSend(tenantId: string, dto: CreateSignatureDto): Promise<Signature>;
    syncStatus(tenantId: string, signatureId: string): Promise<Signature>;
    cancel(tenantId: string, signatureId: string): Promise<Signature>;
    findByContract(tenantId: string, contractId: string): Promise<Signature[]>;
    findByAutentiqueDocId(docId: string): Promise<Signature[]>;
}
export declare class SignaturesController {
    private readonly signaturesService;
    constructor(signaturesService: SignaturesService);
    create(req: any, dto: CreateSignatureDto): Promise<Signature>;
    sync(req: any, id: string): Promise<Signature>;
    cancel(req: any, id: string): Promise<Signature>;
    byContract(req: any, contractId: string): Promise<Signature[]>;
}
export declare class SignaturesWebhookController {
    private readonly signaturesService;
    private readonly logger;
    constructor(signaturesService: SignaturesService);
    handleAutentiqueWebhook(payload: any): Promise<{
        ok: boolean;
        reason: string;
        processed?: undefined;
    } | {
        ok: boolean;
        processed: number;
        reason?: undefined;
    }>;
}
export declare class SignaturesModule {
}
