import { Context } from './context';
import { Exception } from './exception';
import { MemoryPoolHandle } from './memory-pool-handle';
import { PlainText, PlainTextConstructorOptions } from './plain-text';
import { Instance, LoaderOptions } from './seal';
import { VectorConstructorOptions } from './vector';
export type CKKSEncoderDependencyOptions = {
    readonly Exception: Exception;
    readonly MemoryPoolHandle: MemoryPoolHandle;
    readonly PlainText: PlainTextConstructorOptions;
    readonly Vector: VectorConstructorOptions;
};
export type CKKSEncoderDependencies = {
    ({ Exception, MemoryPoolHandle, PlainText, Vector }: CKKSEncoderDependencyOptions): CKKSEncoderConstructorOptions;
};
export type CKKSEncoderConstructorOptions = {
    (context: Context): CKKSEncoder;
};
export type CKKSEncoderTypes = Float64Array;
export type CKKSEncoder = {
    readonly instance: Instance;
    readonly unsafeInject: (instance: Instance) => void;
    readonly delete: () => void;
    readonly encode: (array: CKKSEncoderTypes, scale: number, plainText?: PlainText, pool?: MemoryPoolHandle) => PlainText | void;
    readonly decode: (plainText: PlainText, pool?: MemoryPoolHandle) => CKKSEncoderTypes;
    readonly slotCount: number;
};
export declare const CKKSEncoderInit: ({ loader }: LoaderOptions) => CKKSEncoderDependencies;
