export declare const SCALAR_SIZE = 32;
export declare const POINT_SIZE = 32;
export declare const CIPHER_SIZE: number;
export declare const DEFAULT_MMAX_MOD = 24;
export declare const DEFAULT_MMAX: number;
export declare const MG_SIZE = 36;
export declare const GE25519_P3_SIZE: number;
export declare const MG_DEFAULT_PATH: string;
export declare type DecryptionContextCallbackFunction = ((points_computed: number) => void);
export declare type DecryptionContextCallback = {
    cb: DecryptionContextCallbackFunction;
    interval: number;
};
export declare type DecryptionContextParameter = string | ArrayBuffer | DecryptionContextCallback;
export declare type DecryptionContextCreateFunction = (param?: DecryptionContextParameter, mmax?: number) => Promise<DecryptionContextBase>;
export interface DecryptionContextBase {
    getMG(): ArrayBuffer;
    decryptCipher(privkey: ArrayBuffer, cipher: ArrayBuffer): number;
    decryptReply(privkey: ArrayBuffer, dimension: number, packing: number, reply: ArrayBuffer): Promise<ArrayBuffer>;
}
export declare const DEFAULT_CAPACITIES: number[];
export declare abstract class SelectorFactoryBase {
    readonly isFast: boolean;
    readonly key: ArrayBuffer;
    readonly capacities: number[];
    constructor(isFast: boolean, key: ArrayBuffer, capacities: number[]);
    abstract fill(): Promise<void>;
    abstract create(indexCounts: number[], idx: number, refill?: boolean): ArrayBuffer;
}
export declare type EpirCreateFunction = () => Promise<EpirBase>;
export interface EpirBase {
    createPrivkey(): ArrayBuffer;
    createPubkey(privkey: ArrayBuffer): ArrayBuffer;
    encrypt(pubkey: ArrayBuffer, msg: number, r?: ArrayBuffer): ArrayBuffer;
    encryptFast(privkey: ArrayBuffer, msg: number, r?: ArrayBuffer): ArrayBuffer;
    ciphersCount(index_counts: number[]): number;
    elementsCount(index_counts: number[]): number;
    createSelector(pubkey: ArrayBuffer, index_counts: number[], idx: number, r?: ArrayBuffer): Promise<ArrayBuffer>;
    createSelectorFast(privkey: ArrayBuffer, index_counts: number[], idx: number, r?: ArrayBuffer): Promise<ArrayBuffer>;
    computeReplySize(dimension: number, packing: number, elem_size: number): number;
    computeReplyRCount(dimension: number, packing: number, elem_size: number): number;
    computeReplyMock(pubkey: ArrayBuffer, dimension: number, packing: number, elem: ArrayBuffer, r?: ArrayBuffer): ArrayBuffer;
}
