UNPKG

celeriz

Version:

Complete SDK for Celeriz Onramp/Offramp API with wallet integration and white-label support

300 lines 10.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CelerizSDK = void 0; const axios_1 = __importDefault(require("axios")); const DEFAULT_BASE_URL = 'https://onramp.celeriz.com/api/v1'; class CelerizSDK { constructor(options) { this.apiKey = options.apiKey; this.axios = axios_1.default.create({ baseURL: options.baseUrl || DEFAULT_BASE_URL, headers: { 'x-api-key': this.apiKey, 'Content-Type': 'application/json', }, }); } // --- WALLET AUTHENTICATION --- /** * Authenticate user with wallet service * @param accessToken - Wallet access token * @returns Authentication result */ async authenticateUser(accessToken) { const res = await this.axios.post('/privy/authenticate', { accessToken }); return res.data; } /** * Initialize user with wallet service * @param accessToken - Wallet access token * @param userData - Optional user data for initialization * @returns User initialization result */ async initializeUser(accessToken, userData = {}) { const res = await this.axios.post('/privy/init', { accessToken, userData }); return res.data; } /** * Get current user data from wallet service * @param accessToken - Wallet access token * @returns Current user data */ async getCurrentUser(accessToken) { const res = await this.axios.post('/privy/user', { accessToken }); return res.data; } // --- WALLET MANAGEMENT --- /** * Create a new wallet * @param accessToken - Wallet access token * @param walletType - Type of wallet to create * @param chainId - Optional chain ID * @param recovery - Enable recovery for the wallet * @returns Created wallet data */ async createWallet(accessToken, walletType = 'embedded', chainId, recovery = true) { const res = await this.axios.post('/privy/wallets/create', { accessToken, walletType, chainId, recovery }); return res.data; } /** * Create a smart wallet * @param accessToken - Wallet access token * @param chainId - Optional chain ID * @returns Created smart wallet data */ async createSmartWallet(accessToken, chainId) { const res = await this.axios.post('/privy/wallets/smart', { accessToken, chainId }); return res.data; } /** * Get user's wallets * @param accessToken - Wallet access token * @returns User's wallets */ async getUserWallets(accessToken) { const res = await this.axios.post('/privy/wallets', { accessToken }); return res.data; } /** * Get wallet balance * @param accessToken - Wallet access token * @param walletAddress - Wallet address to check balance * @param chainId - Optional chain ID * @returns Wallet balance data */ async getWalletBalance(accessToken, walletAddress, chainId) { const res = await this.axios.post('/privy/wallets/balance', { accessToken, walletAddress, chainId }); return res.data; } /** * Validate wallet ownership * @param accessToken - Wallet access token * @param walletAddress - Wallet address to validate * @returns Ownership validation result */ async validateWalletOwnership(accessToken, walletAddress) { const res = await this.axios.post('/privy/validate-wallet', { accessToken, walletAddress }); return res.data; } // --- TRANSACTION OPERATIONS --- /** * Sign a transaction * @param accessToken - Wallet access token * @param walletAddress - Wallet address to sign transaction * @param transactionData - Transaction data to sign * @returns Signed transaction */ async signTransaction(accessToken, walletAddress, transactionData) { const res = await this.axios.post('/privy/wallets/sign', { accessToken, walletAddress, transactionData }); return res.data; } /** * Send a signed transaction * @param accessToken - Wallet access token * @param walletAddress - Wallet address * @param signedTransaction - Signed transaction data * @returns Transaction result */ async sendTransaction(accessToken, walletAddress, signedTransaction) { const res = await this.axios.post('/privy/wallets/send', { accessToken, walletAddress, signedTransaction }); return res.data; } /** * Get transaction history for a wallet * @param accessToken - Wallet access token * @param walletAddress - Wallet address to get transaction history * @param page - Page number for pagination * @param limit - Number of transactions per page * @returns Transaction history */ async getTransactionHistory(accessToken, walletAddress, page = 1, limit = 20) { const res = await this.axios.post('/privy/wallets/transactions', { accessToken, walletAddress, page, limit }); return res.data; } // --- ACCOUNT MANAGEMENT --- /** * Get user's linked accounts * @param accessToken - Wallet access token * @returns Linked accounts data */ async getLinkedAccounts(accessToken) { const res = await this.axios.post('/privy/linked-accounts', { accessToken }); return res.data; } /** * Health check for wallet service * @returns Health check result */ async getHealthCheck() { const res = await this.axios.get('/privy/health'); return res.data; } // --- ONRAMP WITH WALLET --- /** * Get onramp quote with wallet information * @param params - Quote parameters * @param accessToken - Optional wallet access token to check existing wallets * @returns Quote with wallet information */ async getOnrampQuoteWithWallet(params, accessToken) { const res = await this.axios.post('/onramp/quote-with-wallet', { ...params, ...(accessToken && { privyAccessToken: accessToken }) }); return res.data; } /** * Create onramp transaction with wallet creation * @param params - Transaction parameters * @param accessToken - Wallet access token * @param walletType - Type of wallet to create * @returns Transaction with wallet data */ async createOnrampTransactionWithWallet(params, accessToken, walletType = 'embedded') { const res = await this.axios.post('/onramp/create-transaction-with-wallet', { ...params, privyAccessToken: accessToken, walletType }); return res.data; } /** * Create wallet for onramp transactions * @param accessToken - Wallet access token * @param walletType - Type of wallet to create * @param chainId - Optional chain ID * @param recovery - Enable recovery for the wallet * @returns Created wallet data */ async createWalletForOnramp(accessToken, walletType = 'embedded', chainId, recovery = true) { const res = await this.axios.post('/onramp/create-wallet', { accessToken, walletType, chainId, recovery }); return res.data; } /** * Get user wallets for onramp * @param accessToken - Wallet access token * @returns User's wallets */ async getUserWalletsForOnramp(accessToken) { const res = await this.axios.post('/onramp/user-wallets', { accessToken }); return res.data; } // --- ONRAMP --- async getOnrampQuote(params) { const res = await this.axios.post('/onramp/quote', params); return res.data; } async createOnrampTransaction(params) { const res = await this.axios.post('/onramp/create-transaction', params); return res.data; } // --- OFFRAMP --- async getOfframpQuote(params) { const res = await this.axios.post('/offramp/quote', params); return res.data; } async createOfframpTransaction(params) { const res = await this.axios.post('/offramp/create-transaction', params); return res.data; } // --- KYC --- async getKycUrl(params) { const res = await this.axios.post('/kyc/url', params); return res.data; } async getKycRequirements(params) { const res = await this.axios.post('/kyc/requirements', params); return res.data; } async submitKycDetails(params) { const res = await this.axios.post('/kyc/submitData', params); return res.data; } async submitKycFiles(params) { const res = await this.axios.post('/kyc/submitFiles', params); return res.data; } async getKycStatus(params) { const res = await this.axios.post('/kyc/status', params); return res.data; } // --- KYB --- async getKybRequirements(country) { const res = await this.axios.get('/kyb/requirements', { params: { country } }); return res.data; } async submitKybDetails(params) { const res = await this.axios.post('/kyb/submit-details', params); return res.data; } async submitKybDocuments(formData) { // Note: The user must provide a FormData object for file uploads const res = await this.axios.post('/kyb/submit', formData, { headers: { 'Content-Type': 'multipart/form-data' }, }); return res.data; } // --- MERCHANT --- async setMerchantWebhookUrl(params) { const res = await this.axios.post('/merchant/set-webhook-url', params); return res.data; } } exports.CelerizSDK = CelerizSDK; //# sourceMappingURL=index.js.map