import { apiRequest } from './client' export type OobStatus = 'pending' | 'approved' | 'rejected' | 'expired' export interface OobConfirmation { confirmation_id: string code: string amount: number merchant: string channels: string[] } /** Set the user's out-of-band channels (push/sms/email/console). */ export function setNotifyPrefs(userId: string, channels: string[]): Promise { return apiRequest('/notify/prefs', { body: { user_id: userId, channels } }) } /** Create a demo dynamic-linked confirmation (existing service via /notify/request). */ export function requestConfirmation(userId: string, amount: number, merchant: string): Promise { return apiRequest('/notify/request', { body: { user_id: userId, amount, merchant } }) } export function getConfirmationStatus(confirmationId: string): Promise<{ status: OobStatus }> { return apiRequest(`/notify/status?confirmation_id=${encodeURIComponent(confirmationId)}`) } /** Approve/deny — the code proves the response is bound to this exact payment (dynamic linking). */ export function respondConfirmation(confirmationId: string, approve: boolean, code: string): Promise<{ success: boolean; reason?: string }> { return apiRequest('/notify/respond', { body: { confirmation_id: confirmationId, approve, code } }) }