import { Cache } from 'o1js';
import { type CacheType } from './types.js';
/**
 * File-system-based cache configuration.
 *
 * - `type` discriminates the config (should be either `CacheType.FileSystem` or `CacheType.ReadOnlyFileSystem`).
 * - `dir` is the local directory path used by the o1js Cache implementation.
 *
 * This configuration is used by both writable (`FileSystem`) and read-only (`ReadOnlyFileSystem`)
 * cache factories, depending on the specified `type`.
 */
export interface FileSystemCacheConfig {
    type: CacheType.FileSystem | CacheType.ReadOnlyFileSystem;
    dir: string;
}
/**
 * Returns a `Cache.FileSystem` instance from o1js that stores artifacts in the local file system.
 *
 * This function delegates directly to `Cache.FileSystem(dir)` from o1js.
 *
 * @param config - Configuration object specifying the cache type and directory path.
 * @returns An instance of `Cache.FileSystem` using the specified directory.
 *
 * Example:
 * ```ts
 * const cache = fileSystemCacheFactory({ type: CacheType.FileSystem, dir: './zkAppCache' });
 * ```
 */
export declare function fileSystemCacheFactory(config: FileSystemCacheConfig): Cache;
/**
 * File-system-backed cache interface used for reading compiled zkApp artifacts.
 *
 * This returns an object that implements the `o1js` `Cache` interface:
 *  - `read(header: CacheHeader): Uint8Array | undefined`
 *  - `write(header: CacheHeader, value: Uint8Array): void`
 *  - `canWrite: boolean`
 *
 * The backing store is the provided `cacheDirectory` on disk.
 *
 * Behaviour:
 *  - `read` reads `${cacheDirectory}/${persistentId}.header` and compares it to the provided `uniqueId`;
 *    if they match it reads `${cacheDirectory}/${persistentId}` and returns its bytes
 *    (strings are UTF-8 encoded via `TextEncoder`).
 *  - `write` is a no-op.
 *
 * @param cacheDirectory - Directory containing cached file data and header files.
 * @returns a Cache-compliant object.
 */
export declare const ReadOnlyFileSystem: (cacheDirectory: string, debug?: boolean) => Cache;
/**
 * Returns a `ReadOnlyFileSystem` cache instance that retrieves artifacts
 * from a specified local directory without modifying it.
 *
 * This function wraps the `ReadOnlyFileSystem` factory for use in
 * configuration contexts, similar to `fileSystemCacheFactory`.
 *
 * @param config - Configuration object specifying the cache type and directory path.
 * @returns An instance of `ReadOnlyFileSystem` using the specified directory.
 *
 * Example:
 * ```ts
 * const cache = readOnlyFileSystemCacheFactory({ type: CacheType.ReadOnlyFileSystem, dir: './zkAppCache' });
 * ```
 */
export declare function readOnlyFileSystemCacheFactory(config: FileSystemCacheConfig): Cache;
