import type { BaseHttpRequest } from "./core/BaseHttpRequest";
import type { OpenAPIConfig } from "./core/OpenAPI";
import { AuthenticationSessionService } from "./services/AuthenticationSessionService";
import { SignicatAuthConfig } from "./core/OpenAPI";
import type { EncryptionKey } from "./models/EncryptionKey";
type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;
export declare class SignicatClient {
    readonly authenticationSession: AuthenticationSessionService;
    readonly request: BaseHttpRequest;
    constructor(config?: Partial<OpenAPIConfig>, HttpRequest?: HttpRequestConstructor);
    /**
     * Configure the client to automatically manage tokens.
     * Call this method to enable automatic token management.
     *
     * @param authConfig - The authentication configuration to use.
     */
    static configureAuth(authConfig: SignicatAuthConfig): void;
    /**
     * Enable encryption for this client instance
     * @param privateKey The private key in JWK format for decrypting responses
     */
    enableEncryption(privateKey: any): void;
    /**
     * Generate RSA key pair for encryption
     * @param keySize Key size in bits (2048 or 4096)
     * @returns Promise containing public and private keys
     */
    static generateEncryptionKeyPair(keySize?: 2048 | 4096): Promise<{
        publicKey: EncryptionKey;
        privateKey: any;
    }>;
    /**
     * Validate encryption key format
     * @param key The encryption key to validate
     * @returns True if the key is valid
     */
    static validateEncryptionKey(key: EncryptionKey): boolean;
}
export {};
