import { AsyncReadStream } from "@mojsoski/async-stream";
import { EncryptedContent, EncryptionContext, EncryptedHeader, ICryptoProvider } from "./base";
export declare abstract class Server<TKey> {
    abstract get name(): string;
    abstract get publicKey(): TKey;
    protected _provider: ICryptoProvider<TKey>;
    constructor(crypto: ICryptoProvider<TKey>);
    verifyJwt<T extends object>(jwt: string): Promise<T>;
    createContext(): Promise<EncryptionContext>;
    static decrypt<TKey>({ key, iv }: EncryptionContext, content: EncryptedContent, provider: ICryptoProvider<TKey>): Promise<Buffer<ArrayBufferLike>>;
    encryptStream(stream: AsyncReadStream<Buffer>): AsyncReadStream<EncryptedHeader | EncryptedContent>;
    static encrypt<TKey>({ key, iv }: EncryptionContext, content: Buffer, provider: ICryptoProvider<TKey>): Promise<EncryptedContent>;
    encryptBase64<T>(obj: T): Promise<string>;
}
