39 lines
1.1 KiB
TypeScript
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' };
|
|
}
|
|
}
|