import { Attachment, AttachmentFactoryOptions } from './attachment';
import { IPhotoAttachmentPayload } from './photo';
import { AttachmentType, kSerializeData } from '../../utils/constants';
export interface IDocumentAttachmentPayload {
    id: number;
    owner_id: number;
    access_key?: string;
    title?: string;
    size?: number;
    ext?: string;
    url?: string;
    date?: number;
    type?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
    preview?: {
        photo?: IPhotoAttachmentPayload['sizes'];
        graffiti?: {
            src: string;
            width: number;
            height: number;
        };
        audio_message?: {
            duration: number;
            waveform: number[];
            link_ogg: string;
            link_mp3: string;
        };
    };
}
export type DocumentAttachmentOptions = AttachmentFactoryOptions<IDocumentAttachmentPayload>;
export declare class DocumentAttachment extends Attachment<IDocumentAttachmentPayload, AttachmentType.DOCUMENT | 'doc'> {
    /**
     * Constructor
     */
    constructor(options: DocumentAttachmentOptions);
    /**
     * Load attachment payload
     */
    loadAttachmentPayload(): Promise<void>;
    /**
     * Checks if the document is a text
     */
    get isText(): boolean | undefined;
    /**
     * Checks if the document is an archive
     */
    get isArchive(): boolean | undefined;
    /**
     * Checks if the document is a gif file
     */
    get isGif(): boolean | undefined;
    /**
     * Checks if the document is an image
     */
    get isImage(): boolean | undefined;
    /**
     * Checks if the document is a graffiti
     */
    get isGraffiti(): boolean | undefined;
    /**
     * Checks if the document is an audio
     */
    get isAudio(): boolean | undefined;
    /**
     * Checks if the document is a voice
     */
    get isVoice(): boolean | undefined;
    /**
     * Checks if the document is a video
     */
    get isVideo(): boolean | undefined;
    /**
     * Checks if the document is a book
     */
    get isBook(): boolean | undefined;
    /**
     * Returns the document title
     */
    get title(): string | undefined;
    /**
     * Returns the date when this document was created
     */
    get createdAt(): number | undefined;
    /**
     * Returns the type identifier
     *
     * **1** - text documents
     *
     * **2** - archives
     *
     * **3** - gif
     *
     * **4** - images
     *
     * **5** - audio
     *
     * **6** - video
     *
     * **7** - e-books
     *
     * **8** - unknown
     */
    get typeId(): IDocumentAttachmentPayload['type'] | undefined;
    /**
     * Returns the size in bytes
     */
    get size(): number | undefined;
    /**
     * Returns the extension
     */
    get extension(): string | undefined;
    /**
     * Returns the URL of the document
     */
    get url(): string | undefined;
    /**
     * Returns the info to preview
     */
    get preview(): IDocumentAttachmentPayload['preview'] | undefined;
    /**
     * Checks for a property in preview
     */
    hasPreviewProperty(name: 'photo' | 'graffiti' | 'audio_message'): boolean;
    /**
     * Returns the custom data
     */
    [kSerializeData](): object;
}
