{"_id":"@charliepank/conduit-ucpi-web3-sdk","name":"@charliepank/conduit-ucpi-web3-sdk","dist-tags":{"latest":"0.0.1-beta"},"versions":{"0.0.1-beta":{"name":"@charliepank/conduit-ucpi-web3-sdk","version":"0.0.1-beta","description":"A lightweight JavaScript/TypeScript SDK for web3 operations on the Conduit UCPI Avalanche subnet","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","lint":"eslint src/**/*.ts","clean":"rm -rf dist"},"keywords":["web3","blockchain","avalanche","conduit","ucpi","ethereum","defi"],"author":{"name":"Conduit UCPI"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/conduit-ucpi/web3-sdk.git"},"dependencies":{"@web3auth/modal":"^7.0.0","@web3auth/base":"^7.0.0","ethers":"^5.7.2","axios":"^1.6.0"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","jest":"^29.0.0","@types/jest":"^29.0.0","eslint":"^8.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0"},"_id":"@charliepank/conduit-ucpi-web3-sdk@0.0.1-beta","bugs":{"url":"https://github.com/conduit-ucpi/web3-sdk/issues"},"homepage":"https://github.com/conduit-ucpi/web3-sdk#readme","_nodeVersion":"20.18.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-R5HBZxGZbqLIJD2EMPHOLytmcwkIzMwZkir1SjDKDRTbtS0kx7pOLy6DSuqf+7paJJXCCxNKe6jKpOj8+vI84Q==","shasum":"1704c93a579f0d25e5b712a6396430ef32acaab7","tarball":"https://registry.npmjs.org/@charliepank/conduit-ucpi-web3-sdk/-/conduit-ucpi-web3-sdk-0.0.1-beta.tgz","fileCount":47,"unpackedSize":99987,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICcLwvjVUSAg40Zfr7fP2ICRYZ+j7VB2mh89JXF/YFhfAiBnJJe3xOFdwy8aHLvQE++U4zqVOkcqqdnmnkyOnG7rzg=="}]},"_npmUser":{"name":"charliepank","email":"charliepank@gmail.com","actor":{"name":"charliepank","email":"charliepank@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"charliepank","email":"charliepank@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conduit-ucpi-web3-sdk_0.0.1-beta_1750655852586_0.447908646632297"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-23T05:17:32.451Z","0.0.1-beta":"2025-06-23T05:17:32.842Z","modified":"2025-06-23T05:17:33.118Z"},"maintainers":[{"name":"charliepank","email":"charliepank@gmail.com"}],"description":"A lightweight JavaScript/TypeScript SDK for web3 operations on the Conduit UCPI Avalanche subnet","homepage":"https://github.com/conduit-ucpi/web3-sdk#readme","keywords":["web3","blockchain","avalanche","conduit","ucpi","ethereum","defi"],"repository":{"type":"git","url":"git+https://github.com/conduit-ucpi/web3-sdk.git"},"author":{"name":"Conduit UCPI"},"bugs":{"url":"https://github.com/conduit-ucpi/web3-sdk/issues"},"license":"MIT","readme":"# Conduit UCPI Web3 SDK\n\nA lightweight JavaScript/TypeScript SDK that provides a simple interface for web3 operations on the Conduit UCPI Avalanche subnet. The SDK handles Web3Auth authentication, service communication, and transaction signing while abstracting all blockchain complexity from the client.\n\n## Features\n\n- 🔐 **Web3Auth Integration** - Seamless wallet authentication\n- 📝 **Contract Operations** - Deploy and interact with smart contracts\n- 💰 **On-Ramp Services** - Fiat to crypto conversion\n- 👛 **Wallet Management** - Balance queries and transaction history\n- ⚡ **One-Click Deployment** - Complete contract deployment with funding\n- 🎣 **React Hooks** - Ready-to-use React components\n- 🛡️ **Type Safety** - Full TypeScript support\n- 🔄 **Error Handling** - Comprehensive error management\n\n## Installation\n\n```bash\nnpm install @conduit-ucpi/web3-sdk\n# or\nyarn add @conduit-ucpi/web3-sdk\n```\n\n## Quick Start\n\n### Basic Usage\n\n```typescript\nimport { ConduitSDK } from '@conduit-ucpi/web3-sdk';\n\nconst sdk = new ConduitSDK({\n  apiKey: 'sk_live_your_api_key_here',\n  environment: 'production',\n  web3authClientId: 'BH_your_web3auth_client_id'\n});\n\n// Connect wallet\nconst address = await sdk.connect();\nconsole.log('Connected:', address);\n\n// Deploy an ERC20 token\nconst token = await sdk.deployContract('erc20', {\n  name: 'My Token',\n  symbol: 'MTK',\n  decimals: 18,\n  initialSupply: '1000000'\n});\nconsole.log('Token deployed at:', token.contractAddress);\n```\n\n### One-Click Contract Deployment with Funding\n\n```typescript\n// Complete flow with automatic funding\nconst result = await sdk.deployContractWithFunding('erc20', {\n  name: 'My Business Token',\n  symbol: 'MBT',\n  decimals: 18,\n  initialSupply: '1000000'\n}, 50, { // $50 funding\n  onrampProvider: 'moonpay',\n  onStepComplete: (step, data) => {\n    console.log(`✅ ${step}:`, data);\n  },\n  onStepError: (step, error) => {\n    console.error(`❌ ${step}:`, error);\n  }\n});\n\nif (result.success) {\n  console.log('🎉 Contract deployed successfully!');\n  console.log('Contract Address:', result.contractAddress);\n  console.log('Transaction Hash:', result.transactionHash);\n}\n```\n\n### React Integration\n\n```tsx\nimport React from 'react';\nimport { useConduitSDK, useBalance, useAllBalances } from '@conduit-ucpi/web3-sdk';\n\nfunction App() {\n  const { sdk, isConnected, address, connect, disconnect } = useConduitSDK({\n    apiKey: 'sk_live_your_api_key_here',\n    environment: 'production',\n    web3authClientId: 'BH_your_web3auth_client_id'\n  });\n\n  const { balance } = useBalance(sdk);\n  const { balances } = useAllBalances(sdk);\n\n  return (\n    <div>\n      {!isConnected ? (\n        <button onClick={connect}>Connect Wallet</button>\n      ) : (\n        <div>\n          <p>Connected: {address}</p>\n          <p>Balance: {balance?.balanceFormatted} {balance?.symbol}</p>\n          <button onClick={disconnect}>Disconnect</button>\n        </div>\n      )}\n    </div>\n  );\n}\n```\n\n## API Reference\n\n### Configuration\n\n```typescript\ninterface ConduitSDKConfig {\n  apiKey: string;\n  environment: 'production' | 'staging' | 'development';\n  web3authClientId: string;\n  apiBaseUrl?: string;\n  timeout?: number;\n  retryAttempts?: number;\n  enableLogging?: boolean;\n}\n```\n\n### Authentication\n\n```typescript\n// Connect wallet\nconst address: string = await sdk.connect();\n\n// Disconnect wallet\nawait sdk.disconnect();\n\n// Check connection status\nconst isConnected: boolean = sdk.isConnected();\n\n// Get user address\nconst address: string | null = sdk.getAddress();\n\n// Get session token\nconst token: string | null = sdk.getSessionToken();\n```\n\n### Contract Operations\n\n```typescript\n// Deploy contract\nconst result: DeploymentResult = await sdk.deployContract(type, params);\n\n// Call contract function\nconst result: TransactionResult = await sdk.callContract(\n  address,\n  functionName,\n  args,\n  options\n);\n\n// Read from contract\nconst data: any = await sdk.readContract(\n  address,\n  functionName,\n  args,\n  abi\n);\n```\n\n### On-Ramp Operations\n\n```typescript\n// Buy USDC with fiat\nconst result: OnRampResult = await sdk.buyUSDC(amount, options);\n\n// Get available providers\nconst providers: OnRampProvider[] = await sdk.getOnRampProviders();\n\n// Get quote\nconst quote: OnRampQuote = await sdk.getOnRampQuote(amount, currency, provider);\n\n// Check status\nconst status: OnRampStatus = await sdk.getOnRampStatus(sessionId);\n\n// Get history\nconst history: OnRampTransaction[] = await sdk.getOnRampHistory();\n```\n\n### Wallet Operations\n\n```typescript\n// Get token balance\nconst balance: TokenBalance = await sdk.getBalance(tokenAddress);\n\n// Get all balances\nconst summary: WalletSummary = await sdk.getAllBalances();\n\n// Get transaction history\nconst history: TransactionHistory = await sdk.getTransactionHistory(options);\n\n// Get transaction status\nconst status: TransactionStatus = await sdk.getTransactionStatus(txHash);\n```\n\n### Utility Operations\n\n```typescript\n// Get nonce\nconst nonce: number = await sdk.getNonce();\n\n// Estimate gas\nconst gasEstimate: string = await sdk.estimateGas(to, data, value);\n\n// Get token info\nconst info: TokenInfo = await sdk.getTokenInfo(tokenAddress);\n\n// Detect tokens\nconst tokens: TokenInfo[] = await sdk.detectTokens();\n```\n\n## Contract Types\n\n### ERC20 Token\n\n```typescript\nconst erc20Params: ERC20Params = {\n  name: 'My Token',\n  symbol: 'MTK',\n  decimals: 18,\n  initialSupply: '1000000000000000000000000' // 1M tokens\n};\n```\n\n### ERC721 NFT\n\n```typescript\nconst erc721Params: ERC721Params = {\n  name: 'My NFT Collection',\n  symbol: 'MNC',\n  baseTokenURI: 'https://api.example.com/metadata/'\n};\n```\n\n### ERC1155 Multi-Token\n\n```typescript\nconst erc1155Params: ERC1155Params = {\n  name: 'My Multi-Token Collection',\n  symbol: 'MMC',\n  baseTokenURI: 'https://api.example.com/metadata/'\n};\n```\n\n## React Hooks\n\n### useConduitSDK\n\n```typescript\nconst { sdk, isConnected, address, connect, disconnect } = useConduitSDK(config);\n```\n\n### useBalance\n\n```typescript\nconst { balance, isLoading, error, refetch } = useBalance(sdk, tokenAddress);\n```\n\n### useAllBalances\n\n```typescript\nconst { balances, isLoading, error, refetch } = useAllBalances(sdk);\n```\n\n### useTransactionHistory\n\n```typescript\nconst { history, isLoading, error, loadMore, hasMore } = useTransactionHistory(sdk, options);\n```\n\n### useOnRamp\n\n```typescript\nconst { buyUSDC, getProviders, getQuote, isLoading, error } = useOnRamp(sdk);\n```\n\n## Error Handling\n\nThe SDK provides comprehensive error handling with specific error types:\n\n```typescript\nimport { \n  ConduitSDKError, \n  AuthenticationError, \n  NetworkError, \n  ContractError \n} from '@conduit-ucpi/web3-sdk';\n\ntry {\n  await sdk.deployContract('erc20', params);\n} catch (error) {\n  if (error instanceof AuthenticationError) {\n    console.error('Authentication failed:', error.message);\n  } else if (error instanceof ContractError) {\n    console.error('Contract operation failed:', error.message);\n  } else if (error instanceof NetworkError) {\n    console.error('Network error:', error.message);\n  }\n}\n```\n\n## Utility Functions\n\n### Validation\n\n```typescript\nimport { validateAddress, validateAmount } from '@conduit-ucpi/web3-sdk';\n\nconst isValidAddress = validateAddress('0x1234...');\nconst isValidAmount = validateAmount('100.50');\n```\n\n### Formatting\n\n```typescript\nimport { formatAddress, formatBalance, formatUSDValue } from '@conduit-ucpi/web3-sdk';\n\nconst shortAddress = formatAddress('0x1234567890abcdef...'); // 0x1234...cdef\nconst formattedBalance = formatBalance('1000000000000000000', 18); // 1.0\nconst usdValue = formatUSDValue('1234.56'); // $1,234.56\n```\n\n## Development\n\n### Building\n\n```bash\nnpm run build\n```\n\n### Development Mode\n\n```bash\nnpm run dev\n```\n\n### Testing\n\n```bash\nnpm test\n```\n\n### Linting\n\n```bash\nnpm run lint\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Support\n\nFor support and questions, please contact:\n- Email: support@conduit-ucpi.com\n- Documentation: https://docs.conduit-ucpi.com\n- GitHub Issues: https://github.com/conduit-ucpi/web3-sdk/issues ","readmeFilename":"README.md","_rev":"1-602b8a298653e39607560121d798e7a4"}