UNPKG

tronzap-sdk

Version:

Official Node.js SDK for the TronZap API. TronZap is a platform for renting energy on the TRON blockchain. Buy TRON energy for cheap USDT transfers on TronZap.com

1 lines 8.36 kB
{"version":3,"sources":["../src/types.ts","../src/client.ts"],"names":["ErrorCode","TronZapError","code","message","TronZapClient","config","endpoint","data","headers","stringifiedData","crypto","response","responseData","fromAddress","toAddress","contractAddress","address","energy","duration","energyAmount","externalId","activateAddress","id"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface TronZapConfig {\n apiToken: string;\n apiSecret: string;\n baseUrl?: string;\n}\n\nexport enum ErrorCode {\n AUTH_ERROR = 1,\n INVALID_SERVICE_OR_PARAMS = 2,\n WALLET_NOT_FOUND = 5,\n INSUFFICIENT_FUNDS = 6,\n INVALID_TRON_ADDRESS = 10,\n INVALID_ENERGY_AMOUNT = 11,\n INVALID_DURATION = 12,\n TRANSACTION_NOT_FOUND = 20,\n ADDRESS_NOT_ACTIVATED = 24,\n ADDRESS_ALREADY_ACTIVATED = 25,\n INTERNAL_SERVER_ERROR = 500,\n UNKNOWN_ERROR = 999, // Added for fallback\n}\n\nexport class TronZapError extends Error {\n constructor(public code: number, message: string) {\n super(message);\n this.name = 'TronZapError';\n }\n}","import crypto from 'crypto';\nimport { ErrorCode, TronZapConfig, TronZapError } from './types';\n\nexport class TronZapClient {\n private readonly baseUrl: string;\n private readonly apiToken: string;\n private readonly apiSecret: string;\n\n constructor(config: TronZapConfig) {\n // Default API URL if not provided, ensure apiToken and apiSecret are set\n this.baseUrl = config.baseUrl || 'https://api.tronzap.com';\n this.apiToken = config.apiToken;\n this.apiSecret = config.apiSecret;\n if (!this.apiToken || !this.apiSecret) {\n throw new Error('apiToken and apiSecret are required');\n }\n }\n\n // Generic request handler for all API calls\n async request(endpoint: string, data: Record<string, any> = {}): Promise<any> {\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.apiToken}`,\n 'Content-Type': 'application/json',\n };\n\n // Generate signature for request authentication\n const stringifiedData = JSON.stringify(data);\n headers['X-Signature'] = crypto.createHash('sha256').update(stringifiedData + this.apiSecret).digest('hex');\n\n const response = await fetch(`${this.baseUrl}${endpoint}`, {\n method: 'POST',\n headers,\n body: stringifiedData,\n });\n\n // Parse response and ensure it's valid\n const responseData = await response.json() as { code: number; error?: string; result: any };\n\n if (!response.ok || responseData.code !== 0) {\n throw new TronZapError(responseData.code || 500, responseData.error || 'Request failed');\n }\n\n return responseData.result;\n }\n\n // Fetch available services, ensure array return\n async getServices(): Promise<any[]> {\n return this.request('/v1/services');\n }\n\n // Fetch account balance\n async getBalance(): Promise<any> {\n return this.request('/v1/balance');\n }\n\n // Estimate energy for a transaction\n async estimateEnergy(fromAddress: string, toAddress: string, contractAddress?: string): Promise<any> {\n const data = { from_address: fromAddress, to_address: toAddress, contract_address: contractAddress };\n return this.request('/v1/estimate-energy', data);\n }\n\n // Calculate energy cost\n async calculate(address: string, energy: number, duration: number = 1): Promise<any> {\n const data = { address, energy, duration };\n return this.request('/v1/calculate', data);\n }\n\n // Create an energy transaction\n async createEnergyTransaction(\n address: string,\n energyAmount: number,\n duration: number = 1, // 1 or 24 hours\n externalId?: string,\n activateAddress: boolean = false\n ): Promise<any> {\n const data: Record<string, any> = {\n service: 'energy',\n params: {\n address,\n energy_amount: energyAmount,\n duration,\n },\n };\n\n if (activateAddress) {\n data.params.activate_address = true;\n }\n\n if (externalId) {\n data.external_id = externalId;\n }\n\n return this.request('/v1/transaction/new', data);\n }\n\n // Create an address activation transaction\n async createAddressActivationTransaction(address: string, externalId?: string): Promise<any> {\n const data: Record<string, any> = {\n service: 'activate_address',\n params: {\n address,\n },\n };\n\n if (externalId) {\n data.external_id = externalId;\n }\n\n return this.request('/v1/transaction/new', data);\n }\n\n // Check transaction status\n async checkTransaction(id?: string, externalId?: string): Promise<any> {\n const data: Record<string, any> = {};\n if (id) {\n data.id = id;\n }\n if (externalId) {\n data.external_id = externalId;\n }\n\n // Ensure data is not empty to avoid API rejection\n if (Object.keys(data).length === 0) {\n throw new TronZapError(ErrorCode.INVALID_SERVICE_OR_PARAMS, 'Either id or externalId is required');\n }\n\n return this.request('/v1/transaction/check', data);\n }\n\n // Fetch direct recharge info\n async getDirectRechargeInfo(): Promise<any> {\n return this.request('/v1/direct-recharge-info');\n }\n}"]}