Review a signed-cookie migration

src/signed-cookie-types.tsTypeScript
@@ -0,0 +1,20 @@
1+export interface CookieKeys {
2+ current: string;
3+ previous?: string;
4+}
5+
6+export interface CookieCodec {
7+ encodeJson(value: Readonly<Record<string, unknown>>): string;
8+ decodeJson(encoded: string): Readonly<Record<string, unknown>>;
9+ decodeMac(encoded: string): Uint8Array;
10+}
11+
12+export interface CookieMac {
13+ sign(encodedPayload: string, key: string): string;
14+ timingSafeEqual(left: Uint8Array, right: Uint8Array): boolean;
15+}
16+
17+export interface VerifiedCookie {
18+ payload: Readonly<Record<string, unknown>>;
19+ refresh: boolean;
20+}