celeriz
Version:
Complete SDK for Celeriz Onramp/Offramp API with wallet integration and white-label support
300 lines • 10.2 kB
JavaScript
"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