// Donation addresses for the project. These are PUBLIC by design — the app ships // them in plaintext so users can verify them on-screen + cross-reference against // the project README before sending crypto. // // To swap addresses: regenerate in your wallet, paste new value here, rebuild APK. // (We do NOT fetch addresses from backend — that would let a compromised server // swap addresses mid-donation. Hardcoding pins the address to the signed APK.) export type DonateCoin = { /** Internal key, used for analytics + storage. */ id: 'xmr' | 'btc' | 'ltc'; /** Short ticker shown in UI chip. */ ticker: string; /** Full name shown on detail card. */ name: string; /** One-line value prop shown under the name. */ blurb: string; /** Receive address — generate fresh, never re-use across projects. */ address: string; /** Hex color used as the coin's accent in the UI. */ color: string; /** Optional URI scheme prefix for QR codes (most wallets recognize these). */ qrScheme?: string; }; // PLACEHOLDER ADDRESSES — replace before publishing. // Workflow: // 1. Install Cake Wallet from github.com/cake-tech/cake_wallet/releases (NOT Play Store) // 2. Generate XMR + BTC + LTC wallets, store each seed offline on its own paper // 3. Tap "Receive" per wallet → copy address → paste below // 4. Rebuild APK + publish update export const DONATE_COINS: DonateCoin[] = [ { id: 'xmr', ticker: 'XMR', name: 'Monero', blurb: 'Privacy by default. Untraceable on-chain. Recommended.', address: '47cXcrsYUsk81rDY3wp7ASUQtpkMHyrt4WHpqef9nSUugqxqFRaE13QBd1wviGpJHJ9Vt82GsyncNEKHQizXkoVMUVMEh1c', color: '#F26822', qrScheme: 'monero:', }, { id: 'btc', ticker: 'BTC', name: 'Bitcoin', blurb: 'Mainstream, easy to send. On-chain is public — use a fresh wallet to donate anonymously.', address: 'bc1qcaa4rv89rtt39y92rpff5rlysmtkful9ck6mml', color: '#F7931A', qrScheme: 'bitcoin:', }, { id: 'ltc', ticker: 'LTC', name: 'Litecoin', blurb: 'Fast and cheap (~$0.01 fee). Lower adoption than BTC but friendlier for small donations.', address: 'ltc1qlqe0f7nmt4se82adgj8z6vcz2zeqfrlwz0n85s', color: '#345D9D', qrScheme: 'litecoin:', }, ]; /** Returns the value to encode in the QR code — wallet URI when supported. */ export function qrPayload(coin: DonateCoin): string { if (coin.qrScheme) return `${coin.qrScheme}${coin.address}`; return coin.address; } /** True when an address still equals its placeholder — used to gate the screen. */ export function isPlaceholder(addr: string): boolean { return addr.startsWith('REPLACE_WITH_'); }