import type { CompleteMultipartUploadOutput } from '@aws-sdk/client-s3';
import { AptlyDocumentAccess, AptlyDocumentType } from '../enums/index.js';
import { AptlyBaseSchema, AptlyDBCrawlerCleaner } from './extends.js';
import { AptlyProductSchema } from './product.js';
import { AptlyOrganizationSchema } from './organization';
export type AptlyDocument = AptlyDocumentSchema<string, string>;
export interface AptlyDocumentSchema<ID, DATE> extends Omit<AptlyBaseSchema<ID, DATE>, 'archived'>, AptlyDBCrawlerCleaner {
    mime: string;
    access?: AptlyDocumentAccess;
    _type: AptlyDocumentType;
    data: string;
    organization: ID | AptlyOrganizationSchema<ID, DATE> | null;
    project: ID | null;
    unit: ID | null;
    product: ID | AptlyProductSchema<ID, DATE> | null;
    text?: string;
    size: number;
    thirdPartyUploader: string | null;
    thirdPartyId: string | null;
    public_id?: string;
    external_url?: string;
    uploadSignature?: string;
    boligmappaStatus?: AptlyDocumentSchemaBoligmappaStatusSchema<ID>[];
    chunks?: (AptlyDocumentSchema<ID, DATE> | ID)[];
    s3: AptlyDocumentS3;
    previews: AptlyDocumentPreviewSchema<ID, DATE>[];
    isPasswordProtected?: boolean;
    expires?: DATE | null;
    downloadToken?: string;
    previewUrl?: string;
    created: DATE;
}
export interface AptlyDocumentPreviewSchema<ID, DATE> {
    _id: ID;
    contentType: string;
    name: string;
    height: number;
    width: number;
    size: number;
    s3: AptlyDocumentS3;
    createdAt: DATE;
}
export type AptlyDocumentS3 = Pick<CompleteMultipartUploadOutput, 'Bucket' | 'Key' | 'Location' | 'Expiration'> & {
    ETag?: string;
};
export type AptlyDocumentSchemaBoligmappaStatus = AptlyDocumentSchemaBoligmappaStatusSchema<string>;
export interface AptlyDocumentSchemaBoligmappaStatusSchema<ID> {
    _id: ID;
    unit: ID;
    id?: number;
    errorCode?: number;
}
