rspace-online/modules/rflows/lib/transak-onramp.ts

39 lines
1.1 KiB
TypeScript

/**
* Transak on-ramp adapter — wraps shared/transak.ts utilities
* behind the OnrampProvider interface.
*/
import type { OnrampProvider, OnrampSessionRequest, OnrampSessionResult } from './onramp-provider';
import { createTransakWidgetUrl } from '../../../shared/transak';
export class TransakOnrampAdapter implements OnrampProvider {
id = 'transak' as const;
name = 'Transak';
isAvailable(): boolean {
return !!process.env.TRANSAK_API_KEY;
}
async createSession(req: OnrampSessionRequest): Promise<OnrampSessionResult> {
const apiKey = process.env.TRANSAK_API_KEY;
if (!apiKey) throw new Error('Transak not configured');
const widgetParams: Record<string, string> = {
apiKey,
referrerDomain: 'rspace.online',
cryptoCurrencyCode: 'USDC',
network: 'base',
defaultCryptoCurrency: 'USDC',
walletAddress: req.walletAddress,
partnerOrderId: `user-${req.sessionId}`,
email: req.email,
themeColor: '6366f1',
hideMenu: 'true',
};
if (req.returnUrl) widgetParams.redirectURL = req.returnUrl;
const widgetUrl = createTransakWidgetUrl(widgetParams);
return { widgetUrl, provider: 'transak' };
}
}