import { LocalChain } from './adapters/chain.js'; import { TestWallet, NETWORK } from './adapters/wallet.js'; export const STORAGE_KEY = 'super-testnet:lab:v1'; export function decodeLab(raw) { if (!raw) return { wallet: null, chain: new LocalChain() }; const data = JSON.parse(raw); if (data.kind !== 'test-lab' || data.network !== NETWORK || data.version !== 1) throw new Error('Unsupported lab backup.'); return { wallet: data.wallet ? TestWallet.load(data.wallet) : null, chain: new LocalChain(data.chain) }; } export const encodeLab = lab => JSON.stringify({ kind: 'test-lab', network: NETWORK, version: 1, wallet: lab.wallet?.backup() ?? null, chain: lab.chain.snapshot(), }); export const readLab = () => decodeLab(localStorage.getItem(STORAGE_KEY)); export function saveLab(lab) { try { localStorage.setItem(STORAGE_KEY, encodeLab(lab)); } catch { throw new Error('Browser storage is full or unavailable. No changes were saved. Export a lab backup before clearing storage.'); } }