1import type { AdoptRequest } from "../shared/vault-adopt";2import { storageGet, storageRemove, storageSet } from "../shared/storage";34export const PENDING_ADOPTION_HOLDER_KEY = "peach_pending_adoption_holder_v1";56export type PendingAdoptionHolder = {7 request: AdoptRequest;8 createdAt: number;9};1011function isHolder(value: unknown): value is PendingAdoptionHolder {12 if (!value || typeof value !== "object") return false;13 const holder = value as Partial<PendingAdoptionHolder>;14 return typeof holder.createdAt === "number" && Number.isFinite(holder.createdAt)15 && !!holder.request && typeof holder.request === "object"16 && typeof (holder.request as Partial<AdoptRequest>).device_id === "string";17}1819export async function persistPendingAdoptionHolder(request: AdoptRequest): Promise<void> {20 await storageSet(PENDING_ADOPTION_HOLDER_KEY, JSON.stringify({ request, createdAt: Date.now() }));21}222324export async function readPendingAdoptionHolder(): Promise<PendingAdoptionHolder | null> {25 const raw = await storageGet(PENDING_ADOPTION_HOLDER_KEY);26 if (!raw) return null;27 try {28 const parsed: unknown = JSON.parse(raw);29 return isHolder(parsed) ? parsed : null;30 } catch {31 return null;32 }33}3435export async function listPendingAdoptionHolders(): Promise<PendingAdoptionHolder[]> {36 const holder = await readPendingAdoptionHolder();37 return holder ? [holder] : [];38}3940export async function removePendingAdoptionHolder(): Promise<void> {41 await storageRemove(PENDING_ADOPTION_HOLDER_KEY);42}4344export const revokePendingAdoptionHolder = removePendingAdoptionHolder;