/** * Enhanced Demo Page - Clawnch Protocol * Shows SDK in action with simuated API calls */ import { ClawnchSDK } from './sdk/index.js'; // Initialize SDK const clawnch = new ClawnchSDK({ apiKey: 'demo-api-key', // Demo mode }); // Launch Token Function async function launchToken() { try { // Disable button while "processing" const launchBtn = document.getElementById('launch-btn'); launchBtn.disabled = true; launchBtn.textContent = 'Launching...'; launchBtn.className = 'opacity-50 cursor-not-allowed'; // Simulate API call const result = await clawnch.launchToken({ name: 'DemoToken', symbol: 'DEMO', decimals: 9, initialSupply: 1000000000, creatorFeePercent: 20, }); // Update UI after delay (simulate network request) setTimeout(() => { launchBtn.disabled = false; launchBtn.textContent = '🎉 Token Launched!'; launchBtn.className = 'opacity-100 cursor-allowed'; // Show results showTokenResult(result); }, 1500); } catch (error) { console.error('Launch error:', error); const launchBtn = document.getElementById('launch-btn'); launchBtn.disabled = false; launchBtn.textContent = 'Failed'; launchBtn.className = 'opacity-100 cursor-not-allowed text-red-500'; } } // Stake Tokens Function async function stakeTokens() { try { const stakeBtn = document.getElementById('stake-btn'); const amountInput = document.getElementById('stake-amount'); const amount = amountInput.value ? parseInt(amountInput.value) : 0; stakeBtn.disabled = true; stakeBtn.textContent = 'Staking...'; stakeBtn.className = 'opacity-50 cursor-not-allowed'; // Simulate API call const result = await clawnch.stake({ amount: amount, }); setTimeout(() => { stakeBtn.disabled = false; stakeBtn.textContent = '✅ Staked!'; stakeBtn.className = 'opacity-100 cursor-allowed'; showStakeResult(result); }, 1000); } catch (error) { console.error('Stake error:', error); const stakeBtn = document.getElementById('stake-btn'); stakeBtn.disabled = false; stakeBtn.textContent = 'Failed'; stakeBtn.className = 'opacity-100 cursor-not-allowed text-red-500'; } } // Execute Buyback Function async function executeBuyback() { try { const buybackBtn = document.getElementById('buyback-btn'); const amountInput = document.getElementById('buyback-amount'); const amount = amountInput.value ? parseInt(amountInput.value) : 0; buybackBtn.disabled = true; buybackBtn.textContent = 'Executing Buyback...'; buybackBtn.className = 'opacity-50 cursor-not-allowed'; // Simulate API call const result = await clawnch.executeBuyback({ amount: amount, }); setTimeout(() => { buybackBtn.disabled = false; buybackBtn.textContent = '💰 Buyback Executed!'; buybackBtn.className = 'opacity-100 cursor-allowed'; showBuybackResult(result); }, 1000); } catch (error) { console.error('Buyback error:', error); const buybackBtn = document.getElementById('buyback-btn'); buybackBtn.disabled = false; buybackBtn.textContent = 'Failed'; buybackBtn.className = 'opacity-100 cursor-not-allowed text-red-500'; } } // Get Fee Distribution async function getFeeDistribution() { try { const feeDist = await clawnch.getFeeDistribution(); showFeeDistribution(feeDist); } catch (error) { console.error('Fee distribution error:', error); document.getElementById('fee-error').textContent = 'Failed to fetch fees'; } } // Show Token Result function showTokenResult(result) { const output = document.getElementById('launch-output'); output.innerHTML = `

🎉 Token Launched Successfully!

Token Details

Mint Address
${result.mint}
Symbol
${result.symbol}
Initial Supply
${result.initialSupply}
Creator Fee
${result.creatorFeePercent}%
Fee Distribution
${JSON.stringify(result.feeDistribution, null, 2)}
`; } // Show Stake Result function showStakeResult(result) { const output = document.getElementById('stake-output'); output.innerHTML = `

✅ Staking Successful!

Staking Details

Staking Vault
${result.stakingVault}
Amount Staked
${result.stakedAmount}
Lock Duration
${result.lockDuration ? result.lockDuration + 's locked' : 'Unlocked'}
Current APY
${result.rewardsPerYear}% annual
`; } // Show Buyback Result function showBuybackResult(result) { const output = document.getElementById('buyback-output'); output.innerHTML = `

💰 Buyback Executed Successfully!

Buyback Details

Treasury
${result.treasury}
Buyback Amount
${result.amount}
Price Impact
${result.estimatedPriceImpact}
`; } // Show Fee Distribution function showFeeDistribution(feeDist) { const output = document.getElementById('fee-output'); output.innerHTML = `

💰 Fee Distribution

10%
Clawnch Protocol
10%
20%
20%
20%
35%
35%
35%
35%

Stakers

Buyback Fund

Holder Rewards

Clawnch Protocol
Revenue
Creator
Incentive

10/20/35/35 Split

Fee Distribution Breakdown per 100m tokens traded

`; } // Initialize on load window.onload = () => { // Show initial state showTokenResult({ mint: 'DemoTokenMockMintAddress', symbol: 'DEMO', initialSupply: 0, creatorFeePercent: 0, feeDistribution: null, }); // Update status text const statusText = document.getElementById('sdk-status'); if (statusText) { statusText.textContent = '🟢 Clawnch SDK Connected (Demo Mode)'; statusText.className = 'text-green-400 font-medium'; } };