import { apiBase, getJSONAuth, postJSON } from "../api"; export type WalletNonceResponse = { nonce: string; message: string; }; export type WalletVerifyResponse = { token: string; wallet: string; }; export type WalletMeResponse = { wallet: string; role: "user"; }; export type TokenPocketLoginRequest = { actionId: string; nonce: string; message: string; qrUrl: string; expiresAt: string; }; export type TokenPocketLoginResult = | { status: "pending" | "expired" | "failed"; message?: string; error?: string; } | { status: "completed"; address: string; message: string; signature: string; }; export function requestWalletNonce( address: string, ): Promise { return postJSON("/api/auth/wallet/nonce", { address }); } export function verifyWalletSignature(params: { address: string; message: string; signature: string; }): Promise { return postJSON("/api/auth/wallet/verify", params); } export function fetchWalletMe(token: string): Promise { return getJSONAuth("/api/auth/wallet/me", token); } export function createTokenPocketLoginRequest(): Promise { return postJSON( "/api/auth/wallet/tp-login-request", {}, ); } export async function fetchTokenPocketLoginResult( actionId: string, signal?: AbortSignal, ): Promise { const res = await fetch( `${apiBase}/api/auth/wallet/tp-result?actionId=${encodeURIComponent(actionId)}`, { signal }, ); if (!res.ok) throw new Error(await res.text()); return res.json() as Promise; }