import { _PdfDictionary, _PdfName } from './../pdf-primitives';
import { _MD5 } from './encryptors/messageDigest5';
import { _AdvancedEncryption, _BasicEncryption } from './encryptors/basic-encryption';
import { _Cipher } from './encryptors/cipher';
import { _CipherTransform } from './encryptors/cipher-tranform';
export declare class _PdfEncryptor {
    _filterName: string;
    _dictionary: _PdfDictionary;
    _algorithm: number;
    _messageDigest: _MD5;
    _encryptionKey: Uint8Array;
    _cipherDictionary: _PdfDictionary;
    _string: _PdfName;
    _stream: _PdfName;
    _eff: _PdfName;
    _isUserPassword: boolean;
    _hasUserPasswordOnly: boolean;
    _encryptOnlyAttachment: boolean;
    _encryptMetaData: boolean;
    _defaultPasswordBytes: Uint8Array;
    readonly _md5: _MD5;
    constructor(dictionary: _PdfDictionary, id: string, password?: string);
    _createEncryptionKey(isUserKey: boolean, password: Uint8Array, ownerKeySalt: Uint8Array, uBytes: Uint8Array, userKeySalt: Uint8Array, ownerEncryption: Uint8Array, userEncryption: Uint8Array, algorithm: _AdvancedEncryption | _BasicEncryption): Uint8Array;
    _prepareKeyData(id: Uint8Array, password: Uint8Array, ownerPassword: Uint8Array, userPassword: Uint8Array, flags: number, revision: number, keyLength: number, encryptMetaData: boolean): Uint8Array;
    _decodeUserPassword(password: Uint8Array, ownerPassword: Uint8Array, revision: number, keyLength: number): Uint8Array;
    _createCipherTransform(objectNumber: number, generationNumber: number): _CipherTransform;
    _buildCipherConstructor(cipherDictionary: _PdfDictionary, name: _PdfName, objectNumber: number, generationNumber: number, key: Uint8Array): _Cipher;
    _buildObjectKey(objectNumber: number, generationNumber: number, encryptionKey: Uint8Array, isAdvancedEncryption?: boolean): Uint8Array;
}
export declare class _Word64 {
    high: number;
    low: number;
    constructor(high: number, low: number);
    and(word: _Word64): void;
    or(word: _Word64): void;
    not(): void;
    xor(word: _Word64): void;
    shiftRight(places: number): void;
    shiftLeft(places: number): void;
    rotateRight(places: number): void;
    add(word: _Word64): void;
    copyTo(bytes: Uint8Array, offset: number): void;
    assign(word: _Word64): void;
}
