PageSourceSearch

https://www.helius.dev/docs/laserstream/guides/account-subscription

html helius.dev collected 2026-10-02 17:01:43 UTC 771,566 bytes, 795 lines download raw bytes

1<!DOCTYPE html><html lang="en" class="inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark" data-banner-state="visible" data-assistant-state="closed" data-page-mode="none" data-current-path="/"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="preload" href="/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/PaperMono_Variable.p.aa32f7a0.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=170d27f36fb94074ff24cfb5e0ad9816"/><link rel="preload" as="image" href="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/dark.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=a28519235a2fa6053288c3b9c0091124"/><link rel="stylesheet" href="/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" data-precedence="next"/><link rel="stylesheet" href="/docs/_next/static/chunks/cbc8615ac0de59e9.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" data-precedence="next"/><style data-precedence="base-ui:low" data-href="base-ui-disable-scrollbar">.base-ui-disable-scrollbar{scrollbar-width:none}.base-ui-disable-scrollbar::-webkit-scrollbar{display:none}</style><link rel="preload" as="script" fetchPriority="low" href="/docs/_next/static/chunks/6d55b684068fd47e.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM"/>
1<script src="/docs/_next/static/chunks/44795504c795ca32.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/9389e3263b5cd009.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/b730549587248be7.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/f6b63147e67d2c3a.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/turbopack-c8982dfcce4a79e8.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/d056c4dd204a2da3.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/187844b452a731d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/2f355e1cfcb656a3.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<script src="/docs/_next/static/chunks/baaa22a26eddc070.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" async=""></script>
1<link rel="preload" href="/docs/_next/static/chunks/2119d8c4cd150ffe.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" as="script" fetchPriority="low"/><link rel="preload" href="/docs/_next/static/chunks/2c8d612c1ef69ecc.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" as="script" fetchPriority="low"/><link rel="preload" href="/docs/_next/static/chunks/84b99a46231ef6be.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" as="script" fetchPriority="low"/><link rel="preload" href="/docs/_next/static/chunks/7dac459a5be0fbd2.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" as="script" fetchPriority="low"/><link rel="preload" href="/docs/_next/static/chunks/47232d04bffc0a26.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" as="script" fetchPriority="low"/><title>Account Subscription - Helius LaserStream</title><meta name="description" content="Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream."/><meta name="application-name" content="Helius Docs"/><meta name="generator" content="Mintlify"/><meta name="msapplication-config" content="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/browserconfig.xml"/><meta name="apple-mobile-web-app-title" content="Helius Docs"/><meta name="msapplication-TileColor" content="#E84125"/><link rel="canonical" href="https://www.helius.dev/docs/laserstream/guides/account-subscription"/><link rel="alternate" type="application/xml" href="/docs/sitemap.xml"/><link rel="alternate" type="text/markdown" href="/docs/laserstream/guides/account-subscription.md"/><meta property="og:title" content="Account Subscription - Helius LaserStream"/><meta property="og:description" content="Subscribe to Solana account updates and track on-chain state changes using LaserStream"/><meta property="og:url" content="https://www.helius.dev/docs/laserstream/guides/account-subscription"/><meta property="og:site_name" content="Helius Docs"/><meta property="og:image" content="https://helius.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DSubscribe%2Bto%2BAccounts%26title%3DAccount%2BSubscription%2Band%2BUpdates%26description%3DLearn%2Bhow%2Bto%2Bsubscribe%2Bto%2Baccount%2Bupdates%2Band%2Befficiently%2Btrack%2Bon-chain%2Bstate%2Bchanges%2Busing%2BLaserstream.%26theme%3Dbc1110443f3364213ef22866&amp;w=1200&amp;q=100"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Account Subscription - Helius LaserStream"/><meta name="twitter:description" content="Subscribe to Solana account updates and track on-chain state changes using LaserStream"/><meta name="twitter:image" content="https://helius.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DSubscribe%2Bto%2BAccounts%26title%3DAccount%2BSubscription%2Band%2BUpdates%26description%3DLearn%2Bhow%2Bto%2Bsubscribe%2Bto%2Baccount%2Bupdates%2Band%2Befficiently%2Btrack%2Bon-chain%2Bstate%2Bchanges%2Busing%2BLaserstream.%26theme%3Dbc1110443f3364213ef22866&amp;w=1200&amp;q=100"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: light)"/><link rel="apple-touch-icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/apple-touch-icon.png" type="image/png" sizes="180x180"/><link rel="icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: dark)"/><link rel="preload" href="https://jiz6tlwg28uaztou.public.blob.vercel-storage.com/docs/lausanne-450-Xv6JlhB8OudFw8Xb2zwoQodc86f35H.woff2" as="font" type="font/woff2" crossorigin="anonymous"/>
1<link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="preload" href="https://d4tuoctqmanu0.cloudfront.net/katex.min.css" as="style"/>
1<script type="text/javascript">!function(){var b="/docs";
2function a(p){if(p==null)return"/";p=""+p;if(""===p)return"/";return"/"===p.charAt(0)?p:"/"+p}
3function u(p){if(p==null)return p;p=""+p;if(!p||p.charAt(p.length-1)==="/")return p.slice(0,-1);return p}
4function i(p){if(p==null)return p;p=""+p;if(6<=p.length&&p.substring(p.length-6)==="/index")return p.substring(0,p.length-6);if("index"===p)return"";return p}
5var p=(location.pathname||"").split("?")[0].split("#")[0]||"";
6if(b)if(p===b)p="";else if(0===p.indexOf(b+"/"))p=p.substring(b.length);
7p=a(p);p=u(p);p=i(p);p=""===p||"index"===p?"/":a(p);
8document.documentElement.setAttribute("data-current-path",p);
9}();</script>
9<script type="text/javascript">(() => {
10  const isIOS =
11    /iP(hone|ad|od)/.test(navigator.userAgent) ||
12    (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints > 1);
13  if (!isIOS) return;
14  const apply = () => {
15    for (const meta of document.querySelectorAll('meta[name="viewport"]')) {
16      const content = meta.getAttribute('content') || '';
17      if (!content.includes('maximum-scale')) {
18        meta.setAttribute('content', content + ', maximum-scale=1');
19      }
20    }
21  };
22  apply();
23  new MutationObserver(apply).observe(document.head, {
24    childList: true,
25    subtree: true,
26    attributes: true,
27    attributeFilter: ['content'],
28  });
29})();</script>
29<script type="text/javascript">!function(){
30function read(){try{
31var e=performance.getEntriesByType?performance.getEntriesByType("navigation"):[];
32var st=(e[0]&&e[0].serverTiming)||[];
33var g={};
34for(var i=0;i<st.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}
35if(n==="country")g.country=d;else if(n==="region")g.region=d;else if(n==="continent")g.continent=d;}
36var w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;
37}catch(x){}}
38read();document.addEventListener("DOMContentLoaded",read);
39}();</script>
39<script type="text/javascript">!function(){try{
40var w=window;w.mintlify=w.mintlify||{};
41var q=w.mintlify.__apiPlaygroundInputsQueue;
42if(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}
43w.mintlify.api=w.mintlify.api||{};
44w.mintlify.api.playground=w.mintlify.api.playground||{};
45if(typeof w.mintlify.api.playground.setServerVariables!=="function"){
46w.mintlify.api.playground.setServerVariables=function(v){q.push({type:"set",variables:v});};
47}
48if(typeof w.mintlify.api.playground.clearServerVariables!=="function"){
49w.mintlify.api.playground.clearServerVariables=function(){q.push({type:"clear"});};
50}
51}catch(e){}}();</script>
51<script type="text/javascript">(function(){
52if(typeof CSS==="undefined"||!("registerProperty" in CSS))return;
53if(CSS.supports&&CSS.supports("-webkit-backdrop-filter:none"))return;
54var n=["--scroll-area-overflow-x-start","--scroll-area-overflow-x-end","--scroll-area-overflow-y-start","--scroll-area-overflow-y-end"];
55var d={"syntax":"<length>","inherits":false,"initialValue":"0px"};
56for(var i=0;i<n.length;i++){try{CSS.registerProperty({name:n[i],syntax:d.syntax,inherits:d.inherits,initialValue:d.initialValue})}catch(e){}}
57})();</script>
57<script type="text/javascript">(function(a,b){try{let c=document.getElementById("banner")?.innerText;if(c){for(let d=0;d<localStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)&&localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,"hidden")}document.documentElement.setAttribute(b,"visible");return}for(let c=0;c<localStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)&&localStorage.getItem(d))return void document.documentElement.setAttribute(b,"hidden")}document.documentElement.setAttribute(b,"visible")}catch(a){document.documentElement.setAttribute(b,"hidden")}})(
58  "bannerDismissed",
59  "data-banner-state",
60)</script>
60<script src="/docs/_next/static/chunks/a6dad97d9634a72d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" noModule=""></script>
60</head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div>
60<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Helius Docs","creator":{"@type":"Organization","name":"Mintlify","url":"https://mintlify.com"}}</script>
60<script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","isDarkMode","dark",null,["dark","light","true","false","system"],{"true":"dark","false":"light","dark":"dark","light":"light"},true,false)</script>
60<script>(function(){try{var f=null;var v=f||localStorage.getItem("isDarkMode");if(v==='true')v='dark';else if(v==='false')v='light';if(v!=='light'&&v!=='dark'&&v!=='system')v="dark";document.documentElement.setAttribute("data-theme-preference",v)}catch(e){}})();</script>
60<blockquote class="sr-only" data-agent-docs-index="true" aria-hidden="true"><h2>Documentation Index</h2><p>Fetch the complete documentation index at:<!-- --> <a href="/docs/llms.txt" tabindex="-1">/docs/llms.txt</a></p><p>Use this file to discover all available pages before exploring further.</p></blockquote>
60<script id="_mintlify-banner-script">(function i(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split("/").filter(a=>""!==a&&"global"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=>c.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push("global"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,"hidden");let k=!0,l=0;for(;l<localStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b&&b===f){k=!1;break}g&&(a.startsWith(`lang:${g}_`)||!a.startsWith("lang:"))&&(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?"visible":"hidden")}catch(a){console.error(a),document.documentElement.setAttribute(d,"hidden")}})(
61  {"global":{"content":"New: Try Gatekeeper (Beta) for significantly lower latency. [Learn More](/docs/gatekeeper/overview)","dismissible":true}},
62  "en",
63  ["en","zh","ja","pt-BR","ko","de","fr","es","id","vi"],
64  "data-banner-state",
65  "bannerDismissed",
66)</script>
66<style>@font-face {
67  font-family: 'fontLausanne';
68  src: url('https://jiz6tlwg28uaztou.public.blob.vercel-storage.com/docs/lausanne-450-Xv6JlhB8OudFw8Xb2zwoQodc86f35H.woff2') format('woff2');
69  font-weight: 450;
70  font-display: swap;
71}</style><link href="https://fonts.googleapis.com/css2?family=Geist:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,500;1,600;1,700;1,800&amp;display=swap" rel="stylesheet"/><style>:root {
72  --font-family-headings-custom: "fontLausanne", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
73  --font-weight-headings-custom: 450;
74  --font-family-body-custom: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
75  
76  
77}
78</style><style>:root {
79    --primary: 232 65 37;
80    --primary-light: 232 65 37;
81    --primary-dark: 232 65 37;
82    --tooltip-foreground: 255 255 255;
83    --background-light: 255 255 255;
84    --background-dark: 13 10 12;
85    --gray-50: 249 244 243;
86    --gray-100: 245 239 239;
87    --gray-200: 229 224 223;
88    --gray-300: 213 208 207;
89    --gray-400: 165 160 159;
90    --gray-500: 119 113 113;
91    --gray-600: 87 81 81;
92    --gray-700: 69 64 63;
93    --gray-800: 44 39 38;
94    --gray-900: 29 24 23;
95    --gray-950: 17 12 11;
96  }</style>
96<script type="text/javascript">
97          (function() {
98            function loadKatex() {
99              const link = document.querySelector('link[href="https://d4tuoctqmanu0.cloudfront.net/katex.min.css"]');
100              if (link) link.rel = 'stylesheet';
101            }
102            if (document.readyState === 'loading') {
103              document.addEventListener('DOMContentLoaded', loadKatex);
104            } else {
105              loadKatex();
106            }
107          })();
108        </script>
108<div class="relative antialiased text-gray-500 dark:text-gray-400">
108<script id="_mintlify-navbar-transition-script">(function(a){let b,c=(b="navbar-transition","maple"===a&&(b+="-maple"),b);function d(){let a=!1;a=window.scrollY>50;let b=document.getElementById(c);b&&b.hasAttribute("data-is-opaque")&&b.setAttribute("data-is-opaque",`${!!a}`)}let e=function(){let a=document.createElement("style"),b=`#${c}`;return a.appendChild(document.createTextNode(`${b},${b} *,${b} *::before,${b} *::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`)),document.head.appendChild(a),function(){window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(a)},1)}}();function f(){window.removeEventListener("scroll",d),document.removeEventListener("DOMContentLoaded",d),d(),e()}window.addEventListener("scroll",d,{passive:!0}),document.addEventListener("DOMContentLoaded",d),("requestAnimationFrame"in globalThis?requestAnimationFrame:setTimeout)(d),"complete"===document.readyState?f():window.addEventListener("load",f,{once:!0})})("luma")</script>
108<script id="_mintlify-scroll-margin-script">(function () {
109  var measure = function(){let a=document.querySelectorAll("[id='navbar'], [data-top-chrome]"),b=0;a.forEach(a=>{let c=a.getBoundingClientRect();c.height>0&&(b=Math.max(b,c.bottom))});let c=0,d=document.getElementById("content-container");if(d){let{overflowY:a}=getComputedStyle(d);("auto"===a||"scroll"===a)&&(c=Math.max(0,d.getBoundingClientRect().top))}let e=`${Math.round(Math.max(0,b-c))+40}px`,f=document.documentElement.style;f.getPropertyValue("--scroll-mt")!==e&&f.setProperty("--scroll-mt",e)};
110  (function(a){let b=[],c=0,d="undefined"==typeof ResizeObserver?null:new ResizeObserver(f);function e(){let c=Array.from(document.querySelectorAll("[id='navbar'], [data-top-chrome]"));(c.length!==b.length||c.some((a,c)=>a!==b[c]))&&d&&(d.disconnect(),c.forEach(a=>d.observe(a))),b=c,a()}function f(){c||(c=requestAnimationFrame(()=>{c=0,e()}))}let g="[id='navbar'], [data-top-chrome]";function h(a){let b=a.target;if(b instanceof Element&&b.closest(g))return!0;for(let b of a.addedNodes)if(b instanceof Element&&(b.matches(g)||b.querySelector(g)))return!0;for(let b of a.removedNodes)if(b instanceof Element&&(b.matches(g)||b.querySelector(g)))return!0;return!1}new MutationObserver(a=>{a.some(h)&&f()}).observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener("resize",f),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",e),e()})(measure);
111  (function(a){let b=window.location.hash.slice(1);if(!b)return;function c(){return"smooth"===getComputedStyle(document.documentElement).scrollBehavior}function d(c){let d=document.getElementById(b);return!!d&&(a(),d.scrollIntoView(c?{behavior:c}:void 0),!0)}if("complete"===document.readyState)return void d();let e=new MutationObserver(()=>{!c()&&d("instant")&&f()});function f(){e.disconnect(),window.removeEventListener("load",g)}function g(){let a=c();f(),a&&requestAnimationFrame(()=>{d(),function(){let a=["wheel","touchstart","keydown","pointerdown"],c=0,e=window.scrollY,f=setInterval(()=>{c+=1;let a=document.getElementById(b);if(!a||c>=6)return g();let f=Math.abs(window.scrollY-e)>1;if(e=window.scrollY,f)return;let h=parseFloat(getComputedStyle(a).scrollMarginTop)||0;Math.abs(a.getBoundingClientRect().top-h)>4&&d()},350);function g(){clearInterval(f),a.forEach(a=>window.removeEventListener(a,g))}a.forEach(a=>window.addEventListener(a,g,{passive:!0}))}()})}window.addEventListener("load",g),e.observe(document.documentElement,{childList:!0,subtree:!0}),!c()&&d("instant")&&f()})(measure);
112})();</script>
112<a href="#content-area" class="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-50 focus:p-2 focus:text-sm focus:bg-background-light dark:focus:bg-background-dark focus:rounded-md focus:outline-primary dark:focus:outline-primary-light">Skip to main content</a>
112<script>(function e(a,b,c,d,e){try{let f=window.matchMedia("(max-width: 1024px)").matches;if(e){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed");return}if(f||!d){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed"),d||localStorage.setItem(a,"false");return}let g=localStorage.getItem(a);if(null===g){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed");return}let h=JSON.parse(g),i=localStorage.getItem(b),j=null!==i?JSON.parse(i):368;document.documentElement.style.setProperty(c,h?j+"px":"0px"),document.documentElement.setAttribute("data-assistant-state",h?"open":"closed")}catch(a){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed")}})(
113    "chat-assistant-sheet-open",
114    "chat-assistant-sheet-width",
115    "--assistant-sheet-width",
116    true,
117    false
118  )</script>
118<div class="max-lg:contents lg:flex lg:w-full" data-docs-theme="luma" data-assistant-layout="legacy"><div class="max-lg:contents lg:flex-1 lg:min-w-0 lg:overflow-x-clip"><header id="navbar" class="z-30 fixed lg:sticky top-0 w-full @container/navbar peer is-not-custom peer is-not-center peer is-not-wide peer is-not-frame"><div class="z-10 absolute w-full h-full border-b border-gray-100 dark:border-gray-800"></div><div class="z-0 absolute inset-0 bg-background-light dark:bg-background-dark"></div><div id="banner" class="w-full min-h-10 relative lg:fixed lg:top-0 lg:left-0 text-center flex items-center justify-center text-sm [&amp;_a]:border-none [&amp;_a]:underline-offset-[3px] font-medium px-10 text-white/95 dark:text-white/95 [&amp;_*]:text-white/95! dark:[&amp;_*]:text-white/95! bg-primary-dark [&amp;_a:hover]:decoration-primary-light z-45"><div class="space-y-4 whitespace-normal my-2 [&amp;&gt;p]:m-0"><p>New: Try Gatekeeper (Beta) for significantly lower latency. <a class="wrap-anywhere font-medium underline" data-streamdown="link" href="/docs/gatekeeper/overview">Learn More</a></p></div><button class="absolute right-4 top-1/2 -translate-y-1/2 size-6.5 flex items-center justify-center rounded-md text-zinc-100 hover:bg-gray-800" aria-label="Dismiss banner"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-4 shrink-0" aria-hidden="true"><path d="M14 4L4 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4 4L14 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div>
118<script>(function(){var h=0;document.querySelectorAll("#banner").forEach(function(b){h=Math.max(h,b.offsetHeight);});var s=document.documentElement.style;if(h>0&&s.getPropertyValue('--banner-height')!==h+'px')s.setProperty('--banner-height',h+'px');})();</script>
118<div class="hidden lg:block h-[var(--banner-height,0px)]" aria-hidden="true"></div><div class="z-10 relative px-0 lg:px-5"><div class="relative"><div class="hidden lg:flex items-center h-12 px-4 pb-px min-w-0"><div class="flex-1 flex items-center gap-x-4 h-full pr-2 min-w-0"><a class="select-none" style="-webkit-touch-callout:none" href="https://www.helius.dev"><span class="sr-only">Helius Docs<!-- --> home page</span><img class="nav-logo w-auto relative object-contain shrink-0 block dark:hidden h-6" src="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=170d27f36fb94074ff24cfb5e0ad9816" alt="light logo"/><img class="nav-logo w-auto relative object-contain shrink-0 hidden dark:block h-6" src="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/dark.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=a28519235a2fa6053288c3b9c0091124" alt="dark logo"/></a><div class="hidden lg:flex items-center gap-x-2"><button type="button" tabindex="0" aria-haspopup="menu" aria-expanded="false" id="localization-select-trigger" data-component-part="localization-select-trigger" class="group disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group focus-visible:outline-2 focus-visible:-outline-offset-2 group-hover:text-gray-950/70 dark:group-hover:text-white/70 py-1.5 px-2.5 rounded-xl hover:bg-gray-600/5! dark:hover:bg-gray-200/5! aria-[expanded=true]:bg-gray-600/5 dark:aria-[expanded=true]:bg-gray-200/5 text-sm font-medium text-gray-900 h-8 focus-visible:outline-primary dark:focus-visible:outline-primary-light dark:text-gray-300 group/trigger flex items-center gap-2 whitespace-nowrap"><span class="truncate max-w-[12.5rem]">English</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 rotate-90 group-aria-[expanded=true]/trigger:rotate-[270deg] ml-auto"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><nav aria-label="Main" class="hidden @[600px]/navbar:flex text-sm items-center justify-center px-2 min-w-0"><ul class="flex items-center gap-1"><li><a class="link flex items-center gap-1.5 whitespace-nowrap h-9 text-sm font-medium tracking-tight rounded-full px-4 transition-colors text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:bg-gray-950/[0.03] dark:hover:bg-white/[0.03]" href="/docs">Documentation</a></li><li><a class="link flex items-center gap-1.5 whitespace-nowrap h-9 text-sm font-medium tracking-tight rounded-full px-4 transition-colors text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:bg-gray-950/[0.03] dark:hover:bg-white/[0.03]" href="/docs/api-reference">API Reference</a></li><li><a class="link flex items-center gap-1.5 whitespace-nowrap h-9 text-sm font-medium tracking-tight rounded-full px-4 transition-colors text-gray-950 dark:text-gray-100 bg-gray-950/[0.03] dark:bg-white/[0.06]" aria-current="location" href="/docs/guides/overview">Guides</a></li><li><a class="link flex items-center gap-1.5 whitespace-nowrap h-9 text-sm font-medium tracking-tight rounded-full px-4 transition-colors text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:bg-gray-950/[0.03] dark:hover:bg-white/[0.03]" href="/docs/agents/overview">Agents</a></li><li><a class="link flex items-center gap-1.5 whitespace-nowrap h-9 text-sm font-medium tracking-tight rounded-full px-4 transition-colors text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:bg-gray-950/[0.03] dark:hover:bg-white/[0.03]" href="/docs/faqs">FAQs</a></li></ul></nav><div class="topbar-right-container flex-1 flex items-center gap-2 justify-end">
118<div class="relative hidden lg:flex items-center flex-1 z-20 gap-2.5 flex-none! justify-end"><button type="button" class="group/search flex pointer-events-auto w-full items-center text-sm leading-6 h-9 pl-3.5 pr-3 text-gray-500 dark:text-white/50 dark:brightness-[1.1] dark:hover:brightness-[1.25] ring-gray-400/30 hover:ring-gray-600/30 dark:ring-gray-600/30 dark:hover:ring-gray-500/30 justify-between truncate gap-2 bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-full shadow-none border-none ring-0 dark:ring-0 p-0! w-9! justify-center! @[1500px]/navbar:pl-3.5! @[1500px]/navbar:pr-3! @[1500px]/navbar:w-fit! @[1500px]/navbar:justify-between!" id="search-bar-entry" aria-label="Open search"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 min-w-4 flex-none text-gray-700 group-hover/search:text-gray-800 dark:text-gray-400 dark:group-hover/search:text-gray-200"><path d="M15.25 15.25L11.285 11.285" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M7.75 12.75C10.5114 12.75 12.75 10.5114 12.75 7.75C12.75 4.98858 10.5114 2.75 7.75 2.75C4.98858 2.75 2.75 4.98858 2.75 7.75C2.75 10.5114 4.98858 12.75 7.75 12.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><div class="truncate min-w-0 hidden @[1500px]/navbar:block">Search...</div></div><span class="flex-none text-xs font-semibold bg-white dark:bg-background-dark px-1.5 py-0.5 rounded-full text-gray-600 dark:text-gray-400 hidden @[1500px]/navbar:inline-flex">⌘<!-- -->K</span></button><button type="button" class="group/ai flex-none hidden lg:flex items-center justify-center pl-3 pr-3.5 h-9 dark:brightness-[1.1] dark:hover:brightness-[1.25] ring-gray-400/30 hover:ring-gray-600/30 dark:ring-gray-600/30 dark:hover:ring-gray-500/30 bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-full shadow-none border-none ring-0 dark:ring-0 justify-center! @[1500px]/navbar:justify-between! shrink-0 min-w-9 gap-2 p-0! w-9! @[1500px]/navbar:pl-3.5! @[1500px]/navbar:pr-3! @[1500px]/navbar:w-auto!" id="assistant-entry" aria-label="Toggle assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 shrink-0 text-gray-700 group-hover/ai:text-gray-800 dark:text-gray-400 dark:group-hover/ai:text-gray-200"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="text-sm text-gray-500 dark:text-white/50 whitespace-nowrap hidden @[1500px]/navbar:inline">Ask Assistant</span><span class="flex-none text-xs font-semibold bg-white dark:bg-background-dark px-1.5 py-0.5 rounded-full text-gray-600 dark:text-gray-400 hidden @[1500px]/navbar:inline-flex">⌘<!-- -->I</span></button></div><ul class="hidden @[1100px]/navbar:flex items-center gap-2 list-none shrink-0 [&amp;:empty]:hidden"><li class="navbar-link"><a class="flex items-center whitespace-nowrap font-medium text-gray-600 hover:text-gray-900 gap-2 h-9 text-sm dark:text-gray-300 dark:hover:text-gray-100 border border-gray-950/10 dark:border-white/10 hover:bg-gray-950/[0.03] dark:hover:bg-white/[0.03] rounded-full px-4" href="/docs/support"><span class="min-w-0 truncate">Support</span></a></li><li class="whitespace-nowrap hidden lg:flex" id="topbar-cta-button"><a target="_blank" rel="noopener noreferrer" class="group bg-primary dark:bg-primary-light hover:opacity-80 rounded-full h-[34px] px-4 relative inline-flex items-center text-sm font-medium transition-opacity" href="https://dashboard.helius.dev"><div class="z-10 flex items-center gap-1.5"><span class="text-white dark:text-gray-950">Get started</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0 hidden"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></li></ul><button type="button" tabindex="0" aria-haspopup="menu" aria-expanded="false" id="theme-preference-menu-trigger" aria-label="Change theme preference" data-component-name="theme-preference-menu" data-component-part="theme-preference-menu-trigger" data-testid="theme-preference-menu-trigger" class="group disabled:pointer-events-none overflow-hidden gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 theme-preference-menu-trigger group p-2 flex items-center justify-center w-9 h-9 rounded-full bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 transition-colors"><span data-theme-preference-icon="system"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4 text-gray-600 group-hover:text-gray-800 dark:text-gray-300 dark:group-hover:text-gray-100"><path d="M4.5 15.5L9 14.5L13.5 15.5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.75V14.5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.25 2.75H3.75C2.64543 2.75 1.75 3.64543 1.75 4.75V9.75C1.75 10.8546 2.64543 11.75 3.75 11.75H14.25C15.3546 11.75 16.25 10.8546 16.25 9.75V4.75C16.25 3.64543 15.3546 2.75 14.25 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></span><span data-theme-preference-icon="light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4 text-gray-600 group-hover:text-gray-800 dark:text-gray-300 dark:group-hover:text-gray-100"><path d="M9 1.25V2.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.48 3.52002L13.773 4.22702" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M16.75 9H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path>
118<path d="M14.48 14.4799L13.773 13.7729" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 16.75V15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.52 14.4799L4.227 13.7729" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M1.25 9H2.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.52 3.52002L4.227 4.22702" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 13.25C11.3472 13.25 13.25 11.3472 13.25 9C13.25 6.65279 11.3472 4.75 9 4.75C6.65279 4.75 4.75 6.65279 4.75 9C4.75 11.3472 6.65279 13.25 9 13.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></span><span data-theme-preference-icon="dark"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4 text-gray-600 group-hover:text-gray-800 dark:text-gray-300 dark:group-hover:text-gray-100"><path d="M13 11.75C9.548 11.75 6.75 8.95201 6.75 5.50001C6.75 4.14801 7.183 2.90101 7.912 1.87801C4.548 2.50601 2 5.45301 2 9.00001C2 13.004 5.246 16.25 9.25 16.25C12.622 16.25 15.448 13.944 16.259 10.826C15.309 11.409 14.196 11.75 13 11.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></span></button><div class="flex @[1100px]/navbar:hidden"><button type="button" aria-label="More actions" class="flex items-center justify-center size-9 rounded-full bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 transition-colors"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-4 shrink-0 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/ellipsis-vertical.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/ellipsis-vertical.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></button></div></div></div><div class="flex lg:hidden items-center h-12 px-4 pb-px min-w-0"><div class="h-full relative flex-1 flex items-center gap-x-4 min-w-0"><a class="select-none" style="-webkit-touch-callout:none" href="https://www.helius.dev"><span class="sr-only">Helius Docs<!-- --> home page</span><img class="nav-logo w-auto relative object-contain shrink-0 block dark:hidden h-6" src="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=170d27f36fb94074ff24cfb5e0ad9816" alt="light logo"/><img class="nav-logo w-auto relative object-contain shrink-0 hidden dark:block h-6" src="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/dark.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=a28519235a2fa6053288c3b9c0091124" alt="dark logo"/></a><div class="flex items-center gap-3 ml-auto"><button type="button" class="text-gray-500 w-8 h-8 flex items-center justify-center hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300" id="search-bar-entry-mobile" aria-label="Open search"><span class="sr-only">Search or ask...</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! h-4 w-4 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/magnifying-glass.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/magnifying-glass.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></button><button id="assistant-entry-mobile" aria-label="Toggle assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4.5 text-gray-500 dark:text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button type="button" aria-label="More actions" class="h-7 w-5 flex items-center justify-center relative after:content-[&#x27;&#x27;] after:absolute after:-inset-y-2 after:-left-1 after:-right-4"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-4 shrink-0 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/ellipsis-vertical.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/ellipsis-vertical.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></button></div></div></div><button type="button" class="flex items-center h-14 py-4 px-5 lg:hidden focu
118s:outline-0 w-full text-left"><div class="text-gray-500 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300"><span class="sr-only">Navigation</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M2.25 9H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.25 3.75H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.25 14.25H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div class="ml-4 flex text-sm leading-6 whitespace-nowrap min-w-0 space-x-3 overflow-hidden"><div class="flex items-center space-x-3 shrink-0"><span>Subscribe to Accounts</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 text-gray-400 shrink-0"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div class="text-gray-900 truncate dark:text-gray-200 min-w-0 flex-1 font-medium">Account Subscription and Updates</div></div></button></div></div></header><nav aria-label="Pages" id="sidebar-content" class="hidden fixed w-56 lg:flex flex-col left-0 bottom-0 right-auto overflow-hidden transition-transform duration-100 peer-[.is-custom]:hidden! peer-[.is-custom]:sm:hidden! peer-[.is-custom]:md:hidden! peer-[.is-custom]:lg:hidden! peer-[.is-custom]:xl:hidden! peer-[.is-center]:hidden! peer-[.is-center]:sm:hidden! peer-[.is-center]:md:hidden! peer-[.is-center]:lg:hidden! peer-[.is-center]:xl:hidden!" style="top:calc(3rem + var(--banner-height, 0px));height:calc(100vh - 3rem - var(--banner-height, 0px))"><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" id="navigation-items" class="min-w-0 flex-1 min-h-0"><div role="presentation" data-id="base-ui-_R_1qnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] pl-5 pr-5 pt-5 pb-4 base-ui-disable-scrollbar" style="overflow:scroll;mask-image:linear-gradient(to bottom, transparent 0, black min(var(--scroll-area-fade-size), var(--scroll-area-overflow-y-start, 0px)));-webkit-mask-image:linear-gradient(to bottom, transparent 0, black min(var(--scroll-area-fade-size), var(--scroll-area-overflow-y-start, 0px)));mask-composite:intersect;-webkit-mask-composite:source-in;mask-repeat:no-repeat" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-0! w-full"><div class="text-sm relative min-w-0 overflow-hidden"><div class="pl-2"></div><ul class="list-none" aria-hidden="true"></ul><div><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Start Here</span></h3></div><ul class="sidebar-group space-y-px"><li id="/guides/overview" class="relative scroll-m-4 first:scroll-m-20" data-title="Overview"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/guides/overview"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Overview</span></div></div></a></li><li id="/guides/for-traders" class="relative scroll-m-4 first:scroll-m-20" data-title="For Traders &amp; MMs"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/guides/for-traders"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">For Traders &amp; MMs</span></div></div></a></li><li id="/guides/for-wallets" class="relative scroll-m-4 first:scroll-m
118-20" data-title="For Wallets &amp; Apps"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/guides/for-wallets"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">For Wallets &amp; Apps</span></div></div></a></li><li id="/guides/for-analytics" class="relative scroll-m-4 first:scroll-m-20" data-title="For Analytics"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/guides/for-analytics"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">For Analytics</span></div></div></a></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Real-Time Data</span></h3></div><ul class="sidebar-group space-y-px"><li data-title="Subscribe to Accounts" data-group-tag="" data-active="true" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="true" aria-controls="_R_q4tlqnpfb39p7b9snpfiutb_"><div class=""><span>Subscribe to Accounts</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5 duration-75 rotate-90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button><ul id="_R_q4tlqnpfb39p7b9snpfiutb_" class="space-y-px"><li id="/laserstream/guides/account-subscription" class="relative scroll-m-4 first:scroll-m-20" data-title="Account Updates (gRPC)" data-active="true" data-active-nav-item="true"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-primary dark:text-primary-light [text-shadow:-0.2px_0_0_currentColor,0.2px_0_0_currentColor]" style="padding-left:1.75rem" aria-current="page" href="/docs/laserstream/guides/account-subscription"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Account Updates (gRPC)</span></div></div></a></li><li id="/rpc/websocket/account-subscribe" class="relative scroll-m-4 first:scroll-m-20" data-title="Account Updates (WSS)"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1.75rem" href="/docs/rpc/websocket/account-subscribe"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Account Updates (WSS)</span></div></div></a></li></ul></li><li data-title="Monitor Transactions" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Monitor Transactions</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Track Trading Activity" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Track Trading Activity</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Low-Latency Trading</span></h3></div><ul class="sidebar-group space-y-px"><li id="/pre-confirmations/guides/trade-on-preconfirmations" class="relative scroll-m-4 first:scroll-m
118-20" data-title="Use Preconfirmations"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/pre-confirmations/guides/trade-on-preconfirmations"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Use Preconfirmations</span></div></div></a></li><li id="/preprocessed-transactions/guides/trade-on-preprocessed" class="relative scroll-m-4 first:scroll-m-20" data-title="Use Preprocessed"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/preprocessed-transactions/guides/trade-on-preprocessed"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Use Preprocessed</span></div></div></a></li><li id="/sending-transactions/guides/land-trades-with-sender" class="relative scroll-m-4 first:scroll-m-20" data-title="Land Trades with Sender"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/sending-transactions/guides/land-trades-with-sender"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Land Trades with Sender</span></div></div></a></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Historical &amp; Wallet Data</span></h3></div><ul class="sidebar-group space-y-px"><li id="/rpc/transaction-v1" class="relative scroll-m-4 first:scroll-m-20" data-title="Transaction v1 Support"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/rpc/transaction-v1"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Transaction v1 Support</span></div></div></a></li><li id="/rpc/migrate-to-gettransactionsforaddress" class="relative scroll-m-4 first:scroll-m-20" data-title="getTransactionsForAddress"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/rpc/migrate-to-gettransactionsforaddress"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">getTransactionsForAddress</span></div></div></a></li><li id="/parsed-events/guides/fetch-pumpfun-mints" class="relative scroll-m-4 first:scroll-m-20" data-title="Fetch Pump.fun Mints"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/parsed-events/guides/fetch-pumpfun-mints"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Fetch Pump.fun Mints</span></div></div></a></li><li id="/parsed-events/guides/migrate-from-enhanced-transactions" class="relative scroll-m-4 first:scroll-m
118-20" data-title="Migrate from Enhanced Transactions"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/parsed-events/guides/migrate-from-enhanced-transactions"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Migrate from Enhanced Transactions</span></div></div></a></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>RPC Method Guides</span></h3></div><ul class="sidebar-group space-y-px"><li id="/rpc/guides/overview" class="relative scroll-m-4 first:scroll-m-20" data-title="Overview"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/rpc/guides/overview"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Overview</span></div></div></a></li><li id="/rpc/optimization-techniques" class="relative scroll-m-4 first:scroll-m-20" data-title="Optimization Techniques"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/rpc/optimization-techniques"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Optimization Techniques</span></div></div></a></li><li data-title="Accounts" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Accounts</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Transactions &amp; Fees" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Transactions &amp; Fees</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Tokens" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Tokens</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Blocks" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Blocks</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Slots &amp; Epochs" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Slots &amp; Epochs</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Staking &amp; Economics" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Staking &amp; Economics</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Network &amp; Cluster" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Network &amp; Cluster</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Production Readiness</span></h3></div><ul class="sidebar-group space-y-px"><li id="/rpc/protect-your-keys" class="relative scroll-m-4 first:scroll-m
118-20" data-title="Protect Your Keys"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/rpc/protect-your-keys"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Protect Your Keys</span></div></div></a></li><li id="/parsed-streams/guides/handling-reconnects" class="relative scroll-m-4 first:scroll-m-20" data-title="Handling Reconnects"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/parsed-streams/guides/handling-reconnects"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Handling Reconnects</span></div></div></a></li><li id="/laserstream/guides/measuring-latency" class="relative scroll-m-4 first:scroll-m-20" data-title="Measuring Latency"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/laserstream/guides/measuring-latency"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Measuring Latency</span></div></div></a></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Using Orb</span></h3></div><ul class="sidebar-group space-y-px"><li id="/orb" class="relative scroll-m-4 first:scroll-m-20" data-title="Overview"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/orb"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Overview</span></div></div></a></li><li id="/orb/swap-tokens" class="relative scroll-m-4 first:scroll-m-20" data-title="Swap Tokens"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/orb/swap-tokens"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Swap Tokens</span></div></div></a></li><li data-title="Tokens &amp; Markets" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Tokens &amp; Markets</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Wallets &amp; Programs" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Wallets &amp; Programs</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li><li data-title="Network" data-group-tag="" class="space-y-px"><button class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" aria-expanded="false"><div class=""><span>Network</span></div><div class="h-[1lh] flex items-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 w-2 h-[1lh] -mr-0.5"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></button></li></ul></div><div class="mt-6 lg:mt-8"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs capitalize"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit] [&amp;]:font-[inherit]"><span>Other How-Tos</span></h3></div><ul class="sidebar-group space-y-px"><li id="/rpc/devnet-sol" class="relative scroll-m-4 first:scroll-m
118-20" data-title="Get Devnet SOL"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/rpc/devnet-sol"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Get Devnet SOL</span></div></div></a></li><li id="/staking/how-to-stake-with-helius-programmatically" class="relative scroll-m-4 first:scroll-m-20" data-title="Stake SOL Programmatically"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 w-full text-gray-700 dark:text-gray-400 hover:text-primary hover:dark:text-primary-light" style="padding-left:1rem" href="/docs/staking/how-to-stake-with-helius-programmatically"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Stake SOL Programmatically</span></div></div></a></li></ul></div>
118<script>(function () {
119  try {
120    if (window.__mintlifyInitialSidebarScrollDone) return;
121    window.__mintlifyInitialSidebarScrollDone = true;
122
123    var path = (window.location.pathname || '/').split('#')[0].split('?')[0];
124    if (path.endsWith('/index')) path = path.slice(0, -6);
125    else if (path === 'index') path = '';
126
127    var candidates = [];
128    if (path) candidates.push(path);
129    if (path.startsWith('/')) candidates.push(path.slice(1));
130    else candidates.push('/' + path);
131
132    var item = null;
133    for (var i = 0; i < candidates.length && !item; i++) {
134      var matches = document.querySelectorAll('[id="' + candidates[i].replace(/"/g, '\\"') + '"]');
135      for (var j = 0; j < matches.length; j++) {
136        if (matches[j].closest('#sidebar, #sidebar-content')) {
137          item = matches[j];
138          break;
139        }
140      }
141    }
142    if (!item) return;
143
144    var parent = item.closest('[data-component-part="scroll-area-viewport"]');
145    if (!parent) {
146      parent = item.parentElement;
147      while (parent) {
148        var style = getComputedStyle(parent);
149        if (style.overflowY === 'auto' || style.overflowY === 'scroll') break;
150        parent = parent.parentElement;
151      }
152    }
153    if (!parent) return;
154
155    var parentRect = parent.getBoundingClientRect();
156    var itemRect = item.getBoundingClientRect();
157    if (itemRect.top >= parentRect.top && itemRect.bottom <= parentRect.bottom) return;
158
159    var itemTopRelative = itemRect.top - parentRect.top + parent.scrollTop;
160    parent.scrollTop = itemTopRelative - parentRect.height / 2 + itemRect.height / 2;
161  } catch (e) {}
162})();</script>
162</div></div></div></div></nav><div id="body-content" class="peer-[.is-custom]:max-w-none peer-[.is-not-custom]:peer-[.is-not-center]:lg:pl-56 peer-[.is-custom]:[&amp;&gt;:first-child]:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:sm:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:md:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:lg:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:xl:hidden!">
162<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.helius.dev/#organization","name":"Helius Docs","url":"https://www.helius.dev","logo":{"@type":"ImageObject","url":"https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max&auto=format&n=1-9q8-PZtWH0Z9Lt&q=85&s=170d27f36fb94074ff24cfb5e0ad9816"}},{"@type":"WebSite","@id":"https://www.helius.dev/docs#website","name":"Helius Docs","url":"https://www.helius.dev/docs","publisher":{"@id":"https://www.helius.dev/#organization"}},{"@type":"WebPage","@id":"https://www.helius.dev/docs/laserstream/guides/account-subscription#webpage","url":"https://www.helius.dev/docs/laserstream/guides/account-subscription","name":"Account Subscription and Updates","description":"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.","dateModified":"2026-06-12T23:17:28.144Z","isPartOf":{"@id":"https://www.helius.dev/docs#website"},"breadcrumb":{"@id":"https://www.helius.dev/docs/laserstream/guides/account-subscription#breadcrumb"}},{"@type":"BreadcrumbList","@id":"https://www.helius.dev/docs/laserstream/guides/account-subscription#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Helius Docs","item":"https://www.helius.dev/docs"},{"@type":"ListItem","position":2,"name":"Account Subscription and Updates","item":"https://www.helius.dev/docs/laserstream/guides/account-subscription"}]},{"@type":["Article","TechArticle"],"@id":"https://www.helius.dev/docs/laserstream/guides/account-subscription#article","headline":"Account Subscription and Updates","name":"Account Subscription and Updates","description":"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.","url":"https://www.helius.dev/docs/laserstream/guides/account-subscription","mainEntityOfPage":{"@id":"https://www.helius.dev/docs/laserstream/guides/account-subscription#webpage"},"dateModified":"2026-06-12T23:17:28.144Z","publisher":{"@id":"https://www.helius.dev/#organization"},"isPartOf":{"@id":"https://www.helius.dev/docs#website"}}]}</script>
162<script>document.documentElement.setAttribute('data-page-mode', "none");</script>
162<span class="fixed inset-0 bg-background-light dark:bg-background-dark -z-10 pointer-events-none" id="background-color"></span><style data-custom-css-index="0" data-custom-css-path="style.css">/* Navbar "Get started" CTA: keep the label white on the brand-red button in
163   dark mode. Luma renders the label near-black (text-gray-950) on primary-light
164   in dark mode, which reads muddy on the brand red. The button already gets its
165   red background and hover fade from the theme's own classes. */
166.dark #topbar-cta-button a,
167.dark #topbar-cta-button a span {
168  color: #fff !important;
169}
170
171h1, h2, h3, h4, h5, h6 {
172  font-weight: 450 !important; 
173  font-style: normal !important;
174}
175
176#footer a {
177  max-width: none !important;
178}
179
180.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)) {
181  border-color: rgb(var(--primary-light) / 0.8);
182}
183
184.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover {
185  border-color: rgb(var(--primary-light) / 1);
186}
187
188#banner {
189  background-color: #0F0F0F;
190}
191
192/* Widen the fixed sidebar so long section labels and RPC method names fit on
193   one line instead of wrapping. Scoped to lg+ where the sidebar is shown; the
194   content column is shifted right by the same 4rem so its gap from the sidebar
195   is unchanged. (The single longest method name, getMinimumBalanceForRentExemption,
196   can still wrap.) */
197@media (min-width: 1024px) {
198  nav#sidebar-content {
199    width: 18rem !important;
200  }
201
202  #content-container {
203    margin-left: 4rem !important;
204  }
205}
206
207/* Sidebar section headings: match the item font size (14px) instead of the
208   default 12px, and render white in dark mode instead of the muted gray. */
209.sidebar-group-header {
210  font-size: 0.875rem !important;
211}
212
213.dark .sidebar-group-header {
214  color: #fff !important;
215}
216
217/* API reference pages: keep the prose column from sliding under the sticky
218   request/response example rail. Luma centers the 696px column against the
219   viewport with margin-left: calc(50vw - 348px - 14rem), ignoring the 28rem
220   rail, so between ~1280px and ~1650px the rail overlaps the text. Clamp the
221   margin to the free space actually available in the column's flex track
222   (100% is the track width); on viewports wide enough for true centering the
223   original calc still wins. */
224@media (min-width: 1024px) {
225  [class*="lg:ml-[max(0px,calc(50vw-348px-14rem)"] {
226    margin-left: max(0px, min(calc(50vw - 348px - 14rem), calc(100% - 696px))) !important;
227  }
228}
229
230/* Hide the floating "Ask a question…" assistant bar on mobile/tablet — it parks
231   at the bottom of the viewport and eats too much space on small screens. The
232   assistant stays reachable via the sparkle (Toggle assistant panel) button in
233   the header. Desktop (lg+) keeps the floating bar. */
234@media (max-width: 1023px) {
235  .chat-assistant-floating-input {
236    display: none !important;
237  }
238}
239
240/* Slot height is reserved from first paint. The skeleton and iframe
241   stack in that box; ready is an opacity crossfade, not a grow.
242   Busy height is only for a later send, via .is-busy / posted size.
243   Mintlify stamps aspect-ratio: 16 / 9; kill it or height is ignored.
244   color-scheme follows the host theme only. No default, or the other mode flashes. */
245.privacy-embed-slot {
246  --embed-sk-base: #e4e2de;
247  --embed-sk-shine: rgba(255, 255, 255, 0.55);
248  --embed-fade: 0.45s ease;
249  position: relative;
250  height: 15rem;
251  overflow: hidden;
252}
253
254.dark .privacy-embed-slot {
255  --embed-sk-base: #2a2a2e;
256  --embed-sk-shine: rgba(255, 255, 255, 0.08);
257}
258
259.privacy-embed-fallback {
260  position: absolute;
261  inset: 0;
262  z-index: 1;
263  opacity: 1;
264  pointer-events: none;
265  transition: opacity var(--embed-fade);
266}
267
268.privacy-embed-skeleton {
269  position: relative;
270  overflow: hidden;
271  box-sizing: border-box;
272  display: flex;
273  flex-direction: column;
274  gap: 10px;
275  width: 100%;
276  height: 100%;
277  padding: 18px 20px;
278  border: 0;
279  background: transparent;
280}
281
282.privacy-embed-skeleton::after {
283  content: "";
284  position: absolute;
285  inset: 0;
286  background: linear-gradient(90deg, transparent, var(--embed-sk-shine), transparent);
287  transform: translateX(-100%);
288  animation: privacy-embed-sweep 1.4s ease-in-out infinite;
289  pointer-events: none;
290}
291
292.privacy-embed-bone {
293  display: block;
294  flex: none;
295  border-radius: 6px;
296  background: var(--embed-sk-base);
297}
298
299.privacy-embed-bone-lg {
300  width: 72%;
301  height: 12px;
302}
303
304.privacy-embed-bone-md {
305  width: 54%;
306  height: 12px;
307}
308
309.privacy-embed-bone-sm {
310  width: 38%;
311  height: 12px;
312}
313
314.privacy-embed-bone-block {
315  width: 100%;
316  flex: 1 1 auto;
317  min-height: 72px;
318  margin-top: 6px;
319  border-radius: 10px;
320}
321
322@keyframes privacy-embed-sweep {
323  to {
324    transform: translateX(100%);
325  }
326}
327
328.privacy-embed-slot [data-as="iframe"],
329.privacy-embed-slot iframe,
330.privacy-embed-slot .privacy-embed {
331  position: absolute;
332  inset: 0;
333  width: 100% !important;
334  height: 100% !important;
335  opacity: 0;
336  overflow: hidden;
337  pointer-events: none;
338  border: 0 !important;
339  box-shadow: none !important;
340  outline: none !important;
341  aspect-ratio: auto !important;
342  background: transparent !important;
343  transition: opacity var(--embed-fade);
344}
345
346.privacy-embed-static {
347  display: none;
348  position: absolute;
349  inset: 0;
350  z-index: 1;
351  width: 100%;
352  height: 100%;
353  object-fit: contain;
354}
355
356.privacy-embed-slot.is-failed .privacy-embed-skeleton {
357  display: none;
358}
359
360.privacy-embed-slot.is-failed .privacy-embed-static {
361  display: block;
362}
363
364.privacy-embed-slot.is-live .privacy-embed-fallback,
365.privacy-embed-slot.is-live .privacy-embed-static {
366  opacity: 0;
367}
368
369.privacy-embed-slot.is-live [data-as="iframe"],
370.privacy-embed-slot.is-live iframe,
371.privacy-embed-slot.is-live .privacy-embed {
372  opacity: 1;
373  pointer-events: auto;
374}
375
376@media (max-width: 720px) {
377  .privacy-embed-slot {
378    height: 22rem;
379  }
380}
381
382@media (prefers-reduced-motion: reduce) {
383  .privacy-embed-skeleton::after {
384    animation: none;
385  }
386
387  .privacy-embed-fallback,
388  .privacy-embed-slot [data-as="iframe"],
389  .privacy-embed-slot iframe,
390  .privacy-embed-slot .privacy-embed {
391    transition: none;
392  }
393}
394
395.dark .privacy-embed {
396  color-scheme: dark !important;
397}
398
399.light .privacy-embed {
400  color-scheme: light !important;
401}
402</style><style data-custom-css-index="1" data-custom-css-path="styles.css">/*
403 * Custom CSS overrides for the Mintlify theme.
404 *
405 * Navbar search & assistant buttons:
406 * Mintlify expands the "Search... ⌘K" bar and "Ask Assistant ⌘I" button from
407 * icons into full buttons once the navbar container reaches 1500px (via
408 * @[1500px]/navbar container-query utilities in the theme markup). We keep
409 * them collapsed as icons until 1800px instead, by re-applying the collapsed
410 * styles in the 1500px–1800px range.
411 */
412@container navbar (width >
412= 1500px) and (width < 1800px) {
413  #navbar #search-bar-entry,
414  #navbar button[aria-label="Toggle assistant panel"] {
415    padding: 0 !important;
416    width: 2.25rem !important;
417    justify-content: center !important;
418  }
419
420  /* "Search..." label, ⌘K badge, "Ask Assistant" label, and ⌘I badge */
421  #navbar #search-bar-entry > div > div,
422  #navbar #search-bar-entry > span,
423  #navbar button[aria-label="Toggle assistant panel"] > span {
424    display: none !important;
425  }
426}
427</style><!--$--><!--/$--><div class="w-full flex-1 flex flex-col lg:pt-0 pt-26 in-data-[banner-state=visible]:pt-[calc(6.5rem+var(--banner-height,2.5rem))] in-data-[banner-state=visible]:lg:pt-0"><main class="flex-1 flex max-[1650px]:[&amp;:has(&gt;_[data-api-example])_#content-area]:mx-auto!" id="content-container"><div class="flex-1 min-w-0"><div class="w-full lg:max-w-174 pt-6 px-6 lg:mx-auto [&amp;_.prose]:tracking-[-0.0125rem] lg:ml-[max(0px,calc(50vw-348px-14rem))] in-data-[assistant-state=open]:mx-auto!" id="content-area"><header id="header" class="relative leading-none @container/page-header"><div class="mt-0.5 space-y-2.5"><div class="eyebrow h-5 text-primary dark:text-primary-light text-xs font-medium leading-4 tracking-normal capitalize">Subscribe to Accounts</div><div class="flex flex-col sm:flex-row items-start sm:items-center relative gap-2 min-w-0"><h1 id="page-title" class="sm:text-4xl text-gray-900 dark:text-gray-200 [overflow-wrap:anywhere] text-[1.875rem] leading-[2.25rem] tracking-[-0.03125rem] font-medium">Account Subscription and Updates</h1><div id="page-context-menu" class="items-center shrink-0 min-w-[156px] justify-end ml-auto hidden @[520px]/page-header:flex"><button id="page-context-menu-button" class="rounded-l-xl px-3 text-gray-700 dark:text-gray-300 py-1.5 border border-gray-200 dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5 border-r-0" aria-label="Copy page"><div class="flex items-center gap-2 text-sm text-center font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="grid"><span aria-hidden="true" class="invisible col-start-1 row-start-1">Copy page</span><span class="col-start-1 row-start-1">Copy page</span></span></div></button><button type="button" tabindex="0" aria-haspopup="menu" aria-expanded="false" id="base-ui-_R_6rh2mqqnpfb39p7b9snpfiutb_" aria-label="More actions" class="group disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light py-0.5 gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 rounded-none rounded-r-xl border flex items-center justify-center h-[34px] border-gray-200 aspect-square dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 rotate-90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div><div class="mt-2 text-lg prose prose-gray dark:prose-invert [&amp;&gt;*]:[overflow-wrap:anywhere]"><p>
427Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.</p></div><div id="page-context-menu" class="flex items-center shrink-0 min-w-[156px] mt-3 @[520px]/page-header:hidden"><button id="page-context-menu-button" class="rounded-l-xl px-3 text-gray-700 dark:text-gray-300 py-1.5 border border-gray-200 dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5 border-r-0" aria-label="Copy page"><div class="flex items-center gap-2 text-sm text-center font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="grid"><span aria-hidden="true" class="invisible col-start-1 row-start-1">Copy page</span><span class="col-start-1 row-start-1">Copy page</span></span></div></button><button type="button" tabindex="0" aria-haspopup="menu" aria-expanded="false" id="base-ui-_R_dj2mqqnpfb39p7b9snpfiutb_" aria-label="More actions" class="group disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light py-0.5 gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 rounded-none rounded-r-xl border flex items-center justify-center h-[34px] border-gray-200 aspect-square dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 rotate-90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></header><div class="mdx-content @container/columns-container relative mt-8 prose prose-gray dark:prose-invert [contain:inline-size] isolate empty:hidden mb-14" data-page-title="Account Subscription and Updates" data-page-href="/laserstream/guides/account-subscription" id="content"><span data-as="p">When building applications that need to respond to on-chain changes, polling RPC endpoints for account updates is both inefficient and slow. Account subscriptions solve this by delivering real-time updates about account state changes directly to your application.</span>
428<span data-as="p">This guide covers everything you need to know about account subscriptions: what they are, how they work, and how to optimize them for your specific use case.</span>
429<hr/>
430<h2 class="flex whitespace-pre-wrap group font-medium" id="the-account-model-context"><div class="absolute" tabindex="-1"><a href="#the-account-model-context" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.
430083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">The account model context</span></h2>
431<div role="note" aria-label="Info" class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-white/10" data-callout-type="info"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="flex-none size-5 text-neutral-800 dark:text-neutral-300"><path d="M 7.2 0 C 3.2231 0 0 3.2231 0 7.2 C 0 11.1768 3.2231 14.4 7.2 14.4 C 11.1768 14.4 14.4 11.1768 14.4 7.2 C 14.4 3.2231 11.1768 0 7.2 0 Z M 7.2 13.05 C 3.9741 13.05 1.35 10.4257 1.35 7.2 C 1.35 3.9743 3.9741 1.35 7.2 1.35 C 10.426 1.35 13.05 3.9743 13.05 7.2 C 13.05 10.4257 10.426 13.05 7.2 13.05 Z M 8.325 9.45 H 7.875 V 6.975 C 7.875 6.6038 7.5741 6.3 7.2 6.3 H 6.3 C 5.9288 6.3 5.625 6.6038 5.625 6.975 C 5.625 7.3462 5.9288 7.65 6.3 7.65 H 6.525 V 9.45 H 6.075 C 5.7038 9.45 5.4 9.7538 5.4 10.125 C 5.4 10.4962 5.7038 10.8 6.075 10.8 H 8.325 C 8.6977 10.8 9 10.4977 9 10.125 C 9 9.7523 8.6991 9.45 8.325 9.45 Z M 7.2 5.4 C 7.697 5.4 8.1 4.997 8.1 4.5 C 8.1 4.003 7.697 3.6 7.2 3.6 C 6.703 3.6 6.3 4.0022 6.3 4.5 C 6.3 4.9978 6.7022 5.4 7.2 5.4 Z" fill="currentColor" stroke="none"></path></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full [&amp;_kbd]:bg-background-light dark:[&amp;_kbd]:bg-background-dark [&amp;_code]:text-current! [&amp;_kbd]:text-current! [&amp;_a]:text-current! [&amp;_a]:border-current [&amp;_strong]:text-current! text-neutral-800 dark:text-neutral-300" data-component-part="callout-content"><span data-as="p">Skip this section if you’re familiar with Solana accounts and their structure.</span></div></div>
432<span data-as="p">Solana uses an account-based model where every piece of data lives in an account - a container that holds both data and metadata. Each account has:</span>
433<ul>
434<li><strong>Data</strong>: The actual bytes storing program state, token balances, or other information</li>
435<li><strong>Owner</strong>: The program that controls this account and can modify its data</li>
436<li><strong>Lamports</strong>: The account’s SOL balance for rent exemption</li>
437<li><strong>Executable</strong>: Whether this account contains program code</li>
438</ul>
439<span data-as="p">Programs are stateless - they don’t store data internally. Instead, they create and manage separate accounts to store their state. When you interact with a program, you pass in the accounts it should read from or write to.</span>
440<span data-as="p">This design makes account subscriptions powerful: you can watch for changes to specific accounts, all accounts owned by a program, or accounts matching certain criteria.</span>
441<hr/>
442<h2 class="flex whitespace-pre-wrap group font-medium" id="basic-account-subscription"><div class="absolute" tabindex="-1"><a href="#basic-account-subscription" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.
442083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Basic account subscription</span></h2>
443<span data-as="p">Let’s start with a simple example that subscribes to changes in token accounts. This script will notify you whenever token balances change:</span>
444<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="75" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1ta69amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1ua69amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1va69amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-import___subscribe__"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:190px;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1i69amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" 
444class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="75"><span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">import</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">subscribe</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">CommitmentLevel</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">SubscribeUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">LaserstreamConfig</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> } </span><span style="color:#CF222E;--shiki-dark:#C586C0">from</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;helius-laserstream&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
445<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">import</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> bs58</span><span style="color:#CF222E;--shiki-dark:#C586C0"> from</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;bs58&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
446<span class="line"></span>
447<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">// Utility function to recursively convert Buffer objects to base58 strings</span></span>
448<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">function</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> convertBuffersToBase58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#953800;--shiki-dark:#9CDCFE">obj</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#0550AE;--shiki-dark:#4EC9B0"> any</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">)</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#0550AE;--shiki-dark:#4EC9B0"> any</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
449<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">  if</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">obj</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> ===</span><span style="color:#0550AE;--shiki-dark:#569CD6"> null</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> ||</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> obj</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> ===</span><span style="color:#0550AE;--shiki-dark:#569CD6"> undefined</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) {</span></span>
450<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">    return</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
451<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
452<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
453<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">  if</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">Buffer</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">isBuffer</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">)) {</span></span>
454<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">    return</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> bs58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">encode</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
455<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
456<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
457<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">  if</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">Array</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">isArray</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">)) {</span></span>
458<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">    return</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">map</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">convertBuffersToBase58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
459<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
460<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
461<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">  if</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#CF222E;--shiki-dark:#569CD6">typeof</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> obj</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> ===</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;object&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) {</span></span>
462<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> result</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#0550AE;--shiki-dark:#4EC9B0"> any</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {};</span></span>
463<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">    for</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#CF222E;--shiki-dark:#569CD6">const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> key</span><span style="color:#CF222E;--shiki-dark:#569CD6"> in</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) {</span></span>
464<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">      if</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">hasOwnProperty</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">key</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">)) {</span></span>
465<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        result</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">[</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">key</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">] </span><span style="color:#CF222E;--shiki-dark:#D4D4D4">=</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> convertBuffersToBase58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">[</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">key</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">]);
465</span></span>
466<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">      }</span></span>
467<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    }</span></span>
468<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">    return</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> result</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
469<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
470<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
471<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">  return</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> obj</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
472<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
473<span class="line"></span>
474<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">async</span><span style="color:#CF222E;--shiki-dark:#569CD6"> function</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> main</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">() {</span></span>
475<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;🏦 Basic Account Subscription Example&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
476<span class="line"></span>
477<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> config</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> LaserstreamConfig</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
478<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    apiKey:</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;YOUR_API_KEY&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#6E7781;--shiki-dark:#6A9955">// from https://dashboard.helius.dev/</span></span>
479<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    endpoint:</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;https://laserstream-mainnet-ewr.helius-rpc.com&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#6E7781;--shiki-dark:#6A9955">// pick the closest region</span></span>
480<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  };</span></span>
481<span class="line"></span>
482<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> request</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
483<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    accounts:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
484<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">      &quot;token-accounts&quot;</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
485<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        account:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [], </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Specific account pubkeys (empty = all)</span></span>
486<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        owner:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span><span style="color:#0A3069;--shiki-dark:#CE9178">&quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">], </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Token program</span></span>
487<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        filters:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span></span>
488<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">          {</span></span>
489<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">            // Only token accounts (165 bytes)</span></span>
490<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">            datasize:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 165</span></span>
491<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">          }</span></span>
492<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">        ]</span></span>
493<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">      }</span></span>
494<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    },</span></span>
495<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    commitment:</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> CommitmentLevel</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#0550AE;--shiki-dark:#4FC1FF">CONFIRMED</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
496<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    transactions:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">slots:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">transactionsStatus:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">blocks:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">blocksMeta:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">entry:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">accountsDataSlice:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> []</span></span>
497<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  };</span></span>
498<span class="line"></span>
499<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> stream</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#CF222E;--shiki-dark:#C586C0"> await</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> subscribe</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span></span>
500<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    config</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
501<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    request</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
502<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    async</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#953800;--shiki-dark:#9CDCFE">update</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> SubscribeUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#569CD6">=&gt;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
503<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">      const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> readableUpdate</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> convertBuffersToBase58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">update</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
504<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">      console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;🏦 Account Update:&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#0550AE;--shiki-dark:#4FC1FF">JSON</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">stringify</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">readableUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#0550AE;--shiki-dark:#569CD6">null</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#0550AE;--shiki-dark:#B5CEA8">2</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">));</span></span>
505<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    },</span></span>
506<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    async</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#953800;--shiki-dark:#9CDCFE">err</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#569CD6">=&gt;</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">error</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;❌ Stream error:&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">err</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">)</span></span>
507<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  );</span></span>
508<span class="line"></span>
509<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">`✅ Account subscription started (id: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">stream</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">id</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178">)`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
510<span class="line"></span>
511<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  process</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">on</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;SIGINT&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">
511, () </span><span style="color:#CF222E;--shiki-dark:#569CD6">=&gt;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
512<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;</span><span style="color:#CF222E;--shiki-dark:#D7BA7D">\n</span><span style="color:#0A3069;--shiki-dark:#CE9178">🛑 Cancelling stream...&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
513<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    stream</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">cancel</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">();</span></span>
514<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    process</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">exit</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0550AE;--shiki-dark:#B5CEA8">0</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
515<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  });</span></span>
516<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
517<span class="line"></span>
518<span class="line"><span style="color:#8250DF;--shiki-dark:#DCDCAA">main</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">().</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">catch</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">error</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
519</code></pre></div></div></div></div><div data-component-part="code-block-footer" class="px-3 py-1 flex items-center text-xs font-medium text-gray-500 dark:text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"><button data-component-part="code-block-footer-button" class="flex-1 gap-1.5 flex items-center py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3.5 shrink-0 text-gray-500 dark:text-gray-400"><path d="M9 9.5C9.27614 9.5 9.5 9.27614 9.5 9C9.5 8.72386 9.27614 8.5 9 8.5C8.72386 8.5 8.5 8.72386 8.5 9C8.5 9.27614 8.72386 9.5 9 9.5Z" fill="currentColor" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.25 9.5C3.52614 9.5 3.75 9.27614 3.75 9C3.75 8.72386 3.52614 8.5 3.25 8.5C2.97386 8.5 2.75 8.72386 2.75 9C2.75 9.27614 2.97386 9.5 3.25 9.5Z" fill="currentColor" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.75 9.5C15.0261 9.5 15.25 9.27614 15.25 9C15.25 8.72386 15.0261 8.5 14.75 8.5C14.4739 8.5 14.25 8.72386 14.25 9C14.25 9.27614 14.4739 9.5 14.75 9.5Z" fill="currentColor" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg>See all 75 lines</button></div></div>
520<span data-as="p">When you run this basic subscription, you’ll see real-time account updates streaming to your console:</span>
521<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="20" language="text"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1ta79amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1ua79amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
5211.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1va79amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-text-code-___Basic_Account_Sub"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1i79amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="text"><code language="text" numberOfLines="20"><span class="line"><span>🏦 Basic Account Subscription Example</span></span>
522<span class="line"><span>✅ Account subscription started (id: xyz789)</span></span>
523<span class="line"><span></span></span>
524<span class="line"><span>🏦 Account Update: {</span></span>
525<span class="line"><span>  &quot;filters&quot;: [&quot;token-accounts&quot;],</span></span>
526<span class="line"><span>  &quot;account&quot;: {</span></span>
527<span class="line"><span>    &quot;account&quot;: {</span></span>
528<span class="line"><span>      &quot;pubkey&quot;: &quot;BKMHWYLAX4un3HUbR7a3u9jPmzCiLNa4mSj1RiX11eWF&quot;,</span></span>
529<span class="line"><span>      &quot;lamports&quot;: &quot;2039280&quot;,</span></span>
530<span class="line"><span>      &quot;owner&quot;: &quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;,</span></span>
531<span class="line"><span>      &quot;rentEpoch&quot;: &quot;18446744073709551615&quot;,</span></span>
532<span class="line"><span>      &quot;data&quot;: &quot;2NUx6Xw9QkmgJCyYUP3d8TPsjJhUpSM7hcy9Fi1juGc6g9DrpPFyGyvBZzu9qiAjFtyEDbNiLHYFJsq1dD5Wxr4LPcF9Dqs4AJa15L1N92pfinnoKVfCsVCcybhV1iwkCCTMeMyxTRA4tqJm6MrLwgKG3HmmwVdhsEuXjSsGJFXGzgfgPHucVzBEgAqcpH9JPpoaQyis2MFwRJLjenxzkE8xJzWHv1Zk2T&quot;,</span></span>
533<span class="line"><span>      &quot;writeVersion&quot;: &quot;2697618495&quot;,</span></span>
534<span class="line"><span>      &quot;txnSignature&quot;: &quot;5C9Hr5nG2j8eQz6inxPmfyjbYdmXddzUDyR1iQgEnjYQ3RNvuP4Zzc8t1enLNy7Rk8KNCtQPEQztENYWxkt9GaVD&quot;</span></span>
535<span class="line"><span>    },</span></span>
536<span class="line"><span>    &quot;slot&quot;: &quot;352366983&quot;</span></span>
537<span class="line"><span>  },</span></span>
538<span class="line"><span>  &quot;createdAt&quot;: &quot;2025-07-10T11:56:22.027Z&quot;</span></span>
539<span class="line"><span>}</span></span>
540<span class="line"><span></span></span></code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
541<span data-as="p"><strong>What just happened?</strong> Our subscription worked perfectly! We asked Laserstream to notify us about token account changes, and it delivered an update about account <code>BKMHWYLAX4un3HUbR7a3u9jPmzCiLNa4mSj1RiX11eWF</code>.</span>
542<span data-as="p">This account has:</span>
543<ul>
544<li><strong>2,039,280 lamports</strong> (~0.002 SOL balance - this is the rent-exempt amount for this token account)</li>
545<li><strong>Owner program</strong> <code>TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA</code> (this is the SPL Token program)</li>
546<li><strong>Transaction signature</strong> <code>5C9Hr5nG2j8eQz6inxPmfyjbYdmXddzUDyR1iQgEnjYQ3RNvuP4Zzc8t1enLNy7Rk8KNCtQPEQztENYWxkt9GaVD</code> showing which specific transaction caused this account to change</li>
547<li><strong>Slot 352366983</strong> indicating when this update occurred on the blockchain</li>
548<li><strong>Data field</strong> containing 165 bytes of account data encoded as base58</li>
549</ul>
550<h3 class="flex whitespace-pre-wrap group font-medium" id="understanding-account-filtering-with-datasize"><div class="absolute" tabindex="-1"><a href="#understanding-account-filtering-with-datasize" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.
550083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Understanding account filtering with datasize</span></h3>
551<span data-as="p">The data field is crucial - it contains the actual token account structure. Let’s use this understanding for <strong>smart account filtering</strong>.</span>
552<h4 class="flex whitespace-pre-wrap group font-medium" id="why-use-datasize-filtering"><div class="absolute" tabindex="-1"><a href="#why-use-datasize-filtering" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
55211 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Why use datasize filtering?</span></h4>
553<span data-as="p">To understand why we need filtering, let’s first understand what token accounts actually are. <strong>For every token a wallet holds, there’s a separate account on-chain.</strong> If your wallet holds 3 different tokens (USDC, BONK, and SOL), you actually have 1 wallet account (your main SOL account) plus 3 token accounts (one for each token type). Each token account is exactly 165 bytes and stores: which token it holds (mint address), who owns it (your wallet address), and how much of that token it contains (amount).</span>
554<span data-as="p">The Token Program owns <strong>millions of accounts</strong> on Solana, but not all of them are what we think of as “token accounts” holding user balances. Here’s what happens with and without filtering:</span>
555<span data-as="p"><strong>Without filtering - The flood:</strong></span>
556<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="5" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tac9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1uac9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
5561.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vac9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-accounts_______all-t"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1ic9amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="5"><span class="line"><span style="color:#953800;--shiki-dark:#C8C8C8">accounts</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
557<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">  &quot;all-token-program-accounts&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
558<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    owner:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span><span style="color:#0A3069;--shiki-dark:#CE9178">&quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">] </span><span style="color:#6E7781;--shiki-dark:#6A9955">// ❌ Overwhelming!</span></span>
559<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
560<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
561</code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
562<span data-as="p">This subscribes to ALL accounts owned by the Token Program, which includes:</span>
563<ul>
564<li><strong>Token accounts</strong> (165 bytes) - User balances: millions of accounts</li>
565<li><strong>Mint accounts</strong> (82 bytes) - Token definitions: hundreds of thousands of accounts</li>
566<li><strong>Multisig accounts</strong> (355 bytes) - Shared wallet controls: tens of thousands of accounts</li>
567<li><strong>Associated Token Program accounts</strong> (various sizes) - millions of accounts</li>
568</ul>
569<div role="note" aria-label="Warning" class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-yellow-200 bg-yellow-50 dark:border-yellow-900 dark:bg-yellow-600/20 [&amp;_[data-component-part=&#x27;callout-icon&#x27;]]:mt-px" data-callout-type="warning"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="flex-none size-5 text-yellow-800 dark:text-yellow-300">
569<path d="M 9 6.75 v 1.5 m 0 3 h 0.0075 m -5.2035 3 h 10.392 c 1.155 0 1.8765 -1.2503 1.299 -2.25 L 10.299 3 c -0.5775 -0.9997 -2.0205 -0.9997 -2.598 0 L 2.505 12 c -0.5775 0.9997 0.144 2.25 1.299 2.25 z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full [&amp;_kbd]:bg-background-light dark:[&amp;_kbd]:bg-background-dark [&amp;_code]:text-current! [&amp;_kbd]:text-current! [&amp;_a]:text-current! [&amp;_a]:border-current [&amp;_strong]:text-current! text-yellow-800 dark:text-yellow-300" data-component-part="callout-content"><span data-as="p"><strong>Result:</strong> Your application receives millions of account updates constantly, most of which you don’t care about.</span></div></div>
570<span data-as="p"><strong>With smart filtering - Surgical precision:</strong></span>
571<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="6" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1taepamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1uaepamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
5711.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vaepamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-accounts_______token"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1iepamqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="6"><span class="line"><span style="color:#953800;--shiki-dark:#C8C8C8">accounts</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
572<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">  &quot;token-accounts-only&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
573<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    owner:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span><span style="color:#0A3069;--shiki-dark:#CE9178">&quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">],</span></span>
574<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    filters:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [{ </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">datasize:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 165</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> }] </span><span style="color:#6E7781;--shiki-dark:#6A9955">// ✅ Only standard token accounts</span></span>
575<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
576<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
577</code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
578<span data-as="p">This filters down to only the 165-byte accounts, which are specifically the user token balance accounts - exactly what you want for tracking token transfers, balance changes, and portfolio updates.</span>
579<span data-as="p"><strong>The difference:</strong></span>
580<ul>
581<li><strong>Without filtering:</strong> Millions of account updates (mint creations, multisig changes, etc.)</li>
582<li><strong>With datasize filtering:</strong> Only token balance changes</li>
583</ul>
584<span data-as="p">That’s a significant reduction in noise, focusing only on the accounts that actually represent user token holdings.</span>
585<h4 class="flex whitespace-pre-wrap group font-medium" id="where-does-165-bytes-come-from"><div class="absolute" tabindex="-1"><a href="#where-does-165-bytes-come-from" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.
585083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Where does 165 bytes come from?</span></h4>
586<span data-as="p">This isn’t magic - it comes from the <a href="https://github.com/solana-program/token/blob/d05d10807fe8cf157f6e1f024c708274c30c953a/program/src/state.rs#L87" target="_blank" rel="noreferrer" class="link">SPL Token program’s account structure</a>. Looking at the source code, we can see the <code>Account</code> struct defines exactly 165 bytes:</span>
587<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="11" language="rust"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tai9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1uai9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
5871.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vai9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-rust-code-pub_struct_Account__"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1ii9amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="rust"><code language="rust" numberOfLines="11"><span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">pub</span><span style="color:#CF222E;--shiki-dark:#569CD6"> struct</span><span style="color:#953800;--shiki-dark:#4EC9B0"> Account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
588<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> mint</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> Pubkey</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,                    </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 32 bytes</span></span>
589<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> owner</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> Pubkey</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,                   </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 32 bytes  </span></span>
590<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> amount</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> u64</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,                     </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 8 bytes</span></span>
591<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> delegate</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> COption</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">&lt;</span><span style="color:#953800;--shiki-dark:#4EC9B0">Pubkey</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">&gt;,       </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 4 + 32 bytes</span></span>
592<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> state</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> AccountState</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,             </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 1 byte</span></span>
593<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> is_native</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> COption</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">&lt;</span><span style="color:#953800;--shiki-dark:#4EC9B0">u64</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">&gt;,         </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 4 + 8 bytes</span></span>
594<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> delegated_amount</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> u64</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,           </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 8 bytes</span></span>
595<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    pub</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> close_authority</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> COption</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">&lt;</span><span style="color:#953800;--shiki-dark:#4EC9B0">Pubkey</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">&gt; </span><span style="color:#6E7781;--shiki-dark:#6A9955">// 4 + 32 bytes</span></span>
596<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
597<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">// Total: 32+32+8+36+1+12+8+36 = 165 bytes</span></span>
598</code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
599<span data-as="p">This fixed size allows us to filter precisely for standard token accounts and exclude:</span>
600<ul>
601<li>Mint accounts (82 bytes)</li>
602<li>Multisig accounts (355 bytes)</li>
603<li>Associated token account program accounts</li>
604<li>Other token-related accounts with different sizes</li>
605</ul>
606<span data-as="p">
606For calculating account sizes in other programs, check out the <a href="https://www.anchor-lang.com/docs/references/space" target="_blank" rel="noreferrer" class="link">Anchor Space Reference</a> - it shows you how much space different data types take (Pubkey = 32 bytes, u64 = 8 bytes, etc.).</span>
607<h4 class="flex whitespace-pre-wrap group font-medium" id="decoding-the-account-structure"><div class="absolute" tabindex="-1"><a href="#decoding-the-account-structure" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
60711 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Decoding the account structure</span></h4>
608<span data-as="p">Now that we understand why we filtered for 165 bytes, let’s decode what’s inside our example account:</span>
609<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="2" language="text"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tal9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1ual9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1val9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-text-code-Base58_data__2NUx6Xw"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1il9amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" 
609class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="text"><code language="text" numberOfLines="2"><span class="line"><span>Base58 data: 2NUx6Xw9QkmgJCyYUP3d8TPsjJhUpSM7hcy9Fi1juGc6g9...</span></span>
610<span class="line"><span></span></span></code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
611<span data-as="p">The 165 bytes break down as:</span>
612<ul>
613<li><strong>Bytes 0-31:</strong> Mint address (which token this account holds)</li>
614<li><strong>Bytes 32-63:</strong> Owner address (who owns this token account)</li>
615<li><strong>Bytes 64-71:</strong> Token amount (how many tokens are in the account)</li>
616<li><strong>Bytes 72-164:</strong> Additional metadata (delegate, state, close authority, etc.)</li>
617</ul>
618<span data-as="p">This structured approach gives us surgical precision: we only receive updates for standard token accounts, not the noise from other account types.</span>
619<h3 class="flex whitespace-pre-wrap group font-medium" id="combining-filters-datasize-+-memcmp-for-laser-precision"><div class="absolute" tabindex="-1"><a href="#combining-filters-datasize-+-memcmp-for-laser-precision" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
61911 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Combining filters: datasize + memcmp for laser precision</span></h3>
620<span data-as="p">Now that we know the mint address lives at bytes 0-31, we can get even more specific. Let’s say we only want to monitor USDC token accounts. We can combine our <code>datasize</code> filter with a <code>memcmp</code> filter to target the exact mint address:</span>
621<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="19" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tao9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1uao9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
6211.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vao9amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-const_USDC_MINT____E"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1io9amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="19"><span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> USDC_MINT</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &quot;EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
622<span class="line"></span>
623<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> request</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
624<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  accounts:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
625<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">    &quot;usdc-only&quot;</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
626<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">      owner:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span><span style="color:#0A3069;--shiki-dark:#CE9178">&quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">],</span></span>
627<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">      filters:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span></span>
628<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">        { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">datasize:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 165</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> },                    </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Standard token accounts only</span></span>
629<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">        { </span></span>
630<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">          memcmp:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
631<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">            offset:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 0</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,                         </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Mint address starts at byte 0</span></span>
632<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">            base58:</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> USDC_MINT</span><span style="color:#6E7781;--shiki-dark:#6A9955">                  // Match this specific mint</span></span>
633<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">          }</span></span>
634<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">        }</span></span>
635<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">      ]</span></span>
636<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    }</span></span>
637<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  },</span></span>
638<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">  // ... other config</span></span>
639<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">};
639</span></span>
640</code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
641<span data-as="p"><strong>Progressive filtering strategy:</strong></span>
642<ol>
643<li><strong>Owner filter:</strong> “Give me accounts owned by Token Program” (millions of accounts)</li>
644<li><strong>Datasize filter:</strong> “But only 165-byte standard token accounts” (hundreds of thousands)</li>
645<li><strong>Memcmp filter:</strong> “And only those holding USDC” (thousands)</li>
646</ol>
647<span data-as="p">This progression from broad to specific is the key to efficient account monitoring. Each filter narrows down the result set, so you only receive the exact updates you care about.</span>
648<span data-as="p"><strong>Important:</strong> All filters use AND logic - every condition must be met for an account update to trigger.</span>
649<h3 class="flex whitespace-pre-wrap group font-medium" id="reading-usdc-account-updates-who-how-much-where"><div class="absolute" tabindex="-1"><a href="#reading-usdc-account-updates-who-how-much-where" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
64911 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Reading USDC account updates: Who, How Much, Where?</span></h3>
650<span data-as="p">Now let’s see what these filtered updates actually contain. Let’s create a USDC-specific monitor that answers the key questions when a token account changes:</span>
651<ul>
652<li><strong>Who</strong> owns this token account?</li>
653<li><strong>How much</strong> USDC does it now contain?</li>
654<li><strong>Where</strong> (which specific account) changed?</li>
655<li><strong>When</strong> did this change happen?</li>
656<li><strong>What transaction</strong> caused the change?</li>
657</ul>
658<span data-as="p">The raw account updates contain binary data that we need to decode. Since Solana uses base58 encoding for addresses and signatures, we use the <code>bs58.encode()</code> function to convert binary Buffer objects to readable strings.</span>
659<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="69" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1taspamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1uaspamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
6591.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vaspamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-import___subscribe__"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:190px;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1ispamqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="69"><span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">import</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">subscribe</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">CommitmentLevel</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">SubscribeUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">LaserstreamConfig</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> } </span><span style="color:#CF222E;--shiki-dark:#C586C0">from</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;helius-laserstream&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
660<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">import</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> bs58</span><span style="color:#CF222E;--shiki-dark:#C586C0"> from</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;bs58&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
661<span class="line"></span>
662<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">async</span><span style="color:#CF222E;--shiki-dark:#569CD6"> function</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> main</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">() {</span></span>
663<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;USDC Account Monitor&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
664<span class="line"></span>
665<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> config</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> LaserstreamConfig</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
666<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    apiKey:</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;YOUR_API_KEY&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#6E7781;--shiki-dark:#6A9955">// from https://dashboard.helius.dev/</span></span>
667<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    endpoint:</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;https://laserstream-mainnet-ewr.helius-rpc.com&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#6E7781;--shiki-dark:#6A9955">// pick the closest region</span></span>
668<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  };</span></span>
669<span class="line"></span>
670<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> USDC_MINT</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &quot;EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
671<span class="line"></span>
672<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> request</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
673<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    accounts:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
674<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">      &quot;usdc-accounts&quot;</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
675<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        account:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [],</span></span>
676<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        owner:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span><span style="color:#0A3069;--shiki-dark:#CE9178">&quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">],</span></span>
677<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">        filters:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span></span>
678<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">          { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">datasize:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 165</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> },                           </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Standard token accounts</span></span>
679<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">          { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">memcmp:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">offset:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 0</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">base58:</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> USDC_MINT</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> } } </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Only USDC</span></span>
680<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">        ]</span></span>
681<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">      }</span></span>
682<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    },</span></span>
683<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    commitment:</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> CommitmentLevel</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#0550AE;--shiki-dark:#4FC1FF">CONFIRMED</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
684<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    transactions:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">slots:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">transactionsStatus:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">blocks:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">blocksMeta:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">entry:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {}, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">accountsDataSlice:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> []</span></span>
685<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  };</span></span>
686<span class="line"></span>
687<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> stream</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#CF222E;--shiki-dark:#C586C0"> await</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> subscribe</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span></span>
688<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    config</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
689<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    request</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
690<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    async</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#953800;--shiki-dark:#9CDCFE">update</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> SubscribeUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#569CD6">=&gt;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
691<span class="line"><span style="color:#8250DF;--shiki-dark:#DCDCAA">      explainAccountUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">update</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
692<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    },</span></span>
693<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">    async</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#953800;--shiki-dark:#9CDCFE">err</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#569CD6">=&gt;</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">error</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;Stream error:&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">err</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">)</span></span>
694<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  );</span></span>
695<span class="line"></span>
696<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">`Account monitor started (id: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">stream</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">id</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178">)`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
697<span class="line"></span>
698<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  process</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">on</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;SIGINT&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">
698, () </span><span style="color:#CF222E;--shiki-dark:#569CD6">=&gt;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> {</span></span>
699<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;</span><span style="color:#CF222E;--shiki-dark:#D7BA7D">\n</span><span style="color:#0A3069;--shiki-dark:#CE9178">Cancelling stream...&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
700<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    stream</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">cancel</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">();</span></span>
701<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    process</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">exit</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0550AE;--shiki-dark:#B5CEA8">0</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
702<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  });</span></span>
703<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
704<span class="line"></span>
705<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">function</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> explainAccountUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#953800;--shiki-dark:#9CDCFE">update</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#953800;--shiki-dark:#4EC9B0"> SubscribeUpdate</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) {</span></span>
706<span class="line"><span style="color:#CF222E;--shiki-dark:#C586C0">  if</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> (</span><span style="color:#CF222E;--shiki-dark:#D4D4D4">!</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">update</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#C586C0">return</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
707<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
708<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> account</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> update</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
709<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
710<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">  // Decode the key addresses</span></span>
711<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> tokenAccountAddress</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> bs58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">encode</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">pubkey</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
712<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> transactionSignature</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">txnSignature</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> ?</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> bs58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">encode</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">txnSignature</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#D4D4D4">:</span><span style="color:#0A3069;--shiki-dark:#CE9178"> &#x27;Unknown&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;</span></span>
713<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
714<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">  // Extract and decode the token account data (165 bytes)</span></span>
715<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF">
715 walletOwner</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> bs58</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">encode</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">data</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">slice</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0550AE;--shiki-dark:#B5CEA8">32</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#0550AE;--shiki-dark:#B5CEA8">64</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">));       </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Bytes 32-63: Owner</span></span>
716<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> tokenAmount</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#1F2328;--shiki-dark:#9CDCFE"> account</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">data</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">readBigUInt64LE</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0550AE;--shiki-dark:#B5CEA8">64</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);              </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Bytes 64-71: Amount</span></span>
717<span class="line"><span style="color:#CF222E;--shiki-dark:#569CD6">  const</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> usdcAmount</span><span style="color:#CF222E;--shiki-dark:#D4D4D4"> =</span><span style="color:#8250DF;--shiki-dark:#DCDCAA"> Number</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">tokenAmount</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">) </span><span style="color:#CF222E;--shiki-dark:#D4D4D4">/</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 1_000_000</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">;                </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Convert to USDC (6 decimals)</span></span>
718<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  </span></span>
719<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">`Account: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">tokenAccountAddress</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178">`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
720<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">`Owner: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">walletOwner</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178">`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
721<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">
721`Balance: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">usdcAmount</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">toLocaleString</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">()</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178"> USDC`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
722<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">`Slot: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">update</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">account</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">slot</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178">`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
723<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">`Transaction: </span><span style="color:#0A3069;--shiki-dark:#569CD6">${</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">transactionSignature</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">slice</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">(</span><span style="color:#0550AE;--shiki-dark:#B5CEA8">0</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">, </span><span style="color:#0550AE;--shiki-dark:#B5CEA8">8</span><span style="color:#0A3069;--shiki-dark:#D4D4D4">)</span><span style="color:#0A3069;--shiki-dark:#569CD6">}</span><span style="color:#0A3069;--shiki-dark:#CE9178">...`</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
724<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">  console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">log</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#0A3069;--shiki-dark:#CE9178">&#x27;---&#x27;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
725<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
726<span class="line"></span>
727<span class="line"><span style="color:#8250DF;--shiki-dark:#DCDCAA">main</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">().</span><span style="color:#8250DF;--shiki-dark:#DCDCAA">catch</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">(</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">console</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">.</span><span style="color:#1F2328;--shiki-dark:#9CDCFE">error</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">);</span></span>
728</code></pre></div></div></div></div><div data-component-part="code-block-footer" class="px-3 py-1 flex items-center text-xs font-medium text-gray-500 dark:text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"><button data-component-part="code-block-footer-button" class="flex-1 gap-1.5 flex items-center py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3.5 shrink-0 text-gray-500 dark:text-gray-400"><path d="M9 9.5C9.27614 9.5 9.5 9.27614 9.5 9C9.5 8.72386 9.27614 8.5 9 8.5C8.72386 8.5 8.5 8.72386 8.5 9C8.5 9.27614 8.72386 9.5 9 9.5Z" fill="currentColor" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.25 9.5C3.52614 9.5 3.75 9.27614 3.75 9C3.75 8.72386 3.52614 8.5 3.25 8.5C2.97386 8.5 2.75 8.72386 2.75 9C2.75 9.27614 2.97386 9.5 3.25 9.5Z" fill="currentColor" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.75 9.5C15.0261 9.5 15.25 9.27614 15.25 9C15.25 8.72386 15.0261 8.5 14.75 8.5C14.4739 8.5 14.25 8.72386 14.25 9C14.25 9.27614 14.4739 9.5 14.75 9.5Z" fill="currentColor" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg>See all 69 lines</button></div></div>
729<span data-as="p">When you run this USDC monitor, you’ll see clean, structured output like this:</span>
730<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="16" language="text"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tatpamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1uatpamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
7301.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vatpamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-text-code-USDC_Account_Monitor"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1itpamqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="text"><code language="text" numberOfLines="16"><span class="line"><span>USDC Account Monitor</span></span>
731<span class="line"><span>Account monitor started (id: abc123)</span></span>
732<span class="line"><span></span></span>
733<span class="line"><span>Account: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU</span></span>
734<span class="line"><span>Owner: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM</span></span>
735<span class="line"><span>Balance: 1,500 USDC</span></span>
736<span class="line"><span>Slot: 352154103</span></span>
737<span class="line"><span>Transaction: 5v8fy0eJ...</span></span>
738<span class="line"><span>---</span></span>
739<span class="line"><span>Account: BQy5rNRxLfcaK6554PMzsg4VJsFXzwGnAnayb8TZKgZX</span></span>
740<span class="line"><span>Owner: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH</span></span>
741<span class="line"><span>Balance: 0 USDC</span></span>
742<span class="line"><span>Slot: 352154103</span></span>
743<span class="line"><span>Transaction: 5v8fy0eJ...</span></span>
744<span class="line"><span>---</span></span>
745<span class="line"><span></span></span></code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
746<span data-as="p">Each block represents a USDC account that changed state. The first account now holds 1,500 USDC, while the second account has been emptied to 0 USDC. You get the current balance immediately after each transaction, along with which specific account changed and when.</span>
747<span data-as="p">Account subscriptions show you the end result of what happened to each account, not the transaction details. If you need to understand the full transaction context (who sent to whom, fees, etc.), you’d need to fetch the full transaction using the signature shown.</span>
748<h2 class="flex whitespace-pre-wrap group font-medium" id="complete-filtering-reference"><div class="absolute" tabindex="-1"><a href="#complete-filtering-reference" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.
748083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Complete filtering reference</span></h2>
749<span data-as="p">Beyond the basic <code>owner</code>, <code>datasize</code>, and <code>memcmp</code> filters we’ve used, account subscriptions support additional filtering options to further narrow your results:</span>
750<h3 class="flex whitespace-pre-wrap group font-medium" id="specific-account-filtering"><div class="absolute" tabindex="-1"><a href="#specific-account-filtering" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
75011 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Specific account filtering</span></h3>
751<span data-as="p">Monitor exact accounts by their public keys:</span>
752<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="8" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tb19amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1ub19amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vb19amqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-accounts_______speci"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1j19amqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" 
752class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="8"><span class="line"><span style="color:#953800;--shiki-dark:#C8C8C8">accounts</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
753<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">  &quot;specific-accounts&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
754<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    account:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span></span>
755<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">      &quot;7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">,</span></span>
756<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">      &quot;BQy5rNRxLfcaK6554PMzsg4VJsFXzwGnAnayb8TZKgZX&quot;</span></span>
757<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    ]</span></span>
758<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
759<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
760</code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
761<span data-as="p">This approach works well when you know exactly which accounts matter to your application - like monitoring your application’s treasury accounts or specific user accounts.</span>
762<span data-as="p">For very large account sets, explicit pubkey lists get expensive — 32 bytes per account in the subscribe request. Bey
762ond ~10,000 accounts, use a compressed <a class="link" href="/docs/laserstream/cuckoo-filters">cuckoo filter</a> (~3–4 bytes per account) to track hundreds of thousands of accounts in a single stream. Available in the Rust and JavaScript SDKs.</span>
763<h3 class="flex whitespace-pre-wrap group font-medium" id="combined-filtering-strategies"><div class="absolute" tabindex="-1"><a href="#combined-filtering-strategies" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
76311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Combined filtering strategies</span></h3>
764<span data-as="p">The power comes from combining multiple filter types. Here’s the mental model:</span>
765<ol>
766<li><strong>Cast a wide net</strong> with <code>owner</code> - “Give me all accounts managed by this program”</li>
767<li><strong>Filter by structure</strong> with <code>datasize</code> - “But only accounts of this specific type”</li>
768<li><strong>Target specific data</strong> with <code>memcmp</code> - “And only those containing this specific information”</li>
769<li><strong>Monitor known accounts</strong> with <code>account</code> - “Or just watch these exact accounts I care about”</li>
770</ol>
771<span data-as="p">For example, monitoring high-value USDC accounts:</span>
772<div class="code-block mt-5 mb-8 not-prose rounded-2xl relative group min-w-0 print:print-color-exact text-gray-950 dark:text-gray-50 codeblock-light border border-gray-950/10 dark:border-white/10 dark:twoslash-dark bg-transparent dark:bg-transparent" data-has-floating-buttons="" numberOfLines="10" language="typescript"><div data-floating-buttons="true" class="absolute top-3 right-4 flex items-center gap-1.5 print:hidden"><div class="z-10 select-none" id="base-ui-_R_1tb4pamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/code-snippet-feedback-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="code-snippet-feedback-button" aria-label="Report incorrect code"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/code-snippet-feedback-button:text-gray-500 dark:text-white/40 dark:group-hover/code-snippet-feedback-button:text-white/60"><path d="M9 5.431V9.569" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.417C8.449 11.417 8 11.866 8 12.417C8 12.968 8.449 13.417 9 13.417C9.551 13.417 10 12.968 10 12.417C10 11.866 9.551 11.417 9 11.417Z" fill="currentColor" stroke="none"></path><path d="M10.968 2.25H7.03301C6.50301 2.25 5.99401 2.461 5.61901 2.836L2.83701 5.618C2.46201 5.993 2.25101 6.502 2.25101 7.032V10.967C2.25101 11.497 2.46201 12.006 2.83701 12.381L5.61901 15.163C5.99401 15.538 6.50301 15.749 7.03301 15.749H10.968C11.498 15.749 12.007 15.538 12.382 15.163L15.164 12.381C15.539 12.006 15.75 11.497 15.75 10.967V7.032C15.75 6.502 15.539 5.993 15.164 5.618L12.382 2.836C12.007 2.461 11.498 2.25 10.968 2.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><div class="code-block-copy-button z-10 select-none" id="base-ui-_R_1ub4pamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/copy-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" data-testid="copy-code-button" aria-label="Copy the contents from the code block"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/copy-button:text-gray-500 dark:text-white/40 dark:group-hover/copy-button:text-white/60"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 
7721.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><span role="status" class="sr-only"></span></div><div class="z-10 select-none" id="base-ui-_R_1vb4pamqqnpfb39p7b9snpfiutb_" data-base-ui-tooltip-trigger=""><button class="size-6.5 flex items-center justify-center rounded-md group/ask-assistant-button [.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-100 dark:[.code-block:not(:has([data-fade-overlay]))_[data-floating-buttons]_&amp;]:bg-gray-800" id="ask-assistant-code-block-button" aria-label="Ask Assistant" data-chat-payload-element-id="lang-typescript-code-accounts_______high-"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-gray-400 group-hover/ask-assistant-button:text-gray-500 dark:text-white/40 dark:group-hover/ask-assistant-button:text-white/60"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px;font-variant-ligatures:none;height:auto;background-color:#ffffff;--shiki-dark-bg:#0B0C0E" data-component-part="code-block-root" class="w-0 min-w-full max-w-full h-full dark:bg-codeblock text-sm leading-6 transition-[height] duration-300 ease-in-out code-block-background **:ring-0 **:outline-0 **:focus:ring-0 **:focus:outline-0 rounded-2xl bg-white"><div role="presentation" data-id="base-ui-_R_1j4pamqqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] py-3.5 px-4 overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-full! h-full children:my-0! children:shadow-none! children:bg-transparent!"><div class="font-mono whitespace-pre leading-6"><pre class="shiki shiki-themes github-light-default dark-plus" style="background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4" language="typescript"><code language="typescript" numberOfLines="10"><span class="line"><span style="color:#953800;--shiki-dark:#C8C8C8">accounts</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
773<span class="line"><span style="color:#0A3069;--shiki-dark:#CE9178">  &quot;high-value-usdc&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">: {</span></span>
774<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    owner:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span><span style="color:#0A3069;--shiki-dark:#CE9178">&quot;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&quot;</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">],</span></span>
775<span class="line"><span style="color:#1F2328;--shiki-dark:#9CDCFE">    filters:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> [</span></span>
776<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">      { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">datasize:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 165</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> },                           </span><span style="color:#6E7781;--shiki-dark:#6A9955">// Token accounts only</span></span>
777<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">      { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">memcmp:</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> { </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">offset:</span><span style="color:#0550AE;--shiki-dark:#B5CEA8"> 0</span><span style="color:#1F2328;--shiki-dark:#D4D4D4">, </span><span style="color:#1F2328;--shiki-dark:#9CDCFE">base58:</span><span style="color:#0550AE;--shiki-dark:#4FC1FF"> USDC_MINT</span><span style="color:#1F2328;--shiki-dark:#D4D4D4"> } } </span><span style="color:#6E7781;--shiki-dark:#6A9955">// USDC only</span></span>
778<span class="line"><span style="color:#6E7781;--shiki-dark:#6A9955">      // Note: You&#x27;
778d implement balance filtering in your callback logic</span></span>
779<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">    ]</span></span>
780<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">  }</span></span>
781<span class="line"><span style="color:#1F2328;--shiki-dark:#D4D4D4">}</span></span>
782</code></pre></div></div></div></div><div class="code-block-fade-overlay print:hidden" data-fade-overlay="true" aria-hidden="true" style="--fade-color-light:#ffffff;--fade-color-dark:#0B0C0E"></div></div>
783<span data-as="p">The key insight is that each filter reduces the volume of updates you receive. Without filtering, you might get overwhelming amounts of account updates. With smart filtering, you get only the updates that matter to your specific use case.</span>
784<h3 class="flex whitespace-pre-wrap group font-medium" id="understanding-the-bigger-picture"><div class="absolute" tabindex="-1"><a href="#understanding-the-bigger-picture" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
78411 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Understanding the bigger picture</span></h3>
785<span data-as="p">Think of account subscriptions as watching a live feed of database changes. Solana’s state is essentially a massive key-value store where each account is an entry. When programs execute, they modify these accounts. Your subscription lets you watch specific entries change in real-time.</span>
786<span data-as="p">The filtering system works like database indexes - you’re not just watching “all changes” but rather “changes to accounts that match these criteria.” This makes it possible to build responsive applications that react immediately to relevant on-chain events without overwhelming your system with irrelevant data.</span>
787<h2 class="flex whitespace-pre-wrap group font-medium" id="applying-this-pattern-to-other-programs"><div class="absolute" tabindex="-1"><a href="#applying-this-pattern-to-other-programs" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.3
78711 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Applying this pattern to other programs</span></h2>
788<span data-as="p">The approach we’ve learned works for any Solana program. Here’s the general pattern:</span>
789<ol>
790<li><strong>Research the account structure</strong> - Check the program’s source code or documentation</li>
791<li><strong>Start with owner filtering</strong> - Target the program that manages the accounts</li>
792<li><strong>Apply structural filters</strong> - Use account size, data patterns, or other characteristics to narrow down to specific account types</li>
793<li><strong>Add targeted filters</strong> - Focus on specific accounts, states, or data values that matter to your application</li>
794</ol></div><div class="feedback-toolbar pb-16 w-full flex flex-col gap-y-8"><div class="flex flex-row flex-wrap gap-4 items-center justify-between"><p class="inline-block text-sm text-gray-600 dark:text-gray-400 whitespace-nowrap">Was this page helpful?</p><div class="flex flex-wrap grow gap-3 items-center justify-end"><div class="flex gap-3 items-center"><button id="feedback-thumbs-up" class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-current"><path d="M5.25 7.494C5.25 7.014 5.423 6.55 5.736 6.187L10 1.25C10.854 1.677 11.25 2.678 10.92 3.574L9.75 6.75H14.152C15.465 6.75 16.421 7.993 16.085 9.262L14.894 13.762C14.662 14.639 13.868 15.25 12.961 15.25H7.25C6.145 15.25 5.25 14.355 5.25 13.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.25 6.75H2.75C2.19772 6.75 1.75 7.19772 1.75 7.75V14.25C1.75 14.8023 2.19772 15.25 2.75 15.25H4.25C4.80228 15.25 5.25 14.8023 5.25 14.25V7.75C5.25 7.19772 4.80228 6.75 4.25 6.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><small class="text-sm font-normal leading-4">Yes</small></button><button id="feedback-thumbs-down" class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-current"><path d="M5.25 10.506C5.25 10.986 5.423 11.45 5.736 11.813L10 16.75C10.854 16.323 11.25 15.322 10.92 14.426L9.75 11.25H14.152C15.465 11.25 16.421 10.007 16.085 8.738L14.894 4.238C14.662 3.361 13.868 2.75 12.961 2.75H7.25C6.145 2.75 5.25 3.645 5.25 4.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.25 2.75H2.75C2.19772 2.75 1.75 3.19772 1.75 3.75V10.25C1.75 10.8023 2.19772 11.25 2.75 11.25H4.25C4.80228 11.25 5.25 10.8023 5.25 10.25V3.75C5.25 3.19772 4.80228 2.75 4.25 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><small class="text-sm font-normal leading-4">No</small></button></div><div class="flex gap-3"></div></div></div></div><nav id="pagination" aria-label="Pagination" class="grid lg:grid-cols-2 gap-4"><a rel="prev" data-component-part="pagination-prev" class="group flex items-center min-w-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light border border-gray-200/70 dark:border-gray-800/70 rounded-xl py-3 px-4 hover:border-gray-300 dark:hover:border-gray-700 justify-start pagination-prev" href="/docs/guides/for-analytics"><div class="space-y-1 min-w-0 max-w-full"><div class="truncate font-medium text-gray-900 dark:text-gray-200" data-component-part="pagination-title">Guides for Analytics and Indexing Data</div><div class="flex items-center text-sm text-gray-500 dark:text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 gap-x-1"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-gray-400 dark:text-gray-600 group-hover:text-gray-500 dark:group-hover:text-gray-500" data-component-part="pagination-chevron"><path d="M11.5 15.25L5.25 9L11.5 2.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium" data-component-part="pagination-label">Previous</span></div></div></a><a rel="next" data-component-part="pagination-next" class="group flex items-center min-w-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light border border-gray-200/70 dark:border-gray-800/70 rounded-xl py-3 px-4 hover:border-gray-300 dark:hover:border-gray-700 justify-end pagination-next" href="/docs/rpc/websocket/account-subscribe"><div class="space-y-1 min-w-0 max-w-full"><div class="truncate font-medium text-gray-900 dark:text-gray-200 text-right" data-component-part="pagination-title">How to Use accountSubscribe</div><div class="flex items-center text-sm text-gray-500 dark:text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 gap-x-1 flex-row-reverse"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-gray-400 dark:text-gray-600 group-hover:text-gray-500 dark:group-hover:text-gray-500" data-component-part="pagination-chevron"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium" data-component-part="pagination-label">Next</span></div></div></a></nav><div data-assistant-bar="" class="left-0 right-0 sticky bottom-0 w-full overflow-hidden z-20 pointer-events-none print:hidden"><div class="chat-assistant-floating-input w-full group/assistant-bar relative before:content-[&quot;&quot;] before:absolute before:left-0 before:right-0 before:top-[calc(50%-0.5rem)] sm:before:top-[calc(50%-0.75rem)] before:h-[200px] before:bg-background-light dark:before:bg-background-dark translate-y-[100px] opacity-0"><div class="relative pb-4 sm:pb-6"><div class="flex flex-col w-full pointer-events-auto bg-background-light dark:bg-background-dark border border-gray-200 dark:border-white/10 focus-within:border-primary dark:focus-within:border-primary-light transition-colors rounded-full shadow-none py-2 px-2"><div class="relative flex items-end"><input type="text" placeholder="Ask a question..." aria-label="Ask a question..." class="chat-assistant-input w-full bg-transparent border-0 peer/input text-gray-900 dark:text-gray-100 placeholder-gray-600 dark:placeholder-gray-300 outline-hidden! focus:outline-hidden! focus:ring-0 py-2.5 pl-3.5 pr-10 font-bodyWeight text-sm" value=""/><span class="absolute bottom-3 text-xs font-medium text-gray-400 dark:text-gray-500 right-11 select-none pointer-events-none peer-focus/input:hidden hidden sm:inline min-[1500px]:hidden">⌘<!-- -->I</span><button class="chat-assistant-send-button flex justify-center items-center rounded-full p-1 size-6 bg-primary/30 dark:bg-primary-dark/30 absolute right-2.5 bottom-2" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-white dark:text-white"><path d="M9.0 1.5754L8.9999 16.4171" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.2563 8.319L8.9999 1.5754L15.7435 8.3191" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div></div></div></div></div><div class="hidden xl:flex self-start sticky xl:flex-col max-w-[28rem] z-21 overflow-y-auto overflow-x-hidden h-[calc(100vh-3rem-var(--banner-height,0px))] top-[calc(3rem+var(--banner-height,0px))] w-[18rem] pl-8 pr-5 pt-4 [&amp;&gt;*]:w-auto! [&amp;&gt;*]:max-w-full!" id="content-side-layout"><div class="z-10 hidden xl:flex box-border max-h-full w-full" id="table-of-contents-layout"><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" id="table-of-contents" class="min-w-0 text-gray-600 text-sm leading-6 w-[16.5rem] -mt-10"><div role="presentation" data-id="base-ui-_R_36qqnpfb39p7b9snpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] pt-10 pb-4 base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" 
794class="min-w-0! w-full space-y-2"><nav aria-labelledby="_R_16qqnpfb39p7b9snpfiutb_"><h2 id="_R_16qqnpfb39p7b9snpfiutb_" class="m-0 font-normal"><button type="button" class="text-gray-700 dark:text-gray-300 font-medium flex items-center space-x-2 hover:text-gray-900 dark:hover:text-gray-100 transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M2.75 14.25H15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 3.75H15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 9H8.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span>On this page</span></button></h2><div class="relative"><ul id="table-of-contents-content" class="toc"><li class="toc-item relative pl-4" data-depth="0"><a style="--toc-padding-left:0rem" href="#the-account-model-context" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">The account model context</a></li><li class="toc-item relative pl-4" data-depth="0"><a style="--toc-padding-left:0rem" href="#basic-account-subscription" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">Basic account subscription</a><ul class="-ml-4"><li class="toc-item relative pl-4" data-depth="1"><a style="--toc-padding-left:1rem" href="#understanding-account-filtering-with-datasize" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Understanding account filtering with datasize</a></li><li class="toc-item relative pl-4" data-depth="2"><a style="--toc-padding-left:2rem" href="#why-use-datasize-filtering" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Why use datasize filtering?</a></li><li class="toc-item relative pl-4" data-depth="2"><a style="--toc-padding-left:2rem" href="#where-does-165-bytes-come-from" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Where does 165 bytes come from?</a></li><li class="toc-item relative pl-4" data-depth="2"><a style="--toc-padding-left:2rem" href="#decoding-the-account-structure" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focu
794s-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Decoding the account structure</a></li><li class="toc-item relative pl-4" data-depth="1"><a style="--toc-padding-left:1rem" href="#combining-filters-datasize-%2B-memcmp-for-laser-precision" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Combining filters: datasize + memcmp for laser precision</a></li><li class="toc-item relative pl-4" data-depth="1"><a style="--toc-padding-left:1rem" href="#reading-usdc-account-updates-who-how-much-where" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Reading USDC account updates: Who, How Much, Where?</a></li></ul></li><li class="toc-item relative pl-4" data-depth="0"><a style="--toc-padding-left:0rem" href="#complete-filtering-reference" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">Complete filtering reference</a><ul class="-ml-4"><li class="toc-item relative pl-4" data-depth="1"><a style="--toc-padding-left:1rem" href="#specific-account-filtering" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Specific account filtering</a></li><li class="toc-item relative pl-4" data-depth="1"><a style="--toc-padding-left:1rem" href="#combined-filtering-strategies" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Combined filtering strategies</a></li><li class="toc-item relative pl-4" data-depth="1"><a style="--toc-padding-left:1rem" href="#understanding-the-bigger-picture" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Understanding the bigger picture</a></li></ul></li><li class="toc-item relative pl-4" data-depth="0"><a style="--toc-padding-left:0rem" href="#applying-this-pattern-to-other-programs" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">Applying this pattern to other programs</a></li></ul></div></nav></div></div></div></div></div></main><footer id="footer" class="advanced-footer flex flex-col items-center mx-auto border-gray-100 dark:border-gray-800/50 border-t-0 w-full"><div class="flex w-full flex-col gap-12 justify-between px-8 py-16 md:py-20 lg:py-28 max-w-246 z-20"><div class="flex flex-col md:flex-row gap-8 justify-between min-h-19"><div class="flex md:flex-col justify-between items-center md:items-start min-w-16 md:min-w-20 lg:min-w-48 md:gap-y-24"><a class="select-none" style="-webkit-touch-callout:none" href="https://www.helius.dev"><span class="sr-only">Helius Docs<!-- --> home page</span><img class="nav-logo w-auto relative object-contain shrink-0 block dark:hidden max-w-48 h-[26px]" src="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=170d27f36fb94074ff24cfb5e0ad9816" alt="light logo"/><img class="nav-logo w-auto relative object-contain shrink-0 hidden dark:block max-w-48 h-[26px]" src="https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/dark.svg?fit=max&amp;auto=format&amp;n=1-9q8-PZtWH0Z9Lt&amp;q=85&amp;s=a28519235a2fa6053288c3b9c0091124" alt="dark logo"/></a><div class="gap-4 min-w-[140px] max-w-[492px] flex-wrap h-fit flex justify-end md:justify-start"><a href="https://x.com/helius" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">x</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/x-twitter.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/x-twitter.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://t.me/helius_help" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">telegram</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/telegram.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/telegram.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://discord.com/invite/6GXdee3gBj" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">discord</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/discord.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/discord.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://www.linkedin.com/company/heliusapi" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">linkedin</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/linkedin.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/linkedin.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a></div></div><div class="flex flex-col sm:grid max-md:grid-cols-2! gap-8 flex-1" style="grid-template-columns:repeat(4, minmax(0, 1fr))"><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Product</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/staked-connections" target="_blank" rel="noreferrer">Staked Connections</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/sender" target="_blank" rel="noreferrer">Sender</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/laserstream" target="_blank" rel="noreferrer">LaserStream</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/shreds" target="_blank" rel="noreferrer">Shred Delivery</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/solana-webhooks-websockets" target="_blank" rel="noreferrer">Webhooks &amp; Websockets</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/solana-token-apis" target="_blank" rel="noreferrer">Token APIs</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/historical-data" target="_blank" rel="noreferrer">Historical Data</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/solana-rpc-nodes" target="_blank" rel="noreferrer">RPC Nodes</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/vali
794dator" target="_blank" rel="noreferrer">Helius Validator</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/validator-as-a-service" target="_blank" rel="noreferrer">Validator-as-a-Service</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Solutions</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/use-case/trading" target="_blank" rel="noreferrer">Traders &amp; MMs</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/use-case/exchanges" target="_blank" rel="noreferrer">Exchanges</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/use-case/wallets" target="_blank" rel="noreferrer">Wallets</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/use-case/fintech" target="_blank" rel="noreferrer">Fintech</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/use-case/defi" target="_blank" rel="noreferrer">DeFi</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Resources</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://orbmarkets.io" target="_blank" rel="noreferrer">Orb</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/blog" target="_blank" rel="noreferrer">Blog</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/docs" target="_blank" rel="noreferrer">Docs</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://helius.statuspage.io/" target="_blank" rel="noreferrer">Status</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/pricing" target="_blank" rel="noreferrer">Pricing</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/benchmarks" target="_blank" rel="noreferrer">Benchmarks</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://dashboard.helius.dev/signup" target="_blank" rel="noreferrer">Sign Up</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/docs/agents/overview" target="_blank" rel="noreferrer">Agents Docs</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/stake" target="_blank" rel="noreferrer">Stake with Us</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/built-with-helius" target="_blank" rel="noreferrer">Built with Helius</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/startup-launchpad" target="_blank" rel="noreferrer">Startup Launchpad</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/staking/calculator" target="_blank" rel="noreferrer">Staking Calculator</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Company</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/careers" target="_blank" rel="noreferrer">Careers</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/contact" target="_blank" rel="noreferrer">Contact Sales</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/docs/support" target="_blank" rel="noreferrer">Support</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://drive.google.com/drive/folders/1Kko7VCzcoDuQICiOAHZGXwZ-gB_xvUYj?usp=sharing" target="_blank" rel="noreferrer">Media Kit</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://security.helius.dev/" target="_blank" rel="noreferrer">Security</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/privacy-policy" target="_blank" rel="noreferrer">Privacy Policy</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.helius.dev/terms" target="_blank" rel="noreferrer">Terms &amp; Conditions</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.solanaroadmap.com/" target="_blank" rel="noreferrer">Solana Roadmap</a></div></div></div></div><div class="h-px w-full bg-gray-100 dark:bg-white/5"></div><div class="flex items-center justify-between"><div class="sm:flex">
794<a href="https://www.mintlify.com?utm_campaign=poweredBy&amp;utm_medium=referral&amp;utm_source=helius" target="_blank" rel="noreferrer" class="group flex items-baseline gap-1 text-sm text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-300"><span>Powered by</span><svg width="1274" height="367" viewBox="0 0 1274 367" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-3.5 w-auto translate-y-0.75"><path d="M1154.38 366.038H1097.86L1137.69 276.14L1058.04 97.1046H1114.93L1161.35 209.337C1162.97 213.26 1168.53 213.253 1170.14 209.325L1216.21 97.1046H1273.49L1154.38 366.038Z" fill="currentColor"></path><path d="M982.714 286.761V142.622H944.403V97.1041H982.714V72.4488C982.714 49.9429 989.542 32.2416 1003.2 19.345C1016.85 6.44832 1034.17 0 1055.16 0C1068.06 0 1079.06 1.39081 1088.16 4.17244V50.0693C1082.09 47.7934 1075.01 46.6555 1066.92 46.6555C1055.54 46.6555 1047.32 49.1843 1042.27 54.2418C1037.21 59.0464 1034.68 67.2648 1034.68 78.8971V97.1041H1088.16V142.622H1034.68V286.761H982.714Z" fill="currentColor"></path><path d="M897.916 66.0005C889.066 66.0005 881.353 62.8395 874.778 56.5176C868.203 49.9429 864.916 42.1037 864.916 33.0002C864.916 23.8967 868.203 16.184 874.778 9.86215C881.353 3.28738 889.066 0 897.916 0C907.273 0 915.112 3.28738 921.434 9.86215C928.008 16.184 931.296 23.8967 931.296 33.0002C931.296 42.1037 928.008 49.9429 921.434 56.5176C915.112 62.8395 907.273 66.0005 897.916 66.0005ZM872.123 286.761V97.1041H924.089V286.761H872.123Z" fill="currentColor"></path><path d="M781.638 286.761V2.27609H833.604V286.761H781.638Z" fill="currentColor"></path><path d="M722.934 289.037C701.693 289.037 684.244 283.221 670.589 271.588C657.187 259.703 650.485 242.634 650.485 220.381V142.622H612.175V97.1044H650.485V44.3799H702.451V97.1044H755.934V142.622H702.451V210.14C702.451 221.772 704.98 230.117 710.038 235.174C715.095 239.979 723.313 242.381 734.693 242.381C742.785 242.381 749.865 241.243 755.934 238.967V284.864C746.831 287.646 735.831 289.037 722.934 289.037Z" fill="currentColor"></path><path d="M417.674 286.761V97.1041H469.64V110.967C469.64 113.311 472.83 114.347 474.382 112.591C485.967 99.4848 502.467 92.9317 523.881 92.9317C546.64 92.9317 564.468 100.518 577.365 115.69C590.514 130.61 597.089 150.587 597.089 175.622V286.761H545.123V184.346C545.123 170.438 542.215 159.691 536.399 152.105C530.583 144.265 522.364 140.346 511.743 140.346C499.1 140.346 488.858 144.898 481.019 154.001C473.433 163.105 469.64 176.507 469.64 194.208V286.761H417.674Z" fill="currentColor"></path><path d="M352.981 66.0005C344.13 66.0005 336.417 62.8395 329.843 56.5176C323.268 49.9429 319.98 42.1037 319.98 33.0002C319.98 23.8967 323.268 16.184 329.843 9.86215C336.417 3.28738 344.13 0 352.981 0C362.337 0 370.176 3.28738 376.498 9.86215C383.073 16.184 386.36 23.8967 386.36 33.0002C386.36 42.1037 383.073 49.9429 376.498 56.5176C370.176 62.8395 362.337 66.0005 352.981 66.0005ZM327.187 286.761V97.1041H379.153V286.761H327.187Z" fill="currentColor"></path><path d="M238.967 286.761V185.484C238.967 155.392 229.105 140.346 209.381 140.346C198.001 140.346 188.898 144.645 182.07 153.242C175.495 161.84 171.955 174.61 171.449 191.553V286.761H119.484V185.484C119.484 155.392 109.621 140.346 89.8972 140.346C78.2649 140.346 69.035 144.898 62.2073 154.001C55.3797 163.105 51.9659 176.507 51.9659 194.208V286.761H0V97.104
7941H51.9659V111.103C51.9659 113.435 55.1014 114.462 56.633 112.704C68.1136 99.5223 83.3741 92.9317 102.415 92.9317C127.436 92.9317 146.283 103.262 158.953 123.923C159.953 125.553 162.412 125.527 163.406 123.894C168.884 114.891 176.496 107.731 186.243 102.415C197.369 96.0926 208.622 92.9317 220.002 92.9317C242.507 92.9317 259.956 100.392 272.347 115.311C284.738 130.231 290.933 150.714 290.933 176.76V286.761H238.967Z" fill="currentColor"></path></svg><span class="sr-only">This documentation is built and hosted on Mintlify, a developer documentation platform</span></a></div><div class="flex items-center gap-2"><button aria-label="Switch to system theme" data-testid="mode-switch-system" class="p-1.5 rounded-lg bg-gray-200 dark:bg-gray-800 text-gray-600 dark:text-gray-400"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4"><path d="M4.5 15.5L9 14.5L13.5 15.5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.75V14.5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.25 2.75H3.75C2.64543 2.75 1.75 3.64543 1.75 4.75V9.75C1.75 10.8546 2.64543 11.75 3.75 11.75H14.25C15.3546 11.75 16.25 10.8546 16.25 9.75V4.75C16.25 3.64543 15.3546 2.75 14.25 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button aria-label="Switch to light theme" data-testid="mode-switch-light" class="p-1.5 rounded-lg text-gray-400 dark:text-gray-600 hover:text-gray-600 dark:hover:text-gray-400"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4"><path d="M9 1.25V2.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.48 3.52002L13.773 4.22702" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M16.75 9H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.48 14.4799L13.773 13.7729" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 16.75V15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.52 14.4799L4.227 13.7729" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M1.25 9H2.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.52 3.52002L4.227 4.22702" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 13.25C11.3472 13.25 13.25 11.3472 13.25 9C13.25 6.65279 11.3472 4.75 9 4.75C6.65279 4.75 4.75 6.65279 4.75 9C4.75 11.3472 6.65279 13.25 9 13.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button aria-label="Switch to dark theme" data-testid="mode-switch-dark" class="p-1.5 rounded-lg text-gray-400 dark:text-gray-600 hover:text-gray-600 dark:hover:text-gray-400"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4"><path d="M13 11.75C9.548 11.75 6.75 8.95201 6.75 5.50001C6.75 4.14801 7.183 2.90101 7.912 1.87801C4.548 2.50601 2 5.45301 2 9.00001C2 13.004 5.246 16.25 9.25 16.25C12.622 16.25 15.448 13.944 16.259 10.826C15.309 11.409 14.196 11.75 13 11.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div></footer></div></div><!--$--><!--/$--></div><!--$?--><template id="B:0"></template><!--/$--></div></div>
794<script>requestAnimationFrame(function(){$RT=performance.now()});</script>
794<script src="/docs/_next/static/chunks/6d55b684068fd47e.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM" id="_R_" async=""></script>
794<div hidden id="S:0"><div data-assistant-sheet-container="" class="sticky shrink-0 z-22 bg-background-light dark:bg-background-dark mt-(--banner-height,0px) top-(--banner-height,0px) h-[calc(100vh-var(--banner-height,0px))] max-lg:hidden print:hidden" style="width:var(--assistant-sheet-width, 0px);overflow:hidden"><div class="absolute left-0 top-0 bottom-0 w-px z-10 cursor-col-resize after:content-[&quot;&quot;] after:absolute after:inset-y-0 after:-inset-x-2 after:select-none bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"></div><div id="chat-assistant-sheet" class="flex flex-col overflow-hidden shrink-0 relative h-full bg-background-light dark:bg-background-dark chat-assistant-sheet" aria-hidden="true"><div class="w-full flex flex-col flex-1 min-h-0 lg:pt-3"><div class="chat-assistant-sheet-header flex items-center justify-between pb-3 px-4"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-5 text-primary dark:text-primary-light shrink-0" aria-hidden="true"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium text-gray-900 dark:text-gray-100">Assistant</span></div><div class="flex items-center gap-1"><button class="group hover:bg-gray-100 dark:hover:bg-white/10 p-1.5 rounded-lg" aria-label="Maximize assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 sm:size-3.5 text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-300 shrink-0"><path d="M10.75 2.75H15.25V7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M15.25 2.75L10.75 7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 10.75V15.25H7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 15.25L7.25 10.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button class="group hover:bg-gray-100 dark:hover:bg-white/10 p-1.5 rounded-lg" aria-label="Close assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-[20px] sm:size-4 text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-300 shrink-0"><path d="M14 4L4 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4 4L14 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div id="chat-content" class="chat-assistant-sheet-content flex flex-col-reverse flex-1 overflow-y-auto relative px-5 min-h-0"><div class="grow"></div><div class="h-full flex flex-col justify-between"><div class="mt-4 flex flex-col items-center text-sm"><div class="mx-8 text-center text-gray-400 dark:text-gray-600 text-xs chat-assistant-disclaimer-text">Responses are generated using AI and may contain mistakes.</div></div></div></div><div class="px-4 pb-4 shrink-0"><div class=""><div class="flex flex-col w-full pointer-events-auto bg-background-light dark:bg-background-dark border border-gray-200 dark:border-white/10 focus-within:border-primary dark:focus-within:border-primary-light transition-colors rounded-3xl"><div class="relative flex items-end"><textarea id="chat-assistant-textarea" aria-label="Ask a question..." autoComplete="off" placeholder="Ask a question..." class="chat-assistant-input w-full bg-transparent border-0 peer/input text-gray-900 dark:text-gray-100 placeholder-gray-600 dark:placeholder-gray-300 outline-hidden! focus:outline-hidden! focus:ring-0 py-2.5 pl-3.5 pr-10 font-bodyWeight text-sm pb-0!" style="resize:none" rows="2"></textarea></div><div class="flex items-center justify-between px-2 pb-2"><input type="file" accept="image/*,.pdf,.js,.jsx,.ts,.tsx,.mjs,.cjs,.md,.mdx,.json,.html,.css,.py,.csv,.txt,.yaml,.yml,.xml,.sql,.sh,.bash,.zsh,.graphql,.gql,.toml,.env,.go,.rs,.rb,.java,.kt,.swift,.c,.cpp,.cc,.h,.hpp,.cs,.php,.dart,.lua,.r,.scala,.ini,.cfg,.conf,.log,.dockerfile,.makefile,.gitignore" multiple="" class="hidden"/><button type="button" class="p-1 rounded-lg text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-white/10" aria-label="Add attachment"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3.5 shrink-0"><path d="M7.75 5V11.75C7.75 12.578 8.422 13.25 9.25 13.25C10.078 13.25 10.75 12.578 10.75 11.75V4.75C10.75 3.093 9.407 1.75 7.75 1.75C6.093 1.75 4.75 3.093 4.75 4.75V11.75C4.75 14.235 6.765 16.25 9.25 16.25C11.735 16.25 13.75 14.235 13.75 11.75V5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button class="chat-assistant-send-button flex justify-center items-center rounded-full p-1 size-6 bg-primary/30 dark:bg-primary-dark/30" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-white dark:text-white"><path d="M9.0 1.5754L8.9999 16.4171" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.2563 8.319L8.9999 1.5754L15.7435 8.3191" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div></div></div></div></div></div>
794<script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
795$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script>
795<script>(self.__next_f=self.__next_f||[]).push([0])</script>
795<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\nb:I[168027,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n:HL[\"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"style\"]\n:HL[\"/docs/_next/static/chunks/cbc8615ac0de59e9.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"style\"]\n:HL[\"/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/PaperMono_Variable.p.aa32f7a0.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
795<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"RJajscwELoikxQ4miH90c\",\"p\":\"/docs\",\"c\":[\"\",\"_sites\",\"helius\",\"laserstream\",\"guides\",\"account-subscription\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"%5Fsites\",{\"children\":[[\"subdomain\",\"helius\",\"d\"],{\"children\":[\"(multitenant)\",{\"children\":[[\"slug\",\"laserstream/guides/account-subscription\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/cbc8615ac0de59e9.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"suppressHydrationWarning\":true,\"lang\":\"en\",\"className\":\"inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark\",\"data-banner-state\":\"visible\",\"data-assistant-state\":\"closed\",\"data-page-mode\":\"none\",\"data-current-path\":\"/\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){var b=\\\"/docs\\\";\\nfunction a(p){if(p==null)return\\\"/\\\";p=\\\"\\\"+p;if(\\\"\\\"===p)return\\\"/\\\";return\\\"/\\\"===p.charAt(0)?p:\\\"/\\\"+p}\\nfunction u(p){if(p==null)return p;p=\\\"\\\"+p;if(!p||p.charAt(p.length-1)===\\\"/\\\")return p.slice(0,-1);return p}\\nfunction i(p){if(p==null)return p;p=\\\"\\\"+p;if(6\u003c=p.length\u0026\u0026p.substring(p.length-6)===\\\"/index\\\")return p.substring(0,p.length-6);if(\\\"index\\\"===p)return\\\"\\\";return p}\\nvar p=(location.pathname||\\\"\\\").split(\\\"?\\\")[0].split(\\\"#\\\")[0]||\\\"\\\";\\nif(b)if(p===b)p=\\\"\\\";else if(0===p.indexOf(b+\\\"/\\\"))p=p.substring(b.length);\\np=a(p);p=u(p);p=i(p);p=\\\"\\\"===p||\\\"index\\\"===p?\\\"/\\\":a(p);\\ndocument.documentElement.setAttribute(\\\"data-current-path\\\",p);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(() =\u003e {\\n  const isIOS =\\n    /iP(hone|ad|od)/.test(navigator.userAgent) ||\\n    (/Macintosh/.test(navigator.userAgent) \u0026\u0026 navigator.maxTouchPoints \u003e 1);\\n  if (!isIOS) return;\\n  const apply = () =\u003e {\\n    for (const meta of document.querySelectorAll('meta[name=\\\"viewport\\\"]')) {\\n      const content = meta.getAttribute('content') || '';\\n      if (!content.includes('maximum-scale')) {\\n        meta.setAttribute('content', content + ', maximum-scale=1');\\n      }\\n    }\\n  };\\n  apply();\\n  new MutationObserver(apply).observe(document.head, {\\n    childList: true,\\n    subtree: true,\\n    attributes: true,\\n    attributeFilter: ['content'],\\n  });\\n})();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){\\nfunction read(){try{\\nvar e=performance.getEntriesByType?performance.getEntriesByType(\\\"navigation\\\"):[];\\nvar st=(e[0]\u0026\u0026e[0].serverTiming)||[];\\nvar g={};\\nfor(var i=0;i\u003cst.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}\\nif(n===\\\"country\\\")g.country=d;else if(n===\\\"region\\\")g.region=d;else if(n===\\\"continent\\\")g.continent=d;}\\nvar w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;\\n}catch(x){}}\\nread();document.addEventListener(\\\"DOMContentLoaded\\\",read);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){try{\\nvar w=window;w.mintlify=w.mintlify||{};\\nvar q=w.mintlify.__apiPlaygroundInputsQueue;\\nif(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}\\nw.mintlify.api=w.mintlify.api||{};\\nw.mintlify.api.playground=w.mintlify.api.playground||{};\\nif(typeof w.mintlify.api.playground.setServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.setServerVariables=function(v){q.push({type:\\\"set\\\",variables:v});};\\n}\\nif(typeof w.mintlify.api.playground.clearServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.clearServerVariables=function(){q.push({type:\\\"clear\\\"});};\\n}\\n}catch(e){}}();\"}}],\"$L2\",\"$L3\",false]}],\"$L4\"]}]]}],{\"children\":[\"%5Fsites\",\"$L5\",{\"children\":[[\"subdomain\",\"helius\",\"d\"],\"$L6\",{\"children\":[\"(multitenant)\",\"$L7\",{\"children\":[[\"slug\",\"laserstream/guides/account-subscription\",\"oc\"],\"$L8\",{\"children\":[\"__PAGE__\",\"$L9\",{}
795,null,false]},null,false]},null,false]},null,false]},null,false]},null,false],\"$La\",false]],\"m\":\"$undefined\",\"G\":[\"$b\",[\"$Lc\",\"$Ld\"]],\"s\":false,\"S\":true}\n"])</script>
795<script>self.__next_f.push([1,"e:I[667786,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"MintlifyApiPlaygroundInputsInit\"]\nf:I[339756,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"10:I[556357,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d056c4dd204a2da3.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"11:I[837457,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"12:I[894587,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ThemeProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"13:I[152823,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ColorVariables\"]\n"])</script>
795<script>self.__next_f.push([1,"14:I[531961,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"FontScript\"]\n"])</script>
795<script>self.__next_f.push([1,"15:I[649328,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"RoundedVariables\"]\n"])</script>
795<script>self.__next_f.push([1,"16:I[702910,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/187844b452a731d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"RecommendedPagesList\"]\n"])</script>
795<script>self.__next_f.push([1,"17:I[570420,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"DataCurrentPathUpdater\"]\n"])</script>
795<script>self.__next_f.push([1,"18:I[341175,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/2f355e1cfcb656a3.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"1b:I[897367,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"OutletBoundary\"]\n1d:I[711533,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"AsyncMetadataOutlet\"]\n1f:I[897367,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ViewportBoundary\"]\n21:I[897367,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"MetadataBoundary\"]\n22:\"$Sreact.suspense\"\n2:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){\\nif(typeof CSS===\\\"undefined\\\"||!(\\\"registerProperty\\\" in CSS))return;\\nif(CSS.supports\u0026\u0026CSS.supports(\\\"-webkit-backdrop-filter:none\\\"))return;\\nvar n=[\\\"--scroll-area-overflow-x-start\\\",\\\"--scroll-area-overflow-x-end\\\",\\\"--scroll-area-overflow-y-start\\\",\\\"--scroll-area-overflow-y-end\\\"];\\nvar d={\\\"syntax\\\":\\\"\u003clength\u003e\\\",\\\"inherits\\\":false,\\\"initialValue\\\":\\\"0px\\\"};\\nfor(var i=0;i\u003cn.length;i++){try{CSS.registerProperty({name:n[i],syntax:d.syntax,inherits:d.inherits,initialValue:d.initialValue})}catch(e){}}\\n})();\"}}]\n"])</script>
795<script>self.__next_f.push([1,"3:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(a,b){try{let c=document.getElementById(\\\"banner\\\")?.innerText;if(c){for(let d=0;d\u003clocalStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)\u0026\u0026localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\");return}for(let c=0;c\u003clocalStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)\u0026\u0026localStorage.getItem(d))return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\")}catch(a){document.documentElement.setAttribute(b,\\\"hidden\\\")}})(\\n  \\\"bannerDismissed\\\",\\n  \\\"data-banner-state\\\",\\n)\"}}]\n"])</script>
795<script>self.__next_f.push([1,"4:[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[[\"$\",\"$Le\",null,{}],false,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$10\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/d056c4dd204a2da3.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}]],\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"$L15\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n  --primary: 17 120 102;\\n  --primary-light: 74 222 128;\\n  --primary-dark: 22 101 52;\\n  --background-light: 255 255 255;\\n  --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L16\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],false,[\"$\",\"$L17\",null,{}]]}]\n"])</script>
795<script>self.__next_f.push([1,"5:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script>
795<script>self.__next_f.push([1,"6:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$18\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/2f355e1cfcb656a3.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true}]],\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"$L15\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n  --primary: 17 120 102;\\n  --primary-light: 74 222 128;\\n  --primary-dark: 22 101 52;\\n  --background-light: 255 255 255;\\n  --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L16\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script>
795<script>self.__next_f.push([1,"7:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-13\",{\"src\":\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-14\",{\"src\":\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-15\",{\"src\":\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-16\",{\"src\":\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-17\",{\"src\":\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-18\",{\"src\":\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L19\"]}]\n"])</script>
795<script>self.__next_f.push([1,"8:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script>
795<script>self.__next_f.push([1,"9:[\"$\",\"$1\",\"c\",{\"children\":[\"$L1a\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L1b\",null,{\"children\":[\"$L1c\",[\"$\",\"$L1d\",null,{\"promise\":\"$@1e\"}]]}]]}]\n"])</script>
795<script>self.__next_f.push([1,"a:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L1f\",null,{\"children\":\"$L20\"}],null],[\"$\",\"$L21\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$22\",null,{\"fallback\":null,\"children\":\"$L23\"}]}]}]]}]\nc:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\nd:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/cbc8615ac0de59e9.css?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script>
795<script>self.__next_f.push([1,"20:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}]]\n1c:null\n"])</script>
795<script>self.__next_f.push([1,"1e:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Account Subscription - Helius LaserStream\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Helius Docs\"}],[\"$\",\"meta\",\"3\",{\"name\":\"generator\",\"content\":\"Mintlify\"}],[\"$\",\"meta\",\"4\",{\"name\":\"msapplication-config\",\"content\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/browserconfig.xml\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Helius Docs\"}],[\"$\",\"meta\",\"6\",{\"name\":\"msapplication-TileColor\",\"content\":\"#E84125\"}],[\"$\",\"link\",\"7\",{\"rel\":\"canonical\",\"href\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription\"}],[\"$\",\"link\",\"8\",{\"rel\":\"alternate\",\"type\":\"application/xml\",\"href\":\"/docs/sitemap.xml\"}],[\"$\",\"link\",\"9\",{\"rel\":\"alternate\",\"type\":\"text/markdown\",\"href\":\"/docs/laserstream/guides/account-subscription.md\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"Account Subscription - Helius LaserStream\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"Subscribe to Solana account updates and track on-chain state changes using LaserStream\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:site_name\",\"content\":\"Helius Docs\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://helius.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DSubscribe%2Bto%2BAccounts%26title%3DAccount%2BSubscription%2Band%2BUpdates%26description%3DLearn%2Bhow%2Bto%2Bsubscribe%2Bto%2Baccount%2Bupdates%2Band%2Befficiently%2Btrack%2Bon-chain%2Bstate%2Bchanges%2Busing%2BLaserstream.%26theme%3Dbc1110443f3364213ef22866\u0026w=1200\u0026q=100\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:title\",\"content\":\"Account Subscription - Helius LaserStream\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:description\",\"content\":\"Subscribe to Solana account updates and track on-chain state changes using LaserStream\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image\",\"content\":\"https://helius.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DSubscribe%2Bto%2BAccounts%26title%3DAccount%2BSubscription%2Band%2BUpdates%26description%3DLearn%2Bhow%2Bto%2Bsubscribe%2Bto%2Baccount%2Bupdates%2Band%2Befficiently%2Btrack%2Bon-chain%2Bstate%2Bchanges%2Busing%2BLaserstream.%26theme%3Dbc1110443f3364213ef22866\u0026w=1200\u0026q=100\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/android-chrome-192x192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"25\",{\"rel\":\"apple-touch-icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/apple-touch-icon.png\",\"type\":\"image/png\",\"sizes\":\"180x180\",\"media\":\"$undefined\"}],[\"$\",\"link\",\"26\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"27\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"28\",{\"rel\":\"shortcut icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"media\":\"(prefers-color-scheme: light)\"}],\"$L24\",\"$L25\",\"$L26\",\"$L27\",\"$L28\"],\"error\":null,\"digest\":\"$undefined\"}\n"])</script>
795<script>self.__next_f.push([1,"23:\"$1e:metadata\"\n"])</script>
795<script>self.__next_f.push([1,"29:I[27201,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"IconMark\"]\n24:[\"$\",\"link\",\"29\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/android-chrome-192x192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\",\"media\":\"(prefers-color-scheme: dark)\"}]\n25:[\"$\",\"link\",\"30\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"media\":\"(prefers-color-scheme: dark)\"}]\n26:[\"$\",\"link\",\"31\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"media\":\"(prefers-color-scheme: dark)\"}]\n27:[\"$\",\"link\",\"32\",{\"rel\":\"shortcut icon\",\"href\":\"/docs/_mintlify/favicons/helius/DpSUWoabClKtmJ0I/_generated/favicon-dark/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"media\":\"(prefers-color-scheme: dark)\"}]\n28:[\"$\",\"$L29\",\"33\",{}]\n"])</script>
795<script>self.__next_f.push([1,"2a:I[707934,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"WebMcpRegistration\"]\n"])</script>
795<script>self.__next_f.push([1,"2b:I[590280,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"LivePreviewProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"2c:I[973254,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"LivePreviewFavicon\"]\n"])</script>
795<script>self.__next_f.push([1,"2d:I[197336,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"2e:I[91557,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"AuthProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"2f:I[91557,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"DeploymentMetadataProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"19:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebSite\\\",\\\"name\\\":\\\"Helius Docs\\\",\\\"creator\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Mintlify\\\",\\\"url\\\":\\\"https://mintlify.com\\\"}}\"}}],[\"$\",\"$L2a\",null,{\"subdomain\":\"helius\",\"siteName\":\"Helius Docs\"}],[\"$\",\"$L2b\",null,{\"isLivePreviewRoute\":false,\"children\":[[\"$\",\"$L2c\",null,{}],[\"$\",\"$L12\",null,{\"appearance\":{\"default\":\"dark\"},\"codeblockTheme\":\"system\",\"children\":[[\"$\",\"blockquote\",null,{\"className\":\"sr-only\",\"data-agent-docs-index\":true,\"aria-hidden\":\"true\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Documentation Index\"}],[\"$\",\"p\",null,{\"children\":[\"Fetch the complete documentation index at:\",\" \",[\"$\",\"a\",null,{\"href\":\"/docs/llms.txt\",\"tabIndex\":-1,\"children\":\"/docs/llms.txt\"}]]}],[\"$\",\"p\",null,{\"children\":\"Use this file to discover all available pages before exploring further.\"}]]}],false,null,null,[\"$\",\"script\",null,{\"id\":\"_mintlify-banner-script\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function i(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split(\\\"/\\\").filter(a=\u003e\\\"\\\"!==a\u0026\u0026\\\"global\\\"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=\u003ec.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push(\\\"global\\\"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,\\\"hidden\\\");let k=!0,l=0;for(;l\u003clocalStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b\u0026\u0026b===f){k=!1;break}g\u0026\u0026(a.startsWith(`lang:${g}_`)||!a.startsWith(\\\"lang:\\\"))\u0026\u0026(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?\\\"visible\\\":\\\"hidden\\\")}catch(a){console.error(a),document.documentElement.setAttribute(d,\\\"hidden\\\")}})(\\n  {\\\"global\\\":{\\\"content\\\":\\\"New: Try Gatekeeper (Beta) for significantly lower latency. [Learn More](/docs/gatekeeper/overview)\\\",\\\"dismissible\\\":true}},\\n  \\\"en\\\",\\n  [\\\"en\\\",\\\"zh\\\",\\\"ja\\\",\\\"pt-BR\\\",\\\"ko\\\",\\\"de\\\",\\\"fr\\\",\\\"es\\\",\\\"id\\\",\\\"vi\\\"],\\n  \\\"data-banner-state\\\",\\n  \\\"bannerDismissed\\\",\\n)\"},\"suppressHydrationWarning\":true}],[\"$\",\"$L2d\",null,{\"appId\":\"$undefined\",\"autoBoot\":true,\"children\":[\"$\",\"$L2e\",null,{\"value\":{\"auth\":\"$undefined\",\"userAuth\":\"$undefined\"},\"children\":[\"$\",\"$L2f\",null,{\"value\":{\"subdomain\":\"helius\",\"hasAudioNarration\":false,\"actualSubdomain\":\"helius\",\"customDomains\":[\"www.helius.dev\"],\"gitSource\":{\"type\":\"github\",\"owner\":\"helius-labs\",\"repo\":\"docs\",\"deployBranch\":\"main\",\"contentDirectory\":\"\",\"isPrivate\":true,\"mountPath\":\"\",\"label\":\"\"},\"chroma\":{\"liveDeploymentHistoryId\":\"6abfd1b96742204ac63d2e6e\",\"collectionId\":\"58f2d0ad-3bd3-4be8-8156-ebece78a0971\",\"schemaVersion\":\"v3\",\"latestBuiltDeploymentHistoryId\":\"6abfd1b96742204ac63d2e6e\"},\"feedback\":{\"thumbs\":true,\"issues\":false,\"edits\":false},\"entitlements\":{\"AI_CHAT\":{\"status\":\"ENABLED\"},\"REMOVE_BRANDING\":{\"status\":\"DISABLED\"},\"CONTEXTUAL_FEEDBACK\":{\"status\":\"ENABLED\"},\"CODE_SNIPPET_FEEDBACK\":{\"status\":\"ENABLED\"},\"WEB_MCP\":{\"status\":\"ENABLED\"},\"NARRATION\":{\"status\":\"ENABLED\"}},\"buildId\":\"6abfdd1f3893e59fdf1e2e72\",\"clientVersion\":\"0.0.3743\",\"preview\":\"$undefined\",\"searchFilterCounts\":[{\"language\":\"en\",\"tag\":\"API Reference\",\"count\":164},{\"language\":\"de\",\"tag\":\"API-Referenz\",\"count\":164},{\"language\":\"es\",\"tag\":\"Referencia de la API\",\"count\":164},{\"language\":\"fr\",\"tag\":\"Référence de l’API\",\"count\":164},{\"language\":\"id\",\"tag\":\"Referensi API\",\"count\":164},{\"language\":\"ja\",\"tag\":\"API リファレンス\",\"count\":164},{\"language\":\"ko\",\"tag\":\"API 레퍼런스\",\"count\":164},{\"language\":\"pt-BR\",\"tag\":\"Referência da API\",\"count\":164},{\"language\":\"vi\",\"tag\":\"Tài liệu tham chiếu API\",\"count\":164},{\"language\":\"zh\",\"tag\":\"API 参考\",\"count\":164},{\"language\":\"en\",\"tag\":\"Data APIs \u0026 RPCs\",\"count\":144},{\"language\":\"de\",\"tag\":\"Daten-APIs und RPCs\",\"count\":144},{\"language\":\"es\",\"tag\":\"API de datos y RPC\",\"count\":144},{\"language\":\"fr\",\"tag\":\"API de données et RPC\",\"count\":144},{\"language\":\"id\",\"tag\":\"API Data \u0026 RPC\",\"count\":144},{\"language\":\"ja\",\"tag\":\"データ API と RPC\",\"count\":144},{\"language\":\"ko\",\"tag\":\"데이터 API 및 RPC\",\"count\":144},{\"language\":\"pt-BR\",\"tag\":\"APIs de dados e RPCs\",\"count\":144},{\"language\":\"vi\",\"tag\":\"API dữ liệu \u0026 RPC\",\"count\":144},{\"language\":\"zh\",\"tag\":\"数据 API 与 RPC\",\"count\":144},{\"language\":\"en\",\"tag\":\"Documentation\",\"count\":117},{\"language\":\"de\",\"tag\":\"Dokumentation\",\"count\":113},{\"language\":\"es\",\"tag\":\"Documentación\",\"count\":113},{\"language\":\"fr\",\"tag\":\"Documentation\",\"count\":113},{\"language\":\"id\",\"tag\":\"Dokumentasi\",\"count\":113},{\"language\":\"ja\",\"tag\":\"ドキュメント\",\"count\":113},{\"language\":\"ko\",\"tag\":\"문서\",\"count\":113},{\"language\":\"pt-BR\",\"tag\":\"Documentação\",\"count\":113},{\"language\":\"vi\",\"tag\":\"Tài liệu\",\"count\":113},{\"language\":\"zh\",\"tag\":\"文档\",\"count\":113},{\"language\":\"en\",\"tag\":\"Guides\",\"count\":96},{\"language\":\"de\",\"tag\":\"Anleitungen\",\"count\":96},{\"language\":\"es\",\"tag\":\"Guías\",\"count\":96},{\"language\":\"fr\",\"tag\":\"Guides\",\"count\":96},{\"language\":\"id\",\"tag\":\"Panduan\",\"count\":96},{\"language\":\"ja\",\"tag\":\"ガイド\",\"count\":96},{\"language\":\"ko\",\"tag\":\"가이드\",\"count\":96},{\"language\":\"pt-BR\",\"tag\":\"Guias\",\"count\":96},{\"language\":\"vi\",\"tag\":\"Hướng dẫn\",\"count\":96},{\"language\":\"zh\",\"tag\":\"指南\",\"count\":96},{\"language\":\"en\",\"tag\":\"Data Streaming \u0026 Event Listening\",\"count\":63},{\"language\":\"de\",\"tag\":\"Datenstreaming und Event-Überwachung\",\"count\":63},{\"language\":\"es\",\"tag\":\"Streaming de datos y escucha de eventos\",\"count\":63},{\"language\":\"fr\",\"tag\":\"Streaming de données et écoute d’événements\",\"count\":63},{\"language\":\"id\",\"tag\":\"Streaming Data \u0026 Pemantauan Peristiwa\",\"count\":63},{\"language\":\"ja\",\"tag\":\"データストリーミングとイベントリスニング\",\"count\":63},{\"language\":\"ko\",\"tag\":\"데이터 스트리밍 및 이벤트 수신\",\"count\":63},{\"language\":\"pt-BR\",\"tag\":\"Streaming de dados e escuta de eventos\",\"count\":63},{\"language\":\"vi\",\"tag\":\"Truyền phát dữ liệu \u0026 lắng nghe sự kiện\",\"count\":63},{\"language\":\"zh\",\"tag\":\"数据流与事件监听\",\"count\":63},{\"language\":\"en\",\"tag\":\"Solana RPC\",\"count\":57},{\"language\":\"de\",\"tag\":\"Solana RPC\",\"count\":57},{\"language\":\"es\",\"tag\":\"RPC de Solana\",\"count\":57},{\"language\":\"fr\",\"tag\":\"RPC Solana\",\"count\":57},{\"language\":\"id\",\"tag\":\"RPC Solana\",\"count\":57},{\"language\":\"ja\",\"tag\":\"Solana RPC\",\"count\":57},{\"language\":\"ko\",\"tag\":\"Solana RPC\",\"count\":57},{\"language\":\"pt-BR\",\"tag\":\"RPC da Solana\",\"count\":57},{\"language\":\"vi\",\"tag\":\"Solana RPC\",\"count\":57},{\"language\":\"zh\",\"tag\":\"Solana RPC\",\"count\":57},{\"language\":\"en\",\"tag\":\"RPC Method Guides\",\"count\":52},{\"language\":\"de\",\"tag\":\"Anleitungen zu RPC-Methoden\",\"count\":52},{\"language\":\"es\",\"tag\":\"Guías de métodos RPC\",\"count\":52},{\"language\":\"fr\",\"tag\":\"Guides des méthodes RPC\",\"count\":52},{\"language\":\"id\",\"tag\":\"Panduan Metode RPC\",\"count\":52},{\"language\":\"ja\",\"tag\":\"RPC メソッドガイド\",\"count\":52},{\"language\":\"ko\",\"tag\":\"RPC 메서드 가이드\",\"count\":52},{\"language\":\"pt-BR\",\"tag\":\"Guias de métodos RPC\",\"count\":52},{\"language\":\"vi\",\"tag\":\"Hướng dẫn phương thức RPC\",\"count\":52},{\"language\":\"zh\",\"tag\":\"RPC 方法指南\",\"count\":52},{\"language\":\"vi\",\"tag\":\"Giao dịch\",\"count\":31},{\"language\":\"en\",\"tag\":\"ZK Compression\",\"count\":26},{\"language\":\"de\",\"tag\":\"ZK-Komprimierung\",\"count\":26},{\"language\":\"es\",\"tag\":\"Compresión ZK\",\"count\":26},{\"language\":\"fr\",\"tag\":\"Compression ZK\",\"count\":26},{\"language\":\"id\",\"tag\":\"Kompresi ZK\",\"count\":26},{\"language\":\"ja\",\"tag\":\"ZK 圧縮\",\"count\":26},{\"language\":\"ko\",\"tag\":\"ZK 압축\",\"count\":26},{\"language\":\"pt-BR\",\"tag\":\"Compressão ZK\",\"count\":26},{\"language\":\"vi\",\"tag\":\"Nén ZK\",\"count\":26},{\"language\":\"zh\",\"tag\":\"ZK 压缩\",\"count\":26},{\"language\":\"en\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"de\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"es\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"fr\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"id\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"ja\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"ko\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"pt-BR\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"vi\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"zh\",\"tag\":\"LaserStream WebSocket\",\"count\":24},{\"language\":\"en\",\"tag\":\"Agents\",\"count\":20},{\"language\":\"de\",\"tag\":\"Agents\",\"count\":20},{\"language\":\"es\",\"tag\":\"Agentes\",\"count\":20},{\"language\":\"fr\",\"tag\":\"Agents\",\"count\":20},{\"language\":\"id\",\"tag\":\"Agen\",\"count\":20},{\"language\":\"ja\",\"tag\":\"エージェント\",\"count\":20},{\"language\":\"ko\",\"tag\":\"에이전트\",\"count\":20},{\"language\":\"pt-BR\",\"tag\":\"Agentes\",\"count\":20},{\"language\":\"zh\",\"tag\":\"智能体\",\"count\":20}],\"searchSettings\":\"$undefined\",\"disableKonamiCode\":\"$undefined\"},\"children\":\"$L30\"}]}]}]]}]]}]]\n"])</script>
795<script>self.__next_f.push([1,"31:I[91557,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"DocsConfigProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"30:[\"$\",\"$L31\",null,{\"value\":{\"docsConfig\":{\"theme\":\"luma\",\"$schema\":\"https://mintlify.com/docs.json\",\"name\":\"Helius Docs\",\"colors\":{\"primary\":\"#E84125\",\"light\":\"#E84125\",\"dark\":\"#E84125\"},\"logo\":{\"light\":\"https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max\u0026auto=format\u0026n=1-9q8-PZtWH0Z9Lt\u0026q=85\u0026s=170d27f36fb94074ff24cfb5e0ad9816\",\"dark\":\"https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/dark.svg?fit=max\u0026auto=format\u0026n=1-9q8-PZtWH0Z9Lt\u0026q=85\u0026s=a28519235a2fa6053288c3b9c0091124\",\"href\":\"https://www.helius.dev\"},\"favicon\":\"https://mintcdn.com/helius/rDY9bg93WpWmK5qF/favicon.svg?fit=max\u0026auto=format\u0026n=rDY9bg93WpWmK5qF\u0026q=85\u0026s=2efaf0d2b47cac3f8fd18b089e46cb01\",\"appearance\":\"$19:2:props:children:1:props:appearance\",\"navbar\":{\"links\":[{\"href\":\"/support\",\"label\":\"Support\"}],\"primary\":{\"type\":\"button\",\"label\":\"Get started\",\"href\":\"https://dashboard.helius.dev\"}},\"footer\":{\"socials\":{\"x\":\"https://x.com/helius\",\"telegram\":\"https://t.me/helius_help\",\"discord\":\"https://discord.com/invite/6GXdee3gBj\",\"linkedin\":\"https://www.linkedin.com/company/heliusapi\"},\"links\":[{\"header\":\"Product\",\"items\":[{\"label\":\"Staked Connections\",\"href\":\"https://www.helius.dev/staked-connections\"},{\"label\":\"Sender\",\"href\":\"https://www.helius.dev/sender\"},{\"label\":\"LaserStream\",\"href\":\"https://www.helius.dev/laserstream\"},{\"label\":\"Shred Delivery\",\"href\":\"https://www.helius.dev/shreds\"},{\"label\":\"Webhooks \u0026 Websockets\",\"href\":\"https://www.helius.dev/solana-webhooks-websockets\"},{\"label\":\"Token APIs\",\"href\":\"https://www.helius.dev/solana-token-apis\"},{\"label\":\"Historical Data\",\"href\":\"https://www.helius.dev/historical-data\"},{\"label\":\"RPC Nodes\",\"href\":\"https://www.helius.dev/solana-rpc-nodes\"},{\"label\":\"Helius Validator\",\"href\":\"https://www.helius.dev/validator\"},{\"label\":\"Validator-as-a-Service\",\"href\":\"https://www.helius.dev/validator-as-a-service\"}]},{\"header\":\"Solutions\",\"items\":[{\"label\":\"Traders \u0026 MMs\",\"href\":\"https://www.helius.dev/use-case/trading\"},{\"label\":\"Exchanges\",\"href\":\"https://www.helius.dev/use-case/exchanges\"},{\"label\":\"Wallets\",\"href\":\"https://www.helius.dev/use-case/wallets\"},{\"label\":\"Fintech\",\"href\":\"https://www.helius.dev/use-case/fintech\"},{\"label\":\"DeFi\",\"href\":\"https://www.helius.dev/use-case/defi\"}]},{\"header\":\"Resources\",\"items\":[{\"label\":\"Orb\",\"href\":\"https://orbmarkets.io\"},{\"label\":\"Blog\",\"href\":\"https://www.helius.dev/blog\"},{\"label\":\"Docs\",\"href\":\"https://www.helius.dev/docs\"},{\"label\":\"Status\",\"href\":\"https://helius.statuspage.io/\"},{\"label\":\"Pricing\",\"href\":\"https://www.helius.dev/pricing\"},{\"label\":\"Benchmarks\",\"href\":\"https://www.helius.dev/benchmarks\"},{\"label\":\"Sign Up\",\"href\":\"https://dashboard.helius.dev/signup\"},{\"label\":\"Agents Docs\",\"href\":\"https://www.helius.dev/docs/agents/overview\"},{\"label\":\"Stake with Us\",\"href\":\"https://www.helius.dev/stake\"},{\"label\":\"Built with Helius\",\"href\":\"https://www.helius.dev/built-with-helius\"},{\"label\":\"Startup Launchpad\",\"href\":\"https://www.helius.dev/startup-launchpad\"},{\"label\":\"Staking Calculator\",\"href\":\"https://www.helius.dev/staking/calculator\"}]},{\"header\":\"Company\",\"items\":[{\"label\":\"Careers\",\"href\":\"https://www.helius.dev/careers\"},{\"label\":\"Contact Sales\",\"href\":\"https://www.helius.dev/contact\"},{\"label\":\"Support\",\"href\":\"https://www.helius.dev/docs/support\"},{\"label\":\"Media Kit\",\"href\":\"https://drive.google.com/drive/folders/1Kko7VCzcoDuQICiOAHZGXwZ-gB_xvUYj?usp=sharing\"},{\"label\":\"Security\",\"href\":\"https://security.helius.dev/\"},{\"label\":\"Privacy Policy\",\"href\":\"https://www.helius.dev/privacy-policy\"},{\"label\":\"Terms \u0026 Conditions\",\"href\":\"https://www.helius.dev/terms\"},{\"label\":\"Solana Roadmap\",\"href\":\"https://www.solanaroadmap.com/\"}]}]},\"seo\":{\"metatags\":{\"canonical\":\"https://www.helius.dev/docs\"}},\"fonts\":{\"heading\":{\"family\":\"fontLausanne\",\"weight\":450,\"source\":\"https://jiz6tlwg28uaztou.public.blob.vercel-storage.com/docs/lausanne-450-Xv6JlhB8OudFw8Xb2zwoQodc86f35H.woff2\",\"format\":\"woff2\"},\"body\":{\"family\":\"Geist\"}},\"styling\":{\"codeblocks\":\"system\",\"latex\":true},\"integrations\":{\"posthog\":{\"apiKey\":\"phc_H66gRNy1uok5uPmsul2kpbRynt6h9L74f5BlPJ4RMqE\",\"apiHost\":\"https://www.helius.dev/relay-RMqE\"}},\"banner\":{\"content\":\"New: Try Gatekeeper (Beta) for significantly lower latency. [Learn More](/docs/gatekeeper/overview)\",\"dismissible\":true},\"errors\":{\"404\":{\"redirect\":false}},\"contextual\":{\"options\":[\"copy\",\"view\",\"chatgpt\",\"claude\",\"cursor\",\"perplexity\",\"mcp\"],\"display\":\"header\"},\"navigation\":{\"global\":{\"anchors\":[]},\"languages\":[{\"language\":\"en\",\"href\":\"\"},{\"language\":\"zh\",\"href\":\"zh\"},{\"language\":\"ja\",\"href\":\"ja\"},{\"language\":\"pt-BR\",\"href\":\"pt-BR\"},{\"language\":\"ko\",\"href\":\"ko\"},{\"language\":\"de\",\"href\":\"de\"},{\"language\":\"fr\",\"href\":\"fr\"},{\"language\":\"es\",\"href\":\"es\"},{\"language\":\"id\",\"href\":\"id\"},{\"language\":\"vi\",\"href\":\"vi\"}]}},\"docsNavWithMetadata\":\"$undefined\",\"anonymizedNav\":\"$undefined\",\"hasFullNav\":false},\"children\":\"$L32\"}]\n"])</script>
795<script>self.__next_f.push([1,"33:I[604804,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"LoginButtonProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"34:I[141180,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"SidebarLoginButtonProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"35:I[343590,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"NavigationContextController\"]\n"])</script>
795<script>self.__next_f.push([1,"36:I[378486,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"PageListProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"37:I[742977,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"PrefetchProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"38:I[237978,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"PageModeOverrideProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"39:I[378896,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ConfiguredVariationProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"3a:I[557611,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"Fonts\"]\n"])</script>
795<script>self.__next_f.push([1,"3b:I[330080,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"BannerProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"3c:I[864506,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"NavbarTransitionScript\"]\n"])</script>
795<script>self.__next_f.push([1,"3d:T9e0,"])</script>
795<script>self.__next_f.push([1,"(function () {\n  var measure = function(){let a=document.querySelectorAll(\"[id='navbar'], [data-top-chrome]\"),b=0;a.forEach(a=\u003e{let c=a.getBoundingClientRect();c.height\u003e0\u0026\u0026(b=Math.max(b,c.bottom))});let c=0,d=document.getElementById(\"content-container\");if(d){let{overflowY:a}=getComputedStyle(d);(\"auto\"===a||\"scroll\"===a)\u0026\u0026(c=Math.max(0,d.getBoundingClientRect().top))}let e=`${Math.round(Math.max(0,b-c))+40}px`,f=document.documentElement.style;f.getPropertyValue(\"--scroll-mt\")!==e\u0026\u0026f.setProperty(\"--scroll-mt\",e)};\n  (function(a){let b=[],c=0,d=\"undefined\"==typeof ResizeObserver?null:new ResizeObserver(f);function e(){let c=Array.from(document.querySelectorAll(\"[id='navbar'], [data-top-chrome]\"));(c.length!==b.length||c.some((a,c)=\u003ea!==b[c]))\u0026\u0026d\u0026\u0026(d.disconnect(),c.forEach(a=\u003ed.observe(a))),b=c,a()}function f(){c||(c=requestAnimationFrame(()=\u003e{c=0,e()}))}let g=\"[id='navbar'], [data-top-chrome]\";function h(a){let b=a.target;if(b instanceof Element\u0026\u0026b.closest(g))return!0;for(let b of a.addedNodes)if(b instanceof Element\u0026\u0026(b.matches(g)||b.querySelector(g)))return!0;for(let b of a.removedNodes)if(b instanceof Element\u0026\u0026(b.matches(g)||b.querySelector(g)))return!0;return!1}new MutationObserver(a=\u003e{a.some(h)\u0026\u0026f()}).observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener(\"resize\",f),\"loading\"===document.readyState\u0026\u0026document.addEventListener(\"DOMContentLoaded\",e),e()})(measure);\n  (function(a){let b=window.location.hash.slice(1);if(!b)return;function c(){return\"smooth\"===getComputedStyle(document.documentElement).scrollBehavior}function d(c){let d=document.getElementById(b);return!!d\u0026\u0026(a(),d.scrollIntoView(c?{behavior:c}:void 0),!0)}if(\"complete\"===document.readyState)return void d();let e=new MutationObserver(()=\u003e{!c()\u0026\u0026d(\"instant\")\u0026\u0026f()});function f(){e.disconnect(),window.removeEventListener(\"load\",g)}function g(){let a=c();f(),a\u0026\u0026requestAnimationFrame(()=\u003e{d(),function(){let a=[\"wheel\",\"touchstart\",\"keydown\",\"pointerdown\"],c=0,e=window.scrollY,f=setInterval(()=\u003e{c+=1;let a=document.getElementById(b);if(!a||c\u003e=6)return g();let f=Math.abs(window.scrollY-e)\u003e1;if(e=window.scrollY,f)return;let h=parseFloat(getComputedStyle(a).scrollMarginTop)||0;Math.abs(a.getBoundingClientRect().top-h)\u003e4\u0026\u0026d()},350);function g(){clearInterval(f),a.forEach(a=\u003ewindow.removeEventListener(a,g))}a.forEach(a=\u003ewindow.addEventListener(a,g,{passive:!0}))}()})}window.addEventListener(\"load\",g),e.observe(document.documentElement,{childList:!0,subtree:!0}),!c()\u0026\u0026d(\"instant\")\u0026\u0026f()})(measure);\n})();"])</script>
795<script>self.__next_f.push([1,"32:[\"$\",\"$L33\",null,{\"children\":[\"$\",\"$L34\",null,{\"children\":[\"$\",\"$L35\",null,{\"children\":[\"$\",\"$L36\",null,{\"pageListDataMap\":{},\"children\":[\"$\",\"$L37\",null,{\"disabled\":\"$undefined\",\"children\":[\"$\",\"$L38\",null,{\"children\":[\"$\",\"$L39\",null,{\"children\":[[\"$\",\"$L14\",null,{\"fonts\":\"$30:props:value:docsConfig:fonts\",\"theme\":\"luma\",\"subdomain\":\"helius\"}],[[\"$\",\"$L13\",null,{\"docsConfig\":\"$30:props:value:docsConfig\"}],[[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"https://d4tuoctqmanu0.cloudfront.net/katex.min.css\",\"as\":\"style\"}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"children\":\"\\n          (function() {\\n            function loadKatex() {\\n              const link = document.querySelector('link[href=\\\"https://d4tuoctqmanu0.cloudfront.net/katex.min.css\\\"]');\\n              if (link) link.rel = 'stylesheet';\\n            }\\n            if (document.readyState === 'loading') {\\n              document.addEventListener('DOMContentLoaded', loadKatex);\\n            } else {\\n              loadKatex();\\n            }\\n          })();\\n        \"}]],[\"$\",\"$L15\",null,{\"theme\":\"luma\"}],[\"$\",\"$L3a\",null,{\"fonts\":\"$30:props:value:docsConfig:fonts\",\"children\":[\"$\",\"$L3b\",null,{\"bannersByLocale\":{\"global\":\"$30:props:value:docsConfig:banner\"},\"subdomain\":\"helius\",\"children\":[[\"$\",\"$L3c\",null,{\"theme\":\"luma\"}],[\"$\",\"script\",null,{\"id\":\"_mintlify-scroll-margin-script\",\"dangerouslySetInnerHTML\":{\"__html\":\"$3d\"},\"suppressHydrationWarning\":true}],\"$L3e\"]}]}]]]}]}]}]}]}]}]}]\n"])</script>
795<script>self.__next_f.push([1,"3f:I[540345,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ConsentProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"40:I[529058,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"LocalStorageAndAnalyticsProviders\"]\n"])</script>
795<script>self.__next_f.push([1,"41:I[958547,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"42:I[604780,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"CaptchaProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"43:I[859465,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"AssistantUiProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"44:I[832740,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"AssistantTransportProviderSelector\"]\n"])</script>
795<script>self.__next_f.push([1,"45:I[601054,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"SearchProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"46:I[28330,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"SkipToContent\"]\n"])</script>
795<script>self.__next_f.push([1,"47:I[382229,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"AssistantLayoutScript\"]\n"])</script>
795<script>self.__next_f.push([1,"48:I[87732,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"AssistantLayoutWrapper\"]\n"])</script>
795<script>self.__next_f.push([1,"3e:[\"$\",\"$L3f\",null,{\"privacy\":\"$undefined\",\"children\":[\"$\",\"$L40\",null,{\"subdomain\":\"helius\",\"isAtlas\":false,\"children\":[\"$\",\"$L41\",null,{\"toggles\":[{\"name\":\"dashboard-editor-theseus\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"kill-isr\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"agent-mintlify-slack\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"editor-v7-file-tree\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"agent-integrations-settings\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"automations-pr-grouping\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"custom-prefix\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"analytics-v7\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"user-flows-analytics\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"no-publish-flow\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"llms-txt-v2\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"pause-universal-search-reconcile\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"snapshot-serving-live\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"stripTemperatureMiddleware\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"per-site-search-delta\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"support-platform-pylon-zendesk\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"editor-branches-v2-autocommit\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"editor-branches-v2\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"snapshot-serving\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"instant-rollback\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"granular-notifications-server\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"granular-notifications\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"editor-private-page-search\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"automations-fable\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"fixed-ai-action-pricing\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"automation-resolve-merge-conflict\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"scoped-publishing\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"mintql\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"page-level-analytics\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"teamspace\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"revalidation-jwt\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"assistant-v5\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false},{\"name\":\"byok-sep-25\",\"enabled\":true,\"variant\":{\"name\":\"disabled\",\"enabled\":false,\"feature_enabled\":true},\"impressionData\":false}],\"children\":[\"$\",\"$L42\",null,{\"enabled\":true,\"children\":[\"$\",\"$L43\",\"helius\",{\"children\":[\"$\",\"$L44\",null,{\"children\":[\"$\",\"$L45\",null,{\"subdomain\":\"helius\",\"hasChatPermissions\":true,\"isLoggedInCli\":false,\"assistantConfig\":{\"enableAskAiButton\":true,\"enableAskAiSearchBar\":true,\"deflection\":{\"enabled\":true,\"email\":\"[email protected]\"}},\"starterQuestions\":\"$undefined\",\"children\":[[\"$\",\"$L46\",null,{}],[\"$\",\"$L47\",null,{\"hasChatPermissions\":true}],false,[\"$\",\"$L48\",null,{\"children\":[\"$L49\",\"$undefined\"]}]]}]}]}]}]}]}]}]\n"])</script>
795<script>self.__next_f.push([1,"4a:I[118717,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/baaa22a26eddc070.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"NotFoundHydrator\"]\n"])</script>
795<script>self.__next_f.push([1,"49:[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L4a\",null,{\"source\":\"multitenant\"}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]\n"])</script>
795<script>self.__next_f.push([1,"4b:I[597003,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ScopedNavProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"1a:[\"$\",\"$L4b\",null,{\"scopedNav\":{\"global\":{\"anchors\":[]},\"languages\":[{\"language\":\"en\",\"tabs\":[{\"tab\":\"Documentation\",\"pages\":[{\"title\":\"Documentation\",\"href\":\"\"}]},{\"tab\":\"API Reference\",\"pages\":[{\"title\":\"API Reference\",\"href\":\"/api-reference\"}]},{\"tab\":\"Guides\",\"groups\":[{\"group\":\"Start Here\",\"pages\":[{\"title\":\"Helius Developer Guides\",\"sidebarTitle\":\"Overview\",\"description\":\"Developer tutorials for building on Solana with Helius.\",\"href\":\"/guides/overview\"},{\"title\":\"Guides for Traders\",\"sidebarTitle\":\"For Traders \u0026 MMs\",\"description\":\"Build trading systems on Solana: see transactions first with Preconfirmations, land trades first with Sender, and stream market data with LaserStream.\",\"href\":\"/guides/for-traders\"},{\"title\":\"Guides for Wallets \u0026 Consumer Applications\",\"sidebarTitle\":\"For Wallets \u0026 Apps\",\"description\":\"A guided path for building wallets and consumer apps on Solana: live balance updates, transaction feeds, wallet history, token balances, and staking.\",\"href\":\"/guides/for-wallets\"},{\"title\":\"Guides for Analytics and Indexing Data\",\"sidebarTitle\":\"For Analytics\",\"description\":\"Developer tutorials for building Solana indexers, dashboards, and data pipelines — parsed swap and mint streams, block monitoring, and RPC optimization.\",\"href\":\"/guides/for-analytics\"}]},{\"group\":\"Real-Time Data\",\"pages\":[{\"group\":\"Subscribe to Accounts\",\"pages\":[{\"title\":\"Account Subscription and Updates\",\"og:title\":\"Account Subscription - Helius LaserStream\",\"sidebarTitle\":\"Account Updates (gRPC)\",\"description\":\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\",\"og:description\":\"Subscribe to Solana account updates and track on-chain state changes using LaserStream\",\"href\":\"/laserstream/guides/account-subscription\"},{\"title\":\"How to Use accountSubscribe\",\"sidebarTitle\":\"Account Updates (WSS)\",\"description\":\"Stream real-time Solana account updates with `accountSubscribe`. Monitor balance changes, data modifications, and lamport updates via WebSocket.\",\"href\":\"/rpc/websocket/account-subscribe\"}]},{\"group\":\"Monitor Transactions\",\"pages\":[{\"title\":\"Transaction Monitoring with LaserStream\",\"og:title\":\"Transaction Monitoring - Helius LaserStream\",\"sidebarTitle\":\"Transaction Monitoring (gRPC)\",\"description\":\"Stream Solana transactions in real-time with LaserStream — program filtering, execution details, token balance changes, and reconnect-safe replay.\",\"og:description\":\"Stream Solana transactions in real-time with LaserStream — filter by program, account, vote, and failure status.\",\"href\":\"/laserstream/guides/transaction-monitoring\"},{\"title\":\"How to Use transactionSubscribe\",\"sidebarTitle\":\"Transaction Monitoring (WSS)\",\"description\":\"Stream real-time Solana transaction updates with `transactionSubscribe`. Monitor blockchain activity, filter by accounts, and receive instant notifications.\",\"href\":\"/rpc/websocket/transaction-subscribe\"},{\"title\":\"Decoding and Parsing Transaction Data\",\"og:title\":\"Decoding Transaction Data - Helius LaserStream\",\"sidebarTitle\":\"Decoding Transaction Data\",\"description\":\"Learn how to decode and parse transaction data from Laserstream for better understanding of Solana transactions.\",\"og:description\":\"Decode and parse Solana transaction data from LaserStream gRPC streams\",\"href\":\"/laserstream/guides/decoding-transaction-data\"},{\"title\":\"Slot \u0026 Block Monitoring with LaserStream\",\"og:title\":\"Slot \u0026 Block Monitoring - Helius LaserStream\",\"sidebarTitle\":\"Slot \u0026 Block Monitoring\",\"description\":\"Monitor Solana network consensus, block production, and network state changes with LaserStream — slot timing, block metadata, and filtered full blocks.\",\"og:description\":\"Track Solana slots and blocks in real-time with LaserStream — network health, block production, and filtered streams.\",\"href\":\"/laserstream/guides/slot-and-block-monitoring\"}]},{\"group\":\"Track Trading Activity\",\"pages\":[{\"title\":\"Track Jupiter Swaps with Parsed Streams\",\"sidebarTitle\":\"Track Jupiter Swaps\",\"description\":\"Build and subscribe a Parsed Streams filter for Jupiter route instructions using describeProgram.\",\"href\":\"/parsed-stream
795s/guides/track-jupiter-swaps\"},{\"title\":\"Track Pump.fun Token Mints with Parsed Streams\",\"sidebarTitle\":\"Track Pump.fun Mints\",\"description\":\"Subscribe to Pump.fun create instructions with Helius Parsed Streams and build a reconnect-safe Solana listener that logs every new token mint and creator.\",\"href\":\"/parsed-streams/guides/track-pumpfun-mints\"},{\"title\":\"Solana Pump AMM Data Streaming with LaserStream\",\"og:title\":\"Stream Pump AMM Data - Helius LaserStream\",\"sidebarTitle\":\"Stream Pump AMM Data (gRPC)\",\"description\":\"Copy-pasteable LaserStream script that streams Pump.fun account and transaction activity in real time, with rolling stats and signature decoding.\",\"og:description\":\"Run a Pump.fun monitor in 5 minutes with LaserStream — real-time accounts and transactions, no boilerplate.\",\"href\":\"/laserstream/guides/stream-pump-amm-data\"},{\"title\":\"How to Stream Solana Pump AMM Data\",\"sidebarTitle\":\"Stream Pump AMM Data (WSS)\",\"description\":\"Learn how to stream live Solana Pump AMM data using LaserStream WebSocket. Log-based monitoring available on all plans with automatic reconnection.\",\"href\":\"/rpc/websocket/stream-pump-amm-data\"}]}]},{\"group\":\"Low-Latency Trading\",\"pages\":[{\"title\":\"Trade on Preconfirmations\",\"sidebarTitle\":\"Use Preconfirmations\",\"description\":\"React to Solana transactions before they land: subscribe to preconfSubscribe filters, decode the binary payload, and act with Sender Max.\",\"href\":\"/pre-confirmations/guides/trade-on-preconfirmations\"},{\"title\":\"Trade on Preprocessed Transactions\",\"sidebarTitle\":\"Use Preprocessed\",\"description\":\"Watch a program's Solana transactions before they reach the processed commitment level with preprocessedSubscribe.\",\"href\":\"/preprocessed-transactions/guides/trade-on-preprocessed\"},{\"title\":\"Land Trades with Sender\",\"sidebarTitle\":\"Land Trades with Sender\",\"description\":\"Build a low-latency send loop with Helius Sender: regional endpoints, connection warming, dynamic priority fees, tips, and landing confirmation with retries.\",\"href\":\"/sending-transactions/guides/land-trades-with-sender\"}]},{\"group\":\"Historical \u0026 Wallet Data\",\"pages\":[{\"title\":\"Transaction v1 Support\",\"sidebarTitle\":\"Transaction v1 Support\",\"description\":\"Prepare your Solana integration for transaction v1: set maxSupportedTransactionVersion to 1, upgrade to a v1-capable SDK, and read priority fees from transactionConfig.\",\"href\":\"/rpc/transaction-v1\"},{\"title\":\"Migrate from getSignaturesForAddress + getTransaction to getTransactionsForAddress\",\"sidebarTitle\":\"getTransactionsForAddress\",\"description\":\"Replace the getSignaturesForAddress + getTransaction loop with a single getTransactionsForAddress call — parameter mapping, before/after code, and pagination.\",\"href\":\"/rpc/migrate-to-gettransactionsforaddress\"},{\"title\":\"Fetch Pump.fun Token Mints with Parsed Events\",\"sidebarTitle\":\"Fetch Pump.fun Mints\",\"description\":\"Page through a Solana address's history with Helius Parsed Events and extract Pump.fun create instructions — token mint, creator, name, symbol, and URI.\",\"href\":\"/parsed-events/guides/fetch-pumpfun-mints\"},{\"title\":\"Migrate from Enhanced Transactions to Parsed Events\",\"sidebarTitle\":\"Migrate from Enhanced Transactions\",\"description\":\"Move from the Enhanced Transactions API to Parsed Events — endpoint and parameter mapping, response field mapping, before/after code, and an AI agent prompt.\",\"href\":\"/parsed-events/guides/migrate-from-enhanced-transactions\"}]},{\"group\":\"RPC Method Guides\",\"pages\":[{\"title\":\"Solana RPC Guides and Tutorials\",\"sidebarTitle\":\"Overview\",\"description\":\"Practical guides and tutorials for effectively using Solana RPC methods. Real-world examples, code samples, and best practices for blockchain development.\",\"href\":\"/rpc/guides/overview\"},{\"title\":\"Solana RPC Optimization: Performance \u0026 Cost Best Practices\",\"sidebarTitle\":\"Optimization Techniques\",\"description\":\"Optimize Solana RPC performance, reduce costs, and improve reliability. Transaction optimization, data retrieval patterns, and best practices guide.\",\"href\":\"/rpc/optimization-techniques\"},{\"group\":\"Accounts\",\"pages\":[{\"title\":\"How to Use getAccountInfo\",\"sidebarTitle\":\"getAccountInfo\",\"description\":\"Learn getAccountInfo use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getaccountinfo\"},{\"title\":\"How to Use getBalance\",\"sidebarTitle\":\"getBalance\",\"description\":\"Learn getBalance use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getbalance\"},{\"title\":\"How to Use getLargestAccounts\",\"sidebarTitle\":\"getLargestAccounts\",\"description\":\"Learn getLargestAccounts use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getlargestaccounts\"},{\"title\":\"How to Use getMinimumBalanceForRentExemption\",\"sidebarTitle\":\"getMinimumBalanceForRentExemption\",\"description\":\"Learn getMinimumBalanceForRentExemption use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getminimumbalanceforrentexemption\"},{\"title\":\"How to Use getMultipleAccounts\",\"sidebarTitle\":\"getMultipleAccounts\",\"description\":\"Learn getMultipleAccounts use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getmultipleaccounts\"},{\"title\":\"How to Use getProgramAccounts\",\"sidebarTitle\":\"getProgramAccounts\",\"description\":\"Learn getProgramAccounts use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getprogramaccounts\"}]},{\"group\":\"Transactions \u0026 Fees\",\"pages\":[{\"title\":\"How to Use getSignaturesForAddress\",\"sidebarTitle\":\"getSignaturesForAddress\",\"description\":\"Learn getSignaturesForAddress use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getsignaturesforaddress\"},{\"title\":\"How to Use getSignatureStatuses\",\"sidebarTitle\":\"getSignatureStatuses\",\"description\":\"Learn getSignatureStatuses use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getsignaturestatuses\"},{\"title\":\"How to Use getTransaction\",\"sidebarTitle\":\"getTransaction\",\"description\":\"Learn getTransaction use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettransaction\"},{\"title\":\"How to Use getTransactionCount\",\"sidebarTitle\":\"getTransactionCount\",\"description\":\"Learn getTransactionCount use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettransactioncount\"},{\"title\":\"How to Use getFeeForMessage\",\"sidebarTitle\":\"getFeeForMessage\",\"description\":\"Learn getFeeForMessage use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getfeeformessage\"},{\"title\":\"How to Use getRecentPrioritizationFees\",\"sidebarTitle\":\"getRecentPrioritizationFees\",\"description\":\"Learn getRecentPrioritizationFees use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getrecentprioritizationfees\"}]},{\"group\":\"Tokens\",\"pages\":[{\"title\":\"How to Use getTokenAccountBalance\",\"sidebarTitle\":\"getTokenAccountBalance\",\"description\":\"Learn getTokenAccountBalance use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettokenaccountbalance\"},{\"title\":\"How to Use getTokenAccountsByDelegate\",\"sidebarTitle\":\"getTokenAccountsByDelegate\",\"description\":\"Learn getTokenAccountsByDelegate use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettokenaccountsbydelegate\"},{\"title\":\"How to Use getTokenAccountsByOwner\",\"sidebarTitle\":\"getTokenAccountsByOwner\",\"description\":\"Learn getTokenAccountsByOwner use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettokenaccountsbyowner\"},{\"title\":\"How to Use getTokenLargestAccounts\",\"sidebarTitle\":\"getTokenLargestAccounts\",\"description\":\"Learn getTokenLargestAccounts use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettokenlargestaccounts\"},{\"title\":\"How to Use getTokenSupply\",\"sidebarTitle\":\"getTokenSupply\",\"description\":\"Learn getTokenSupply use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gettokensupply\"}]},{\"group\":\"Blocks\",\"pages\":[{\"title\":\"How to Use getBlock\",\"sidebarTitle\":\"getBlock\",\"description\":\"Learn getBlock use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblock\"},{\"title\":\"How to Use getBlockCommitment\",\"sidebarTitle\":\"getBlockCommitment\",\"description\":\"Learn getBlockCommitment use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblockcommitment\"},{\"title\":\"How to Use getBlockHeight\",\"sidebarTitle\":\"getBlockHeight\",\"description\":\"Learn getBlockHeight use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblockheight\"},{\"title\":\"How to Use getBlockProduction\",\"sidebarTitle\":\"getBlockProduction\",\"description\":\"Learn getBlockProduction use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblockproduction\"},{\"title\":\"How to Use getBlocks\",\"sidebarTitle\":\"getBlocks\",\"description\":\"Learn getBlocks use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblocks\"},{\"title\":\"How to Use getBlocksWithLimit\",\"sidebarTitle\":\"getBlocksWithLimit\",\"description\":\"Learn getBlocksWithLimit use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblockswithlimit\"},{\"title\":\"How to Use getBlockTime\",\"sidebarTitle\":\"getBlockTime\",\"description\":\"Learn getBlockTime use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getblocktime\"},{\"title\":\"How to Use getFirstAvailableBlock\",\"sidebarTitle\":\"getFirstAvailableBlock\",\"description\":\"Learn getFirstAvailableBlock use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getfirstavailableblock\"},{\"title\":\"How to Use getLatestBlockhash\",\"sidebarTitle\":\"getLatestBlockhash\",\"description\":\"Learn getLatestBlockhash use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getlatestblockhash\"},{\"title\":\"How to Use isBlockhashValid\",\"sidebarTitle\":\"isBlockhashValid\",\"description\":\"Learn isBlockhashValid use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/isblockhashvalid\"},{\"title\":\"How to Use minimumLedgerSlot\",\"sidebarTitle\":\"minimumLedgerSlot\",\"description\":\"Learn minimumLedgerSlot use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/minimumledgerslot\"}]},{\"group\":\"Slots \u0026 Epochs\",\"pages\":[{\"title\":\"How to Use getEpochInfo\",\"sidebarTitle\":\"getEpochInfo\",\"description\":\"Learn getEpochInfo use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getepochinfo\"},{\"title\":\"How to Use getEpochSchedule\",\"sidebarTitle\":\"getEpochSchedule\",\"description\":\"Learn getEpochSchedule use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getepochschedule\"},{\"title\":\"How to Use getHighestSnapshotSlot\",\"sidebarTitle\":\"getHighestSnapshotSlot\",\"description\":\"Learn getHighestSnapshotSlot use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gethighestsnapshotslot\"},{\"title\":\"How to Use getLeaderSchedule\",\"sidebarTitle\":\"getLeaderSchedule\",\"description\":\"Learn getLeaderSchedule use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getleaderschedule\"},{\"title\":\"How to Use getMaxRetransmitSlot\",\"sidebarTitle\":\"getMaxRetransmitSlot\",\"description\":\"Learn getMaxRetransmitSlot use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getmaxretransmitslot\"},{\"title\":\"How to Use getMaxShredInsertSlot\",\"sidebarTitle\":\"getMaxShredInsertSlot\",\"description\":\"Learn getMaxShredInsertSlot use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getmaxshredinsertslot\"},{\"title\":\"How to Use getSlot\",\"sidebarTitle\":\"getSlot\",\"description\":\"Learn getSlot use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getslot\"},{\"title\":\"How to Use getSlotLeader\",\"sidebarTitle\":\"getSlotLeader\",\"description\":\"Learn getSlotLeader use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getslotleader\"},{\"title\":\"How to Use getSlotLeaders\",\"sidebarTitle\":\"getSlotLeaders\",\"description\":\"Learn getSlotLeaders use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getslotleaders\"}]},{\"group\":\"Staking \u0026 Economics\",\"pages\":[{\"title\":\"How to Use getInflationGovernor\",\"sidebarTitle\":\"getInflationGovernor\",\"description\":\"Learn getInflationGovernor use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getinflationgovernor\"},{\"title\":\"How to Use getInflationRate\",\"sidebarTitle\":\"getInflationRate\",\"description\":\"Learn getInflationRate use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getinflationrate\"},{\"title\":\"How to Use getInflationReward\",\"sidebarTitle\":\"getInflationReward\",\"description\":\"Learn getInflationReward use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getinflationreward\"},{\"title\":\"How to Use getStakeMinimumDelegation\",\"sidebarTitle\":\"getStakeMinimumDelegation\",\"description\":\"Learn getStakeMinimumDelegation use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getstakeminimumdelegation\"},{\"title\":\"How to Use getSupply\",\"sidebarTitle\":\"getSupply\",\"description\":\"Learn getSupply use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getsupply\"},{\"title\":\"How to Use getVoteAccounts\",\"sidebarTitle\":\"getVoteAccounts\",\"description\":\"Learn getVoteAccounts use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getvoteaccounts\"}]},{\"group\":\"Network \u0026 Cluster\",\"pages\":[{\"title\":\"How to Use getClusterNodes\",\"sidebarTitle\":\"getClusterNodes\",\"description\":\"Learn getClusterNodes use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getclusternodes\"},{\"title\":\"How to Use getGenesisHash\",\"sidebarTitle\":\"getGenesisHash\",\"description\":\"Learn getGenesisHash use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getgenesishash\"},{\"title\":\"How to Use getHealth\",\"sidebarTitle\":\"getHealth\",\"description\":\"Learn getHealth use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/gethealth\"},{\"title\":\"How to Use getIdentity\",\"sidebarTitle\":\"getIdentity\",\"description\":\"Learn getIdentity use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getidentity\"},{\"title\":\"How to Use getRecentPerformanceSamples\",\"sidebarTitle\":\"getRecentPerformanceSamples\",\"description\":\"Learn getRecentPe
795rformanceSamples use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getrecentperformancesamples\"},{\"title\":\"How to Use getVersion\",\"sidebarTitle\":\"getVersion\",\"description\":\"Learn getVersion use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/getversion\"},{\"title\":\"How to Use requestAirdrop\",\"sidebarTitle\":\"requestAirdrop\",\"description\":\"Learn requestAirdrop use cases, code examples, request parameters, response structure, and tips.\",\"href\":\"/rpc/guides/requestairdrop\"}]}]},{\"group\":\"Production Readiness\",\"pages\":[{\"title\":\"Protect Your Solana API Keys: Security Best Practices\",\"sidebarTitle\":\"Protect Your Keys\",\"description\":\"Secure your Helius Solana API keys from malicious actors. Access control rules, RPC proxy, and security best practices to prevent unauthorized usage and charges.\",\"href\":\"/rpc/protect-your-keys\"},{\"title\":\"Handling Reconnects and Errors in Parsed Streams\",\"sidebarTitle\":\"Handling Reconnects\",\"description\":\"Detect Parsed Streams disconnects, reconnect with backoff, resubscribe, and backfill exactly the slot window you missed.\",\"href\":\"/parsed-streams/guides/handling-reconnects\"},{\"title\":\"Measuring Latency\",\"og:title\":\"Measuring Latency - Helius LaserStream\",\"sidebarTitle\":\"Measuring Latency\",\"description\":\"Learn how to properly measure and analyze latency for gRPC streams using various testing methods.\",\"og:description\":\"Learn how to measure and analyze latency for LaserStream gRPC streams\",\"href\":\"/laserstream/guides/measuring-latency\"}]},{\"group\":\"Using Orb\",\"pages\":[{\"title\":\"How to Use Orb: Solana Block Explorer Tutorials\",\"sidebarTitle\":\"Overview\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to analyze transactions, look up tokens, inspect blocks, and find IDLs for Solana programs.\",\"href\":\"/orb\"},{\"title\":\"How to Swap Solana Tokens on Orb\",\"sidebarTitle\":\"Swap Tokens\",\"description\":\"Learn how to use the Orb block explorer to discover, research, and swap any Solana coin with low fees and fast confirmation times.\",\"href\":\"/orb/swap-tokens\"},{\"group\":\"Tokens \u0026 Markets\",\"pages\":[{\"title\":\"How to Look up a Solana Token Address\",\"sidebarTitle\":\"Tokens\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to research tokens including transaction histories, price, holders, markets, trading volume, and metadata.\",\"href\":\"/orb/explore-tokens\"},{\"title\":\"How to Look Up the Mint Address of Solana Tokens\",\"sidebarTitle\":\"Mint Addresses\",\"description\":\"Use Orb to find the mint address for any Solana token, and look up their associated token account in your Solana wallet.\",\"href\":\"/orb/explore-mint-addresses\"},{\"title\":\"How to Find Top Solana Coins on Orb\",\"sidebarTitle\":\"Markets\",\"description\":\"Learn how to use the Orb block explorer to find the top Solana coins and projects. Sort by category, market cap, and trading activity.\",\"href\":\"/orb/explore-markets\"},{\"title\":\"How to Find Solana Mint, Freeze, and Update Authority\",\"sidebarTitle\":\"Authorities\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to find the mint, freeze, and update authority for Solana tokens and on-chain programs.\",\"href\":\"/orb/explore-authorities\"}]},{\"group\":\"Wallets \u0026 Programs\",\"pages\":[{\"title\":\"Using the Orb Block Explorer as a Solana Wallet Tracker\",\"sidebarTitle\":\"Wallets\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to track, analyze, and check Solana wallets, including transactions, tokens, balances, funding, and more.\",\"href\":\"/orb/explore-wallets\"},{\"title\":\"How to Find the IDL for a Solana Program\",\"sidebarTitle\":\"Programs\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to research programs including transactions, IDLs, verification status, upgrade authority, and more.\",\"href\":\"/orb/explore-programs\"}]},{\"group\":\"Network\",\"pages\":[{\"title\":\"How to Track a Solana Transaction\",\"sidebarTitle\":\"Transactions\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to research transactions, including summaries, balances, inner instructions, and raw JSON.\",\"href\":\"/orb/explore-transactions\"},{\"title\":\"How to Explore Blocks on Solana\",\"sidebarTitle\":\"Blocks\",\"description\":\"Learn how to use Orb, a new Solana block explorer, to research blocks including executed transactions, programs, block rewards, compute units, and more.\",\"href\":\"/orb/explore-blocks\"},{\"title\":\"How to Find Top Solana Validators on Orb\",\"sidebarTitle\":\"Validators\",\"description\":\"Learn how to use the Orb block explorer to find the top Solana validators. Explore validator rewards, total stake, APY, delinquency, uptime, and more.\",\"href\":\"/orb/explore-validators\"},{\"title\":\"How to Use the Orb Solana Devnet Explorer\",\"sidebarTitle\":\"Devnet\",\"description\":\"Learn how to use Orb, a new block explorer for Solana Devnet to analyze blocks, inspect on-chain programs, and debug transactions.\",\"href\":\"/orb/explore-devnet\"}]}]},{\"group\":\"Other How-Tos\",\"pages\":[{\"title\":\"How to Get Devnet SOL\",\"sidebarTitle\":\"Get Devnet SOL\",\"description\":\"Sign in to your Helius account and visit our Solana Devnet faucet to get free Devnet SOL for testing your Solana programs.\",\"href\":\"/rpc/devnet-sol\"},{\"title\":\"Programmatic Solana Staking with Helius SDK\",\"sidebarTitle\":\"Stake SOL Programmatically\",\"description\":\"Build seamless Solana staking experiences with the Helius SDK. Complete guide from setup to withdrawal with 0% commission validator integration.\",\"href\":\"/staking/how-to-stake-with-helius-programmatically\"}]}]},{\"tab\":\"Agents\",\"pages\":[{\"title\":\"Agents\",\"href\":\"/agents/overview\"}]},{\"tab\":\"FAQs\",\"pages\":[{\"title\":\"FAQs\",\"href\":\"/faqs\"}]}]},{\"language\":\"zh\",\"pages\":[{\"title\":\"zh\",\"href\":\"/zh/laserstream/guides/account-subscription\"}]},{\"language\":\"ja\",\"pages\":[{\"title\":\"ja\",\"href\":\"/ja/laserstream/guides/account-subscription\"}]},{\"language\":\"pt-BR\",\"pages\":[{\"title\":\"pt-BR\",\"href\":\"/pt-BR/laserstream/guides/account-subscription\"}]},{\"language\":\"ko\",\"pages\":[{\"title\":\"ko\",\"href\":\"/ko/laserstream/guides/account-subscription\"}]},{\"language\":\"de\",\"pages\":[{\"title\":\"de\",\"href\":\"/de/laserstream/guides/account-subscription\"}]},{\"language\":\"fr\",\"pages\":[{\"title\":\"fr\",\"href\":\"/fr/laserstream/guides/account-subscription\"}]},{\"language\":\"es\",\"pages\":[{\"title\":\"es\",\"href\":\"/es/laserstream/guides/account-subscription\"}]},{\"language\":\"id\",\"pages\":[{\"title\":\"id\",\"href\":\"/id/laserstream/guides/account-subscription\"}]},{\"language\":\"vi\",\"pages\":[{\"title\":\"vi\",\"href\":\"/vi/laserstream/guides/account-subscription\"}]}]},\"maps\":{\"firstHrefInVersion\":{},\"firstHrefInLanguage\":{\"en\":{\"href\":\"/laserstream/guides/account-subscription\",\"matchLevel\":0},\"zh\":{\"href\":\"/zh/laserstream/guides/account-subscription\",\"matchLevel\":1},\"ja\":{\"href\":\"/ja/laserstream/guides/account-subscription\",\"matchLevel\":1}
795,\"pt-BR\":{\"href\":\"/pt-BR/laserstream/guides/account-subscription\",\"matchLevel\":1},\"ko\":{\"href\":\"/ko/laserstream/guides/account-subscription\",\"matchLevel\":1},\"de\":{\"href\":\"/de/laserstream/guides/account-subscription\",\"matchLevel\":1},\"fr\":{\"href\":\"/fr/laserstream/guides/account-subscription\",\"matchLevel\":1},\"es\":{\"href\":\"/es/laserstream/guides/account-subscription\",\"matchLevel\":1},\"id\":{\"href\":\"/id/laserstream/guides/account-subscription\",\"matchLevel\":1},\"vi\":{\"href\":\"/vi/laserstream/guides/account-subscription\",\"matchLevel\":1}}},\"children\":\"$L4c\"}]\n"])</script>
795<script>self.__next_f.push([1,"4d:I[763509,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ThemeLayout\"]\n"])</script>
795<script>self.__next_f.push([1,"4e:I[91557,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"ApiReferenceProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"4f:I[114793,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"PageProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"50:I[91557,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"OpenApiProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"51:I[525343,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"TabSyncContextProvider\"]\n"])</script>
795<script>self.__next_f.push([1,"52:T844,"])</script>
795<script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.helius.dev/#organization\",\"name\":\"Helius Docs\",\"url\":\"https://www.helius.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/helius/1-9q8-PZtWH0Z9Lt/logo/light.svg?fit=max\u0026auto=format\u0026n=1-9q8-PZtWH0Z9Lt\u0026q=85\u0026s=170d27f36fb94074ff24cfb5e0ad9816\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.helius.dev/docs#website\",\"name\":\"Helius Docs\",\"url\":\"https://www.helius.dev/docs\",\"publisher\":{\"@id\":\"https://www.helius.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription#webpage\",\"url\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription\",\"name\":\"Account Subscription and Updates\",\"description\":\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\",\"dateModified\":\"2026-06-12T23:17:28.144Z\",\"isPartOf\":{\"@id\":\"https://www.helius.dev/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Helius Docs\",\"item\":\"https://www.helius.dev/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Account Subscription and Updates\",\"item\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription#article\",\"headline\":\"Account Subscription and Updates\",\"name\":\"Account Subscription and Updates\",\"description\":\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\",\"url\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription\",\"mainEntityOfPage\":{\"@id\":\"https://www.helius.dev/docs/laserstream/guides/account-subscription#webpage\"},\"dateModified\":\"2026-06-12T23:17:28.144Z\",\"publisher\":{\"@id\":\"https://www.helius.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://www.helius.dev/docs#website\"}}]}"])</script>
795<script>self.__next_f.push([1,"4c:[\"$\",\"$L4d\",null,{\"theme\":\"luma\",\"pageMetadata\":{\"title\":\"Account Subscription and Updates\",\"og:title\":\"Account Subscription - Helius LaserStream\",\"sidebarTitle\":\"Account Updates (gRPC)\",\"description\":\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\",\"og:description\":\"Subscribe to Solana account updates and track on-chain state changes using LaserStream\",\"href\":\"/laserstream/guides/account-subscription\"},\"children\":[\"$\",\"$L4e\",null,{\"value\":{\"apiReferenceData\":{},\"graphqlReferenceData\":\"$undefined\"},\"children\":[\"$\",\"$L4f\",null,{\"value\":{\"pageMetadata\":\"$4c:props:pageMetadata\",\"lastModified\":\"2026-06-12T23:17:28.144Z\",\"gitLastModified\":\"$undefined\",\"originalFileLocation\":\"laserstream/guides/account-subscription.mdx\",\"description\":{\"compiledSource\":\"\\\"use strict\\\";\\nconst {jsx: _jsx} = arguments[0];\\nconst {useMDXComponents: _provideComponents} = arguments[0];\\nfunction _createMdxContent(props) {\\n  const _components = {\\n    p: \\\"p\\\",\\n    ..._provideComponents(),\\n    ...props.components\\n  };\\n  return _jsx(_components.p, {\\n    children: \\\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\\\"\\n  });\\n}\\nfunction MDXContent(props = {}) {\\n  const {wrapper: MDXLayout} = {\\n    ..._provideComponents(),\\n    ...props.components\\n  };\\n  return MDXLayout ? _jsx(MDXLayout, {\\n    ...props,\\n    children: _jsx(_createMdxContent, {\\n      ...props\\n    })\\n  }) : _createMdxContent(props);\\n}\\nreturn {\\n  default: MDXContent\\n};\\n\",\"frontmatter\":{},\"scope\":{}},\"mdxExtracts\":{\"tableOfContents\":[{\"title\":\"The account model context\",\"slug\":\"the-account-model-context\",\"depth\":2,\"children\":[]},{\"title\":\"Basic account subscription\",\"slug\":\"basic-account-subscription\",\"depth\":2,\"children\":[{\"title\":\"Understanding account filtering with datasize\",\"slug\":\"understanding-account-filtering-with-datasize\",\"depth\":3,\"children\":[]},{\"title\":\"Why use datasize filtering?\",\"slug\":\"why-use-datasize-filtering%3F\",\"depth\":4,\"children\":[]},{\"title\":\"Where does 165 bytes come from?\",\"slug\":\"where-does-165-bytes-come-from%3F\",\"depth\":4,\"children\":[]},{\"title\":\"Decoding the account structure\",\"slug\":\"decoding-the-account-structure\",\"depth\":4,\"children\":[]},{\"title\":\"Combining filters: datasize + memcmp for laser precision\",\"slug\":\"comb
795ining-filters%3A-datasize-%2B-memcmp-for-laser-precision\",\"depth\":3,\"children\":[]},{\"title\":\"Reading USDC account updates: Who, How Much, Where?\",\"slug\":\"reading-usdc-account-updates%3A-who%2C-how-much%2C-where%3F\",\"depth\":3,\"children\":[]}]},{\"title\":\"Complete filtering reference\",\"slug\":\"complete-filtering-reference\",\"depth\":2,\"children\":[{\"title\":\"Specific account filtering\",\"slug\":\"specific-account-filtering\",\"depth\":3,\"children\":[]},{\"title\":\"Combined filtering strategies\",\"slug\":\"combined-filtering-strategies\",\"depth\":3,\"children\":[]},{\"title\":\"Understanding the bigger picture\",\"slug\":\"understanding-the-bigger-picture\",\"depth\":3,\"children\":[]}]},{\"title\":\"Applying this pattern to other programs\",\"slug\":\"applying-this-pattern-to-other-programs\",\"depth\":2,\"children\":[]}],\"codeExamples\":{}},\"pageType\":\"$undefined\",\"panelMdxSource\":\"$undefined\",\"panelMdxSourceWithNoJs\":\"$undefined\",\"contextualStarterQuestions\":\"$undefined\",\"relatedPages\":\"$undefined\",\"relatedPagesConfig\":\"$undefined\",\"narration\":\"$undefined\"},\"children\":[\"$\",\"$L50\",null,{\"pageMetadata\":\"$4c:props:pageMetadata\",\"mdxExtracts\":\"$4c:props:children:props:children:props:value:mdxExtracts\",\"openApiReferenceData\":\"$undefined\",\"children\":[\"$\",\"$L51\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$52\"}}],\"$L53\",\"$L54\",\"$L55\",\"$L56\",\"$L57\"]}]}]}]}]}]\n"])</script>
795<script>self.__next_f.push([1,"58:I[228341,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"PageModeUpdater\"]\n"])</script>
795<script>self.__next_f.push([1,"59:I[575126,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"Background\"]\n"])</script>
795<script>self.__next_f.push([1,"5c:I[36098,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"CustomJsFiles\"]\n"])</script>
795<script>self.__next_f.push([1,"6f:I[530359,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"MDXContentController\"]\n"])</script>
795<script>self.__next_f.push([1,"70:I[448287,[\"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/49ec756ea5dc1771.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/62e03230a454b6d4.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/f38c09491143b60c.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/341920269e4c6c75.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8fe1f631250d4b0d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a8953c1fadd78cbd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/20dfaa13faa8c5a9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e9bc023ffbf81d27.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c9b24fe9cec085bd.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/042fe625554e7ece.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/d9038181f2c2898b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/8e9da56019900654.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/ecb1fa404af43177.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/91103844efdcdc17.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/cd6317586aadc353.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/7c2905a36f70970d.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/c8a3deaa7335de64.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/300027ac55b30858.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/dc8a02ec19451792.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e8ae17d17545aec9.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/68d6e5104243ae2b.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/1274e7453c808eec.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/a95b6b45d1dc4487.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/65712ea96ab292b5.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/935cd929aff6bb51.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\",\"/docs/_next/static/chunks/e07381c7469ca6d6.js?dpl=dpl_44yfLsveaXsAai6bivrio3WJqiuM\"],\"default\"]\n"])</script>
795<script>self.__next_f.push([1,"53:[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"document.documentElement.setAttribute('data-page-mode', \\\"none\\\");\"}}],[\"$\",\"$L58\",null,{\"pageMetadata\":\"$4c:props:pageMetadata\"}]]\n54:[\"$\",\"$L59\",null,{\"pageMetadata\":\"$4c:props:pageMetadata\"}]\n5a:T177c,"])</script>
795<script>self.__next_f.push([1,"/* Navbar \"Get started\" CTA: keep the label white on the brand-red button in\n   dark mode. Luma renders the label near-black (text-gray-950) on primary-light\n   in dark mode, which reads muddy on the brand red. The button already gets its\n   red background and hover fade from the theme's own classes. */\n.dark #topbar-cta-button a,\n.dark #topbar-cta-button a span {\n  color: #fff !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  font-weight: 450 !important; \n  font-style: normal !important;\n}\n\n#footer a {\n  max-width: none !important;\n}\n\n.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)) {\n  border-color: rgb(var(--primary-light) / 0.8);\n}\n\n.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover {\n  border-color: rgb(var(--primary-light) / 1);\n}\n\n#banner {\n  background-color: #0F0F0F;\n}\n\n/* Widen the fixed sidebar so long section labels and RPC method names fit on\n   one line instead of wrapping. Scoped to lg+ where the sidebar is shown; the\n   content column is shifted right by the same 4rem so its gap from the sidebar\n   is unchanged. (The single longest method name, getMinimumBalanceForRentExemption,\n   can still wrap.) */\n@media (min-width: 1024px) {\n  nav#sidebar-content {\n    width: 18rem !important;\n  }\n\n  #content-container {\n    margin-left: 4rem !important;\n  }\n}\n\n/* Sidebar section headings: match the item font size (14px) instead of the\n   default 12px, and render white in dark mode instead of the muted gray. */\n.sidebar-group-header {\n  font-size: 0.875rem !important;\n}\n\n.dark .sidebar-group-header {\n  color: #fff !important;\n}\n\n/* API reference pages: keep the prose column from sliding under the sticky\n   request/response example rail. Luma centers the 696px column against the\n   viewport with margin-left: calc(50vw - 348px - 14rem), ignoring the 28rem\n   rail, so between ~1280px and ~1650px the rail overlaps the text. Clamp the\n   margin to the free space actually available in the column's flex track\n   (100% is the track width); on viewports wide enough for true centering the\n   original calc still wins. */\n@media (min-width: 1024px) {\n  [class*=\"lg:ml-[max(0px,calc(50vw-348px-14rem)\"] {\n    margin-left: max(0px, min(calc(50vw - 348px - 14rem), calc(100% - 696px))) !important;\n  }\n}\n\n/* Hide the floating \"Ask a question…\" assistant bar on mobile/tablet — it parks\n   at the bottom of the viewport and eats too much space on small screens. The\n   assistant stays reachable via the sparkle (Toggle assistant panel) button in\n   the header. Desktop (lg+) keeps the floating bar. */\n@media (max-width: 1023px) {\n  .chat-assistant-floating-input {\n    display: none !important;\n  }\n}\n\n/* Slot height is reserved from first paint. The skeleton and iframe\n   stack in that box; ready is an opacity crossfade, not a grow.\n   Busy height is only for a later send, via .is-busy / posted size.\n   Mintlify stamps aspect-ratio: 16 / 9; kill it or height is ignored.\n   color-scheme follows the host theme only. No default, or the other mode flashes. */\n.privacy-embed-slot {\n  --embed-sk-base: #e4e2de;\n  --embed-sk-shine: rgba(255, 255, 255, 0.55);\n  --embed-fade: 0.45s ease;\n  position: relative;\n  height: 15rem;\n  overflow: hidden;\n}\n\n.dark .privacy-embed-slot {\n  --embed-sk-base: #2a2a2e;\n  --embed-sk-shine: rgba(255, 255, 255, 0.08);\n}\n\n.privacy-embed-fallback {\n  position: absolute;\n  inset: 0;\n  z-index: 1;\n  opacity: 1;\n  pointer-events: none;\n  transition: opacity var(--embed-fade);\n}\n\n.privacy-embed-skeleton {\n  position: relative;\n  overflow: hidden;\n  box-sizing: border-box;\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  width: 100%;\n  height: 100%;\n  padding: 18px 20px;\n  border: 0;\n  background: transparent;\n}\n\n.privacy-embed-skeleton::after {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(90deg, transparent, var(--embed-sk-shine), transparent);\n  transform: translateX(-100%);\n  animation: privacy-embed-sweep 1.4s ease-in-out infinite;\n  pointer-events: none;\n}\n\n.privacy-embed-bone {\n  display: block;\n  flex: none;\n  border-radius: 6px;\n  background: var(--embed-sk-base);\n}\n\n.privacy-embed-bone-lg {\n  width: 72%;\n  height: 12px;\n}\n\n.privacy-embed-bone-md {\n  width: 54%;\n  height: 12px;\n}\n\n.privacy-embed-bone-sm {\n  width: 38%;\n  height: 12px;\n}\n\n.privacy-embed-bone-block {\n  width: 100%;\n  flex: 1 1 auto;\n  min-height: 72px;\n  margin-top: 6px;\n  border-radius: 10px;\n}\n\n@keyframes privacy-embed-sweep {\n  to {\n    transform: translateX(100%);\n  }\n}\n\n.privacy-embed-slot [data-as=\"iframe\"],\n.privacy-embed-slot iframe,\n.privacy-embed-slot .privacy-embed {\n  position: absolute;\n  inset: 0;\n  width: 100% !important;\n  height: 100% !important;\n  opacity: 0;\n  overflow: hidden;\n  pointer-events: none;\n  border: 0 !important;\n  box-shadow: none !important;\n  outline: none !important;\n  aspect-ratio: auto !important;\n  background: transparent !important;\n  transition: opacity var(--embed-fade);\n}\n\n.privacy-embed-static {\n  display: none;\n  position: absolute;\n  inset: 0;\n  z-index: 1;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n}\n\n.privacy-embed-slot.is-failed .privacy-embed-skeleton {\n  display: none;\n}\n\n.privacy-embed-slot.is-failed .privacy-embed-static {\n  display: block;\n}\n\n.privacy-embed-slot.is-live .privacy-embed-fallback,\n.privacy-embed-slot.is-live .privacy-embed-static {\n  opacity: 0;\n}\n\n.privacy-embed-slot.is-live [data-as=\"iframe\"],\n.privacy-embed-slot.is-live iframe,\n.privacy-embed-slot.is-live .privacy-embed {\n  opacity: 1;\n  pointer-events: auto;\n}\n\n@media (max-width: 720px) {\n  .privacy-embed-slot {\n    height: 22rem;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .privacy-embed-skeleton::after {\n    animation: none;\n  }\n\n  .privacy-embed-fallback,\n  .privacy-embed-slot [data-as=\"iframe\"],\n  .privacy-embed-slot iframe,\n  .privacy-embed-slot .privacy-embed {\n    transition: none;\n  }\n}\n\n.dark .privacy-embed {\n  color-scheme: dark !important;\n}\n\n.light .privacy-embed {\n  color-scheme: light !important;\n}\n"])</script>
795<script>self.__next_f.push([1,"55:[[\"$\",\"style\",\"0\",{\"data-custom-css-index\":0,\"data-custom-css-path\":\"style.css\",\"dangerouslySetInnerHTML\":{\"__html\":\"$5a\"}}],\"$L5b\"]\n5d:T2252,"])</script>
795<script>self.__next_f.push([1,"/**\n * Generate and validate sitemap with hreflang tags for multilingual docs\n * https://developers.google.com/search/docs/specialty/international/localized-versions\n * \n * Only updates lastmod dates when actual page changes are detected\n */\n\nconst fs = require('fs');\nconst path = require('path');\nconst { execSync } = require('child_process');\n\nconst BASE_URL = 'https://www.helius.dev/docs';\n\n// Locale set is derived from i18n.json via the single source of truth in\n// scripts/locales.js. LANGUAGES keeps the same shape this file used inline:\n// { [code]: { code, name, urlPrefix, isDefault } }, source (en) first, then\n// targets. LOCALE_DIRS is the non-source locale dir names (zh, ja, ...); nav\n// page paths in localized nav are prefixed with these.\nconst { SOURCE, LANGUAGES, LOCALE_DIRS } = require('./locales');\n\nfunction getFileLastModified(filePath) {\n  try {\n    // --no-show-signature keeps lastmod as YYYY-MM-DD even when git verifies\n    // commit signatures and gpg/ssh noise would otherwise leak into stdout.\n    const output = execSync(`git log -1 --no-show-signature --format=%cs -- \"${filePath}\"`, {\n      cwd: path.join(__dirname, '..'),\n      encoding: 'utf8',\n      stdio: ['ignore', 'pipe', 'pipe']\n    });\n    const match = String(output).match(/\\d{4}-\\d{2}-\\d{2}/);\n    return match ? match[0] : new Date().toISOString().split('T')[0];\n  } catch (error) {\n    // File not in git yet or git not available, use current date\n    return new Date().toISOString().split('T')[0];\n  }\n}\n\nfunction getLocUrl(page, langConfig) {\n  // Mintlify canonicalizes folder index.mdx pages by dropping trailing /index.\n  // \"index\" → locale root; \"shred-delivery/index\" → \"/shred-delivery\".\n  const canonicalPage = page === \"index\" || page === `${langConfig.code}/index`\n    ? \"\"\n    : page.replace(/\\/index$/, \"\");\n  const pagePath = canonicalPage ? `/${canonicalPage}` : \"\";\n  return `${BASE_URL}${langConfig.urlPrefix}${pagePath}`;\n}\n\nfunction findLlmsTxtFiles(docsRoot) {\n  const llmsFiles = [];\n\n  function walkDir(dir, relativePath = '') {\n    const entries = fs.readdirSync(dir, { withFileTypes: true });\n\n    for (const entry of entries) {\n      const fullPath = path.join(dir, entry.name);\n      const relPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;\n\n      if (entry.isDirectory()) {\n        // Skip localized dirs (their llms.txt is emitted per-locale below), node_modules, .git, etc.\n        if (![...LOCALE_DIRS, 'node_modules', '.git', 'scripts'].includes(entry.name)) {\n          walkDir(fullPath, relPath);\n        }\n      } else if (entry.name === 'llms.txt') {\n        // Build URL path from directory path + filename\n        llmsFiles.push({\n          filePath: fullPath,\n          urlPath: relativePath ? `${relativePath}/llms.txt` : 'llms.txt'\n        });\n      }\n    }\n  }\n\n  walkDir(docsRoot);\n  return llmsFiles;\n}\n\nfunction extractPagesFromNavigation(navigation, language = 'en') {\n  const pages = [];\n\n  function traverseGroups(groups) {\n    for (const group of groups) {\n      if (group.pages) {\n        for (const page of group.pages) {\n          if (typeof page === 'string') {\n            pages.push(page);\n          } else if (typeof page === 'object' \u0026\u0026 page.group \u0026\u0026 page.pages) {\n            traverseGroups([page]);\n          }\n        }\n      }\n      if (group.groups) {\n        traverseGroups(group.groups);\n      }\n    }\n  }\n\n  if (navigation.languages) {\n    const langNav = navigation.languages.find(lang =\u003e lang.language === language);\n    if (langNav) {\n      // Nav containers hold groups, which hold pages. The nav uses `tabs`;\n      // older structures used `anchors`/`dropdowns`, and groups can also sit\n      // directly on the language. Traverse whichever exist so page discovery\n      // works regardless of structure. (Previously this read only `anchors`,\n      // which a tabs-based nav lacks — so extraction returned zero pages and\n      // the sitemap contained no doc pages, English or localized.)\n      for (const container of ['tabs', 'anchors', 'dropdowns']) {\n        for (const item of langNav[container] || []) {\n          // traverseGroups treats item as a group node, covering both its\n          // .pages and nested .groups in a single pass.\n          traverseGroups([item]);\n        }\n      }\n      if (langNav.groups) traverseGroups(langNav.groups);\n    }\n  }\n\n  return pages;\n}\n\nfunction generateSitemap() {\n  try {\n    const docsRoot = path.join(__dirname, '..');\n    const docsPath = path.join(docsRoot, 'docs.json');\n    const docs = JSON.parse(fs.readFileSync(docsPath, 'utf8'));\n\n    const allLanguages = {};\n    for (const langCode of Object.keys(LANGUAGES)) {\n      const pages = extractPagesFromNavigation(docs.navigation, langCode);\n      allLanguages[langCode] = pages.map(p =\u003e p.replace(new RegExp(`^(${LOCALE_DIRS.join('|')})/`), ''));\n    }\n\n    const uniquePages = new Set();
795\n    for (const pages of Object.values(allLanguages)) {\n      pages.forEach(page =\u003e uniquePages.add(page));\n    }\n\n    let sitemap = '\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\\n';\n    sitemap += '\u003curlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\\n';\n    sitemap += '        xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"\u003e\\n';\n\n    // Add llms.txt files to sitemap first\n    const llmsFiles = findLlmsTxtFiles(docsRoot);\n    for (const llmsFile of llmsFiles) {\n      const lastmod = getFileLastModified(llmsFile.filePath);\n      const url = `${BASE_URL}/${llmsFile.urlPath}`;\n\n      sitemap += '  \u003curl\u003e\\n';\n      sitemap += `    \u003cloc\u003e${url}\u003c/loc\u003e\\n`;\n      sitemap += `    \u003clastmod\u003e${lastmod}\u003c/lastmod\u003e\\n`;\n      sitemap += '  \u003c/url\u003e\\n';\n    }\n\n    // Generate a \u003curl\u003e entry for each language version of each page\n    for (const page of Array.from(uniquePages).sort()) {\n      for (const [langCode, langConfig] of Object.entries(LANGUAGES)) {\n        // Only generate URL entry if this language has this page\n        if (!allLanguages[langCode].includes(page)) continue;\n\n        const locUrl = getLocUrl(page, langConfig);\n        \n        // Get last modified date from git for this language's file\n        const mdxPath = langConfig.urlPrefix\n          ? path.join(docsRoot, langConfig.urlPrefix.substring(1), `${page}.mdx`)\n          : path.join(docsRoot, `${page}.mdx`);\n        const lastmod = getFileLastModified(mdxPath);\n        \n        sitemap += '  \u003curl\u003e\\n';\n        sitemap += `    \u003cloc\u003e${locUrl}\u003c/loc\u003e\\n`;\n        sitemap += `    \u003clastmod\u003e${lastmod}\u003c/lastmod\u003e\\n`;\n\n        // Add alternate links for all available language versions\n        for (const [altLangCode, altLangConfig] of Object.entries(LANGUAGES)) {\n          if (allLanguages[altLangCode].includes(page)) {\n            const hrefUrl = getLocUrl(page, altLangConfig);\n            sitemap += `    \u003cxhtml:link rel=\"alternate\" hreflang=\"${altLangConfig.code}\" href=\"${hrefUrl}\"/\u003e\\n`;\n          }\n        }\n\n        // x-default always points to the source (English) version\n        const defaultUrl = getLocUrl(page, LANGUAGES[SOURCE]);\n        sitemap += `    \u003cxhtml:link rel=\"alternate\" hreflang=\"x-default\" href=\"${defaultUrl}\"/\u003e\\n`;\n        sitemap += '  \u003c/url\u003e\\n';\n      }\n    }\n\n    sitemap += '\u003c/urlset\u003e\\n';\n\n    const outputPath = path.join(docsRoot, 'sitemap.xml');\n    const oldSitemap = fs.existsSync(outputPath) ? fs.readFileSync(outputPath, 'utf8') : '';\n    \n    // Write new sitemap\n    fs.writeFileSync(outputPath, sitemap, 'utf8');\n\n    // Check if anything actually changed (ignoring just date changes on unchanged files)\n    const changed = oldSitemap !== sitemap;\n    \n    // Count total URL entries across all languages\n    let totalUrlEntries = 0;\n    for (const [langCode] of Object.entries(LANGUAGES)) {\n      totalUrlEntries += allLanguages[langCode].length;\n    }\n    \n    console.log(`✓ Sitemap generated: ${uniquePages.size} unique pages`);\n    console.log(`✓ URL entries: ${totalUrlEntries} (across ${Object.keys(LANGUAGES).length} languages)`);\n    console.log(`✓ llms.txt files: ${llmsFiles.length}`);
795\n    console.log(`✓ Languages: ${Object.keys(LANGUAGES).join(', ')}`);\n    console.log(`✓ Changed: ${changed ? 'Yes' : 'No (dates preserved)'}`);\n    \n    // Quick validation\n    const urlCount = (sitemap.match(/\u003curl\u003e/g) || []).length;\n    const expectedUrlCount = totalUrlEntries + llmsFiles.length;\n\n    if (urlCount === expectedUrlCount) {\n      console.log('✓ Validation passed');\n      return true;\n    } else {\n      console.error(`❌ Validation failed: expected ${expectedUrlCount} URLs, got ${urlCount}`);\n      return false;\n    }\n  } catch (error) {\n    console.error('❌ Error:', error.message);\n    return false;\n  }\n}\n\nif (require.main === module) {\n  const success = generateSitemap();\n  process.exit(success ? 0 : 1);\n}\n\nmodule.exports = { generateSitemap };\n\n"])</script>
795<script>self.__next_f.push([1,"5e:T425c,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\nconst fs = require('fs');\nconst path = require('path');\n\nconst ROOT = path.join(__dirname, '..');\nconst DOCS_PATH = path.join(ROOT, 'docs.json');\nconst NAV_LABELS_PATH = path.join(ROOT, '_nav-labels.mdx');\nconst LABEL_RECORD_PATH = path.join(ROOT, '.i18n-nav-labels.json');\n\nfunction targetLocales() {\n  const i18n = JSON.parse(fs.readFileSync(path.join(ROOT, 'i18n.json'), 'utf8'));\n  return i18n.locale.targets;\n}\n\nfunction localeLabelsPath(locale) {\n  return path.join(ROOT, locale, '_nav-labels.mdx');\n}\n\nfunction collectNames(node, seen = new Set()) {\n  const names = [];\n  if (Array.isArray(node)) {\n    node.forEach(item =\u003e collectNames(item, seen).forEach(n =\u003e names.push(n)));\n  } else if (typeof node === 'object' \u0026\u0026 node !== null) {\n    for (const key of ['anchor', 'group', 'tab', 'dropdown']) {\n      if (node[key] \u0026\u0026 !seen.has(node[key])) {\n        seen.add(node[key]);\n        names.push(node[key]);\n      }\n    }\n    for (const [key, val] of Object.entries(node)) {\n      if (!['anchor', 'group', 'tab', 'dropdown'].includes(key)) {\n        collectNames(val, seen).forEach(n =\u003e names.push(n));\n      }\n    }\n  }\n  return names;\n}\n\nfunction parseLabels(content) {\n  return content\n    .split('\\n')\n    .map(line =\u003e line.match(/^- (.+)$/))\n    .filter(Boolean)\n    .map(m =\u003e m[1]);\n}\n\nconst { CONTAINER_KEYS, LABEL_KEYS, collectPages, countPages } = require('./nav-pages');\n\n// Recover a locale's English-label -\u003e translated-label map from the nav block\n// already in docs.json, so unchanged labels don't have to be re-translated.\n//\n// Pairs labels by POSITION among CONTAINERS, ignoring page entries. Position\n// matters because two English labels can collide into one translation (zh has 73\n// unique labels to English's 74), so pairing deduped lists by index would\n// misalign. Ignoring pages matters because adding or removing a page must not\n// look like a structural change — that is an ordinary nav update, and the labels\n// around it are still valid.\n//\n// Returns null when the container skeletons genuinely differ (a group added or\n// dropped), and the caller then translates instead of guessing.\nfunction recoverTranslations(enNode, locNode, out = {}) {\n  if (Array.isArray(enNode)) {\n    if (!Array.isArray(locNode)) return null;\n    // Page paths are strings; only objects carry labels or nested containers.\n    const enObjs = enNode.filter(n =\u003e n \u0026\u0026 typeof n === 'object');\n    const locObjs = locNode.filter(n =\u003e n \u0026\u0026 typeof n === 'object');\n    if (enObjs.length !== locObjs.length) return null;\n    for (let i = 0; i \u003c enObjs.length; i++) {\n      if (!recoverTranslations(enObjs[i], locObjs[i], out)) return null;\n    }\n    return out;\n  }\n  if (typeof enNode === 'object' \u0026\u0026 enNode !== null) {\n    if (typeof locNode !== 'object' || locNode === null || Array.isArray(locNode)) return null;\n    for (const [key, val] of Object.entries(enNode)) {\n      if (LABEL_KEYS.includes(key)) {\n        if (typeof locNode[key] !== 'string') return null;\n        out[val] = locNode[key];\n      } else if (CONTAINER_KEYS.includes(key)) {\n        // transformNav omits a container whose pages all went missing for this\n        // locale; that is a real structural difference, so stop and translate.\n        if (locNode[key] === undefined) return null;\n        if (!recoverTranslations(val, locNode[key], out)) return null;\n      }\n    }\n    return out;\n  }\n  // Page paths and other scalars carry no labels.\n  return out;\n}\n\n// Per-locale record of the English label list each locale was last translated\n// against. A single shared snapshot is not enough: translating a renamed label\n// for one locale would mark it current for every locale, and the others would\n// silently keep serving the old wording. Keyed by locale, valued with a hash of\n// the English labels at that locale's last successful label sync.\nfunction labelsHash(labels) {\n  return require('crypto').createHash('sha256').update(labels.join('\\n')).digest('hex').slice(0, 16);\n}\n\nfunction readLabelRecord() {\n  try {\n    return JSON.parse(fs.readFileSync(LABEL_RECORD_PATH, 'utf8'));\n  } catch {\n    return {};\n  }\n}\n\n// Returned in place of a nav entry that should be omitted for this locale.\nconst DROP = Symbol('drop');\n\n// Build a locale's navigation from the English one: translate the labels,\n// locale-prefix the page paths, and OMIT pages that don't exist for this locale\n// yet.\n//\n// Omitting is what makes a partially-translated locale valid. A full backfill\n// can fail part-way (rate limit, quota, a bad page) and whatever did translate\n// still ships: the nav lists exactly those pages, so no entry points at a\n// missing page and nothing 404s. Later runs re-add pages as they appear, since\n// this is recomputed from what's on disk every time — so a big backfill becomes\n// resumable instead of all-or-nothing.\n//\n// Coverage is reported by the caller, so a locale that quietly shrinks is\n// visible rather than silent.\nfunction transformNav(node, translations, locale) {\n  if (Array.isArray(node)) {\n    return node\n      .map(item =\u003e transformNav(item, translations, locale))\n      .filter(item =\u003e item !== DROP);\n  }\n  if (typeof node === 'string') {\n    // A page path: keep it only if the translated page exists.\n    return fs.existsSync(path.join(ROOT, locale, `${node}.mdx`))\n      ? `${locale}/${node}`\n      : DROP;\n  }\n  if (typeof node === 'object' \u0026\u0026 node !== null) {\n    const out = {};\n    // Track containers so a group/tab left with nothing can be dropped — but\n    // only if it held pages to begin with. An entry that never had any (e.g. an\n    // anchor that is just an external href) must be preserved as-is.\n    let hadContainer = false;\n    let kept = 0;\n    for (const [key, val] of Object.entries(node)) {\n      if (LABEL_KEYS.includes(key)) {\n        out[key] = translations[val] || val;\n      }
795 else if (CONTAINER_KEYS.includes(key)) {\n        hadContainer = true;\n        const transformed = transformNav(val, translations, locale);\n        if (Array.isArray(transformed)) {\n          kept += transformed.length;\n          // Don't leave an empty container behind; it would show up as\n          // `\"pages\": []` noise in docs.json.\n          if (transformed.length) out[key] = transformed;\n        } else {\n          out[key] = transformed;\n        }\n      } else {\n        out[key] = val;\n      }\n    }\n    if (hadContainer \u0026\u0026 kept === 0) return DROP;\n    return out;\n  }\n  return node;\n}\n\nfunction generate() {\n  const docs = JSON.parse(fs.readFileSync(DOCS_PATH, 'utf8'));\n  const enNav = docs.navigation.languages.find(l =\u003e l.language === 'en');\n  if (!enNav) {\n    console.error('No en language entry found in docs.json');\n    process.exit(1);\n  }\n\n  const names = collectNames(enNav);\n  const content = names.map(n =\u003e `- ${n}`).join('\\n') + '\\n';\n  fs.writeFileSync(NAV_LABELS_PATH, content);\n  console.log(`Generated _nav-labels.mdx with ${names.length} labels`);\n}\n\nfunction apply() {\n  const locales = process.env.I18N_LOCALE ? [process.env.I18N_LOCALE] : targetLocales();\n\n  // A targeted run (I18N_PATHS) re-translates specific pages without changing\n  // the page set, so the navigation needs no update. Skipping it keeps a\n  // one-page re-translation from rewriting the locale's nav labels in docs.json\n  // — churn unrelated to the fix being made. i18n-skip-unchanged.sh likewise\n  // does not stage _nav-labels.mdx for these runs, so the locale label files\n  // this function needs don't exist; the two must stay in step.\n  if (process.env.I18N_PATHS) {\n    console.log('Targeted run (I18N_PATHS) — leaving docs.json navigation unchanged');\n    // nav-gen still wrote the English list; leaving it behind would show up as\n    // an untracked file and make a no-op run look like it produced changes,\n    // which opens a PR and closes the previous one.\n    if (fs.existsSync(NAV_LABELS_PATH)) fs.unlinkSync(NAV_LABELS_PATH);\n    return;\n  }\n\n  if (!fs.existsSync(NAV_LABELS_PATH)) {\n    console.error('Missing _nav-labels.mdx');\n    process.exit(1);\n  }\n  const enLabels = parseLabels(fs.readFileSync(NAV_LABELS_PATH, 'utf8'));\n\n  const docs = JSON.parse(fs.readFileSync(DOCS_PATH, 'utf8'));\n  const enNav = docs.navigation.languages.find(l =\u003e l.language === 'en');\n\n  // One translate shard produces _nav-labels.mdx for every locale. The labels\n  // are legitimately absent only when that shard failed to report back; the\n  // workflow then sets I18N_NAV_LABELS_UNAVAILABLE (the run is already a draft\n  // PR) and each locale keeps its current nav block unchanged. Any other\n  // missing file, and any label-count mismatch, is an error — a stale\n  // navigation must never pass as a synced one.\n  const labelsUnavailable = process.env.I18N_NAV_LABELS_UNAVAILABLE === 'true';\n  const enHash = labelsHash(enLabels);\n  const record = readLabelRecord();\n  const localeLabels = {};\n  const noLabels = new Set();\n  const reused = new Set();\n  const recoverable = new Set();\n  for (const locale of locales) {\n    const labelsPath = localeLabelsPath(locale);\n    if (!fs.existsSync(labelsPath)) {\n      // Labels were not staged because this locale was already translated\n      // against the current English list: reuse the translations already in\n      // docs.json rather than re-translating them into a different wording.\n      // Page changes still apply normally — only the label text is carried over.\n      const existingNav = docs.navigation.languages.find(l =\u003e l.language === locale);\n      const current = record[locale] === enHash;\n      const recovered = existingNav \u0026\u0026 current ? recoverTranslations(enNav, existingNav) : null;\n      if (recovered \u0026\u0026 enLabels.every(l =\u003e recovered[l])) {\n        reused.add(locale);\n        localeLabels[locale] = enLabels.map(l =\u003e recovered[l]);\n        continue;\n      }\n      if (!labelsUnavailable) {\n        const why = !existingNav\n          ? 'it has no navigation yet'\n          : !current\n            ? 'its labels were last translated against a different English list'\n            : 'its navigation structure differs from English';\n        console.error(\n          `Missing ${locale}/_nav-labels.mdx, and its labels could not be recovered from docs.json (${why})`,\n        );\n        process.exit(1);\n      }\n      const hasNav = Boolean(existingNav);\n      console.log(\n        `::warning::${locale}: nav labels unavailable this run — ` +\n          (hasNav\n            ? 'leaving its docs.json navigation unchanged'\n            : 'it has no navigation yet, so the integrity check will refuse this run'),\n      );\n      noLabels.add(locale);\n      continue;\n    }\n    const labels = parseLabels(fs.readFileSync(labelsPath, 'utf8'));\n    if (enLabels.length !== labels.length) {\n      console.error(`Label count mismatch: en=${enLabels.length} ${locale}=${labels.length}`);\n      process.exit(1);\n    }\n    localeLabels[locale] = labels;\n  }\n\n  const enPages = new Set(collectPages(enNav));\n  const enPageCount = enPages.size;\n  const coverage = {};\n  const skipped = new Set();\n  const regressions = [];\n\n  // How many pages this locale must still cover: the ones it already covered\n  // that the English nav STILL lists. Anything English dropped is excluded, so\n  // removing an English page — or swapping one out for a new, untranslated one —\n  // doesn't look like the locale lost ground. Null for a locale with no existing\n  // nav (a brand-new locale has no floor and may land partial).\n  function coverageFloor(previousNav, locale) {\n    if (!previousNav) return null;\n    const prefix = `${locale}/`;\n    const stillWanted = new Set();\n    for (const page of collectPages(previousNav)) {\n      const bare = page.startsWith(prefix) ? page.slice(prefix.length) : page;\n      if (enPages.has(bare)) stillWanted.add(bare);\n    }\n    return stillWanted.size;\n  }\n\n  for (const locale of locales) {\n    if (noLabels.has(locale)) continue;\n    const translations = {};
795\n    enLabels.forEach((en, i) =\u003e { translations[en] = localeLabels[locale][i]; });\n\n    const idx = docs.navigation.languages.findIndex(l =\u003e l.language === locale);\n    const previousNav = idx \u003e= 0 ? docs.navigation.languages[idx] : null;\n    const previousCount = previousNav ? countPages(previousNav) : null;\n    const floor = coverageFloor(previousNav, locale);\n\n    const localeNav = transformNav(JSON.parse(JSON.stringify(enNav)), translations, locale);\n\n    // Nothing translated yet for this locale: leave docs.json alone rather than\n    // writing an empty nav (which Mintlify would render as a language with no\n    // pages). The next run picks it up once pages exist.\n    if (localeNav === DROP) {\n      console.log(`::warning::${locale}: no translated pages found — leaving docs.json navigation unchanged`);\n      coverage[locale] = 0;\n      skipped.add(locale);\n      continue;\n    }\n\n    localeNav.language = locale;\n    const pageCount = countPages(localeNav);\n    coverage[locale] = pageCount;\n\n    // Can a later run rebuild this locale's labels from the nav we are about to\n    // write? Only then is it safe to record it as in step with the English list.\n    const check = recoverTranslations(enNav, localeNav);\n    if (check \u0026\u0026 enLabels.every(l =\u003e check[l])) recoverable.add(locale);\n\n    if (idx \u003e= 0) {\n      docs.navigation.languages[idx] = localeNav;\n    } else {\n      docs.navigation.languages.push(localeNav);\n    }\n\n    // An INCOMPLETE locale is legitimate — that's what makes a backfill\n    // resumable — but it must never be silent.\n    if (pageCount \u003c enPageCount) {\n      console.log(\n        `::warning::${locale}: ${pageCount}/${enPageCount} pages translated — ${enPageCount - pageCount}
795 omitted from the nav until they exist. Re-run the backfill to fill them in.`,\n      );\n    }\n\n    // A REGRESSION is different: a locale that already covered a page must not\n    // lose it. Pruning would otherwise turn a real problem (translations\n    // deleted, a fallback that failed to write) into a quiet nav shrink, and any\n    // URL that was previously live and indexed would start 404ing.\n    if (floor !== null \u0026\u0026 pageCount \u003c floor) {\n      regressions.push(\n        `${locale}: nav would cover ${pageCount} pages but already covered ${floor} that English still lists ` +\n          `(was ${previousCount} total). Pages already translated should not disappear — check whether ${locale}/ ` +\n          `content was deleted or a translation failed to write.`,\n      );\n    }\n  }\n\n  // Fail before writing anything, so a regression can't be half-applied.\n  if (regressions.length) {\n    console.error(`Refusing to sync navigation (${regressions.length} regression(s)):\\n`);\n    for (const r of regressions) console.error(`  - ${r}`);\n    console.error(\n      '\\nAn incomplete NEW locale is allowed (the nav lists what exists), but a locale must not lose pages it already had.',\n    );\n    process.exit(1);\n  }\n\n  fs.writeFileSync(DOCS_PATH, JSON.stringify(docs, null, 2) + '\\n');\n\n  // Record the English list each locale is now in step with, so a later run can\n  // tell \"already translated against this list\" from \"translated against an\n  // older one\" per locale rather than globally.\n  //\n  // Only record a locale whose labels could actually be recovered next run. A\n  // partial backfill can drop a whole group from a locale's nav; recording it\n  // anyway would make the next run skip staging the labels and then fail on the\n  // recovery it just made impossible — leaving the backfill unresumable even\n  // after the missing pages arrive.\n  for (const locale of locales) {\n    if (noLabels.has(locale) || skipped.has(locale)) continue;\n    if (recoverable.has(locale)) record[locale] = enHash;\n    else {\n      delete record[locale];\n      console.log(\n        `::warning::${locale}: navigation is missing a group English still lists, so its labels will be re-translated next run until it is complete.`,\n      );\n    }\n  }\n  for (const key of Object.keys(record)) {\n    if (!targetLocales().includes(key)) delete record[key];\n  }\n  fs.writeFileSync(LABEL_RECORD_PATH, JSON.stringify(record, null, 2) + '\\n');\n\n  fs.unlinkSync(NAV_LABELS_PATH);\n  for (const locale of locales) {\n    if (noLabels.has(locale)) {\n      console.log(`docs.json ${locale} navigation unchanged (nav labels unavailable this run)`);\n      continue;\n    }\n    if (!reused.has(locale)) fs.unlinkSync(localeLabelsPath(locale));\n    if (skipped.has(locale)) {\n      console.log(`docs.json ${locale} navigation unchanged (no translated pages yet)`);\n      continue;\n    }\n    const n = coverage[locale];\n    const pct = enPageCount ? Math.floor((n / enPageCount) * 100) : 0;\n    console.log(\n      `docs.json ${locale} navigation synced (${enLabels.length} labels${reused.has(locale) ? ', reused' : ''}, ${n}/${enPageCount} pages — ${pct}%)`,\n    );\n  }\n}\n\nconst command = process.argv[2];\nif (command === 'generate') {\n  generate();\n} else if (command === 'apply') {\n  apply();\n} else {\n  console.error('Usage: sync-docs-nav.js \u003cgenerate|apply\u003e');\n  process.exit(1);\n}\n"])</script>
795<script>self.__next_f.push([1,"5f:T7a69,"])</script>
795<script>self.__next_f.push([1,"/**\n * Structured Data (JSON-LD) for our Helius documentation\n *\n * Mintlify does not generate JSON-LD server-side. This script runs client-side\n * and injects schema.org structured data into the \u003chead\u003e based on the current page\n *\n *\n * Schema types used:\n *   - WebSite          → homepage\n *   - Organization     → every page (standalone top-level entity for Knowledge Panel)\n *   - BreadcrumbList   → all pages\n *   - APIReference     → /api-reference/* pages\n *   - TechArticle      → guides, tutorials, how-tos\n *   - FAQPage          → /faqs/* pages (when Q\u0026A pairs are present)\n *   - SoftwareApplication → product overview pages\n *   - WebPage + Offers  → pricing page (/billing/plans)\n *   - DefinedTermSet   → /glossary (each h3 becomes a DefinedTerm)\n *   - WebPage (enriched) → everything else (with speakable + dates)\n */\n(() =\u003e {\n  \"use strict\";\n\n  const BASE_URL = \"https://www.helius.dev/docs\";\n\n  const ORGANIZATION = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Organization\",\n    \"@id\": \"https://www.helius.dev/#organization\",\n    name: \"Helius\",\n    url: \"https://www.helius.dev\",\n    logo: {\n      \"@type\": \"ImageObject\",\n      url: \"https://www.helius.dev/Helius-Brandkit/Helius/PNG/Helius-Horizontal-Logo.png\",\n      width: 562,\n      height: 118,\n    },\n    sameAs: [\n      \"https://github.com/helius-labs\",\n      \"https://discord.com/invite/6GXdee3gBj\",\n      \"https://x.com/helius\",\n      \"https://www.linkedin.com/company/heliusapi\",\n    ],\n  };\n\n  const DOCUMENTATION_SITE = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"WebSite\",\n    \"@id\": \"https://www.helius.dev/docs#website\",\n    name: \"Helius Documentation\",\n    url: BASE_URL,\n  };\n\n  // Human-readable labels for known breadcrumb path segments\n  const BREADCRUMB_LABELS = {\n    \"api-reference\": \"API Reference\",\n    rpc: \"RPC\",\n    http: \"HTTP Methods\",\n    websocket: \"WebSocket\",\n    das: \"DAS\",\n    \"zk-compression\": \"ZK Compression\",\n    laserstream: \"LaserStream\",\n    grpc: \"gRPC\",\n    sender: \"Sender\",\n    webhooks: \"Webhooks\",\n    \"enhanced-transactions\": \"Enhanced Transactions API\",\n    \"enhanced-websockets\": \"LaserStream WebSocket\",\n    \"wallet-api\": \"Wallet API\",\n    \"priority-fee\": \"Priority Fee\",\n    \"sending-transactions\": \"Sending Transactions\",\n    \"data-streaming\": \"Data Streaming\",\n    \"dedicated-nodes\": \"Dedicated Nodes\",\n    billing: \"Billing\",\n    faqs: \"FAQs\",\n    agents: \"Agents\",\n    mcp: \"MCP\",\n    guides: \"Guides\",\n    nfts: \"NFTs\",\n    orb: \"Orb\",\n    support: \"Support\",\n    staking: \"Staking\",\n    gatekeeper: \"Gatekeeper\",\n    \"shred-delivery\": \"Shred Delivery\",\n    skills: \"Skills\",\n    zh: \"中文\",\n  };\n\n  // Product overview pages that should use Product schema\n  // TODO: replace PRODUCT_IMAGE with per-product card images once available\n  const PRODUCT_IMAGE = \"https://www.helius.dev/docs/images/hero-dark.png\";\n  const PRODUCT_OVERVIEWS = {\n    \"/rpc/overview\": {\n      name: \"Helius RPC\",\n      category: \"Solana RPC Infrastructure\",\n      description: \"High-performance Solana RPCs\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/laserstream\": {\n      name: \"Helius LaserStream gRPC\",\n      category: \"Solana Data Streaming\",\n      description:\n        \"Ultra-low latency gRPC data streaming for Solana with historical replay\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/rpc/websocket\": {\n      name: \"Helius LaserStream WebSocket\",\n      category: \"Solana Data Streaming\",\n      description:\n        \"Unified Solana WebSocket streaming with standard subscription methods and Helius extensions\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/das-api\": {\n      name: \"Helius DAS API\",\n      category: \"Solana API\",\n      description:\n        \"Unified API for querying Solana digital assets — NFTs, tokens, and compressed assets\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/webhooks\": {\n      name: \"Helius Webhooks\",\n      category: \"Solana Event Notification Service\",\n      description:\n        \"Real-time HTTP PO
795ST notifications for Solana events\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/sending-transactions/sender\": {\n      name: \"Helius Sender\",\n      category: \"Solana Transaction Service\",\n      description:\n        \"Ultra-low latency transaction sending via staked connections and Jito\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/dedicated-nodes\": {\n      name: \"Helius Dedicated Nodes\",\n      category: \"Solana Infrastructure\",\n      description:\n        \"Private Solana nodes with no rate limits and full Yellowstone gRPC support\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/priority-fee-api\": {\n      name: \"Helius Priority Fee API\",\n      category: \"Solana API\",\n      description:\n        \"Smart priority fee estimation based on real-time Solana network conditions\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/wallet-api/overview\": {\n      name: \"Helius Wallet API\",\n      category: \"Solana API\",\n      description:\n        \"REST endpoints for querying Solana wallet balances, history, identities, funding, and transfers\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/gatekeeper/overview\": {\n      name: \"Helius Gatekeeper\",\n      category: \"Solana Edge Gateway\",\n      description:\n        \"Low-latency edge gateway for Solana infrastructure with intelligent routing\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/api-reference/zk-compression\": {\n      name: \"Helius ZK Compression\",\n      category: \"Solana Data Compression\",\n      description:\n        \"Compress Solana account data to reduce storage costs by 95%+ using zero-knowledge proofs, indexed by Photon\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/shred-delivery\": {\n      name: \"Helius Shred Delivery\",\n      category: \"Solana Data Streaming\",\n      description:\n        \"Raw Solana shreds delivered via UDP — the earliest possible on-chain signal for propAMMs, snipers, copy traders, liquidation bots, arbitrage, and RPC node operators\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/agents/mcp\": {\n      name: \"Helius MCP\",\n      category: \"Solana AI Developer Tool\",\n      description:\n        \"Model Context Protocol server giving AI agents direct access to Helius APIs — querying, transactions, webhooks, streaming, and autonomous account signup\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/agents/cli\": {\n      name: \"Helius CLI\",\n      category: \"Solana Developer Tool\",\n      description:\n        \"Full-featured command-line interface for Helius with 95+ commands for account management, queries, transactions, webhooks, and streaming\",\n      image: PRODUCT_IMAGE,\n    },\n    \"/orb\": {\n      name: \"Orb\",\n      category: \"Solana Block Explorer\",\n      description:\n        \"Full-featured Solana block explorer by Helius with reverse search, slot and time filtering, transaction heatmaps, and petabyte-scale archival data\",\n      image: PRODUCT_IMAGE,\n    },\n  };\n\n  // Speakable specification — signals AI models which content is quotable\n  const SPEAKABLE = {\n    \"@type\": \"SpeakableSpecification\",\n    cssSelector: [\"h1\", 'meta[name=\"description\"]'],\n  };\n\n  // Glossary alias table for entries whose heading carries only the\n  // abbreviation OR only the expansion. Keyed by the raw H3 heading text\n  // (pre-paren-strip). Headings of the form \"Foo (Bar)\" are handled\n  // automatically by buildGlossarySchema and don't need an entry here.\n  // Add new entries when the heading alone doesn't surface both forms.\n  const TERM_ALIASES = {\n    \"DAS API\": [\"Digital Asset Standard\", \"DAS\"],\n    \"RPC\": [\"Remote Procedure Call\"],\n    \"gRPC\": [\"gRPC Remote Procedure Call\"],\n    \"IDL\": [\"Interface Definition Language\"],\n    \"SPL Token\": [\"Solana Program Library Token\"],\n    \"ZK Compression\": [\"Zero-Knowledge Compression\"],\n    \"Rent / Rent-exempt\": [\"Rent-exempt\"],\n  };\n\n  // Pricing tiers for the billing/plans page\n  //     Source of truth: https://dashboard.helius.dev and /billing/plans.mdx\n  //     Update this array whenever plan names, prices, or limits change.\n  //     priceValidUntil signals search engines when to re-check pricing.\n  const PRICE_VALID_UNTIL = \"2026-12-31\";\n  const PRICING_TIERS = [\n    {\n      name: \"Free\",\n      price: \"0\",\n      description:\n        \"1M monthly credits, 10 RPC req/s, 2 DAS \u0026 Enh
795anced API req/s, standard WebSockets, community support\",\n    },\n    {\n      name: \"Agent\",\n      price: \"1\",\n      description:\n        \"1M monthly credits, 10 RPC req/s, 2 DAS \u0026 Enhanced API req/s, standard WebSockets, community support. 1 USDC one-time signup fee, programmatic access via CLI or MCP\",\n    },\n    {\n      name: \"Developer\",\n      price: \"49\",\n      description:\n        \"10M monthly credits, 50 RPC req/s, 10 DAS \u0026 Enhanced API req/s, LaserStream WebSocket standard methods and Helius extensions, LaserStream gRPC devnet, chat support\",\n    },\n    {\n      name: \"Business\",\n      price: \"499\",\n      description:\n        \"100M monthly credits, 200 RPC req/s, 50 DAS \u0026 Enhanced API req/s, LaserStream WebSocket Helius extensions, LaserStream gRPC mainnet + devnet, priority chat support\",\n    },\n    {\n      name: \"Professional\",\n      price: \"999\",\n      description:\n        \"200M monthly credits, 500 RPC req/s, 100 DAS \u0026 Enhanced API req/s, LaserStream WebSocket Helius extensions, LaserStream gRPC mainnet + devnet, Slack/Telegram support\",\n    },\n  ];\n\n  // ── Helpers ──────────────────────────────────────────────────────────\n\n  /** Strip /docs prefix, optional /zh/ lang prefix, and trailing slash */\n  const getPagePath = () =\u003e {\n    const path = window.location.pathname\n      .replace(/^\\/docs\\/?/, \"/\")\n      .replace(/\\/$/, \"\");\n    return path || \"/\";\n  };\n\n  /** Detect language from URL path */\n  const getLanguage = () =\u003e {\n    const path = window.location.pathname.replace(/^\\/docs\\/?/, \"/\");\n    return path.indexOf(\"/zh/\") === 0 || path === \"/zh\" ? \"zh\" : \"en\";\n  };\n\n  /** Get the path without the language prefix (for page-type detection) */\n  const getNormalizedPath = () =\u003e {\n    const path = getPagePath();\n    return path.replace(/^\\/zh\\/?/, \"/\") || \"/\";\n  };\n\n  /** Read the page \u003ctitle\u003e text */\n  const getPageTitle = () =\u003e {\n    const el = document.querySelector(\"title\");\n    const raw = el ? el.textContent : \"\";\n    return raw.split(\"|\")[0].trim() || \"Helius Docs\";\n  };\n\n  /** Read published/modified dates from Open Graph meta tags injected by Mintlify */\n  const getPageDates = () =\u003e {\n    let published = document.querySelector('meta[property=\"article:published_time\"]');\n    const modified = document.querySelector('meta[property=\"article:modified_time\"]');\n    if (!published) published = document.querySelector('meta[property=\"og:updated_time\"]');\n    return {\n      datePublished: published ? published.getAttribute(\"content\") || \"\" : \"\",\n      dateModified: modified ? modified.getAttribute(\"content\") || \"\" : \"\",\n    };\n  };\n\n  /** Read the meta description */\n  const getMetaDescription = () =\u003e {\n    const el = document.querySelector('meta[name=\"description\"]');\n    return el ? el.getAttribute(\"content\") || \"\" : \"\";\n  };\n\n  /** Build the canonical URL for the current page */\n  const getCanonicalUrl = () =\u003e {\n    const path = getPagePath();\n    if (path === \"/\") return BASE_URL;\n    return BASE_URL + path;\n  };\n\n  /** Get a human-readable breadcrumb label for a path segment */\n  const getBreadcrumbLabel = (segment) =\u003e {\n    if (BREADCRUMB_LABELS[segment]) return BREADCRUMB_LABELS[segment];\n    // Fallback: capitalize first letter and replace hyphens with spaces\n    return segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, \" \");\n  };\n\n  /** Inject a JSON-LD script element into the \u003chead\u003e with a marker attribute */\n  const injectJsonLd = (data) =\u003e {\n    const script = document.createElement(\"script\");\n    script.type = \"application/ld+json\";\n    script.setAttribute(\"data-helius-sd\", \"\");\n    script.textContent = JSON.stringify(data);\n    document.head.appendChild(script);\n  };\n\n  /** Remove all previously injected JSON-LD elements */\n  const cleanup = () =\u003e {\n    const scripts = document.querySelectorAll(\n      'script[type=\"application/ld+json\"][data-helius-sd]'\n    );\n\n    for (let i = 0; i \u003c scripts.length;
795 i++) {\n      scripts[i].remove();\n    }\n  };\n\n  // ── Breadcrumbs ──────────────────────────────────────────────────────\n\n  const buildBreadcrumbList = () =\u003e {\n    const path = getPagePath();\n    const items = [\n      {\n        \"@type\": \"ListItem\",\n        position: 1,\n        name: \"Helius Docs\",\n        item: BASE_URL,\n      },\n    ];\n\n    if (path === \"/\") return null;\n\n    const segments = path.split(\"/\").filter(Boolean);\n    let cumulative = \"\";\n\n    for (let i = 0; i \u003c segments.length; i++) {\n      cumulative += \"/\" + segments[i];\n      items.push({\n        \"@type\": \"ListItem\",\n        position: i + 2,\n        name:\n          i === segments.length - 1\n            ? getPageTitle()\n            : getBreadcrumbLabel(segments[i]),\n        item: BASE_URL + cumulative,\n      });\n    }\n\n    return {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"BreadcrumbList\",\n      itemListElement: items,\n    };\n  };\n\n  // ── Page-type detection (operates on normalized path, without /zh/) ──\n\n  const isHomepage = (path) =\u003e path === \"/\" || path === \"/index\";\n\n  const isApiReference = (path) =\u003e path.indexOf(\"/api-reference\") === 0;\n\n  const isProductOverview = (path) =\u003e PRODUCT_OVERVIEWS.hasOwnProperty(path);\n\n  const GUIDE_PREFIXES = [\n    \"/rpc/\",\n    \"/laserstream/\",\n    \"/gatekeeper/\",\n    \"/grpc/\",\n    \"/sending-transactions/\",\n    \"/das/\",\n    \"/enhanced-transactions/\",\n    \"/dedicated-nodes/\",\n    \"/webhooks/\",\n    \"/data-streaming/\",\n    \"/priority-fee/\",\n    \"/wallet-api/\",\n    \"/nfts/\",\n    \"/zk-compression/\",\n    \"/staking/\",\n    \"/shred-delivery/\",\n    \"/agents/\",\n    \"/billing/\",\n    \"/support/\",\n    \"/orb/\",\n  ];\n\n  const GUIDE_EXACT = [\"/grpc\", \"/agents\", \"/quickstart\", \"/getting-data\", \"/data-streaming\"];\n\n  const isGuide = (path) =\u003e\n    GUIDE_EXACT.indexOf(path) !== -1 ||\n    GUIDE_PREFIXES.some(function (prefix) {\n      return path.indexOf(prefix) === 0;\n    });\n\n  const isFaqPage = (path) =\u003e path.indexOf(\"/faqs\") === 0;\n\n  const isPricingPage = (path) =\u003e path === \"/billing/plans\";\n\n  const isGlossary = (path) =\u003e path === \"/glossary\";\n\n  // ── Determine the programmingModel for API reference pages ───────────\n\n  const getProgrammingModel = (path) =\u003e {\n    if (path.indexOf(\"/rpc/websocket\") !== -1) return \"WebSocket JSON-RPC\";\n    if (path.indexOf(\"/rpc/http\") !== -1) return \"HTTP JSON-RPC\";\n    if (path.indexOf(\"/laserstream\") !== -1) return \"gRPC\";\n    if (path.indexOf(\"/webhooks\") !== -1) return \"REST (Webhooks)\";\n    if (path.indexOf(\"/wallet-api\") !== -1) return \"REST\";\n    if (path.indexOf(\"/sender\") !== -1) return \"HTTP JSON-RPC\";\n    if (path.indexOf(\"/das\") !== -1) return \"HTTP JSON-RPC\";\n    if (path.indexOf(\"/priority-fee\") !== -1) return \"HTTP JSON-RPC\";\n    if (path.indexOf(\"/enhanced-transactions\") !== -1) return \"HTTP JSON-RPC\";\n    if (path.indexOf(\"/zk-compression\") !== -1) return \"HTTP JSON-RPC\";\n    return \"HTTP JSON-RPC\";\n  };\n\n  // ── Schema builders ──────────────────────────────────────────────────\n\n  const buildWebSiteSchema = () =\u003e ({\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"WebSite\",\n    \"@id\": \"https://www.helius.dev/docs#website\",\n    name: \"Helius Documentation\",\n    url: BASE_URL,\n    description:\n      \"Developer documentation for Helius — the leading Solana RPC and infrastructure platform\",\n    publisher: { \"@id\": \"https://www.helius.dev/#organization\" },\n  });\n\n  const buildApiReferenceSchema = (normalizedPath) =\u003e {\n    const lang = getLanguage();\n    const desc = getMetaDescription();\n    const dates = getPageDates();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"APIReference\",\n      headline: getPageTitle(),\n      url: getCanonicalUrl(),\n      mainEntityOfPage: { \"@type\": \"WebPage\", \"@id\": getCanonicalUrl() },\n      isPartOf: { \"@id\": \"https://www.helius.dev/docs#website\" },\n      publisher: { \"@id\": \"https://www.helius.dev/#organization\" },\n      targetPlatform: \"Solana\",\n      programmingModel: getProgrammingModel(normalizedPath),\n      speakable: SPEAKABLE,\n      inLanguage: lang,\n    };\n    if (desc) schema.description = desc;\n    if (dates.datePublished) schema.datePublished = dates.datePublished;\n    if (dates.dateModified) schema.dateModified = dates.dateModified;\n\n    return schema;\n  };\n\n  const buildTechArticleSchema = () =\u003e {\n    const lang = getLanguage();\n    const desc = getMetaDescription();\n    const dates = getPageDates();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"TechArticle\",\n      headline: getPageTitle(),\n      url: getCanonicalUrl(),\n      mainEntityOfPage: { \"@type\": \"WebPage\", \"@id\": getCanonicalUrl() },\n      isPartOf: { \"@id\": \"https://www.helius.dev/docs#website\" },\n      publisher: { \"@id\": \"https://www.helius.dev/#organization\" },\n      speakable: SPEAKABLE,\n      inLanguage: lang,\n    };\n    if (desc) schema.description = desc;\n    if (dates.datePublished) schema.datePublished = dates.datePublished;\n    if (dates.dateModified) schema.dateModified = dates.dateModified;\n\n    return schema;\n  };\n\n  const buildFaqSchema = () =\u003e {\n    const questions = [];\n\n    // Extract Q\u0026A from \u003cdetails\u003e/\u003csummary\u003e elements (Mintlify Accordions)\n    const details = document.querySelectorAll(\"details\");\n    for (let i = 0; i \u003c details.length;
795 i++) {\n      const summary = details[i].querySelector(\"summary\");\n      if (!summary) continue;\n\n      const clone = details[i].cloneNode(true);\n      const summaryClone = clone.querySelector(\"summary\");\n      if (summaryClone) summaryClone.remove();\n\n      const answerText = (clone.textContent || \"\").trim();\n      if (answerText) {\n        questions.push({\n          \"@type\": \"Question\",\n          name: summary.textContent.trim(),\n          acceptedAnswer: {\n            \"@type\": \"Answer\",\n            text: answerText,\n          },\n        });\n      }\n    }\n\n    if (questions.length === 0) return null;\n\n    const desc = getMetaDescription();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"FAQPage\",\n      name: getPageTitle(),\n      url: getCanonicalUrl(),\n      isPartOf: { \"@id\": \"https://www.helius.dev/docs#website\" },\n      mainEntity: questions,\n      speakable: SPEAKABLE,\n      inLanguage: getLanguage(),\n    };\n    if (desc) schema.description = desc;\n\n    return schema;\n  };\n\n  const buildProductSchema = (normalizedPath) =\u003e {\n    const product = PRODUCT_OVERVIEWS[normalizedPath];\n    const desc = product.description || getMetaDescription();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"SoftwareApplication\",\n      name: product.name,\n      url: getCanonicalUrl(),\n      image: product.image,\n      applicationCategory: \"DeveloperApplication\",\n      operatingSystem: \"Solana\",\n      description: desc,\n      author: { \"@id\": \"https://www.helius.dev/#organization\" },\n      offers: {\n        \"@type\": \"Offer\",\n        price: \"0\",\n        priceCurrency: \"USD\",\n        description: \"Free tier available\",\n        url: BASE_URL + \"/billing/plans\",\n      },\n    };\n\n    return schema;\n  };\n\n  const buildPricingSchema = () =\u003e {\n    const offers = PRICING_TIERS.map(function (tier) {\n      return {\n        \"@type\": \"Offer\",\n        name: \"Helius \" + tier.name,\n        price: tier.price,\n        priceCurrency: \"USD\",\n        priceValidUntil: PRICE_VALID_UNTIL,\n        description: tier.description + \" (billed monthly)\",\n        url: BASE_URL + \"/billing/plans\",\n        availability: \"https://schema.org/InStock\",\n      };\n    });\n\n    const desc = getMetaDescription();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"WebPage\",\n      name: getPageTitle(),\n      url: getCanonicalUrl(),\n      isPartOf: { \"@id\": \"https://www.helius.dev/docs#website\" },\n      publisher: { \"@id\": \"https://www.helius.dev/#organization\" },\n      speakable: SPEAKABLE,\n      mainEntity: {\n        \"@type\": \"SoftwareApplication\",\n        name: \"Helius\",\n        applicationCategory: \"DeveloperApplication\",\n        operatingSystem: \"Solana\",\n        offers: offers,\n      },\n      inLanguage: getLanguage(),\n    };\n    if (desc) schema.description = desc;\n\n    return schema;\n  };\n\n  const buildGlossarySchema = () =\u003e {\n    const headings = document.querySelectorAll(\"h3\");\n    if (headings.length === 0) return null;\n\n    const baseUrl = getCanonicalUrl();\n    const setId = baseUrl + \"#termset\";\n    const lang = getLanguage();\n    const desc = getMetaDescription();\n\n    const slugify = (text) =\u003e\n      text\n        .toLowerCase()\n        .replace(/[^\\w\\s-]/g, \"\")\n        .replace(/\\s+/g, \"-\")\n        .replace(/-+/g, \"-\")\n        .replace(/^-|-$/g, \"\");\n\n    // Mintlify injects a U+200B zero-width space inside the heading anchor\n    // link (the clickable hash icon). textContent picks it up and trim()\n    // doesn't classify U+200B as whitespace, so it leaks into the term name.\n    // Strip all zero-width characters (U+200B-U+200D, U+FEFF) before trimming.\n    const cleanText = (text) =\u003e\n      (text || \"\").replace(/[\\u200B-\\u200D\\uFEFF]/g, \"\").trim();\n\n    // Headings of the form \"Foo (Bar)\" — strip the parens for `name` and\n    // surface the inner text as an alias. Merged with TERM_ALIASES for\n    // entries whose heading doesn't carry both forms.\n    const PAREN_RE = /^(.+?)\\s+\\(([^)]+)\\)\\s*$/;\n    const computeAliases = (rawName) =\u003e {\n      const m = rawName.match(PAREN_RE);\n      const displayName = m ? m[1].trim() : rawName;
795\n      const aliases = [];\n      const push = (val) =\u003e {\n        const v = (val || \"\").trim();\n        if (v \u0026\u0026 v !== displayName \u0026\u0026 aliases.indexOf(v) === -1) {\n          aliases.push(v);\n        }\n      };\n      const dictEntry = TERM_ALIASES[rawName];\n      if (dictEntry) {\n        for (let i = 0; i \u003c dictEntry.length; i++) push(dictEntry[i]);\n      }\n      if (m) push(m[2]);\n      return { displayName: displayName, aliases: aliases };\n    };\n\n    const terms = [];\n\n    for (let i = 0; i \u003c headings.length; i++) {\n      const heading = headings[i];\n      const name = cleanText(heading.textContent);\n      if (!name) continue;\n\n      const id = heading.getAttribute(\"id\") || slugify(name);\n      if (!id) continue;\n\n      // Walk following siblings until the next h3 or h2, gathering definition text\n      let definition = \"\";\n\n      // Append a chunk of text with smart sentence joining: if the previous\n      // segment already ends in sentence-terminating punctuation or a colon\n      // (a natural lead-in to a list), use a single space; otherwise use\n      // \". \" so list items and adjacent prose read as discrete sentences\n      // instead of running together.\n      const append = (text) =\u003e {\n        if (!text) return;\n        if (definition) {\n          const lastChar = definition.slice(-1);\n          definition += /[.!?:]/.test(lastChar) ? \" \" : \". \";\n        }\n        definition += text;\n      };\n\n      let sibling = heading.nextElementSibling;\n      while (sibling) {\n        const tag = sibling.tagName;\n        if (tag === \"H3\" || tag === \"H2\") break;\n\n        // Mintlify wraps prose in \u003cspan data-as=\"p\"\u003e rather than emitting a\n        // raw \u003cp\u003e. Treat both as paragraphs so we don't skip every term that\n        // is just plain prose (the majority of the glossary).\n        const isParagraph =\n          tag === \"P\" ||\n          (tag === \"SPAN\" \u0026\u0026 sibling.getAttribute(\"data-as\") === \"p\");\n\n        if (isParagraph) {\n          const text = cleanText(sibling.textContent);\n          // Skip \"See ...\" cross-reference paragraphs\n          if (text \u0026\u0026 !/^See\\s/i.test(text)) {\n            append(text);\n          }\n        } else if (tag === \"UL\" || tag === \"OL\") {\n          const items = sibling.querySelectorAll(\"li\");\n          for (let j = 0; j \u003c items.length; j++) {\n            append(cleanText(items[j].textContent));\n          }\n        }\n        sibling = sibling.nextElementSibling;\n      }\n\n      if (!definition) continue;\n\n      // Cap to keep payload reasonable\n      if (definition.length \u003e 1500) {\n        definition = definition.substring(0, 1497) + \"...\";\n      }\n\n      const { displayName, aliases } = computeAliases(name);\n      const term = {\n        \"@type\": \"DefinedTerm\",\n        \"@id\": baseUrl + \"#\" + id,\n        name: displayName,\n        description: definition,\n        inDefinedTermSet: { \"@id\": setId },\n        url: baseUrl + \"#\" + id,\n      };\n      if (aliases.length === 1) {\n        term.alternateName = aliases[0];\n      } else if (aliases.length \u003e 1) {\n        term.alternateName = aliases;\n      }\n      terms.push(term);\n    }\n\n    if (terms.length === 0) return null;\n\n    // Nest the DefinedTermSet inside a WebPage so page-level signals\n    // (speakable, dates) attach to the WebPage where they're valid since\n    // speakable is not a property of DefinedTermSet. Mirrors the pattern\n    // used by buildPricingSchema (WebPage \u003e mainEntity \u003e SoftwareApplication).\n    const dates = getPageDates();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"WebPage\",\n      name: getPageTitle(),\n      url: baseUrl,\n      isPartOf: { \"@id\": \"https://www.helius.dev/docs#website\" },\n      publisher: { \"@id\": \"https://www.helius.dev/#organization\" },\n      speakable: SPEAKABLE,\n      inLanguage: lang,\n      mainEntity: {\n        \"@type\": \"DefinedTermSet\",\n        \"@id\": setId,\n        name: getPageTitle(),\n        url: baseUrl,\n        hasDefinedTerm: terms,\n      },\n    };\n    if (desc) schema.description = desc;\n    if (dates.datePublished) schema.datePublished = dates.datePublished;\n    if (dates.dateModified) schema.dateModified = dates.dateModified;\n\n    return schema;\n  };\n\n  const buildWebPageSchema = (options) =\u003e {\n    const enriched = options \u0026\u0026 options.enriched;\n    const lang = getLanguage();\n    const desc = getMetaDescription();\n    const schema = {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"WebPage\",\n      name: getPageTitle(),\n      url: getCanonicalUrl(),\n      isPartOf: { \"@id\": \"https://www.helius.dev/docs#website\" },\n      publisher: { \"@id\": \"https://www.helius.dev/#organization\" },\n      inLanguage: lang,\n    };\n    if (desc) schema.description = desc;\n    if (enriched) {\n      schema.speakable = SPEAKABLE;\n      const dates = getPageDates();\n      if (dates.datePublished) schema.datePublished = dates.datePublished;\n      if (dates.dateModified) schema.dateModified = dates.dateModified;\n    }\n    return schema;\n  };\n\n  // ── Main ─────────────────────────────────────────────────────────────\n\n  const run = () =\u003e {\n    cleanup();\n\n    const normalizedPath = getNormalizedPath();\n\n    // 1. Standalone entity blocks (all pages) — injected so Google can resolve\n    //    @id references in nested publisher/isPartOf fields across all pages\n    injectJsonLd(ORGANIZATION);
795\n    injectJsonLd(DOCUMENTATION_SITE);\n\n    // 2. Breadcrumbs (all pages except homepage)\n    const breadcrumbs = buildBreadcrumbList();\n    if (breadcrumbs) injectJsonLd(breadcrumbs);\n\n    // 3. Page-specific schema\n    if (isHomepage(normalizedPath)) {\n      injectJsonLd(buildWebSiteSchema());\n    } else if (isApiReference(normalizedPath)) {\n      injectJsonLd(buildApiReferenceSchema(normalizedPath));\n    } else if (isFaqPage(normalizedPath)) {\n      const faqSchema = buildFaqSchema();\n      if (faqSchema) {\n        injectJsonLd(faqSchema);\n      } else {\n        // On SPA navigation the \u003ctitle\u003e changes before accordion content renders.\n        // Fall back to WebPage immediately, then retry once content has settled.\n        setTimeout(function () {\n          const retrySchema = buildFaqSchema();\n          if (retrySchema) {\n            cleanup();\n            injectJsonLd(ORGANIZATION);\n            injectJsonLd(DOCUMENTATION_SITE);\n            const breadcrumbs = buildBreadcrumbList();\n            if (breadcrumbs) injectJsonLd(breadcrumbs);\n            injectJsonLd(retrySchema);\n          }\n        }, 800);\n        injectJsonLd(buildWebPageSchema());\n      }\n    } else if (isPricingPage(normalizedPath)) {\n      injectJsonLd(buildWebPageSchema());\n      // Also inject FAQ schema if the pricing page has accordion Q\u0026A pairs\n      var pricingFaq = buildFaqSchema();\n      if (pricingFaq) injectJsonLd(pricingFaq);\n      injectJsonLd(buildPricingSchema());\n    } else if (isProductOverview(normalizedPath)) {\n      injectJsonLd(buildProductSchema(normalizedPath));\n    } else if (isGlossary(normalizedPath)) {\n      const glossarySchema = buildGlossarySchema();\n      if (glossarySchema) {\n        injectJsonLd(glossarySchema);\n      } else {\n        // SPA navigation: \u003ctitle\u003e changes before glossary content renders.\n        // Fall back to enriched WebPage immediately, then retry once content has settled.\n        setTimeout(function () {\n          const retrySchema = buildGlossarySchema();\n          if (retrySchema) {\n            cleanup();\n            injectJsonLd(ORGANIZATION);\n            injectJsonLd(DOCUMENTATION_SITE);\n            const breadcrumbs = buildBreadcrumbList();\n            if (breadcrumbs) injectJsonLd(breadcrumbs);\n            injectJsonLd(retrySchema);\n          }\n        }, 800);\n        injectJsonLd(buildWebPageSchema({ enriched: true }));\n      }\n    } else if (isGuide(normalizedPath)) {\n      injectJsonLd(buildTechArticleSchema());\n    } else {\n      injectJsonLd(buildWebPageSchema({ enriched: true }));\n    }\n  };\n\n  // ── Lifecycle ────────────────────────────────────────────────────────\n\n  // SPA navigation: re-run when Mintlify updates the \u
795003ctitle\u003e on route change\n  const setupObserver = () =\u003e {\n    let debounceTimer;\n    const scheduleRun = () =\u003e {\n      clearTimeout(debounceTimer);\n      debounceTimer = setTimeout(run, 150);\n    };\n\n    // Watch \u003chead\u003e for \u003ctitle\u003e element being replaced (Next.js replaces the\n    // entire element on route change rather than mutating its text in place)\n    new MutationObserver((mutations) =\u003e {\n      for (let i = 0; i \u003c mutations.length; i++) {\n        const added = mutations[i].addedNodes;\n        for (let j = 0; j \u003c added.length; j++) {\n          if (added[j].nodeName === \"TITLE\") {\n            scheduleRun();\n            return;\n          }\n        }\n      }\n    }).observe(document.head, { childList: true });\n\n    // Also watch the current title element for in-place text changes\n    const titleEl = document.querySelector(\"title\");\n    if (titleEl) {\n      new MutationObserver(scheduleRun).observe(titleEl, {\n        childList: true,\n        characterData: true,\n        subtree: true,\n      });\n    }\n  };\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", () =\u003e {\n      run();\n      setupObserver();\n    });\n  } else {\n    run();\n    setupObserver();\n  }\n})();\n"])</script>
795<script>self.__next_f.push([1,"60:T2238,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\nconst fs = require('fs');\nconst path = require('path');\n\nconst ROOT = path.join(__dirname, '..');\n\nfunction targetLocales() {\n  const i18n = JSON.parse(fs.readFileSync(path.join(ROOT, 'i18n.json'), 'utf8'));\n  return i18n.locale.targets;\n}\n\n// --- Anchor remapping -------------------------------------------------------\n//\n// Translating a page translates its headings, which changes the heading IDs the\n// site generates — so an anchor link written against the English heading\n// (\"#getting-started\") points at nothing once the heading became \"Primeiros\n// Passos\". This remaps those anchors to the translated heading's ID.\n//\n// The mapping needs no per-language phrase table: a translation keeps its\n// headings in the same ORDER as the source, so English heading N corresponds to\n// translated heading N. That makes this work for any locale, including ones\n// added later. If a page's heading COUNT differs from its source (translator\n// dropped or added one), the mapping is untrustworthy and anchors are left\n// alone rather than guessed.\n\n// Mintlify derives heading IDs with github-slugger's rules (via rehype-slug):\n// lowercase, strip this punctuation set, spaces -\u003e \"-\". Non-ASCII is preserved,\n// which is why \"クレジットとは?\" keeps its full-width \"?\" while an ASCII \"?\" is\n// stripped. Verified against production HTML for English and Japanese pages.\nconst SLUG_STRIP = /[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%\u0026()*+,./:;\u003c=\u003e?@[\\]^`{|}~]/g;\n\nfunction slugify(text) {\n  return text.toLowerCase().replace(SLUG_STRIP, '').replace(/ /g, '-');\n}\n\n// Drop frontmatter and fenced code blocks so a \"# comment\" inside a shell\n// example isn't mistaken for a heading (which would shift the whole mapping).\nfunction prose(content) {\n  const out = [];\n  let inFence = false;\n  let fence = '';\n  const lines = content.split('\\n');\n  let i = 0;\n  if (lines[0] === '---') {\n    i = 1;\n    while (i \u003c lines.length \u0026\u0026 lines[i] !== '---') i++;\n    i++; // skip closing ---\n  }\n  for (; i \u003c lines.length; i++) {\n    const line = lines[i];\n    const open = line.match(/^\\s*(```+|~~~+)/);\n    if (!inFence \u0026\u0026 open) {\n      inFence = true;\n      fence = open[1][0];\n      continue;\n    }\n    if (inFence) {\n      if (open \u0026\u0026 open[1][0] === fence) inFence = false;\n      continue;\n    }\n    out.push(line);\n  }\n  return out.join('\\n');\n}\n\n// Heading IDs in document order, applying github-slugger's duplicate suffixes\n// (a repeated slug becomes \"slug-1\", then \"slug-2\", ...).\nfunction headingSlugs(content) {\n  const seen = new Map();\n  const slugs = [];\n  for (const m of prose(content).matchAll(/^#{1,6}\\s+(.+)$/gm)) {\n    const base = slugify(m[1].trim());\n    const n = seen.get(base);\n    if (n === undefined) {\n      seen.set(base, 1);\n      slugs.push(base);\n    } else {\n      seen.set(base, n + 1);\n      slugs.push(`${base}-${n}`);\n    }\n  }\n  return slugs;\n}\n\n// enSlug -\u003e translatedSlug for one page, or null when it can't be trusted.\n// Cached because cross-page anchors repeatedly resolve the same target pages.\nconst mapCache = new Map();\nfunction anchorMap(localeRel) {\n  if (mapCache.has(localeRel)) return mapCache.get(localeRel);\n  let map = null;\n  const localePath = path.join(ROOT, localeRel);\n  const enPath = path.join(ROOT, localeRel.split('/').slice(1).join('/'));\n  if (fs.existsSync(localePath) \u0026\u0026 fs.existsSync(enPath)) {\n    const en = headingSlugs(fs.readFileSync(enPath, 'utf8'));\n    const loc = headingSlugs(fs.readFileSync(localePath, 'utf8'));\n    if (en.length === loc.length) {\n      map = new Map();\n      en.forEach((slug, i) =\u003e {\n        if (slug !== loc[i]) map.set(slug, loc[i]);\n      });\n    }\n  }\n  mapCache.set(localeRel, map);\n  return map;\n}\n\nconst stats = { remapped: 0, unresolved: 0, skippedPages: 0 };\n\n// Rewrite same-page (#x) and cross-page (/locale/page#x) anchors to the\n// translated heading IDs. selfRel is the locale-relative path of this file.\nfunction remapAnchors(content, locale, selfRel) {\n  const lookup = (targetRel, anch
795or) =\u003e {\n    const map = anchorMap(targetRel);\n    if (!map) {\n      stats.skippedPages++;\n      return null;\n    }\n    // Anchors may be percent-encoded by earlier tooling.\n    let key = anchor;\n    try {\n      key = decodeURIComponent(anchor);\n    } catch {\n      /* malformed escape: use as-is */\n    }\n    const hit = map.get(key) || map.get(anchor);\n    if (hit) {\n      stats.remapped++;\n      return hit;\n    }\n    // Already correct (matches a translated heading) or genuinely unknown.\n    if (!headingSlugs(fs.readFileSync(path.join(ROOT, targetRel), 'utf8')).includes(key)) {\n      stats.unresolved++;\n    }\n    return null;\n  };\n\n  return (\n    content\n      // same-page: ](#anchor) and href=\"#anchor\"\n      .replace(/\\]\\(#([^)\\s]+)\\)/g, (m, a) =\u003e {\n        const to = lookup(selfRel, a);\n        return to ? `](#${to})` : m;\n      })\n      .replace(/href=\"#([^\"\\s]+)\"/g, (m, a) =\u003e {\n        const to = lookup(selfRel, a);\n        return to ? `href=\"#${to}\"` : m;\n      })\n      // cross-page: ](/locale/page#anchor) and href=\"/locale/page#anchor\"\n      .replace(\n        new RegExp(`\\\\]\\\\(/(${locale}/[^)#\\\\s]+)#([^)\\\\s]+)\\\\)`, 'g'),\n        (m, page, a) =\u003e {\n          const to = lookup(`${page}.mdx`, a);\n          return to ? `](/${page}#${to})` : m;\n        },\n      )\n      .replace(\n        new RegExp(`href=\"/(${locale}/[^\"#\\\\s]+)#([^\"\\\\s]+)\"`, 'g'),\n        (m, page, a) =\u003e {\n          const to = lookup(`${page}.mdx`, a);\n          return to ? `href=\"/${page}#${to}\"` : m;\n        },\n      )\n  );\n}\n\nfunction fixLinksInFile(filePath, locale) {\n  let content = fs.readFileSync(filePath, 'utf8');\n  const before = content;\n\n  // MDX imports are resolved from the repository root. Point a locale page at\n  // its translated snippet when that file exists, but preserve the English\n  // import as the fallback when translation did not produce the target.\n  const localizeSnippetImport = (match, prefix, quote, source) =\u003e {\n    const localized = path.join(ROOT, locale, source.slice(1));\n    return fs.existsSync(localized)\n      ? `${prefix}${quote}/${locale}${source}${quote}`\n      : match;\n  };\n\n  content = content\n    .replace(\n      /^(\\s*(?:import|export)\\b[^\\n]*?\\bfrom\\s+)([\"'])(\\/snippets\\/[^\"']+)\\2/gm,\n      localizeSnippetImport,\n    )\n    .replace(\n      /^(\\s*import\\s+)([\"'])(\\/snippets\\/[^\"']+)\\2/gm,\n      localizeSnippetImport,\n    );\n\n  // Skip links already localized, absolute assets, and external protocols.\n  const skip = `${locale}/|images/|logo/|favicon|http|mailto`;\n\n  // Only localize an openapi ref when the translated spec actually exists;\n  // otherwise keep it pointing at the English source. Covers any spec that was\n  // skipped or failed to translate (e.g. too large for the model context).\n  const openapiRef = (m, p) =\u003e fs.existsSync(path.join(ROOT, locale, p)) ? `openapi: /${locale}/${p}` : m;\n\n  content = content\n    .replace(new RegExp(`\\\\]\\\\(/(?!${skip})([^)]+)\\\\)`, 'g'), (m, p) =\u003e `](/${locale}/${p})`)\n    .replace(new RegExp(`href=\"/(?!${skip})([^\"]+)\"`, 'g'), (m, p) =\u003e `href=\"/${locale}/${p}\"`)\n    .replace(new RegExp(`^openapi:\\\\s+/(?!${skip})([^\\\\s]+)`, 'gm'), openapiRef)\n    .replace(new RegExp(`^openapi:\\\\s+(?!/|${skip})(openapi/[^\\\\s]+)`, 'gm'), openapiRef)\n    .replace(new RegExp(`^openapi:\\\\s+${locale}/(openapi/[^\\\\s]+)`, 'gm'), openapiRef);\n\n  // Anchors are remapped after path localization, so cross-page links are\n  // already in their /locale/page form.\n  const selfRel = path.relative(ROOT, filePath).split(path.sep).join('/');\n  content = remapAnchors(content, locale, selfRel);\n\n  if (content !== before) {\n    fs.writeFileSync(filePath, content);\n    console.log(`✅ Fixed links in: ${filePath.replace(process.cwd(), '.')}`);\n  }\n}\n\nfunction processDirectory(dir, locale) {\n  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n    const fullPath = path.join(dir, entry.name);\n    if (entry.isDirectory()) {\n      processDirectory(fullPath, locale);\n    } else if (entry.isFile() \u0026\u0026 entry.name.endsWith('.mdx')) {\n      fixLinksInFile(fullPath, locale);\n    }\n  }\n}\n\nconst scopedLocales = process.env.I18N_LOCALE ? [process.env.I18N_LOCALE] : targetLocales();\nfor (const locale of scopedLocales) {\n  const dir = path.join(process.cwd(), locale);
795\n  if (fs.existsSync(dir)) {\n    console.log(`🔗 Fixing internal links in ${locale} documentation...`);\n    processDirectory(dir, locale);\n  } else {\n    console.log(`⚠️ No ${locale}/ directory found`);\n  }\n}\nconsole.log(\n  `🔖 Anchors: ${stats.remapped} remapped to translated headings, ${stats.unresolved} unresolved` +\n    (stats.skippedPages\n      ? `, ${stats.skippedPages} lookup(s) skipped (heading count differs from source)`\n      : ''),\n);\nconsole.log('✅ Link fixing complete!');\n"])</script>
795<script>self.__next_f.push([1,"61:T16be,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Translation (lingo/gpt-4o) strips the surrounding quotes from frontmatter\n// string values (title, sidebarTitle, description, og:*). English sources quote\n// them, e.g. `title: \"How to Use accountSubscribe\"`, but the translated output\n// comes back bare, e.g. `title: accountSubscribeの使い方`. That is usually valid\n// YAML, but when a translated value begins with a character the frontmatter\n// parser treats as special (a leading backtick from an inline `code` span, a\n// leading `-`/`:`/`#`, etc.) the unquoted value fails to parse and the whole\n// page breaks and 404s — in ANY language.\n//\n// Re-quote those string values on every page translated in this run so\n// frontmatter always parses, regardless of locale. Runs after i18n:fix-links,\n// before the validate/fallback gate. Locale-agnostic: locales come from\n// i18n.json, so new languages are covered automatically.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst ROOT = path.join(__dirname, \"..\");\nconst targets = JSON.parse(\n  fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"),\n).locale.targets;\nconst locales = process.env.I18N_LOCALE ? [process.env.I18N_LOCALE] : targets;\n\n// Frontmatter keys whose values are always plain strings and must stay quoted.\nconst STRING_KEYS = new Set([\n  \"title\",\n  \"sidebarTitle\",\n  \"description\",\n  \"og:title\",\n  \"og:description\",\n]);\n\n// A key may be quoted because it contains a colon, e.g. \"og:title\".\nconst bareKey = (k) =\u003e k.replace(/^['\"]|['\"]$/g, \"\");\n\n// Encode a literal string as a valid double-quoted YAML scalar (escape\n// backslashes first, then quotes).\nconst encodeScalar = (literal) =\u003e\n  '\"' + literal.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"') + '\"';\n\n// Decode a source scalar to its literal string, per its quoting style, so the\n// re-encode is lossless:\n//   - double-quoted: reverse backslash escapes (\\\" -\u003e \", \\\\ -\u003e \\)\n//   - single-quoted: '' is a literal ' (YAML single-quote escaping)\n//   - bare: taken literally\nfunction decodeScalar(v) {\n  v = v.trim();\n  if (v.startsWith('\"') \u0026\u0026 v.endsWith('\"') \u0026\u0026 v.length \u003e 1) {\n    return v.slice(1, -1).replace(/\\\\(.)/g, \"$1\");\n  }\n  if (v.startsWith(\"'\") \u0026\u0026 v.endsWith(\"'\") \u0026\u0026 v.length \u003e 1) {\n    return v.slice(1, -1).replace(/''/g, \"'\");\n  }\n  return v;\n}\n\n// A frontmatter key line: `key: value`, where key may be quoted (e.g.\n// \"og:title\") and the value may be empty or continue onto indented lines.\nconst KEYLINE = /^(\\s*)(\"[^\"]*\"|'[^']*'|[^:\\s][^:]*?):[ \\t]*(.*)$/;\n\n// Normalize string-key values in the leading frontmatter block so it always\n// parses as YAML. Handles the translator's failure modes:\n//   - stripped quotes on a value with a special leading char (bare -\u003e quoted)\n//   - a stray unescaped inner quote (re-escaped)\n//   - a value wrapped across multiple lines with the quote closing on line 1\n//     (collapsed into one valid quoted line) — the pt-BR failure mode\n// Idempotent on already-valid values. Returns updated content, or null if\n// nothing changed.\nfunction requoteFrontmatter(content) {\n  const lines = content.split(\"\\n\");\n  if (lines[0].trim() !== \"---\") return null;\n  let close = -1;\n  for (let i = 1; i \u003c lines.length; i++) {\n    if (lines[i].trim() === \"---\") {\n      close = i;\n      break;\n    }\n  }\n  if (close === -1) return null;\n\n  const rebuilt = [lines[0]];\n  let changed = false;\n  let i = 1;\n  while (i \u003c close) {\n    const m = lines[i].match(KEYLINE);\n    if (!m || !STRING_KEYS.has(bareKey(m[2]))) {\n      rebuilt.push(lines[i]);\n      i++;\n      continue;\n    }\n    const [, indent, rawKey] = m;\n    const firstVal = m[3].trim();\n    // Leave lists, mappings, block scalars, anchors, and tags untouched.\n    if (/^[[{|\u003e\u0026*!]/.test(firstVal)) {\n      rebuilt.push(lines[i]);\n      i++;\n      continue;\n    }\n    // Gather indented continuation lines — a value wrapped across multiple lines.\n    let j = i + 1;\n    const cont = [];\n    while (j \u003c close \u0026\u0026 /^\\s/.test(lines[j]) \u0026\u0026 lines[j].trim() !== \"\") {\n      cont.push(lines[j].trim());\n      j++;\n    }\n    const literal = (\n      decodeScalar(firstVal) + (cont.length ? \" \" + cont.join(\" \") : \"\")\n    ).trim();\n    if (literal === \"\") {\n      // Nothing to encode (e.g. an empty value); keep the original line(s).\n      for (let k = i; k \u003c j; k++) rebuilt.push(lines[k]);\n      i = j;\n      continue;\n    }\n    const encoded = `${indent}${rawKey}: ${encodeScalar(literal)}`;\n    if (encoded !== lines.slice(i, j).join(\"\\n\")) changed = true;\n    rebuilt.push(encoded);\n    i = j;\n  }\n  for (let k = close; k \u003c lines.length; k++) rebuilt.push(lines[k]);\n  return changed ? rebuilt.join(\"\\n\") : null;\n}\n\n// Only touch pages translated in THIS run. The en/ staging dir (built by\n// i18n:prep) holds exactly the source files that were translated, so mapping\n// each to locale/\u003crelpath\u003e scopes the fix and avoids churning existing files.\nfunction translatedRelPaths() {\n  const EN = path.join(ROOT, \"en\");\n  if (!fs.existsSync(EN)) return [];\n  const out = [];\n  (function walk(dir) {\n    for (const e of fs.readdirSync(dir, { withFileTypes: true })) {\n      const full = path.join(dir, e.name);\n      if (e.isDirectory()) walk(full);\n      else if (e.name.endsWith(\".mdx\") \u0026\u0026 e.name !== \"_nav-labels.mdx\") {\n        out.push(path.relative(EN, full));\n      }\n    }\n  })(EN);\n  return out;\n}\n\nlet fixed = 0;\nconst rels = translatedRelPaths();\nfor (const locale of locales) {\n  for (const rel of rels) {\n    const file = path.join(ROOT, locale, rel);\n    if (!fs.existsSync(file)) continue;\n    const updated = requoteFrontmatter(fs.readFileSync(file, \"utf8\"));\n    if (updated !== null) {\n      fs.writeFileSync(file, updated);\n      console.log(`✅ Re-quoted frontmatter in: ${locale}/${rel}`);\n      fixed++;\n    }\n  }\n}\nconsole.log(`✅ Frontmatter quoting complete (${fixed} file(s) updated)`);\n"])</script>
795<script>self.__next_f.push([1,"62:T59d,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Print locale pages whose YAML frontmatter does not parse, one per line as\n// \"/locale/path.mdx\". Used as a backstop by fallback-broken-translations.sh:\n// `mint validate` can pass frontmatter that still fails at render time (e.g. a\n// translated value wrapped across lines with the quote closing on line 1 — the\n// pt-BR failure mode), so this catches those and lets the gate fall them back to\n// English. Locale-agnostic: locales come from i18n.json.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nlet yaml;\ntry {\n  yaml = require(\"js-yaml\");\n} catch {\n  // js-yaml unavailable — skip the backstop rather than fail the gate.\n  process.exit(0);\n}\n\nconst locales = JSON.parse(fs.readFileSync(\"i18n.json\", \"utf8\")).locale.targets;\nconst broken = [];\n\nfunction walk(dir) {\n  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n    const p = path.join(dir, entry.name);\n    if (entry.isDirectory()) {\n      walk(p);\n    } else if (entry.name.endsWith(\".mdx\")) {\n      const content = fs.readFileSync(p, \"utf8\");\n      if (!content.startsWith(\"---\")) continue;\n      const end = content.indexOf(\"\\n---\", 3);\n      if (end \u003c 0) continue;\n      try {\n        yaml.load(content.slice(3, end));\n      } catch {\n        broken.push(\"/\" + p);\n      }\n    }\n  }\n}\n\nfor (const locale of locales) {\n  if (fs.existsSync(locale)) walk(locale);\n}\n\nif (broken.length) console.log(broken.join(\"\\n\"));\n"])</script>
795<script>self.__next_f.push([1,"63:T20e5,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Fails (exit 1) if any locale would ship a broken or 404-ing page, so a bad\n// translation can't merge. Per target locale in i18n.json:\n//   1. docs.json has a navigation entry for the locale.\n//   2. Every page the locale's nav references is locale-prefixed (e.g. ja/foo,\n//      not foo) and exists on disk — otherwise the nav links to the English\n//      page or to a 404.\n//   3. Every locale .mdx file's YAML frontmatter parses — otherwise the page\n//      404s at render time (mint validate is lenient here; this is stricter).\n//   4. Locale pages import a localized snippet whenever that target exists,\n//      rather than silently rendering the English source snippet.\n//\n// Plus the locale single-source-of-truth contract, so adding or removing a\n// language stays a one-line change to i18n.json:\n//   5. Every locale has a display name in scripts/locales.js.\n//   6. Nothing claims a locale i18n.json doesn't list (no stale docs.json nav\n//      entry or NAMES entry left behind after a locale is dropped).\n//   7. The workflow's locale dropdown matches i18n.json's targets.\n//\n// Complements `mint validate` (which catches MDX/JSX body errors and links).\n// Locale-agnostic: locales come from i18n.json, so new languages are covered\n// automatically. Contract checks are fail-closed — if one can't verify what it\n// is supposed to verify, it reports instead of passing quietly.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nlet yaml;\ntry {\n  yaml = require(\"js-yaml\");\n} catch {\n  console.error(\"check-i18n-integrity: js-yaml is required (npm install)\");\n  process.exit(1);\n}\n\nconst ROOT = path.join(__dirname, \"..\");\nconst docs = JSON.parse(fs.readFileSync(path.join(ROOT, \"docs.json\"), \"utf8\"));\nconst targets = JSON.parse(\n  fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"),\n).locale.targets;\nconst languages = (docs.navigation \u0026\u0026 docs.navigation.languages) || [];\n\nconst problems = [];\n\n// Collect every page-path string reachable through a language's nav. Shared\n// with sync-docs-nav and the health report via nav-pages.js so the three can't\n// disagree about what counts as a nav page.\nconst { collectPages: navPages } = require(\"./nav-pages\");\n\nfor (const locale of targets) {\n  const langNav = languages.find((l) =\u003e l.language === locale);\n  if (!langNav) {\n    problems.push(`docs.json: no navigation entry for locale \"${locale}\"`);\n    continue;\n  }\n  const prefix = `${locale}/`;\n  for (const page of navPages(langNav)) {\n    if (!page.startsWith(prefix)) {\n      problems.push(\n        `${locale} nav: page \"${page}\" is not locale-prefixed (should start with \"${prefix}\") — nav is not localized`,\n      );\n      continue;\n    }\n    if (!fs.existsSync(path.join(ROOT, `${page}.mdx`))) {\n      problems.push(`${locale} nav: references missing page \"${page}.mdx\"`);\n    }\n  }\n}\n\n// Every locale page's frontmatter must parse. Locale pages must also import a\n// localized snippet when one exists; otherwise an otherwise-translated page\n// silently renders the English source snippet.\nfunction walk(dir, cb) {\n  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n    const full = path.join(dir, entry.name);\n    if (entry.isDirectory()) walk(full, cb);\n    else if (entry.name.endsWith(\".mdx\")) cb(full);\n  }\n}\nconst snippetImports = [\n  /^\\s*(?:import|export)\\b[^\\n]*?\\bfrom\\s+[\"'](\\/snippets\\/[^\"']+)[\"']/gm,\n  /^\\s*import\\s+[\"'](\\/snippets\\/[^\"']+)[\"']/gm,\n];\nfor (const locale of targets) {\n  const dir = path.join(ROOT, locale);\n  if (!fs.existsSync(dir)) continue;\n  walk(dir, (file) =\u003e {\n    const content = fs.readFileSync(file, \"utf8\");\n    for (const pattern of snippetImports) {\n      for (const match of content.matchAll(pattern)) {\n        const source = match[1];\n        if (fs.existsSync(path.join(ROOT, locale, source.slice(1)))) {\n          problems.push(\n            `${path.relative(ROOT, file)}: imports English snippet \"${source}\" even though localized \"/${locale}${source}\" exists`,\n          );\n        }\n      }\n    }\n    if (!content.startsWith(\"---\")) return;\n    const end = content.indexOf(\"\\n---\", 3);\n    if (end \u003c 0) return;\n    try {\n      yaml.load(content.slice(3, end));\n    } catch (e) {\n      problems.push(\n        `${path.relative(ROOT, file)}: frontmatter does not parse — ${String(e.message).split(\"\\n\")[0]}`,\n      );\n    }\n  });\n}\n\n// Locale single-source-of-truth contract. The active locale set is i18n.json\n// (locale.source + locale.targets);
795 anything that must know the locale list\n// should derive it from there (via scripts/locales.js). Fail if a derived copy\n// drifts — so adding a language stays a one-line change to i18n.json (+ a\n// display name) instead of a hunt across files.\nconst locales = require(\"./locales\");\n\n// 1. Every locale has a human display name (used in sitemap/hreflang). A\n//    missing name would silently degrade SEO metadata, so it's an error.\nfor (const code of [locales.SOURCE, ...locales.TARGETS]) {\n  if (!locales.NAMES[code]) {\n    problems.push(\n      `locales.js: no display name for locale \"${code}\" — add it to NAMES in scripts/locales.js`,\n    );\n  }\n}\n\n// 2. Nothing may claim a locale that i18n.json doesn't list. A locale left in\n//    docs.json after being dropped from i18n.json keeps serving a nav (and\n//    sitemap/hreflang entries) for a language nobody translates any more, so it\n//    silently rots and stays indexed. Checked in both directions — invariant 1\n//    above already covers \"target is missing from docs.json\".\nconst known = new Set([locales.SOURCE, ...locales.TARGETS]);\nfor (const lang of languages) {\n  if (lang \u0026\u0026 lang.language \u0026\u0026 !known.has(lang.language)) {\n    problems.push(\n      `docs.json: navigation entry for locale \"${lang.language}\" which is not in i18n.json (source \"${locales.SOURCE}\" + targets [${targets.join(\", \")}]) — remove the nav entry or add the locale to i18n.json`,\n    );\n  }\n}\nfor (const code of Object.keys(locales.NAMES)) {\n  if (!known.has(code)) {\n    problems.push(\n      `locales.js: NAMES has a stale entry for \"${code}\", which is not in i18n.json — remove it`,\n    );\n  }\n}\n\n// 3. The workflow's locale dropdown must offer exactly \"all\" + the i18n.json\n//    targets, so a newly-added locale is selectable and a removed one is gone.\n//    workflow_dispatch choice options can't be generated dynamically, so this is\n//    the one place a static copy of the locale list has to live.\n//\n//    FAIL-CLOSED: an unreadable/unparseable workflow, or one whose dropdown\n//    can't be located, is reported rather than skipped. The file is in-repo, so\n//    \"can't read it\" means something is actually wrong — silently passing is how\n//    a check stops protecting anything.\nconst WF = \".github/workflows/i18n.yml\";\ntry {\n  const wf = yaml.load(fs.readFileSync(path.join(ROOT, WF), \"utf8\"));\n  // js-yaml may parse the `on:` key as boolean true (YAML 1.1) or keep it as\n  // the string \"on\" (YAML 1.2), depending on version — handle both.\n  const on = wf \u0026\u0026 (wf.on || wf[true]);\n  const opts =\n    on \u0026\u0026\n    on.workflow_dispatch \u0026\u0026\n    on.workflow_dispatch.inputs \u0026\u0026\n    on.workflow_dispatch.inputs.locale \u0026\u0026\n    on.workflow_dispatch.inputs.locale.options;\n  if (!Array.isArray(opts)) {\n    problems.push(\n      `${WF}: could not find the workflow_dispatch \"locale\" choice options, so they cannot be checked against i18n.json — if the input was renamed or restructured, update this check in scripts/check-i18n-integrity.js`,\n    );\n  } else {\n    const want = [\"all\", ...targets].slice().sort().join(\",\");\n    const have = opts.slice().sort().join(\",\");\n    if (want !== have) {\n      problems.push(\n        `${WF}: locale dropdown options [${opts.join(\", \")}] do not match i18n.json [\"all\", ${targets.join(\", \")}] — update the choice options in ${WF}`,\n      );\n    }\n  }\n} catch (e) {\n  problems.push(\n    `${WF}: could not read or parse to verify the locale dropdown — ${String(e.message).split(\"\\n\")[0]}`,\n  );\n}\n\nif (problems.length) {\n  console.error(`✗ i18n integrity check failed (${problems.length} problem(s)):\\n`);\n  for (const p of problems) console.error(`  - ${p}`);\n  console.error(\n    \"\\nFix the pages above (or let the translation pipeline's fallback gate revert broken ones to English) before merging.\",\n  );\n  process.exit(1);\n}\n\nconsole.log(\n  \"✓ i18n integrity: locale nav/pages/frontmatter are valid and available localized snippets are imported\",\n);\n"])</script>
795<script>self.__next_f.push([1,"64:T1baf,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Prints a per-locale \"translation health\" summary (Markdown) for the auto-PR\n// body, so an English-fallback page is a visible, listed work-item at PR time\n// instead of something discovered on prod weeks later.\n//\n// Two reliable inputs — no fuzzy \"is this English?\" guessing:\n//   1. The fallback list the gate (fallback-broken-translations.sh) wrote to\n//      $I18N_REPORT_FILE: exactly the pages it reverted to English this run.\n//   2. `git status` in the working tree (run before the workflow stages/commits):\n//      the locale .mdx pages this run actually changed.\n//\n// Locale-agnostic: locales come from i18n.json, so new languages are covered\n// automatically. Safe to run locally (empty report if there's nothing to say).\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { execSync } = require(\"child_process\");\n\nconst ROOT = path.join(__dirname, \"..\");\nconst targets = JSON.parse(\n  fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"),\n).locale.targets;\n\n// (1) Pages the gate fell back to English this run.\nconst reportFile = process.env.I18N_REPORT_FILE;\nconst fallbacks =\n  reportFile \u0026\u0026 fs.existsSync(reportFile)\n    ? fs\n        .readFileSync(reportFile, \"utf8\")\n        .split(\"\\n\")\n        .map((s) =\u003e s.trim())\n        .filter(Boolean)\n    : [];\n\n// (1b) Pages i18n:retry re-translated after a first failed attempt. Path is\n// derived from I18N_REPORT_FILE by the retry script, so no extra workflow env\n// var is needed. A retried page that is NOT in `fallbacks` was recovered.\nconst retriedFile = reportFile\n  ? `${reportFile.replace(/\\.txt$/, \"\")}-retried.txt`\n  : null;\nconst retried =\n  retriedFile \u0026\u0026 fs.existsSync(retriedFile)\n    ? fs\n        .readFileSync(retriedFile, \"utf8\")\n        .split(\"\\n\")\n        .map((s) =\u003e s.trim())\n        .filter(Boolean)\n    : [];\n\n// (1c) Did the translation provider refuse part of this run? run-translation.sh\n// writes the cause here. On the partial-continue path the workflow step still\n// succeeds, so without this the PR body would read as a clean run with the real\n// problem (no credits, bad key) buried thousands of log lines up.\nconst providerDownFile = reportFile\n  ? `${reportFile.replace(/\\.txt$/, \"\")}-provider-down`\n  : null;\nconst providerError =\n  providerDownFile \u0026\u0026 fs.existsSync(providerDownFile)\n    ? fs.readFileSync(providerDownFile, \"utf8\").trim()\n    : \"\";\n\n// (2) Locale .mdx pages this run changed (staged, unstaged, or untracked).\nlet changed = [];\ntry {\n  // -uall lists untracked files individually (default collapses a fully-new\n  // dir into one entry, which would undercount a brand-new locale backfill).\n  changed = execSync(\"git status --porcelain --untracked-files=all\", {\n    cwd: ROOT,\n    encoding: \"utf8\",\n  })\n    .split(\"\\n\")\n    .filter(Boolean)\n    .map((line) =\u003e {\n      const p = line.slice(3).trim();\n      // \"old -\u003e new\" for renames: keep the new path.\n      const arrow = p.indexOf(\" -\u003e \");\n      return arrow \u003e= 0 ? p.slice(arrow + 4) : p;\n    })\n    .filter((f) =\u003e f.endsWith(\".mdx\"));\n} catch {\n  // No git / detached context — fall back to a fallbacks-only report.\n}\n\n// (3) Nav coverage per locale: how many pages the locale's navigation lists\n// versus English. A partially-translated locale is valid (its nav omits pages\n// that don't exist yet), so coverage is reported to keep that visible instead of\n// silent — a backfill that stopped early shows up here.\nconst { countPages: countNavPages } = require(\"./nav-pages\");\nlet navCoverage = {};\nlet enNavPages = 0;\ntry {\n  const docs = JSON.parse(\n    fs.readFileSync(path.join(ROOT, \"docs.json\"), \"utf8\"),\n  );\n  const langs = (docs.navigation \u0026\u0026 docs.navigation.languages) || [];\n  const source = JSON.parse(\n    fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"),\n  ).locale.source;\n  const en = langs.find((l) =\u003e l.language === source);\n  enNavPages = en ? countNavPages(en) : 0;\n  for (const l of langs) {\n    if (l \u0026\u0026 l.language) navCoverage[l.language] = countNavPages(l);\n  }\n} catch {\n  // docs.json unreadable — omit coverage rather than fail the report.\n}\n\nconst inLocale = (f, loc) =\u003e f === loc || f.startsWith(`${loc}/`);\n\nconst lines = [\"## Translation health (this run)\", \"\"];\n\n// Lead with the provider problem when there is one: it explains every other\n// number below, and it means this run is incomplete regardless of how the\n// per-locale counts read.\nif (providerError) {\n  lines.push(\n    `\u003e 🛑 **The translation provider refused part of this run** — \\`${providerError}\\`. Pages that had already translated are included and the navigation lists only pages that exist, so this is safe to merge as a partial update. **The run is unfinished:** fix the provider account (credits, quota, or API key) and re-run to translate the rest — the next run resumes.`,\n  );\n  lines.push(\"\");\n}\nfor (const loc of targets) {\n  const updated = changed.filter((f) =\u003e inLocale(f, loc)).length;\n  const fell = fallbacks.filter((f) =\u003e inLocale(f, loc)).length;\n  const saved = retried.filter(\n    (f) =\u003e inLocale(f, loc) \u0026\u0026 !fallbacks.includes(f),\n  ).length;\n  const flag = fell \u003e 0 ? \" ⚠️\" : \"\";\n  const recovered = saved \u003e 0 ? ` · ${saved} recovered on retry` : \"\";\n  // Nav coverage, shown only when incomplete — a locale mid-backfill.\n  const nav = navCoverage[loc];\n  const partial =\n    enNavPages \u0026\u0026 nav !== undefined \u0026\u0026 nav \u003c enNavPages\n      ? ` · ⚠️ nav covers ${nav}/${enNavPages} pages (${Math.floor((nav / enNavPages) * 100)}%)`\n      : \"\";\n  lines.push(\n    `- **${loc}**: ${updated} page(s) updated · ${fell} fell back to English${flag}${recovered}${partial}`,\n  );\n}\nlines.push(\"\");\n\nconst incomplete = targets.filter(\n  (loc) =\u003e\n    enNavPages \u0026\u0026 navCoverage[loc] !== undefined \u0026\u0026 navCoverage[loc] \u003c enNavPages,\n);\nif (incomplete.length) {\n  lines.push(\n    `\u003e ⚠️ **Incomplete locale(s):** ${incomplete.join(\", \")} — the navigation lists only the pages that exist, so nothing 404s, but the backfill is unfinished. Re-run the workflow with \\`full: true\\` (
795and \\`locale\\` set) to translate the remaining pages; the nav fills in automatically.`,\n  );\n  lines.push(\"\");\n}\n\nif (retried.length) {\n  const saved = retried.filter((f) =\u003e !fallbacks.includes(f));\n  lines.push(\n    `\u003e 🔁 Retried ${retried.length} page(s) that failed on the first attempt; ${saved.length} came back clean and ${retried.length - saved.length} still needed English.`,\n  );\n  lines.push(\"\");\n}\n\nif (fallbacks.length) {\n  lines.push(\n    `\u003e ⚠️ **${fallbacks.length} page(s) fell back to English** because their MDX/frontmatter couldn't be translated cleanly. The route serves valid English (no 404), but the content isn't localized. Re-run the workflow with these paths in \\`paths\\` (a \\`--force\\` targeted backfill) once the source is fixed:`,\n  );\n  lines.push(\"\u003e\");\n  for (const f of fallbacks.slice(0, 50)) lines.push(`\u003e - \\`${f}\\``);\n  if (fallbacks.length \u003e 50)\n    lines.push(`\u003e - …and ${fallbacks.length - 50} more`);\n} else {\n  lines.push(\"\u003e ✓ No pages fell back to English this run.\");\n}\n\nprocess.stdout.write(lines.join(\"\\n\") + \"\\n\");\n"])</script>
795<script>self.__next_f.push([1,"65:T781,"])</script>
795<script>self.__next_f.push([1,"/**\n * Single source of truth for the active locale set.\n *\n * The LIST of locales is derived from i18n.json (lingo's config: locale.source\n * + locale.targets), so adding or removing a language is a one-line change\n * there — the sitemap, hreflang tags, and locale-dir handling all follow\n * automatically. The only thing that can't be derived is each locale's\n * human-readable display NAME (used in sitemap/hreflang metadata); those live\n * here, keyed by locale code.\n *\n * A locale present in i18n.json but missing a NAME entry is a hard error,\n * enforced by scripts/check-i18n-integrity.js — never a silent omission.\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst i18n = JSON.parse(\n  fs.readFileSync(path.join(__dirname, \"..\", \"i18n.json\"), \"utf8\"),\n);\n\nconst SOURCE = i18n.locale.source; // 'en'\nconst TARGETS = i18n.locale.targets; // ['zh', 'ja', 'pt-BR']\n\n// Human-readable display names per locale code. Add an entry here whenever you\n// add a locale to i18n.json (the integrity check fails if you forget).\nconst NAMES = {\n  en: \"English\",\n  zh: \"中文\",\n  ja: \"日本語\",\n  \"pt-BR\": \"Português (Brasil)\",\n  ko: \"한국어\",\n  de: \"Deutsch\",\n  fr: \"Français\",\n  es: \"Español\",\n  id: \"Bahasa Indonesia\",\n  vi: \"Tiếng Việt\",\n};\n\nfunction toConfig(code) {\n  const isDefault = code === SOURCE;\n  return {\n    code,\n    name: NAMES[code] || code,\n    // Source locale lives at the root; every target under /\u003ccode\u003e.\n    urlPrefix: isDefault ? \"\" : `/${code}`,\n    isDefault,\n  };\n}\n\n// Same shape sitemap.js used inline: source first, then targets, keyed by code.\nconst LANGUAGES = {};\nfor (const code of [SOURCE, ...TARGETS]) {\n  LANGUAGES[code] = toConfig(code);\n}\n\n// Non-source locale directory names (zh, ja, ...); localized nav page paths are\n// prefixed with these.\nconst LOCALE_DIRS = TARGETS.slice();\n\nmodule.exports = { SOURCE, TARGETS, NAMES, LANGUAGES, LOCALE_DIRS };\n"])</script>
795<script>self.__next_f.push([1,"66:Tcff,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Fails (exit 1) when an English page links to an anchor that no heading\n// generates — e.g. [Crypto Plans](#crypto-plans) when the heading is\n// \"## Prepaid Credits (Crypto Plans)\" (id: prepaid-credits-crypto-plans). Those\n// links silently drop the reader at the top of the page instead of the section,\n// and neither `mint validate` nor Mintlify's link-rot check reports them.\n//\n// English is authored, so a broken anchor there is a bug and blocks. Locale\n// pages are generated, so their anchors are reported as warnings only: the\n// translation pipeline remaps them (scripts/fix-i18n-links.js), and the ones it\n// can't resolve are deliberately left alone rather than guessed. Fixing an\n// English anchor also fixes every locale on the next translation run.\n//\n// Page-level link rot (the target page itself missing) is out of scope — that's\n// what Mintlify's link checker covers.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { headingSlugs, anchorLinks, mdxFiles } = require(\"./mdx-anchors.js\");\n\nconst ROOT = path.join(__dirname, \"..\");\nconst locales = JSON.parse(\n  fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"),\n).locale.targets;\n\nconst headings = new Map();\nfunction headingsOf(file) {\n  if (!headings.has(file)) {\n    headings.set(\n      file,\n      fs.existsSync(file) ? new Set(headingSlugs(fs.readFileSync(file, \"utf8\"))) : null,\n    );\n  }\n  return headings.get(file);\n}\n\n// Collect broken anchors for a set of files. Returns [{ file, anchor, target }].\nfunction scan(files) {\n  const broken = [];\n  for (const file of files) {\n    const content = fs.readFileSync(file, \"utf8\");\n    for (const { anchor, target } of anchorLinks(content)) {\n      const targetFile = target ? path.join(ROOT, `${target}.mdx`) : file;\n      const slugs = headingsOf(targetFile);\n      if (!slugs) continue; // missing page: link rot, not an anchor bug\n      if (!slugs.has(anchor)) {\n        broken.push({\n          file: path.relative(ROOT, file),\n          anchor,\n          target: target || null,\n        });\n      }\n    }\n  }\n  return broken;\n}\n\nconst describe = (b) =\u003e\n  `${b.file}: #${b.anchor}${b.target ? ` (in /${b.target})` : \"\"}`;\n\n// English (authored) — blocking.\nconst englishBroken = scan(mdxFiles(ROOT, { skipDirs: locales }));\n\n// Locales (generated) — informational.\nconst localeBroken = [];\nfor (const locale of locales) {\n  const dir = path.join(ROOT, locale);\n  if (fs.existsSync(dir)) localeBroken.push(...scan(mdxFiles(dir)));\n}\n\nif (localeBroken.length) {\n  console.log(\n    `ℹ️  ${localeBroken.length} unresolved anchor(s) in translated pages (not blocking):`,\n  );\n  for (const b of localeBroken.slice(0, 20)) console.log(`  - ${describe(b)}`);\n  if (localeBroken.length \u003e 20) {\n    console.log(`  ...and ${localeBroken.length - 20} more`);\n  }\n  console.log(\"\");\n}\n\nif (englishBroken.length) {\n  console.error(\n    `✗ ${englishBroken.length} broken anchor link(s) in the English docs:\\n`,\n  );\n  for (const b of englishBroken) console.error(`  - ${describe(b)}`);\n  console.error(\n    \"\\nPoint each link at an id a heading actually generates (lowercase, \" +\n      \"punctuation stripped, spaces as dashes), or drop the #fragment.\",\n  );\n  process.exit(1);\n}\n\nconsole.log(\"✓ anchors: every English anchor link resolves to a real heading\");\n"])</script>
795<script>self.__next_f.push([1,"67:Tdc4,"])</script>
795<script>self.__next_f.push([1,"/**\n * Shared helpers for reasoning about MDX heading anchors.\n *\n * Mintlify derives a heading's id with github-slugger's rules (via rehype-slug):\n * lowercase, strip a fixed ASCII punctuation set, spaces -\u003e \"-\", and preserve\n * non-ASCII — which is why \"クレジットとは?\" keeps its full-width \"?\" while an\n * ASCII \"?\" is dropped. Repeated slugs get \"-1\", \"-2\", ... Verified against\n * production HTML for both English and Japanese pages.\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\n// Ranges are written as escapes on purpose: the literal U+2000/U+2E00\n// characters are indistinguishable from a space in source, and an edit that\n// turned one into a space would strip letters and digits from every slug.\nconst SLUG_STRIP = /[ -⸀-⹿\\\\'!\"#$%\u0026()*+,./:;\u003c=\u003e?@[\\]^`{|}~]/g;\n\nfunction slugify(text) {\n  return text.toLowerCase().replace(SLUG_STRIP, \"\").replace(/ /g, \"-\");\n}\n\n// Strip frontmatter and fenced code blocks so a \"# comment\" inside a shell\n// example is not mistaken for a heading.\nfunction prose(content) {\n  const out = [];\n  const lines = content.split(\"\\n\");\n  let inFence = false;\n  let fence = \"\";\n  let i = 0;\n  if (lines[0] === \"---\") {\n    i = 1;\n    while (i \u003c lines.length \u0026\u0026 lines[i] !== \"---\") i++;\n    i++;\n  }\n  for (; i \u003c lines.length; i++) {\n    const open = lines[i].match(/^\\s*(```+|~~~+)/);\n    if (!inFence \u0026\u0026 open) {\n      inFence = true;\n      fence = open[1][0];\n      continue;\n    }\n    if (inFence) {\n      if (open \u0026\u0026 open[1][0] === fence) inFence = false;\n      continue;\n    }\n    out.push(lines[i]);\n  }\n  return out.join(\"\\n\");\n}\n\n// Heading ids in document order, with github-slugger's duplicate suffixes.\nfunction headingSlugs(content) {\n  const seen = new Map();\n  const slugs = [];\n  for (const m of prose(content).matchAll(/^#{1,6}\\s+(.+)$/gm)) {\n    const base = slugify(m[1].trim());\n    const n = seen.get(base);\n    if (n === undefined) {\n      seen.set(base, 1);\n      slugs.push(base);\n    } else {\n      seen.set(base, n + 1);\n      slugs.push(`${base}-${n}`);\n    }\n  }\n  return slugs;\n}\n\nfunction decode(anchor) {\n  try {\n    return decodeURIComponent(anchor);\n  } catch {\n    return anchor;\n  }\n}\n\n// Every internal anchor link in a page: same-page (#x) and root-relative\n// cross-page (/some/page#x). Returns { anchor, target } where target is null\n// for same-page links.\nfunction anchorLinks(content) {\n  const links = [];\n  for (const m of [\n    ...content.matchAll(/\\]\\(#([^)\\s]+)\\)/g),\n    ...content.matchAll(/href=\"#([^\"\\s]+)\"/g),\n  ]) {\n    links.push({ anchor: decode(m[1]), target: null });\n  }\n  for (const m of [\n    ...content.matchAll(/\\]\\(\\/([^)#\\s]+)#([^)\\s]+)\\)/g),\n    ...content.matchAll(/href=\"\\/([^\"#\\s]+)#([^\"\\s]+)\"/g),\n  ]) {\n    links.push({ anchor: decode(m[2]), target: m[1] });\n  }\n  return links;\n}\n\n// All .mdx files under dir, skipping build/vendor and (optionally) locale dirs.\nfunction mdxFiles(root, { skipDirs = [] } = {}) {\n  const skip = new Set([\n    \"node_modules\",\n    \".git\",\n    \".mintlify\",\n    \"en\",\n    \"cn\",\n    \"scripts\",\n    ...skipDirs,\n  ]);\n  const out = [];\n  (function walk(dir) {\n    for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n      const full = path.join(dir, entry.name);\n      if (entry.isDirectory()) {\n        if (!skip.has(entry.name)) walk(full);\n      } else if (entry.name.endsWith(\".mdx\")) {\n        out.push(full);\n      }\n    }\n  })(root);\n  return out;\n}\n\nmodule.exports = { slugify, prose, headingSlugs, anchorLinks, mdxFiles, decode };\n"])</script>
795<script>self.__next_f.push([1,"68:T530,"])</script>
795<script>self.__next_f.push([1,"/**\n * Shared helpers for walking docs.json navigation trees.\n *\n * Kept in one place because several scripts need to agree on what counts as a\n * \"page\" in the nav (sync-docs-nav builds locale navs, the health report\n * measures coverage, and the integrity check validates them). A second copy of\n * this walk would drift.\n */\n\n// Keys whose values hold nested nav entries. `pages` holds page paths (strings)\n// and nested groups; the rest hold containers.\nconst CONTAINER_KEYS = [\"pages\", \"groups\", \"anchors\", \"tabs\", \"dropdowns\"];\n\n// Keys holding a human-readable label (translated per locale).\nconst LABEL_KEYS = [\"anchor\", \"group\", \"tab\", \"dropdown\"];\n\n// Every page path reachable in a nav tree, in document order. Works on both an\n// English nav (bare paths) and a locale nav (locale-prefixed paths).\nfunction collectPages(node, out = []) {\n  if (Array.isArray(node)) {\n    for (const item of node) collectPages(item, out);\n  } else if (typeof node === \"string\") {\n    out.push(node);\n  } else if (node \u0026\u0026 typeof node === \"object\") {\n    for (const [key, val] of Object.entries(node)) {\n      if (CONTAINER_KEYS.includes(key)) collectPages(val, out);\n    }\n  }\n  return out;\n}\n\nfunction countPages(node) {\n  return collectPages(node).length;\n}\n\nmodule.exports = { CONTAINER_KEYS, LABEL_KEYS, collectPages, countPages };\n"])</script>
795<script>self.__next_f.push([1,"69:T1a4d,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Repair JSX attribute values that a translation broke by turning a quote\n// character into a straight double quote.\n//\n// English pages legitimately use typographic quotes inside attributes:\n//\n//   \u003cFrame caption=\"Finding an “insufficient funds” error logged for …\"\u003e\n//\n// Some target languages write quotes as \" rather than “ ”, and the model\n// sometimes normalizes them on the way through, which closes the attribute early\n// and makes the page unparseable:\n//\n//   parsing error … Unexpected character `\"` (U+0022) in attribute name\n//\n// The page then fails to build and the fallback gate serves English — a good\n// translation lost to a typographic detail. That silently cost Korean and\n// Portuguese the same page. So repair the translation rather than forbid quotes\n// in English captions.\n//\n// SAFETY: this only ever rewrites a tag that does NOT parse as valid JSX, and\n// only when the rewrite makes it parse. A well-formed tag is never touched, so\n// valid content can't be corrupted — which matters, because \"find the stray\n// quote\" heuristics get this wrong: in\n//\n//   \u003cCard title=\"API 参考\" horizontal icon=\"code\"\u003e\n//\n// the quote closing `title` is followed by a VALUELESS attribute, which naive\n// rules mistake for a stray quote inside the value.\n//\n// Runs after i18n:fix-frontmatter and before i18n:retry, so a page repaired here\n// never reaches the retry or fallback stages.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst ROOT = path.join(__dirname, \"..\");\nconst targets = JSON.parse(\n  fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"),\n).locale.targets;\n\nconst NAME = /^[A-Za-z_][\\w:.-]*/;\n\n// Parse a tag's attribute list starting at `i`. Returns { end, text } on\n// success, or null. When `allowExtend` is set, a quoted value may absorb a\n// quote that would otherwise close it (rewriting that quote to the other style)\n// if that is the only way the rest of the tag parses — this is the repair.\nfunction parseAttrs(src, i, allowExtend, depth = 0) {\n  if (depth \u003e 24) return null; // runaway guard\n  let out = \"\";\n\n  for (;;) {\n    const ws = /^\\s*/.exec(src.slice(i))[0];\n    const after = src.slice(i + ws.length);\n\n    const close = /^\\/?\u003e/.exec(after);\n    if (close) return { end: i + ws.length + close[0].length, text: out + ws + close[0] };\n\n    const name = NAME.exec(after);\n    if (!name) return null;\n    let j = i + ws.length + name[0].length;\n    out += ws + name[0];\n\n    const eq = /^\\s*=\\s*/.exec(src.slice(j));\n    if (!eq) {\n      // Valueless attribute (e.g. `horizontal`, `required`) — advance past it.\n      i = j;\n      continue;\n    }\n    out += eq[0];\n    j += eq[0].length;\n\n    const q = src[j];\n    if (q === \"{\") {\n      let d = 0;\n      const from = j;\n      while (j \u003c src.length) {\n        if (src[j] === \"{\") d++;\n        else if (src[j] === \"}\" \u0026\u0026 --d === 0) { j++; break; }\n        j++;\n      }\n      out += src.slice(from, j);\n      i = j;\n      continue;\n    }\n    if (q !== '\"' \u0026\u0026 q !== \"'\") return null;\n    j++;\n\n    // Candidate closing quotes for this value, in order. The first candidate is\n    // the strict reading; later ones only get tried during repair.\n    let value = \"\";\n    let k = j;
795\n    let candidate = 0;\n    for (;;) {\n      const qi = src.indexOf(q, k);\n      const nl = src.indexOf(\"\\n\", k);\n      if (qi === -1 || (nl !== -1 \u0026\u0026 nl \u003c qi)) return null; // unterminated on this line\n      const rest = parseAttrs(src, qi + 1, allowExtend, depth + 1);\n      if (rest) {\n        // Interior quotes (those we skipped past) become the other style so they\n        // cannot terminate the value.\n        const raw = src.slice(j, qi);\n        const other = q === '\"' ? \"'\" : '\"';\n        value = raw.split(q).join(other);\n        return { end: rest.end, text: out + q + value + q + rest.text };\n      }\n      if (!allowExtend || ++candidate \u003e 8) return null;\n      k = qi + 1; // try treating this quote as interior\n    }\n  }\n}\n\n// Repair one tag beginning at `start` ('\u003c'). Returns { text, end } or null.\nfunction repairTag(src, start) {\n  const name = /^\u003c([A-Z][A-Za-z0-9]*)/.exec(src.slice(start));\n  if (!name) return null;\n  const from = start + name[0].length;\n\n  // Already valid? Leave it completely alone.\n  if (parseAttrs(src, from, false)) return null;\n\n  const fixed = parseAttrs(src, from, true);\n  if (!fixed) return null; // can't repair — let the fallback gate handle it\n\n  // Sanity: the repaired tag must now parse strictly.\n  const candidate = name[0] + fixed.text;\n  if (!parseAttrs(candidate, name[0].length, false)) return null;\n\n  return { text: candidate, end: fixed.end };\n}\n\nfunction repairFile(file) {\n  const src = fs.readFileSync(file, \"utf8\");\n  let out = \"\";\n  let i = 0;\n  let fixes = 0;\n  let inFence = false;\n\n  while (i \u003c src.length) {\n    if (src.startsWith(\"```\", i) \u0026\u0026 (i === 0 || src[i - 1] === \"\\n\")) {\n      inFence = !inFence;\n      const nl = src.indexOf(\"\\n\", i);\n      const stop = nl === -1 ? src.length : nl + 1;\n      out += src.slice(i, stop);\n      i = stop;\n      continue;\n    }\n    // Skip inline code spans, so a tag shown as an example in backticks isn't\n    // rewritten. A span is delimited by a run of N backticks and closed by the\n    // next run of the same length.\n    if (!inFence \u0026\u0026 src[i] === \"`\") {\n      const run = /^`+/.exec(src.slice(i))[0];\n      const close = src.indexOf(run, i + run.length);\n      const stop = close === -1 ? i + run.length : close + run.length;\n      out += src.slice(i, stop);\n      i = stop;\n      continue;\n    }\n    if (!inFence \u0026\u0026 src[i] === \"\u003c\") {\n      const r = repairTag(src, i);\n      if (r) {\n        out += r.text;\n        i = r.end;\n        fixes++;\n        continue;\n      }\n    }\n    out += src[i];\n    i++;\n  }\n\n  if (fixes \u003e 0 \u0026\u0026 out !== src) {\n    fs.writeFileSync(file, out);\n    return fixes;\n  }\n  return 0;\n}\n\nfunction walk(dir, cb) {\n  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n    const full = path.join(dir, entry.name);\n    if (entry.isDirectory()) walk(full, cb);\n    else if (entry.name.endsWith(\".mdx\")) cb(full);\n  }\n}\n\nconst scoped = process.env.I18N_LOCALE ? [process.env.I18N_LOCALE] : targets;\nlet totalTags = 0;\nlet filesFixed = 0;\nfor (const locale of scoped) {\n  const dir = path.join(ROOT, locale);\n  if (!fs.existsSync(dir)) continue;\n  walk(dir, (file) =\u003e {\n    const n = repairFile(file);\n    if (n) {\n      filesFixed++;\n      totalTags += n;\n      console.log(`🔧 Repaired ${n} broken JSX tag(s) in: ${path.relative(ROOT, file)}`);\n    }\n  });\n}\nconsole.log(\n  filesFixed\n    ? `🔧 JSX attributes: repaired ${totalTags} tag(s) across ${filesFixed} file(s)`\n    : \"✓ JSX attributes: nothing to repair (all tags parse)\",\n);\n"])</script>
795<script>self.__next_f.push([1,"6a:T396e,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n\n// Fails (exit 1) when llms.txt drifts from the docs it indexes, so a new\n// product can't ship invisible to AI assistants and a rename can't leave\n// dead links behind (the root llms.txt sat six weeks stale with six missing\n// products before this check existed). Four assertions:\n//   1. Every coverage section in the English nav is linked from the root\n//      llms.txt, unless EXEMPT_SECTIONS names it with a reason. A coverage\n//      section is a top-level path segment, plus the per-product segment\n//      under api-reference/ — products land there, and a single bucket for\n//      all of api-reference would green-light exactly the gap this guards.\n//   2. Every canonical /docs/... URL in every llms.txt file resolves to a\n//      real page, a docs.json redirect, or another llms.txt file. URLs\n//      containing \"{\" are templates (e.g. faqs/{product}.md) and skip\n//      resolution but still count toward coverage. Non-canonical spellings\n//      (docs.helius.dev, http://, a missing www) fail loudly instead of\n//      being silently skipped. External hosts are not fetched — the check\n//      is offline and deterministic.\n//   3. Every top-level directory holding English .mdx pages is either\n//      reachable from the nav or declared in UNLISTED_SECTIONS with a\n//      reason — so a committed-but-forgotten product folder fails loudly\n//      instead of rotting quietly. Stale declarations also fail.\n//   4. Any llms.txt modified relative to the base (env LLMS_BASE_REF, or\n//      the merge-base with origin/main, or origin/main) must carry a valid\n//      last_updated that is not in the future, never older than the base's\n//      stamp, and — when unchanged — at most 7 days old, so a stale stamp\n//      can't ride along with new content. With LLMS_REQUIRE_BASE=1 (set in\n//      CI) an unresolvable base is a failure; locally it downgrades to a\n//      notice so the other assertions still run on shallow clones.\n//\n// Scope: English source only. Locale trees (from i18n.json via locales.js)\n// are generated output and the i18n pipeline's concern. Complements\n// `mint validate` (which knows nothing about llms.txt files) and\n// check-i18n-integrity.js (nav vs locales). Fail-closed: if the check\n// can't verify what it is supposed to verify, it reports instead of\n// passing quietly.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { execFileSync } = require(\"child_process\");\nconst { collectPages } = require(\"./nav-pages\");\nconst { LOCALE_DIRS } = require(\"./locales\");\n\nlet yaml;\ntry {\n  yaml = require(\"js-yaml\");\n} catch {\n  console.error(\"check-llms-coverage: js-yaml is required (npm install)\");\n  process.exit(1);\n}\n\nconst ROOT = path.join(__dirname, \"..\");\nconst docs = JSON.parse(fs.readFileSync(path.join(ROOT, \"docs.json\"), \"utf8\"));\n\n// Skipped by directory NAME at every depth (not just the repo root): locale\n// trees, the gitignored en/ + cn/ staging dirs that i18n-skip-unchanged.sh\n// rsyncs the whole repo (node_modules included) into, and vendored deps.\n// Dot-directories (.git, .github, .mintlify, .husky, ...) are skipped as a\n// class. Same union as scripts/mdx-anchors.js's walker.\nconst SKIP_NAMES = new Set([...LOCALE_DIRS, \"en\", \"cn\", \"node_modules\"]);\n\n// Nav coverage sections deliberately absent from the root llms.txt.\n// Key: coverage section, value: the reason (shown when someone trips on it).\nconst EXEMPT_SECTIONS = {\n  \"enhanced-transactions\":\n    \"legacy product in maintenance mode — root llms.txt routes readers to Parsed Events instead (PR #983 review)\",\n  \"api-reference/enhanced-transactions\":\n    \"legacy product in maintenance mode — root llms.txt routes readers to Parsed Events instead (PR #983 review)\",\n};\n\n// Top-level directories that intentionally have no nav presence. Key:\n// directory, value: the reason. A new undeclared directory fails assertion 3.\nconst UNLISTED_SECTIONS = {\n  \"validator-reporting\":\n    \"Validator API — direct-URL only, shared with validator customers\",\n  grpc: \"open Yellowstone gRPC reference — legacy, cross-linked from LaserStream and dedicated-nodes pages\",\n  support: \"linked from the navbar, intentionally not in the sidebar nav\",\n};\n\nconst problems = [];\n\n// ---------------------------------------------------------------------------\n// Inventory: English pages, redirects, llms.txt files.\n// ---------------------------------------------------------------------------\n\nconst pages = new Set(); // nav-style paths without extension, e.g. \"waas/overview\"\nconst llmsFiles = new Set(); // repo-relative with \"/\" separators\nconst topLevelPageDirs = new Set(); // top-level dirs that contain .mdx pages\n\n(function walk(dir) {\n  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n    if (entry.isDirectory()) {\n      if (!SKIP_NAMES.has(entry.name) \u0026\u0026 !entry.name.startsWith(\".\")) {\n        walk(path.join(dir, entry.name));\n      }\n      continue;\n    }\n    // Keys use \"/\" regardless of platform so they compare against URL paths.\n    const rel = path\n      .relative(ROOT, path.join(dir, entry.name))\n      .split(path.sep)\n      .join(\"/\");\n    const top = rel.split(\"/\")[0];\n    if (entry.name === \"llms.txt\") {\n      llmsFiles.add(rel);\n    } else if (entry.name.endsWith(\".mdx\") \u0026\u0026 top !== \"snippets\") {\n      pages.add(rel.slice(0, -\".mdx\".length));\n      if (rel.includes(\"/\")) topLevelPageDirs.add(top);\n    }\n  }\n})(ROOT);\n\nconst redirects = new Set();\nconst redirectPrefixes = []; // wildcard redirects (\"/foo/*\"), none today\nfor (const r of docs.redirects || []) {\n  const src = r.source.replace(/^\\//, \"\");\n  if (src.endsWith(\"*\")) redirectPrefixes.push(src.slice(0, -1));\n  else redirects.add(src);\n}\n\nfunction resolvesToPage(target) {\n  return (\n    pages.has(target) ||\n    pages.has(`${target}/index`) ||\n    redirects.has(target) ||\n    redirectPrefixes.some((p) =\u003e target.startsWith(p))\n  );\n}\n\n// Coverage sections for a page path: the top-level segment, plus the\n// per-product segment for pages nested under api-reference/.\nfunction coverageKeys(pagePath) {\n  const segs = pagePath.split(\"/\").filter(
795Boolean);\n  if (segs.length === 0 || segs[0] === \"index\") return [];\n  const keys = [segs[0]];\n  if (segs[0] === \"api-reference\" \u0026\u0026 segs.length \u003e= 3) {\n    keys.push(`api-reference/${segs[1]}`);\n  }\n  return keys;\n}\n\nconst navPages = collectPages(\n  (docs.navigation.languages || []).filter((l) =\u003e l.language === \"en\"),\n);\nconst navCoverage = new Set(navPages.flatMap(coverageKeys));\nconst navTopSections = new Set(navCoverage);\nfor (const key of navTopSections) if (key.includes(\"/\")) navTopSections.delete(key);\n\n// ---------------------------------------------------------------------------\n// 1 + 2. Root coverage and link resolution across every llms.txt.\n// ---------------------------------------------------------------------------\n\n// Canonical absolute URLs and root-relative /docs/ paths both count; the\n// lookbehind keeps \"foo.com/docs/x\" out of the relative branch.\nconst DOCS_URL = /(?:https:\\/\\/www\\.helius\\.dev|(?\u003c![:\\w.-]))\\/docs\\/([A-Za-z0-9_\\-./{}]+)/g;\n// Wrong spellings of the docs host are failures, not silent skips: the\n// canonical base is https://www.helius.dev/docs (CLAUDE.md), and anything\n// else would otherwise ship unvalidated.\nconst NONCANONICAL_URL =\n  /docs\\.helius\\.dev|https?:\\/\\/helius\\.dev\\/docs|http:\\/\\/(?:www\\.)?helius\\.dev|(?\u003c!:\\/\\/)\\bwww\\.helius\\.dev\\/docs/g;\n\nfunction cleanTarget(raw) {\n  return raw.replace(/[.,]+$/, \"\").replace(/\\/+$/, \"\"); // trailing punctuation / slash\n}\n\n// Coverage is derived in its own pass over the root file, independent of the\n// link-resolution loop, so a future `continue` there can't fail this open.\n// Template URLs count via their literal prefix (faqs/{product} covers faqs).\nconst rootCoverage = new Set();\n{\n  const rootText = fs.readFileSync(path.join(ROOT, \"llms.txt\"), \"utf8\");\n  for (const match of rootText.matchAll(DOCS_URL)) {\n    const segs = cleanTarget(match[1]).replace(/\\.md$/, \"\").split(\"/\");\n    const brace = segs.findIndex((s) =\u003e s.includes(\"{\"));\n    const literal = (brace === -1 ? segs : segs.slice(0, brace)).join(\"/\");\n    for (const key of coverageKeys(literal)) rootCoverage.add(key);\n  }\n}\n\nfor (const file of [...llmsFiles].sort()) {\n  const text = fs.readFileSync(path.join(ROOT, file), \"utf8\");\n  for (const match of text.matchAll(NONCANONICAL_URL)) {\n    problems.push(\n      `${file}: non-canonical docs URL at \"...${match[0]}...\" — use https://www.helius.dev/docs/...`,\n    );\n  }\n  for (const match of text.matchAll(DOCS_URL)) {\n    const target = cleanTarget(match[1]);\n    if (target.includes(\"{\")) continue; // documented URL template\n    let ok;\n    if (target.endsWith(\"llms.txt\")) ok = llmsFiles.has(target);\n    else if (target.endsWith(\".md\")) ok = resolvesToPage(target.slice(0, -3));\n    else ok = resolvesToPage(target);\n    if (!ok) problems.push(`${file}: /docs/${target} resolves to no page, redirect, or llms.txt file`);\n  }\n}\n\nfor (const section of [...navCoverage].sort()) {\n  if (rootCoverage.has(section)) continue;\n  if (EXEMPT_SECTIONS[section]) continue;\n  problems.push(\n    `llms.txt: nav section \"${section}\" has no /docs/${section}/... link — add an entry to the root llms.txt, or add it to EXEMPT_SECTIONS in ${path.basename(__filename)} with a reason`,\n  );\n}\nfor (const section of Object.keys(EXEMPT_SECTIONS)) {\n  if (!navCoverage.has(section))\n    problems.push(`stale EXEMPT_SECTIONS entry \"${section}\": no such nav section — remove it`);\n  else if (rootCoverage.has(section))\n    problems.push(`stale EXEMPT_SECTIONS entry \"${section}\": the root llms.txt links it now — remove the exemption`);\n}\n\n// ---------------------------------------------------------------------------\n// 3. Undeclared unlisted directories.\n// ---------------------------------------------------------------------------\n\nfor (const dir of [...topLevelPageDirs].sort()) {\n  if (!navTopSections.has(dir) \u0026\u0026 !UNLISTED_SECTIONS[dir]) {\n    problems.push(\n      `directory \"${dir}/\" holds pages but none are in the English nav — add it to docs.json navigation (and llms.txt), or declare it in UNLISTED_SECTIONS in ${path.basename(__filename)} with a reason`,\n    );\n  }\n}
795\nfor (const dir of Object.keys(UNLISTED_SECTIONS)) {\n  if (!topLevelPageDirs.has(dir))\n    problems.push(`stale UNLISTED_SECTIONS entry \"${dir}\": no such directory — remove it`);\n  else if (navTopSections.has(dir))\n    problems.push(`stale UNLISTED_SECTIONS entry \"${dir}\": it is in the nav now — remove the declaration`);\n}\n\n// ---------------------------------------------------------------------------\n// 4. last_updated must be valid and bumped on any modified llms.txt.\n// ---------------------------------------------------------------------------\n\nfunction git(...args) {\n  return execFileSync(\"git\", args, {\n    cwd: ROOT,\n    encoding: \"utf8\",\n    stdio: [\"ignore\", \"pipe\", \"pipe\"],\n  });\n}\n\n// JSON_SCHEMA keeps last_updated a plain string (the default schema would\n// turn an unquoted date into a Date object).\nfunction lastUpdated(text) {\n  if (!text.startsWith(\"---\")) return null;\n  const end = text.indexOf(\"\\n---\", 3);\n  if (end === -1) return null;\n  try {\n    const fm = yaml.load(text.slice(3, end), { schema: yaml.JSON_SCHEMA });\n    return fm \u0026\u0026 fm.last_updated != null ? String(fm.last_updated) : null;\n  } catch {\n    return null;\n  }\n}\n\nfunction utcDay(offsetDays = 0) {\n  return new Date(Date.now() + offsetDays * 86400000).toISOString().slice(0, 10);\n}\n\nfunction isRealDate(stamp) {\n  if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(stamp)) return false;\n  const d = new Date(`${stamp}T00:00:00Z`);\n  // Round-trip rejects rollovers (2026-02-31) and NaN (2026-19-03), which\n  // would otherwise make every date comparison silently false.\n  return !Number.isNaN(d.getTime()) \u0026\u0026 d.toISOString().slice(0, 10) === stamp;\n}\n\n// Prefer the merge-base so commits that landed on main after this branch\n// diverged aren't misattributed to it; CI passes the PR's base SHA directly\n// via LLMS_BASE_REF (shallow clones there have no merge-base to resolve).\nconst baseRef = process.env.LLMS_BASE_REF || \"origin/main\";\nlet diffBase = baseRef;\ntry {\n  diffBase = git(\"merge-base\", baseRef, \"HEAD\").trim();\n} catch {\n  // Shallow or detached history — fall back to comparing trees directly.\n}\n\nlet changed = null;\ntry {\n  changed = git(\"diff\", \"--name-only\", diffBase, \"--\", \"*llms.txt\")\n    .split(\"\\n\")\n    .filter(Boolean)\n    .filter((f) =\u003e !SKIP_NAMES.has(f.split(\"/\")[0]));\n} catch {\n  if (process.env.LLMS_REQUIRE_BASE === \"1\") {\n    problems.push(\n      `cannot diff against base \"${baseRef}\" — the last_updated check did not run; fix the base fetch rather than merging blind`,\n    );\n  } else {\n    console.log(`note: ${baseRef} unavailable — skipping the last_updated bump check`);\n  }\n}\n\nfor (const file of changed || []) {\n  const abs = path.join(ROOT, file);\n  if (!fs.existsSync(abs)) continue; // deleted — nothing to date-stamp\n  const stamp = lastUpdated(fs.readFileSync(abs, \"utf8\"));\n  if (!stamp || !isRealDate(stamp)) {\n    problems.push(`${file}: frontmatter needs a valid last_updated: YYYY-MM-DD line (found ${stamp ? `\"${stamp}\"` : \"none\"})`);\n    continue;\n  }\n  if (stamp \u003e utcDay(1)) {\n    problems.push(`${file}: last_updated ${stamp} is in the future`);\n    continue;\n  }\n  let baseStamp = null;\n  try {\n    baseStamp = lastUpdated(git(\"show\", `${diffBase}:${file}`));\n  } catch {\n    // New file on this branch: a valid stamp is all we require.\n  }\n  if (baseStamp \u0026\u0026 isRealDate(baseStamp) \u0026\u0026 stamp \u003c baseStamp) {\n    problems.push(\n      `${file}: last_updated ${stamp} is older than the base's ${baseStamp} — if this PR did not edit the file, update the branch from main`,\n    );\n  } else if (baseStamp === stamp \u0026\u0026 stamp \u003c utcDay(-7)) {\n    problems.push(`${file}: modified without bumping last_updated (still ${stamp}) — set it to today`);\n  }\n}\n\n// ---------------------------------------------------------------------------\n\nif (problems.length \u003e 0) {\n  console.error(`✗ llms.txt coverage check failed (${problems.length} problem(s)):\\n`);\n  for (const p of problems) console.error(`  - ${p}`);\n  console.error(\n    \"\\nSee the assertion list at the top of scripts/check-llms-coverage.js for what each check guards.\",\n  );\n  process.exit(1);\n}\n\nconsole.log(\n  `✓ llms.txt coverage OK: ${navCoverage.size} nav sections covered (${Object.keys(EXEMPT_SECTIONS).length} exempt), ` +\n    `${llmsFiles.size} llms.txt files link-checked, ${Object.keys(UNLISTED_SECTIONS).length} unlisted directories declared, ` +\n    (changed === null\n      ? \"last_updated check 
795skipped (no base)\"\n      : `${changed.length} modified llms.txt file(s) date-checked`),\n);\n"])</script>
795<script>self.__next_f.push([1,"6b:T16bb,"])</script>
795<script>self.__next_f.push([1,"/**\n * Resize and theme-sync the /privacy confidential-transfer iframe.\n * Mintlify MDX \u003cscript\u003e tags do not execute; this root .js file does.\n * Mintlify writes style=\"aspect-ratio: 16 / 9;\" on iframes. That\n * must be cleared or height changes are ignored.\n *\n * A theme-matched skeleton covers the slot until the embed posts\n * helius-embed-ready. If ready is missing, keep the iframe loading\n * and show the static card. A late ready still reveals.\n *\n * Theme protocol: the host theme is the only source of truth.\n * postMessage is the only handoff. style.css writes color-scheme on\n * .privacy-embed so the frame canvas matches the host.\n */\n(() =\u003e {\n  \"use strict\";\n\n  if (window.__heliusPrivacyEmbed) return;\n  window.__heliusPrivacyEmbed = true;\n\n  const FRAME_ID = \"helius-privacy-embed\";\n  const SLOT_ID = \"helius-privacy-embed-slot\";\n  const READY_MS = 8000;\n  const EMBED_ORIGIN = \"https://helius-privacy-demo.fly.dev\";\n\n  let reportedHeight = null;\n  let watching = null;\n  let lastTheme = null;\n  let applying = false;\n  let live = false;\n  let failed = false;\n  let armed = null;\n  let failTimer = null;\n  let remain = READY_MS;\n  let tickStarted = 0;\n\n  function frame() {\n    return document.getElementById(FRAME_ID);\n  }\n\n  function slot() {\n    return document.getElementById(SLOT_ID);\n  }\n\n  function embedOrigin() {\n    const el = frame();\n    if (!el) return null;\n    try {\n      const src = el.getAttribute(\"src\") || el.src;\n      if (!src) return EMBED_ORIGIN;\n      return new URL(src, window.location.href).origin;\n    } catch {\n      return null;\n    }\n  }\n\n  function fromEmbed(event) {\n    const el = frame();\n    const origin = embedOrigin();\n    return Boolean(\n      el \u0026\u0026\n        origin \u0026\u0026\n        event.origin === origin \u0026\u0026\n        event.source === el.contentWindow\n    );\n  }\n\n  function reveal() {\n    failed = false;\n    live = true;\n    const host = slot();\n    if (host) {\n      host.classList.remove(\"is-failed\");\n      host.classList.add(\"is-live\");\n      host.setAttribute(\"aria-busy\", \"false\");\n    }\n  }\n\n  function reset() {\n    live = false;\n    failed = false;\n    watching = null;\n    reportedHeight = null;\n  }\n\n  function clearFailTimer() {\n    if (failTimer !== null) {\n      clearTimeout(failTimer);\n      failTimer = null;\n    }\n  }\n\n  function startFailTimer(host) {\n    clearFailTimer();\n    if (document.hidden) return;\n    tickStarted = Date.now();\n    failTimer = setTimeout(() =\u003e {\n      failTimer = null;\n      if (slot() !== host || live) return;\n      fail();\n    }, remain);\n  }\n\n  function disarm() {\n    reset();\n    armed = null;\n    remain = READY_MS;\n    clearFailTimer();\n  }\n\n  function armSlot(host) {\n    if (!host || armed === host) return;\n    reset();\n    armed = host;\n    remain = READY_MS;\n    startFailTimer(host);\n  }\n\n  function syncSlot() {\n    const host = slot();\n    if (!host) {\n      if (armed) disarm();\n      return;\n    }\n    armSlot(host);\n  }\n\n  function fail() {\n    const host = slot();\n    if (live || failed || host !== armed) return;\n    failed = true;\n    if (host) {\n      host.classList.add(\"is-failed\");\n      host.setAttribute(\"aria-busy\", \"false\");\n    }\n  }\n\n  function theme() {\n    const root = document.documentElement;\n    if (root.classList.contains(\"light\") || root.dataset.theme === \"light\") return \"light\";\n    if (root.classList.contains(\"dark\") || root.dataset.theme === \"dark\") return \"dark\";\n    return \"dark\";\n  }\n\n  function pushTheme() {\n    const el = frame();\n    if (!el || !el.contentWindow) return;\n    const next = theme();\n    if (next === lastTheme) return;\n    lastTheme = next;\n    const origin = embedOrigin();\n    if (!origin) return;\n    el.contentWindow.postMessage({ type: \"helius-embed-theme\", theme: next }, origin);\n  }\n\n  function applyHeight(next) {\n    // Keep sizes received before ready, and apply every later expansion/shrink.\n    if (typeof next === \"string\" \u0026\u0026 /^\\d+(?:\\.\\d+)?px$/.test(next)) {\n      const height = Number.parseFloat(next);\n      if (height \u003e 0 \u0026\u0026 height \u003c= 10000) reportedHeight = next;\n    }\n    if (!live || !reportedHeight) return;\n    const host = slot();\n    const el = frame();\n    if (!host || !el) return;\n    applying = true;\n    if (el.style.aspectRatio !== \"auto\") el.style.aspectRatio = \"auto\";\n    if (host.style.height !== reportedHeight) host.style.height = reportedHeight;\n    requestAnimationFrame(() =\u003e {\n      applying = false;\n    });\n  }\n\n  function watchFrame() {\n    const el = frame();\n    if (!el) return;\n    if (el === watching) return;\n    watching = el;
795\n    new MutationObserver(() =\u003e {\n      if (applying) return;\n      applyHeight();\n    }).observe(el, {\n      attributes: true,\n      attributeFilter: [\"style\", \"class\"],\n    });\n    applyHeight();\n    pushTheme();\n  }\n\n  window.addEventListener(\"message\", (event) =\u003e {\n    if (!fromEmbed(event)) return;\n    const data = event.data;\n    if (!data || typeof data !== \"object\") return;\n    if (data.type === \"helius-embed-ready\") {\n      lastTheme = null;\n      reveal();\n      watchFrame();\n      applyHeight();\n      pushTheme();\n    }\n    if (data.type === \"helius-embed-size\" \u0026\u0026 typeof data.height === \"string\") {\n      applyHeight(data.height);\n    }\n  });\n\n  document.addEventListener(\"visibilitychange\", () =\u003e {\n    if (!armed || live || failed) return;\n    if (document.hidden) {\n      if (failTimer !== null) {\n        remain = Math.max(0, remain - (Date.now() - tickStarted));\n        clearFailTimer();\n      }\n      return;\n    }\n    startFailTimer(armed);\n  });\n\n  new MutationObserver(pushTheme).observe(document.documentElement, {\n    attributes: true,\n    attributeFilter: [\"class\"],\n  });\n\n  new MutationObserver(syncSlot).observe(document.documentElement, {\n    childList: true,\n    subtree: true,\n  });\n\n  syncSlot();\n  watchFrame();\n  pushTheme();\n})();\n"])</script>
795<script>self.__next_f.push([1,"6c:T7b7,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n// Merge the i18n.lock files written by parallel translate shards:\n//\n//   node scripts/i18n-merge-locks.js \u003cbase.lock\u003e \u003cout.lock\u003e \u003cshard.lock\u003e...\n//\n// The lock is `checksums: { \u003csource-file-hash\u003e: {...} }`, keyed per source\n// file, and shards translate disjoint files — so this is a union: every entry\n// a shard changed relative to base is taken, everything else keeps base. Two\n// shards changing one key should be impossible; if it happens the last wins\n// with a warning rather than aborting the run.\n\nconst fs = require(\"fs\");\nconst yaml = require(\"js-yaml\");\n\nconst [basePath, outPath, ...shardPaths] = process.argv.slice(2);\nif (!basePath || !outPath) {\n  console.error(\"usage: i18n-merge-locks.js \u003cbase.lock\u003e \u003cout.lock\u003e \u003cshard.lock\u003e...\");\n  process.exit(2);\n}\n\nfunction load(p) {\n  if (!fs.existsSync(p)) return { version: 1, checksums: {} };\n  const doc = yaml.load(fs.readFileSync(p, \"utf8\")) || {};\n  return { version: doc.version ?? 1, checksums: doc.checksums || {} };\n}\n\nconst base = load(basePath);\nconst merged = JSON.parse(JSON.stringify(base.checksums));\nconst changedBy = new Map(); // key -\u003e shard path that changed it\nlet taken = 0;\n\nfor (const sp of shardPaths) {\n  const shard = load(sp);\n  for (const [key, val] of Object.entries(shard.checksums)) {\n    const same = JSON.stringify(val) === JSON.stringify(base.checksums[key]);\n    if (same) continue;\n    if (changedBy.has(key) \u0026\u0026 JSON.stringify(merged[key]) !== JSON.stringify(val)) {\n      console.warn(`::warning::i18n-merge-locks: ${key} changed by both ${changedBy.get(key)} and ${sp}; keeping ${sp}`);\n    }\n    merged[key] = val;\n    changedBy.set(key, sp);\n    taken++;\n  }\n}\n\nfs.writeFileSync(\n  outPath,\n  yaml.dump({ version: base.version, checksums: merged }, { lineWidth: -1, noRefs: true, sortKeys: false }),\n);\nconsole.error(\n  `i18n-merge-locks: ${shardPaths.length} shard lock(s) → ${Object.keys(merged).length} entries (${taken} new/changed vs base)`,\n);\n"])</script>
795<script>self.__next_f.push([1,"6d:T110c,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n// Partition the staged sources (en/, already filtered by i18n-skip-unchanged.sh)\n// into byte-balanced shards for the translate matrix. Greedy largest-first into\n// the lightest shard; bytes track wall time closely across both buckets. Below\n// I18N_SHARD_MIN_FILES files everything goes in one shard, so incremental runs\n// pay no fan-out cost. Files the i18n.json bucket `exclude` rules drop are\n// skipped so they don't skew the balance.\n//\n// Writes shards/shard-\u003ci\u003e.txt (one repo-relative path per line) and\n// shards/plan.json (full assignment; assemble names a missing shard's files\n// from it). Prints the strategy.matrix JSON to stdout, logs to stderr.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst ROOT = path.join(__dirname, \"..\");\nconst EN = path.join(ROOT, \"en\");\nconst OUT = path.join(ROOT, \"shards\");\n\nconst TARGET = Math.max(1, parseInt(process.env.I18N_SHARDS || \"5\", 10) || 5);\nconst MIN_FILES = parseInt(process.env.I18N_SHARD_MIN_FILES || \"40\", 10) || 40;\n\nconst i18n = JSON.parse(fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\"));\nconst SOURCE = i18n.locale.source; // 'en'\n\n// lingo glob → RegExp, with [locale] resolved to the source locale (we are\n// matching staged en/ paths). `*` is a single path segment in lingo patterns.\nfunction globToRe(pattern) {\n  const resolved = pattern.replace(/\\[locale\\]/g, SOURCE);\n  const escaped = resolved\n    .split(\"*\")\n    .map((s) =\u003e s.replace(/[.+?^${}()|[\\]\\\\]/g, \"\\\\$\u0026\"))\n    .join(\"[^/]*\");\n  return new RegExp(`^${escaped}$`);\n}\n\nconst excludes = [];\nfor (const bucket of Object.values(i18n.buckets || {})) {\n  for (const p of bucket.exclude || []) excludes.push(globToRe(p));\n}\n\nfunction walk(dir, acc) {\n  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n    const full = path.join(dir, entry.name);\n    if (entry.isDirectory()) walk(full, acc);\n    else if (/\\.(mdx|yaml)$/.test(entry.name)) acc.push(full);\n  }\n  return acc;\n}\n\nif (!fs.existsSync(EN)) {\n  console.error(\"i18n-plan-shards: en/ does not exist — run i18n:prep first\");\n  process.exit(1);\n}\n\nconst files = walk(EN, [])\n  .map((abs) =\u003e path.relative(ROOT, abs).split(path.sep).join(\"/\")) // en/...\n  .filter((rel) =\u003e !excludes.some((re) =\u003e re.test(rel)))\n  .map((rel) =\u003e ({\n    // Repo-relative source path (drop the en/ staging prefix).\n    src: rel.replace(/^en\\//, \"\"),\n    bytes: fs.statSync(path.join(ROOT, rel)).size,\n  }))\n  .sort((a, b) =\u003e b.bytes - a.bytes || a.src.localeCompare(b.src));\n\nconst total = files.reduce((n, f) =\u003e n + f.bytes, 0);\nlet k = files.length \u003c MIN_FILES ? 1 : Math.min(TARGET, files.length);\nif (files.length === 0) k = 0;\n\nconst shards = Array.from({ length: Math.max(k, 1) }, () =\u003e ({ files: [], bytes: 0 }));\nfor (const f of files) {\n  // Lightest shard first; ties go to the lowest index for determinism.\n  let best = 0;\n  for (let i = 1; i \u003c shards.length; i++) {\n    if (shards[i].bytes \u003c shards[best].bytes) best = i;\n  }\n  shards[best].files.push(f.src);\n  shards[best].bytes += f.bytes;\n}\n\nfs.rmSync(OUT, { recursive: true, force: true });\nfs.mkdirSync(OUT, { recursive: true });\nshards.forEach((s, i) =\u003e {\n  fs.writeFileSync(path.join(OUT, `shard-${i}.txt`), s.files.join(\"\\n\") + (s.files.length ? \"\\n\" : \"\"));\n});\nfs.writeFileSync(\n  path.join(OUT, \"plan.json\"),\n  JSON.stringify(\n    {\n      target: TARGET,\n      minFiles: MIN_FILES,\n      totalFiles: files.length,\n      totalBytes: total,\n      shards: shards.map((s, i) =\u003e ({ shard: i, files: s.files.length, bytes: s.bytes, list: s.files })),\n    },\n    null,\n    2,\n  ) + \"\\n\",\n);\n\nconsole.error(\n  `i18n-plan-shards: ${files.length} staged file(s), ${(total / 1024).toFixed(0)} KB → ${k} shard(s)` +\n    (files.length \u0026\u0026 files.length \u003c MIN_FILES ? ` (below I18N_SHARD_MIN_FILES=${MIN_FILES}, single shard)` : \"\"),\n);\nshards.forEach((s, i) =\u003e {\n  if (k) console.error(`  shard-${i}: ${s.files.length} file(s), ${(s.bytes / 1024).toFixed(0)} KB`);\n});\n\n// Matrix for strategy.matrix. Always at least one vector — GitHub rejects an\n// empty matrix — so with nothing staged we still emit shard 0 and the workflow\n// skips the translate job on shard_count=0.\nconst include = (k ? shards : [{ files: [], bytes: 0 }]).map((s, i) =\u003e ({\n  shard: i,\n  files: s.files.length,\n  kb: Math.round(s.bytes / 1024),\n}));\nprocess.stdout.write(JSON.stringify({ include }));\n"])</script>
795<script>self.__next_f.push([1,"6e:Td48,"])</script>
795<script>self.__next_f.push([1,"#!/usr/bin/env node\n// Print every page this run tried to translate but produced no file for, one\n// \"locale/path.mdx\" per line.\n//\n// The validator-based detector in find-broken-translations.sh can only see\n// pages that EXIST and fail to build. When lingo fails a page outright it\n// writes nothing, so retry and fallback both skip it and the only trace is\n// nav-apply's coverage warning (German shipped 399/401 this way). This closes\n// that gap by comparing what was staged against what came back.\n//\n// \"Tried to translate\" is read from shards/plan.json, which lists exactly what\n// the plan job staged. That matters: a locale mid-backfill is legitimately\n// missing pages it was never asked to translate, and those must stay omitted\n// from the nav rather than be filled with English.\n//\n// Shards that never reported are excluded via I18N_MISSING_SHARDS. Their pages\n// are missing because the shard died, not because the model failed them; the\n// fix there is re-running, and assemble already opens a draft PR naming them.\n// Falling them back to English would bury a whole shard's worth of work.\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst ROOT = path.join(__dirname, \"..\");\nconst PLAN = path.join(ROOT, \"shards\", \"plan.json\");\n\n// No plan (a local run, or a pipeline that predates the shard matrix): nothing\n// to compare against, so report nothing rather than guess.\nif (!fs.existsSync(PLAN)) process.exit(0);\n\nlet plan;\ntry {\n  plan = JSON.parse(fs.readFileSync(PLAN, \"utf8\"));\n} catch {\n  process.exit(0);\n}\n\nconst targets = JSON.parse(fs.readFileSync(path.join(ROOT, \"i18n.json\"), \"utf8\")).locale.targets;\nconst locales = process.env.I18N_LOCALE ? [process.env.I18N_LOCALE] : targets;\n\nconst skipped = new Set(\n  (process.env.I18N_MISSING_SHARDS || \"\").split(/\\s+/).filter(Boolean).map(Number),\n);\n\nconst staged = (plan.shards || [])\n  .filter((s) =\u003e !skipped.has(s.shard))\n  .flatMap((s) =\u003e s.list || [])\n  // Only pages. Specs fall back through fix-i18n-links' existence check, and\n  // _nav-labels.mdx has its own handling in sync-docs-nav.\n  .filter((f) =\u003e f.endsWith(\".mdx\") \u0026\u0026 f !== \"_nav-labels.mdx\")\n  // A source deleted mid-run has nothing to fall back to.\n  .filter((f) =\u003e fs.existsSync(path.join(ROOT, f)));\n\n// A handful of missing pages is the per-page failure this exists to repair.\n// A locale missing most of what was staged is systemic — the provider refused,\n// or a whole locale never ran — and filling it with English would turn \"not\n// translated yet\" into a locale that looks complete but reads as English.\n// Leaving those absent keeps nav-apply's existing behaviour: it omits pages\n// that do not exist, and skips a locale with none. Same threshold and framing\n// as i18n:retry's I18N_RETRY_MAX.\nconst MAX = parseInt(process.env.I18N_MISSING_MAX || \"25\", 10) || 25;\n\nconst out = [];\nfor (const locale of locales) {\n  const gaps = staged.filter((src) =\u003e !fs.existsSync(path.join(ROOT, locale, src)));\n  if (gaps.length \u003e MAX) {\n    console.error(\n      `::notice::${locale}: ${gaps.length} of ${staged.length} staged pages are missing, over I18N_MISSING_MAX=${MAX} — leaving them absent rather than filling the locale with English. Re-run the backfill for ${locale}.`,\n    );\n    continue;\n  }\n  for (const src of gaps) out.push(`${locale}/${src}`);\n}\n\nif (out.length) process.stdout.write([...new Set(out)].sort().join(\"\\n\") + \"\\n\");\n"])</script>
795<script>self.__next_f.push([1,"56:[\"$\",\"$L5c\",null,{\"customJsDisabled\":false,\"jsFiles\":[{\"_id\":\"68fa247fecd2c7b3d7924aa7\",\"filePath\":\"scripts/sitemap.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$5d\"},{\"_id\":\"6986801af9e80a68c4b35856\",\"filePath\":\"scripts/sync-docs-nav.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$5e\"},{\"_id\":\"699954eb3a1020f95b26bba4\",\"filePath\":\"linkedin.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"_linkedin_partner_id = \\\"8728452\\\";\\nwindow._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];\\nwindow._linkedin_data_partner_ids.push(_linkedin_partner_id);\\n\\n(function(l) {\\n  if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};\\n  window.lintrk.q=[]}\\n  var s = document.getElementsByTagName(\\\"script\\\")[0];\\n  var b = document.createElement(\\\"script\\\");\\n  b.type = \\\"text/javascript\\\"; b.async = true;\\n  b.src = \\\"https://snap.licdn.com/li.lms-analytics/insight.min.js\\\";\\n  s.parentNode.insertBefore(b, s);\\n})(window.lintrk);\"},{\"_id\":\"69a0b56c86c4ce89343918e5\",\"filePath\":\"structured-data.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$5f\"},{\"_id\":\"6a553d067ec0f75650826f5f\",\"filePath\":\"scripts/fix-i18n-links.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$60\"},{\"_id\":\"6a62328a1918efd6e375470e\",\"subdomain\":\"helius\",\"filePath\":\"scripts/fix-i18n-frontmatter.js\",\"__v\":0,\"content\":\"$61\"},{\"_id\":\"6a639e4c1918efd6e38c14c6\",\"filePath\":\"scripts/find-unparseable-frontmatter.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$62\"},{\"_id\":\"6a67aaf6cf95a94df09dc692\",\"subdomain\":\"helius\",\"filePath\":\"scripts/check-i18n-integrity.js\",\"__v\":0,\"content\":\"$63\"},{\"_id\":\"6a67bca8cf95a94df02e2e2b\",\"filePath\":\"scripts/i18n-health-report.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$64\"},{\"_id\":\"6a6a396fcf95a94df00e6e22\",\"filePath\":\"scripts/locales.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$65\"},{\"_id\":\"6a6b7f21edaef26ce0785c66\",\"subdomain\":\"helius\",\"filePath\":\"scripts/check-anchors.js\",\"__v\":0,\"content\":\"$66\"},{\"_id\":\"6a6b7f21edaef26ce0785cc5\",\"filePath\":\"scripts/mdx-anchors.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$67\"},{\"_id\":\"6a6cf823edaef26ce0a4e165\",\"filePath\":\"scripts/nav-pages.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$68\"},{\"_id\":\"6a7b2f46f5b36d40d3f402c1\",\"filePath\":\"scripts/fix-i18n-jsx-attributes.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$69\"},{\"_id\":\"6a9b358f3683460af5997ae6\",\"subdomain\":\"helius\",\"filePath\":\"scripts/check-llms-coverage.js\",\"__v\":0,\"content\":\"$6a\"},{\"_id\":\"6a9ef1c23683460af55c99ee\",\"filePath\":\"privacy-embed.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$6b\"},{\"_id\":\"6aa8c6ae7b296854f2ffad32\",\"filePath\":\"scripts/i18n-merge-locks.js\",\"subdomain\":\"helius\",\"__v\":0,\"content\":\"$6c\"},{\"_id\":\"6aa8c6ae7b296854f2ffad6d\",\"subdomain\":\"helius\",\"filePath\":\"scripts/i18n-plan-shards.js\",\"__v\":0,\"content\":\"$6d\"},{\"_id\":\"6ab577b7e81de3b17772b3b1\",\"subdomain\":\"helius\",\"filePath\":\"scripts/find-missing-translations.js\",\"__v\":0,\"content\":\"$6e\"}]}]\n"])</script>
795<script>self.__next_f.push([1,"71:T1c7b5,"])</script>
795<script>self.__next_f.push([1,"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`When building applications that need to respond to on-chain changes, polling RPC endpoints for account updates is both inefficient and slow. Account subscriptions solve this by delivering real-time updates about account state changes directly to your application.`}),`\n`,_jsx(_components.p,{children:`This guide covers everything you need to know about account subscriptions: what they are, how they work, and how to optimize them for your specific use case.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`the-account-model-context`,children:`The account model context`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Skip this section if you’re familiar with Solana accounts and their structure.`})}),`\n`,_jsx(_components.p,{children:`Solana uses an account-based model where every piece of data lives in an account - a container that holds both data and metadata. Each account has:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Data`}),`: The actual bytes storing program state, token balances, or other information`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Owner`}),`: The program that controls this account and can modify its data`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Lamports`}),`: The account’s SOL balance for rent exemption`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Executable`}),`: Whether this account contains program code`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Programs are stateless - they don’t store data internally. Instead, they create and manage separate accounts to store their state. When you interact with a program, you pass in the accounts it should read from or write to.`}),`\n`,_jsx(_components.p,{children:`This design makes account subscriptions powerful: you can watch for changes to specific accounts, all accounts owned by a program, or accounts matching certain criteria.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`basic-account-subscription`,children:`Basic account subscription`}),`\n`,_jsx(_components.p,{children:`Let’s start with a simple example that subscribes to changes in token accounts. This script will notify you whenever token balances change:`}),`\n`,_jsx(CodeBlock,{filename:``,expandable:`true`,numberOfLines:`75`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,
795numberOfLines:`75`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`subscribe`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CommitmentLevel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SubscribeUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`LaserstreamConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'helius-laserstream'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bs58`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'bs58'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Utility function to recursively convert Buffer objects to base58 strings`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` convertBuffersToBase58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` any`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` any`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`  if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` obj`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` undefined`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`    return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`  if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`isBuffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`    return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bs58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`encode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`  if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Array`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`isArray`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`    return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`convertBuffersToBase58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`  if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`typeof`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` obj`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'object'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` any`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {};`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`    for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`      if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`hasOwnProperty`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` convertBuffersToBase58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`      }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    }`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`    return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`  return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'🏦 Basic Account Subscription Example'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` LaserstreamConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    apiKey:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'YOUR_API_KEY'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// from https://dashboard.helius.dev/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    endpoint:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://laserstream-mainnet-ewr.helius-rpc.com'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// pick the closest region`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  };`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    accounts:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`      \"token-accounts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        account:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [], `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`}
795,children:`// Specific account pubkeys (empty = all)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Token program`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        filters:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`          {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`            // Only token accounts (165 bytes)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`            datasize:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 165`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`          }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`        ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`      }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    commitment:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` CommitmentLevel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`CONFIRMED`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    transactions:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`slots:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`transactionsStatus:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`blocks:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`blocksMeta:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`entry:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`accountsDataSlice:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  };`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` stream`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` subscribe`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` SubscribeUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=\u003e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`      const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` readableUpdate`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` convertBuffersToBase58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`      console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'🏦 Account Update:'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`readableUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`    async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=\u003e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'❌ Stream error:'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  );`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`✅ Account subscription started (id: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`stream`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\")`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'SIGINT'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, () `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=\u003e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`🛑 Cancelling stream...'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    stream`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`cancel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`exit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  });`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`catch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`When you run this basic subscription, you’ll see real-time account updates streaming to your console:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`20`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes g
795ithub-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`20`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🏦 Basic Account Subscription Example`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✅ Account subscription started (id: xyz789)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🏦 Account Update: {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`  \"filters\": [\"token-accounts\"],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`  \"account\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`    \"account\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"pubkey\": \"BKMHWYLAX4un3HUbR7a3u9jPmzCiLNa4mSj1RiX11eWF\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"lamports\": \"2039280\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"owner\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"rentEpoch\": \"18446744073709551615\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"data\": \"2NUx6Xw9QkmgJCyYUP3d8TPsjJhUpSM7hcy9Fi1juGc6g9DrpPFyGyvBZzu9qiAjFtyEDbNiLHYFJsq1dD5Wxr4LPcF9Dqs4AJa15L1N92pfinnoKVfCsVCcybhV1iwkCCTMeMyxTRA4tqJm6MrLwgKG3HmmwVdhsEuXjSsGJFXGzgfgPHucVzBEgAqcpH9JPpoaQyis2MFwRJLjenxzkE8xJzWHv1Zk2T\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"writeVersion\": \"2697618495\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`      \"txnSignature\": \"5C9Hr5nG2j8eQz6inxPmfyjbYdmXddzUDyR1iQgEnjYQ3RNvuP4Zzc8t1enLNy7Rk8KNCtQPEQztENYWxkt9GaVD\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`    },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`    \"slot\": \"352366983\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`  },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`  \"createdAt\": \"2025-07-10T11:56:22.027Z\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`What just happened?`}),` Our subscription worked perfectly! We asked Laserstream to notify us about token account changes, and it delivered an update about account `,_jsx(_components.code,{children:`BKMHWYLAX4un3HUbR7a3u9jPmzCiLNa4mSj1RiX11eWF`}),`.`]}),`\n`,_jsx(_components.p,{children:`This account has:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`2,039,280 lamports`}),` (~0.002 SOL balance - this is the rent-exempt amount for this token account)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Owner program`}),` `,_jsx(_components.code,{children:`TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`}),` (this is the SPL Token program)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Transaction signature`}),` `,_jsx(_components.code,{children:`5C9Hr5nG2j8eQz6inxPmfyjbYdmXddzUDyR1iQgEnjYQ3RNvuP4Zzc8t1enLNy7Rk8KNCtQPEQztENYWxkt9GaVD`}),` showing which specific transaction caused this account to change`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Slot 352366983`}),` indicating when this update occurred on the blockchain`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Data field`}),` containing 165 bytes of account data encoded as base58`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`understanding-account-filtering-with-datasize`,children:`Understanding account filtering with datasize`}),`\n`,_jsxs(_components.p,{children:[`The data field is crucial - it contains the actual token account structure. Let’s use this understanding for `,_jsx(_components.strong,{children:`smart account filtering`}),`.`]}),`\n`,_jsx(Heading,{level:`4`,id:`why-use-datasize-filtering%3F`,children:`Why use datasize filtering?`}),`\n`,_jsxs(_components.p,{children:[`To understand why we need filtering, let’s first understand what token accounts actually are. `,_jsx(_components.strong,{children:`For every token a wallet holds, there’s a separate account on-chain.`}),` If your wallet holds 3 different tokens (USDC, BONK, and SOL), you actually have 1 wallet account (your main SOL account) plus 3 token accounts (one for each token type). Each token account is exactly 165 bytes and stores: which token it holds (mint address), who owns it (your wallet address), and how much of that token it contains (amount).`]}),`\n`,_jsxs(_components.p,{children:[`The Token Program owns `,_jsx(_components.strong,{children:`millions of accounts`}),` on Solana, but not all of them are what we think of as “token accounts” holding user balances. Here’s what happens with and without filtering:`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Without filtering - The flood:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes g
795ithub-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`accounts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`  \"all-token-program-accounts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// ❌ Overwhelming!`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This subscribes to ALL accounts owned by the Token Program, which includes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Token accounts`}),` (165 bytes) - User balances: millions of accounts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Mint accounts`}),` (82 bytes) - Token definitions: hundreds of thousands of accounts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Multisig accounts`}),` (355 bytes) - Shared wallet controls: tens of thousands of accounts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Associated Token Program accounts`}),` (various sizes) - millions of accounts`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Result:`}),` Your application receives millions of account updates constantly, most of which you don’t care about.`]})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`With smart filtering - Surgical precision:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,
795numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`accounts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`  \"token-accounts-only\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    filters:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [{ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`datasize:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 165`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// ✅ Only standard token accounts`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This filters down to only the 165-byte accounts, which are specifically the user token balance accounts - exactly what you want for tracking token transfers, balance changes, and portfolio updates.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`The difference:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Without filtering:`}),` Millions of account updates (mint creations, multisig changes, etc.)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`With datasize filtering:`}),` Only token balance changes`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`That’s a significant reduction in noise, focusing only on the accounts that actually represent user token holdings.`}),`\n`,_jsx(Heading,{level:`4`,id:`where-does-165-bytes-come-from%3F`,children:`Where does 165 bytes come from?`}),`\n`,_jsxs(_components.p,{children:[`This isn’t magic - it comes from the `,_jsx(_components.a,{href:`https://github.com/solana-program/token/blob/d05d10807fe8cf157f6e1f024c708274c30c953a/program/src/state.rs#L87`,children:`SPL Token program’s account structure`}),`. Looking at the source code, we can see the `,_jsx(_components.code,{children:`Account`}),` struct defines exactly 165 bytes:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`rust`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`rust`,children:_jsxs(_components.code,{language:`rust`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`pub`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` struct`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` mint`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Pubkey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,                    `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 32 bytes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` owner`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Pubkey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,                   `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 32 bytes  `})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` amount`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` u64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,                     `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 8 bytes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` delegate`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` COption`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Pubkey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003e,       `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 4 + 32 bytes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` state`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` AccountState`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,             `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 1 byte`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` is_native`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` COption`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`u64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003e,         `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 4 + 8 bytes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` delegated_amount`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` u64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,           `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 8 bytes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    pub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` close_authority`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` COption`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Pubkey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003e `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 4 + 32 bytes`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Total: 32+32+8+36+1+12+8+36 = 165 bytes`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This fixed size allows us to filter precisely for standard token accounts and exclude:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Mint accounts (82 bytes)`}),`\n`,_jsx(_components.li,{children:`Multisig accounts (355 bytes)`}),`\n`,_jsx(_components.li,{children:`Associated token account program accounts`}),`\n`,_jsx(_components.li,{children:`Other token-related accounts with different sizes`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For calculating account sizes in other programs, check out the `,_jsx(_components.a,{href:`https://www.anchor-lang.com/docs/references/space`,children:`Anchor Space Reference`}),` - it shows you how much space different data types take (Pubkey = 32 bytes, u64 = 8 bytes, etc.).`]}),`\n`,_jsx(Heading,{level:`4`,id:`decoding-the-account-structure`,children:`Decoding the account structure`}),`\n`,_jsx(_components.p,{children:`Now that we understand why we filtered for 165 bytes, let’s decode what’s inside our example account:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Base58 data: 2NUx6Xw9QkmgJCyYUP3d8TPsjJhUpSM7hcy9Fi1juGc6g9...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`The 165 bytes break down as:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bytes 0-31:`}),` Mint address (which token this account holds)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bytes 32-63:`}),` Owner address (who owns this token account)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bytes 64-71:`}),` Token amount (how many tokens are in the account)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bytes 72-164:`}),` Additional metadata (delegate, state, close authority, etc.)`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This structured approach gives us surgical precision: we only receive updates for standard token accounts, not the noise from other account types.`}),`\n`,_jsx(Heading,{level:`3`,id:`combining-filters%3A-datasize-%2B-memcmp-for-laser-precision`,children:`Combining filters: datasize + memcmp for laser precision`}),`\n`,_jsxs(_components.p,{children:[`Now that we know the mint address lives at bytes 0-31, we can get even more specific. Let’s say we only want to monitor USDC token accounts. We can combine our `,_jsx(_components.c
795ode,{children:`datasize`}),` filter with a `,_jsx(_components.code,{children:`memcmp`}),` filter to target the exact mint address:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` USDC_MINT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  accounts:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`    \"usdc-only\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`      owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`      filters:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`        { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`datasize:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 165`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },                    `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Standard token accounts only`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`        { `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`          memcmp:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`            offset:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,                         `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Mint address starts at byte 0`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`            base58:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` USDC_MINT`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`                  // Match this specific mint`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`          }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`        }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`      ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`  // ... other config`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Progressive filtering strategy:`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Owner filter:`}),` “Give me accounts owned by Token Program” (millions of accounts)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Datasize filter:`}),` “But only 165-byte standard token accounts” (hundreds of thousands)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Memcmp filter:`}),` “And only those holding USDC” (thousands)`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This progression from broad to specific is the key to efficie
795nt account monitoring. Each filter narrows down the result set, so you only receive the exact updates you care about.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Important:`}),` All filters use AND logic - every condition must be met for an account update to trigger.`]}),`\n`,_jsx(Heading,{level:`3`,id:`reading-usdc-account-updates%3A-who%2C-how-much%2C-where%3F`,children:`Reading USDC account updates: Who, How Much, Where?`}),`\n`,_jsx(_components.p,{children:`Now let’s see what these filtered updates actually contain. Let’s create a USDC-specific monitor that answers the key questions when a token account changes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Who`}),` owns this token account?`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`How much`}),` USDC does it now contain?`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Where`}),` (which specific account) changed?`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When`}),` did this change happen?`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`What transaction`}),` caused the change?`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The raw account updates contain binary data that we need to decode. Since Solana uses base58 encoding for addresses and signatures, we use the `,_jsx(_components.code,{children:`bs58.encode()`}),` function to convert binary Buffer objects to readable strings.`]}),`\n`,_jsx(CodeBlock,{filename:``,expandable:`true`,numberOfLines:`69`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,
795numberOfLines:`69`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`subscribe`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CommitmentLevel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SubscribeUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`LaserstreamConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'helius-laserstream'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bs58`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'bs58'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'USDC Account Monitor'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` LaserstreamConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    apiKey:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'YOUR_API_KEY'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// from https://dashboard.helius.dev/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    endpoint:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://laserstream-mainnet-ewr.helius-rpc.com'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// pick the closest region`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  };`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` USDC_MINT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    accounts:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`      \"usdc-accounts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        account:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`        filters:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`          { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`datasize:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 165`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },                           `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Standard token accounts`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`          { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`memcmp:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`offset:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`base58:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` USDC_MINT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } } `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Only USDC`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`        ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`      }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    commitment:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` CommitmentLevel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`CONFIRMED`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    transactions:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`slots:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`transactionsStatus:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`blocks:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`blocksMeta:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`entry:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {}, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`accountsDataSlice:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  };`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` stream`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` subscribe`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` SubscribeUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=\u003e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`      explainAccountUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`    async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=\u003e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Stream error:'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  );`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Account monitor started (id: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`}
795,children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`stream`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\")`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'SIGINT'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, () `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=\u003e`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Cancelling stream...'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    stream`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`cancel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`exit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  });`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` explainAccountUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` SubscribeUpdate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`  if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` account`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`  // Decode the key addresses`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` tokenAccountAddress`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bs58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`encode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pubkey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` transactionSignature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`txnSignature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bs58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`encode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`txnSignature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Unknown'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`  // Extract and decode the token account data (165 bytes)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`}
795,children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` walletOwner`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bs58`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`encode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`32`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));       `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Bytes 32-63: Owner`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` tokenAmount`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`readBigUInt64LE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);              `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Bytes 64-71: Amount`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`  const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` usdcAmount`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Number`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`tokenAmount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1_000_000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;                `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Convert to USDC (6 decimals)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Account: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`}
795,children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`tokenAccountAddress`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Owner: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`walletOwner`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Balance: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`usdcAmount`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toLocaleString`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" USDC`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Slot: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`update`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`slot`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Transaction: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`}
795,children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`transactionSignature`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"...`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`  console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'---'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`catch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`When you run this USDC monitor, you’ll see clean, structured output like this:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`16`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`USDC Account Monitor`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Account monitor started (id: abc123)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Account: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Owner: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Balance: 1,500 USDC`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Slot: 352154103`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Transaction: 5v8fy0eJ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`---`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Account: BQy5rNRxLfcaK6554PMzsg4VJsFXzwGnAnayb8TZKgZX`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Owner: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Balance: 0 USDC`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Slot: 352154103`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Transaction: 5v8fy0eJ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`---`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Each block represents a USDC account that changed state. The first account now holds 1,500 USDC, while the second account has been emptied to 0 USDC. You get the current balance immediately after each transaction, along with which specific account changed and when.`}),`\n`,_jsx(_components.p,{children:`Account subscriptions show you the end result of what happened to each account, not the transaction details. If you need to understand the full transaction context (who sent to whom, fees, etc.), you’d need to fetch the full transaction using the signature shown.`}),`\n`,_jsx(Heading,{level:`2`,id:`complete-filtering-reference`,children:`Complete filtering reference`}),`\n`,_jsxs(_components.p,{children:[`Beyond the basic `,_jsx(_components.c
795ode,{children:`owner`}),`, `,_jsx(_components.code,{children:`datasize`}),`, and `,_jsx(_components.code,{children:`memcmp`}),` filters we’ve used, account subscriptions support additional filtering options to further narrow your results:`]}),`\n`,_jsx(Heading,{level:`3`,id:`specific-account-filtering`,children:`Specific account filtering`}),`\n`,_jsx(_components.p,{children:`Monitor exact accounts by their public keys:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`accounts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`  \"specific-accounts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    account:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`      \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`      \"BQy5rNRxLfcaK6554PMzsg4VJsFXzwGnAnayb8TZKgZX\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This approach works well when you know exactly which accounts matter to your application - like monitoring your application’s treasury accounts or specific user accounts.`}),`\n`,_jsxs(_components.p,{children:[`For very large account sets, explicit pubkey lists get expensive — 32 bytes per account in the subscribe request. Bey
795ond ~10,000 accounts, use a compressed `,_jsx(_components.a,{href:`/laserstream/cuckoo-filters`,children:`cuckoo filter`}),` (~3–4 bytes per account) to track hundreds of thousands of accounts in a single stream. Available in the Rust and JavaScript SDKs.`]}),`\n`,_jsx(Heading,{level:`3`,id:`combined-filtering-strategies`,children:`Combined filtering strategies`}),`\n`,_jsx(_components.p,{children:`The power comes from combining multiple filter types. Here’s the mental model:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cast a wide net`}),` with `,_jsx(_components.code,{children:`owner`}),` - “Give me all accounts managed by this program”`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Filter by structure`}),` with `,_jsx(_components.code,{children:`datasize`}),` - “But only accounts of this specific type”`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Target specific data`}),` with `,_jsx(_components.code,{children:`memcmp`}),` - “And only those containing this specific information”`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Monitor known accounts`}),` with `,_jsx(_components.code,{children:`account`}),` - “Or just watch these exact accounts I care about”`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`For example, monitoring high-value USDC accounts:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,
795numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`accounts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`  \"high-value-usdc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`    filters:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`      { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`datasize:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 165`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },                           `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Token accounts only`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`      { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`memcmp:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`offset:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`base58:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` USDC_MINT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } } `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// USDC only`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`      // Note: You'd implement balance filtering in your callback logic`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`    ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`  }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The key insight is that each filter reduces the volume of updates you receive. Without filtering, you might get overwhelming amounts of account updates. With smart filtering, you get only the updates that matter to your specific use case.`}),`\n`,_jsx(Heading,{level:`3`,id:`understanding-the-bigger-picture`,children:`Understanding the bigger picture`}),`\n`,_jsx(_components.p,{children:`Think of account subscriptions as watching a live feed of database changes. Solana’s state is essentially a massive key-value store where each account is an entry. When programs execute, they modify these accounts. Your subscription lets you watch specific entries change in real-time.`}),`\n`,_jsx(_components.p,{children:`The filtering system works like database indexes - you’re not just watching “all changes” but rather “changes to accounts that match these criteria.” This makes it possible to build responsive applications that react immediately to relevant on-chain events without overwhelming your system with irrelevant data.`}),`\n`,_jsx(Heading,{level:`2`,id:`applying-this-pattern-to-other-programs`,children:`Applying this pattern to other programs`}),`\n`,_jsx(_components.p,{children:`The approach we’ve learned works for any Solana program. Here’s the general pattern:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Research the account structure`}),` - Check the program’s source code or documentation`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Start with owner filtering`}),` - Target the program that manages the accounts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apply structural filters`}),` - Use account size, data patterns, or other characteristics to narrow down to specific account types`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Add targeted filters`}),` - Focus on specific accounts, states, or data values that matter to your application`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}"])</script>
795<script>self.__next_f.push([1,"57:[\"$\",\"$L6f\",null,{\"slug\":\"laserstream/guides/account-subscription\",\"pageMetadata\":\"$4c:props:pageMetadata\",\"theme\":\"luma\",\"children\":[\"$\",\"$L70\",null,{\"mdxSource\":{\"compiledSource\":\"$71\",\"frontmatter\":{},\"scope\":{\"codeStyling\":\"system\",\"config\":{},\"pageMetadata\":{\"title\":\"Account Subscription and Updates\",\"og:title\":\"Account Subscription - Helius LaserStream\",\"sidebarTitle\":\"Account Subscription\",\"description\":\"Learn how to subscribe to account updates and efficiently track on-chain state changes using Laserstream.\",\"og:description\":\"Subscribe to Solana account updates and track on-chain state changes using LaserStream\",\"href\":\"/laserstream/guides/account-subscription\"}}},\"mdxSourceWithNoJs\":\"$undefined\",\"displayDomain\":\"www.helius.dev/docs\"}]}]\n"])</script>
795<script>self.__next_f.push([1,"5b:[\"$\",\"style\",\"1\",{\"data-custom-css-index\":1,\"data-custom-css-path\":\"styles.css\",\"dangerouslySetInnerHTML\":{\"__html\":\"/*\\n * Custom CSS overrides for the Mintlify theme.\\n *\\n * Navbar search \u0026 assistant buttons:\\n * Mintlify expands the \\\"Search... ⌘K\\\" bar and \\\"Ask Assistant ⌘I\\\" button from\\n * icons into full buttons once the navbar container reaches 1500px (via\\n * @[1500px]/navbar container-query utilities in the theme markup). We keep\\n * them collapsed as icons until 1800px instead, by re-applying the collapsed\\n * styles in the 1500px–1800px range.\\n */\\n@container navbar (width \u003e= 1500px) and (width \u003c 1800px) {\\n  #navbar #search-bar-entry,\\n  #navbar button[aria-label=\\\"Toggle assistant panel\\\"] {\\n    padding: 0 !important;\\n    width: 2.25rem !important;\\n    justify-content: center !important;\\n  }\\n\\n  /* \\\"Search...\\\" label, ⌘K badge, \\\"Ask Assistant\\\" label, and ⌘I badge */\\n  #navbar #search-bar-entry \u003e div \u003e div,\\n  #navbar #search-bar-entry \u003e span,\\n  #navbar button[aria-label=\\\"Toggle assistant panel\\\"] \u003e span {\\n    display: none !important;\\n  }\\n}\\n\"}}]\n"])</script>
795</body></html>

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.