import { type Storage } from './interface.ts'; /** * A string-valued key/value row from an existing application store. * * The importer treats both fields as application data: `key` becomes the * unencoded suffix under the optional target prefix, and `value` is encoded * as UTF-8 bytes before writing to Weft storage. * * @example * ```ts * import { type TextKeyValueRow } from '@lostgradient/weft/storage'; * * const row: TextKeyValueRow = { * key: 'session:1', * value: '{"status":"open"}', * }; * console.log(row.key); // 'session:1' * ``` */ export type TextKeyValueRow = { key: string; value: string; }; /** * Options for {@link copyTextKeyValueRowsToStorage}. * * @example * ```ts * import { MemoryStorage, type CopyTextKeyValueRowsToStorageOptions } from '@lostgradient/weft/storage'; * * await using storage = new MemoryStorage(); * const options: CopyTextKeyValueRowsToStorageOptions = { * storage, * targetPrefix: 'app:my-service', * rows: [{ key: 'session:1', value: 'active' }], * }; * console.log(options.targetPrefix); // 'app:my-service' * ``` */ export type CopyTextKeyValueRowsToStorageOptions = { /** Destination Weft storage that receives UTF-8 encoded values. */ storage: Storage; /** Source rows from a string-valued key/value store. */ rows: Iterable | AsyncIterable; /** * Optional application namespace applied before each source key. A value like * `app:my-service` writes source key `session:1` to * `app:my-service:session:1`. */ targetPrefix?: string; }; /** * Result returned by {@link copyTextKeyValueRowsToStorage}. * * @example * ```ts * import { type CopyTextKeyValueRowsToStorageResult } from '@lostgradient/weft/storage'; * * const result: CopyTextKeyValueRowsToStorageResult = { copied: 3 }; * console.log(result.copied); // 3 * ``` */ export type CopyTextKeyValueRowsToStorageResult = { /** Number of rows copied into the target storage. */ copied: number; }; /** * Copy string-valued key/value rows into a Weft byte-oriented storage backend. * * This helper is for one-time imports from application stores that already hold * text values. It encodes values as UTF-8 bytes, optionally prefixes target * keys, and refuses to overwrite existing target keys. * * @example * ```ts * import { MemoryStorage, copyTextKeyValueRowsToStorage } from '@lostgradient/weft/storage'; * * await using storage = new MemoryStorage(); * const result = await copyTextKeyValueRowsToStorage({ * storage, * targetPrefix: 'app:my-service', * rows: [{ key: 'session:1', value: 'active' }], * }); * console.log(result.copied); // 1 * ``` */ export declare function copyTextKeyValueRowsToStorage(options: CopyTextKeyValueRowsToStorageOptions): Promise;