1// Copyright (c) 2026 KingPepe Team. All Rights Reserved. 2import { OFFICIAL_KPEPE_MINT } from './bridge-mainnet.js'; 3import { assertPublicNetwork } from './bridge-network.js?v=mainnet-pending-v1'; 4import { validateSupply, supplyDisplay } from './bridge-supply.js?v=mainnet-pending-v1'; 5 6export function renderPendingBridge(view, request) { 7 const root = document.createElement('section'); root.className = 'bridge-page bridge-pending'; 8 root.innerHTML = ` 9 <img class="bridge-banner" src="/kingpepe-bridge-banner-4c6e94d9.jpg" width="1280" height="427" alt="KingPepe Native to Solana Bridge" decoding="async"> 10 <header class="bridge-heading"><h1>KingPepe Bridge</h1><div class="bridge-badges"><span class="pill">MAINNET</span><span class="pill">ONE WAY</span></div><p>KingPepe Native â Solana</p><p>Burn Native â Mint Solana 1:1</p></header> 11 <section class="card bridge-box bridge-official" aria-labelledby="br-official-title"><h2 id="br-official-title">Official KPEPE Solana Mint</h2><p id="br-official-mint" class="bridge-address">${OFFICIAL_KPEPE_MINT}</p><div class="bridge-copy-actions"><button id="br-copy-mint" class="btn" type="button">Copy Mint Address</button><a class="bridge-link" href="https://explorer.solana.com/address/${OFFICIAL_KPEPE_MINT}" target="_blank" rel="noopener noreferrer">View Mint on Solana Explorer</a></div><p id="br-copy-status" class="bridge-help" role="status"></p></section> 12 <section class="bridge-warning bridge-activation" aria-labelledby="br-activation-title"><h2 id="br-activation-title">MAINNET BRIDGE â ACTIVATION PENDING</h2><p>The official KPEPE Solana Mint has been created. The KingPepe Native â Solana Bridge is completing final Mainnet deployment and activation.</p><p><strong>DO NOT SEND KPEPE YET.</strong> Do not send KPEPE to any Bridge deposit address until this notice changes to âBRIDGE ACTIVEâ.</p><p>No deposits are being accepted yet.</p></section> 13 <section class="card bridge-box" aria-label="Solana wallet"><button id="br-connect" class="btn primary bridge-connect" type="button" disabled aria-describedby="br-wallet-state">Connect Solana Wallet</button><p id="br-wallet-state" class="bridge-help">Bridge activation pending. Wallet connection and deposit-address issuance will become available after activation.</p></section> 14 <section class="card bridge-supply" aria-labelledby="br-supply-title"><div class="bridge-supply-row"><h2 id="br-supply-title">Total Bridged to Solana</h2><span class="pill">MAINNET</span></div><p id="br-supply-amount" class="bridge-supply-amount">Checkingâ¦</p><p class="bridge-help">Maximum KingPepe Supply: 21,000,000 KPEPE</p><div id="br-supply-values" hidden><progress id="br-supply-progress" max="10000" value="0" aria-label="Bridged share of maximum supply"></progress><div class="bridge-supply-row"><span id="br-supply-percentage"></span><span class="bridge-supply-remaining">Remaining <strong id="br-supply-remaining"></strong></span></div></div><p id="br-supply-help" class="bridge-help" role="status">Verifying the Mainnet baselineâ¦</p></section> 15 <section class="card bridge-box" aria-labelledby="br-flow-title"><h2 id="br-flow-title">Production Bridge flow â after activation</h2><ol class="bridge-planned-flow"><li>Connect Solana Wallet.</li><li>Receive a unique KingPepe Native deposit address.</li><li>Send Native KPEPE.</li><li>Wait for 12 Native deposit confirmations.</li><li>Native KPEPE is automatically and irreversibly burned.</li><li>The burn is verified after 12 Native burn confirmations.</li><li>Exact 1:1 KPEPE is minted on Solana.</li><li>KPEPE arrives in the originally bound Solana wallet.</li></ol><p><strong>1 KPEPE Native burned = 1 KPEPE minted on Solana.</strong></p><p>Bridge fee: <strong>0</strong>. The Bridge pays the Native burn miner fee separately. Your deposit amount is not reduced.</p><details class="bridge-advanced"><summary>About KingPepe KPEPE</summary><p>KingPepe (KPEPE) is the Solana representation of KingPepe Native, created through the official one-way KingPepe Native â Solana Bridge. Eligible KingPepe Native is irreversibly burned and, after verified Native finality, the corresponding amount of KPEPE is minted 1:1 on Solana. The bridge is one-way only and the maximum KingPepe supply is 21,000,000 KPEPE.</p><p>Standard SPL Token · 8 decimals · No freeze authority</p></details></section> 16 <nav class="bridge-official-links" aria-label="Official KingPepe links"><a href="https://kingpepe.carrd.co/" target="_blank" rel="noopener noreferrer">KingPepe Website</a><a href="https://kingpepe.net/bridge">KingPepe Bridge</a><a href="https://x.com/kingpepe111" target="_blank" rel="noopener noreferrer">KingPepe on X</a><a href="https://github.com/kingpepe2/KingPepe-Native-Solana_Bridge" target="_blank" rel="noopener noreferrer">Bridge GitHub</a></nav>`; 17 view.replaceChildren(root); window.scrollTo(0, 0); 18 const $ = name => root.querySelector('#br-' + name), oldTitle = document.title; 19 const badge = document.querySelector('.net-badge'), oldBadge = badge?.textContent; 20 const banner = document.getElementById('ecoBanner'), oldBanner = banner ? [...banner.childNodes] : []; 21 document.title = 'KingPepe Bridge â Mainnet Activation Pending'; 22 if (badge) badge.textContent = 'MAINNET'; 23 if (banner) banner.textContent = 'KingPepe Native â Solana · Activation pending'; 24 let stopped = false, polling = false;
25 $('copy-mint').onclick = async () => { 26 try { await navigator.clipboard.writeText(OFFICIAL_KPEPE_MINT); $('copy-status').textContent = 'Mint address copied.'; } 27 catch { $('copy-status').textContent = 'Select the Mint address above to copy it.'; } 28 }; 29 async function poll() { 30 if (stopped || polling) return; polling = true; 31 try { 32 const status = await request('/status'); if (stopped) return; 33 assertPublicNetwork(status); 34 if (status.state !== 'PENDING' || status.mint !== OFFICIAL_KPEPE_MINT || status.activation !== 'PENDING' || status.depositsAccepted !== false) 35 throw Error('STATUS_CHANGED'); 36 const supply = validateSupply(status.supply, status); 37 if (supply.state !== 'READY') throw Error('BASELINE_UNAVAILABLE'); 38 const display = supplyDisplay(supply); 39 $('supply-amount').textContent = display.bridged + ' KPEPE'; $('supply-values').hidden = false; 40 $('supply-progress').value = Number(display.basisPoints); $('supply-percentage').textContent = display.percentage; 41 $('supply-remaining').textContent = display.remaining + ' KPEPE'; 42 $('supply-help').textContent = 'Verified Mainnet zero-supply baseline. Public deposits are disabled.'; 43 } catch { 44 if (!stopped) { $('supply-amount').textContent = 'Unavailable'; $('supply-values').hidden = true; 45 $('supply-help').textContent = 'Mainnet baseline verification is unavailable or the deployment changed. Reload to check. Do not send funds.'; } 46 } finally { polling = false; } 47 } 48 void poll(); const interval = setInterval(() => void poll(), 10000); 49 return () => { stopped = true; clearInterval(interval); document.title = oldTitle; 50 if (badge) badge.textContent = oldBadge; if (banner) banner.replaceChildren(...oldBanner); }; 51}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.