import type { KvValue, KvKey, KvListEntry, KvSetOptions, KvListOptions, KvListResponse, KvListSelector, KvTransaction } from '@redocly/config';
import type { ServiceInstanceOptions } from '../../../providers/database/types.js';
import { BaseService } from '../../../providers/database/base-service.js';
import { KvRepository } from '../repositories/kv-repository.js';
export declare class KvService extends BaseService<KvRepository> {
    #private;
    constructor(repository: KvRepository, options?: ServiceInstanceOptions);
    static getInstance(options: ServiceInstanceOptions): Promise<KvService>;
    /**
     * Get a kv entry by key
     */
    get<T extends KvValue = KvValue>(rawKey: KvKey): Promise<T | null>;
    /**
     * Get multiple kv entries by keys
     */
    getMany<T extends KvValue = KvValue>(rawKeys: KvKey[]): Promise<(KvListEntry<T> | null)[]>;
    /**
     * List kv entries by prefix
     */
    list<T extends KvValue = KvValue>(rawSelector: KvListSelector, rawOptions?: KvListOptions): Promise<KvListResponse<T>>;
    /**
     * Set a kv entry with optional TTL
     */
    set<T extends KvValue = KvValue>(rawKey: KvKey, value: T, rawOptions?: KvSetOptions): Promise<KvListEntry<T> | null>;
    /**
     * Delete a specific kv entry by key
     */
    delete(rawKey: KvKey): Promise<void>;
    /**
     * Clear all expired kv entries
     */
    clearExpired(): Promise<void>;
    /**
     * Execute multiple KV operations within a transaction
     * All operations will be committed atomically or rolled back on error
     */
    transaction<T>(operation: (tx: KvTransaction) => Promise<T>): Promise<T>;
}
//# sourceMappingURL=kv-service.d.ts.map