[{"data":1,"prerenderedAt":931},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-architecture":137,"-getting-started-architecture-surround":926},[4,27,57,79,97,115],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F4.architecture",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Mini Apps","i-lucide-smartphone","\u002Fmini-apps","2.mini-apps",[33,37,41,45,49,53],{"title":34,"path":35,"stem":36},"Provider runtime","\u002Fmini-apps\u002Fprovider-runtime","2.mini-apps\u002F1.provider-runtime",{"title":38,"path":39,"stem":40},"Ethereum provider","\u002Fmini-apps\u002Fethereum-provider","2.mini-apps\u002F2.ethereum-provider",{"title":42,"path":43,"stem":44},"Language and i18n","\u002Fmini-apps\u002Flanguage-i18n","2.mini-apps\u002F3.language-i18n",{"title":46,"path":47,"stem":48},"Local simulator","\u002Fmini-apps\u002Flocal-simulator","2.mini-apps\u002F4.local-simulator",{"title":50,"path":51,"stem":52},"Nuxt module","\u002Fmini-apps\u002Fnuxt-module","2.mini-apps\u002F5.nuxt-module",{"title":54,"path":55,"stem":56},"Host runtime","\u002Fmini-apps\u002Fhost-runtime","2.mini-apps\u002F6.host-runtime",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":26},"Auth","i-lucide-key-round","\u002Fauth","3.auth",[63,67,71,75],{"title":64,"path":65,"stem":66},"Nimiq Better Auth","\u002Fauth\u002Fnimiq-better-auth","3.auth\u002F1.nimiq-better-auth",{"title":68,"path":69,"stem":70},"Cross-device approval","\u002Fauth\u002Fcross-device","3.auth\u002F2.cross-device",{"title":72,"path":73,"stem":74},"Nimiq cross-device adapter","\u002Fauth\u002Fnimiq-adapter","3.auth\u002F3.nimiq-adapter",{"title":76,"path":77,"stem":78},"Security model","\u002Fauth\u002Fsecurity-model","3.auth\u002F4.security-model",{"title":80,"icon":81,"path":82,"stem":83,"children":84,"page":26},"Utilities","i-lucide-wrench","\u002Futilities","4.utilities",[85,89,93],{"title":86,"path":87,"stem":88},"Universal Nimiq facade","\u002Futilities\u002Funimiq","4.utilities\u002F1.unimiq",{"title":90,"path":91,"stem":92},"ERC-20 helpers","\u002Futilities\u002Funerc20","4.utilities\u002F2.unerc20",{"title":94,"path":95,"stem":96},"Better Auth ledger","\u002Futilities\u002Fledger","4.utilities\u002F3.ledger",{"title":98,"icon":99,"path":100,"stem":101,"children":102,"page":26},"Testing","i-lucide-test-tube-2","\u002Ftesting","5.testing",[103,107,111],{"title":104,"path":105,"stem":106},"Local scenarios","\u002Ftesting\u002Flocal-scenarios","5.testing\u002F1.local-scenarios",{"title":108,"path":109,"stem":110},"Vitest helpers","\u002Ftesting\u002Fvitest-helpers","5.testing\u002F2.vitest-helpers",{"title":112,"path":113,"stem":114},"Bridge mode","\u002Ftesting\u002Fbridge-mode","5.testing\u002F3.bridge-mode",{"title":116,"icon":117,"path":118,"stem":119,"children":120,"page":26},"Reference","i-lucide-book-open","\u002Freference","6.reference",[121,125,129,133],{"title":122,"path":123,"stem":124},"Packages","\u002Freference\u002Fpackages","6.reference\u002F1.packages",{"title":126,"path":127,"stem":128},"Endpoints","\u002Freference\u002Fendpoints","6.reference\u002F2.endpoints",{"title":130,"path":131,"stem":132},"Runtime support","\u002Freference\u002Fruntime-support","6.reference\u002F3.runtime-support",{"title":134,"path":135,"stem":136},"Public API exports","\u002Freference\u002Fpublic-api","6.reference\u002F4.public-api",{"id":138,"title":23,"body":139,"description":920,"extension":921,"links":922,"meta":923,"navigation":233,"path":24,"seo":924,"stem":25,"__hash__":925},"docs\u002F1.getting-started\u002F4.architecture.md",{"type":140,"value":141,"toc":914},"minimark",[142,146,151,158,180,434,437,440,444,450,465,522,527,530,534,544,558,561,688,691,698,702,712,718,724,893,896,907,910],[143,144,145],"p",{},"The SDK separates runtime access from auth decisions. Browser packages ask providers to do work. Server packages verify proofs and create Better Auth sessions.",[147,148,150],"h2",{"id":149},"runtime-access-stays-in-the-browser","Runtime access stays in the browser",[143,152,153,157],{},[154,155,156],"code",{},"@onmax\u002Fnimiq-mini-app-kit"," waits for provider surfaces and validates their shape.",[159,160,161,168,174,177],"ul",{},[162,163,164,167],"li",{},[154,165,166],{},"window.nimiq"," is the Nimiq mini-app provider.",[162,169,170,173],{},[154,171,172],{},"window.ethereum"," is the EIP-1193 provider surface.",[162,175,176],{},"EIP-6963 helpers announce and discover Ethereum providers.",[162,178,179],{},"Development helpers install simulated providers when the real host is not available.",[181,182,188],"pre",{"className":183,"code":184,"filename":185,"language":186,"meta":187,"style":187},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initMiniAppEthereumProvider, initMiniAppProvider } from '@onmax\u002Fnimiq-mini-app-kit'\n\nexport async function detectMiniAppRuntime() {\n  const [nimiq, ethereum] = await Promise.allSettled([\n    initMiniAppProvider({ timeout: 2_000 }),\n    initMiniAppEthereumProvider({ timeout: 2_000 }),\n  ])\n\n  return {\n    nimiq: nimiq.status === 'fulfilled',\n    ethereum: ethereum.status === 'fulfilled',\n  }\n}\n","app\u002Fruntime.ts","ts","",[154,189,190,228,235,258,298,328,350,356,361,369,398,422,428],{"__ignoreMap":187},[191,192,195,199,203,207,210,213,216,219,222,225],"span",{"class":193,"line":194},"line",1,[191,196,198],{"class":197},"s7zQu","import",[191,200,202],{"class":201},"sMK4o"," {",[191,204,206],{"class":205},"sTEyZ"," initMiniAppEthereumProvider",[191,208,209],{"class":201},",",[191,211,212],{"class":205}," initMiniAppProvider",[191,214,215],{"class":201}," }",[191,217,218],{"class":197}," from",[191,220,221],{"class":201}," '",[191,223,156],{"class":224},"sfazB",[191,226,227],{"class":201},"'\n",[191,229,231],{"class":193,"line":230},2,[191,232,234],{"emptyLinePlaceholder":233},true,"\n",[191,236,238,241,245,248,252,255],{"class":193,"line":237},3,[191,239,240],{"class":197},"export",[191,242,244],{"class":243},"spNyl"," async",[191,246,247],{"class":243}," function",[191,249,251],{"class":250},"s2Zo4"," detectMiniAppRuntime",[191,253,254],{"class":201},"()",[191,256,257],{"class":201}," {\n",[191,259,261,264,267,270,272,275,278,281,284,288,291,294],{"class":193,"line":260},4,[191,262,263],{"class":243},"  const",[191,265,266],{"class":201}," [",[191,268,269],{"class":205},"nimiq",[191,271,209],{"class":201},[191,273,274],{"class":205}," ethereum",[191,276,277],{"class":201},"]",[191,279,280],{"class":201}," =",[191,282,283],{"class":197}," await",[191,285,287],{"class":286},"sBMFI"," Promise",[191,289,290],{"class":201},".",[191,292,293],{"class":250},"allSettled",[191,295,297],{"class":296},"swJcz","([\n",[191,299,301,304,307,310,313,316,320,322,325],{"class":193,"line":300},5,[191,302,303],{"class":250},"    initMiniAppProvider",[191,305,306],{"class":296},"(",[191,308,309],{"class":201},"{",[191,311,312],{"class":296}," timeout",[191,314,315],{"class":201},":",[191,317,319],{"class":318},"sbssI"," 2_000",[191,321,215],{"class":201},[191,323,324],{"class":296},")",[191,326,327],{"class":201},",\n",[191,329,331,334,336,338,340,342,344,346,348],{"class":193,"line":330},6,[191,332,333],{"class":250},"    initMiniAppEthereumProvider",[191,335,306],{"class":296},[191,337,309],{"class":201},[191,339,312],{"class":296},[191,341,315],{"class":201},[191,343,319],{"class":318},[191,345,215],{"class":201},[191,347,324],{"class":296},[191,349,327],{"class":201},[191,351,353],{"class":193,"line":352},7,[191,354,355],{"class":296},"  ])\n",[191,357,359],{"class":193,"line":358},8,[191,360,234],{"emptyLinePlaceholder":233},[191,362,364,367],{"class":193,"line":363},9,[191,365,366],{"class":197},"  return",[191,368,257],{"class":201},[191,370,372,375,377,380,382,385,388,390,393,396],{"class":193,"line":371},10,[191,373,374],{"class":296},"    nimiq",[191,376,315],{"class":201},[191,378,379],{"class":205}," nimiq",[191,381,290],{"class":201},[191,383,384],{"class":205},"status",[191,386,387],{"class":201}," ===",[191,389,221],{"class":201},[191,391,392],{"class":224},"fulfilled",[191,394,395],{"class":201},"'",[191,397,327],{"class":201},[191,399,401,404,406,408,410,412,414,416,418,420],{"class":193,"line":400},11,[191,402,403],{"class":296},"    ethereum",[191,405,315],{"class":201},[191,407,274],{"class":205},[191,409,290],{"class":201},[191,411,384],{"class":205},[191,413,387],{"class":201},[191,415,221],{"class":201},[191,417,392],{"class":224},[191,419,395],{"class":201},[191,421,327],{"class":201},[191,423,425],{"class":193,"line":424},12,[191,426,427],{"class":201},"  }\n",[191,429,431],{"class":193,"line":430},13,[191,432,433],{"class":201},"}\n",[143,435,436],{},"Use this when a route can render a \"connect from Nimiq Pay\" state before asking the wallet to sign.",[143,438,439],{},"Do not call provider waits from Better Auth server plugins, Nitro server routes, or Cloudflare Workers.",[147,441,443],{"id":442},"direct-auth-owns-same-device-sessions","Direct auth owns same-device sessions",[143,445,446,449],{},[154,447,448],{},"@onmax\u002Fbetter-auth-nimiq"," owns direct sign-in.",[451,452,453,456,459,462],"ol",{},[162,454,455],{},"The server issues a nonce and stores it with a TTL.",[162,457,458],{},"The client asks the Nimiq provider to sign the challenge.",[162,460,461],{},"The server verifies the public key, signature, address, and origin.",[162,463,464],{},"Better Auth creates the session.",[181,466,470],{"className":467,"code":468,"language":469,"meta":187,"style":187},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sequenceDiagram\n  participant Browser\n  participant NimiqPay as \"window.nimiq\"\n  participant Auth as \"Better Auth\"\n  Browser->>Auth: POST \u002Fnimiq\u002Fnonce\n  Auth-->>Browser: nonce, message, expiry\n  Browser->>NimiqPay: sign(message)\n  NimiqPay-->>Browser: publicKey, signature\n  Browser->>Auth: POST \u002Fnimiq\u002Fverify\n  Auth-->>Browser: session cookie + token\n","mermaid",[154,471,472,477,482,487,492,497,502,507,512,517],{"__ignoreMap":187},[191,473,474],{"class":193,"line":194},[191,475,476],{},"sequenceDiagram\n",[191,478,479],{"class":193,"line":230},[191,480,481],{},"  participant Browser\n",[191,483,484],{"class":193,"line":237},[191,485,486],{},"  participant NimiqPay as \"window.nimiq\"\n",[191,488,489],{"class":193,"line":260},[191,490,491],{},"  participant Auth as \"Better Auth\"\n",[191,493,494],{"class":193,"line":300},[191,495,496],{},"  Browser->>Auth: POST \u002Fnimiq\u002Fnonce\n",[191,498,499],{"class":193,"line":330},[191,500,501],{},"  Auth-->>Browser: nonce, message, expiry\n",[191,503,504],{"class":193,"line":352},[191,505,506],{},"  Browser->>NimiqPay: sign(message)\n",[191,508,509],{"class":193,"line":358},[191,510,511],{},"  NimiqPay-->>Browser: publicKey, signature\n",[191,513,514],{"class":193,"line":363},[191,515,516],{},"  Browser->>Auth: POST \u002Fnimiq\u002Fverify\n",[191,518,519],{"class":193,"line":371},[191,520,521],{},"  Auth-->>Browser: session cookie + token\n",[143,523,524,525,290],{},"Use this when the browser that starts the flow can access ",[154,526,166],{},[143,528,529],{},"Do not use it when the approval wallet lives on a second device.",[147,531,533],{"id":532},"cross-device-approval-owns-handoff-state","Cross-device approval owns handoff state",[143,535,536,539,540,543],{},[154,537,538],{},"@onmax\u002Fbetter-auth-cross-device"," owns the order lifecycle. ",[154,541,542],{},"@onmax\u002Fcross-device-nimiq"," supplies the Nimiq adapter.",[451,545,546,549,552,555],{},[162,547,548],{},"Desktop starts an order and receives a claim URL plus desktop token.",[162,550,551],{},"Phone claims the order and receives a challenge token.",[162,553,554],{},"Phone signs the challenge or transaction proof.",[162,556,557],{},"Desktop finalizes the order with the desktop token.",[143,559,560],{},"For login orders, the desktop receives the Better Auth session. For sign and transaction orders, the desktop receives the proof artifact.",[181,562,565],{"className":183,"code":563,"filename":564,"language":186,"meta":187,"style":187},"import { crossDevice } from '@onmax\u002Fbetter-auth-cross-device'\nimport { createNimiqCrossDeviceAdapter } from '@onmax\u002Fcross-device-nimiq\u002Fserver'\n\ncrossDevice({\n  endpointPrefix: '\u002Fcross-device',\n  adapters: [\n    createNimiqCrossDeviceAdapter({ appName: 'Arcade Rewards' }),\n  ],\n})\n","server\u002Fauth.ts",[154,566,567,586,606,610,620,636,646,673,680],{"__ignoreMap":187},[191,568,569,571,573,576,578,580,582,584],{"class":193,"line":194},[191,570,198],{"class":197},[191,572,202],{"class":201},[191,574,575],{"class":205}," crossDevice",[191,577,215],{"class":201},[191,579,218],{"class":197},[191,581,221],{"class":201},[191,583,538],{"class":224},[191,585,227],{"class":201},[191,587,588,590,592,595,597,599,601,604],{"class":193,"line":230},[191,589,198],{"class":197},[191,591,202],{"class":201},[191,593,594],{"class":205}," createNimiqCrossDeviceAdapter",[191,596,215],{"class":201},[191,598,218],{"class":197},[191,600,221],{"class":201},[191,602,603],{"class":224},"@onmax\u002Fcross-device-nimiq\u002Fserver",[191,605,227],{"class":201},[191,607,608],{"class":193,"line":237},[191,609,234],{"emptyLinePlaceholder":233},[191,611,612,615,617],{"class":193,"line":260},[191,613,614],{"class":250},"crossDevice",[191,616,306],{"class":205},[191,618,619],{"class":201},"{\n",[191,621,622,625,627,629,632,634],{"class":193,"line":300},[191,623,624],{"class":296},"  endpointPrefix",[191,626,315],{"class":201},[191,628,221],{"class":201},[191,630,631],{"class":224},"\u002Fcross-device",[191,633,395],{"class":201},[191,635,327],{"class":201},[191,637,638,641,643],{"class":193,"line":330},[191,639,640],{"class":296},"  adapters",[191,642,315],{"class":201},[191,644,645],{"class":205}," [\n",[191,647,648,651,653,655,658,660,662,665,667,669,671],{"class":193,"line":352},[191,649,650],{"class":250},"    createNimiqCrossDeviceAdapter",[191,652,306],{"class":205},[191,654,309],{"class":201},[191,656,657],{"class":296}," appName",[191,659,315],{"class":201},[191,661,221],{"class":201},[191,663,664],{"class":224},"Arcade Rewards",[191,666,395],{"class":201},[191,668,215],{"class":201},[191,670,324],{"class":205},[191,672,327],{"class":201},[191,674,675,678],{"class":193,"line":358},[191,676,677],{"class":205},"  ]",[191,679,327],{"class":201},[191,681,682,685],{"class":193,"line":363},[191,683,684],{"class":201},"}",[191,686,687],{"class":205},")\n",[143,689,690],{},"Use this when you need a QR, deep link, or second-screen approval.",[143,692,693,694,697],{},"Do not store the ",[154,695,696],{},"desktopToken"," in the phone flow. It belongs to the device that started the order.",[147,699,701],{"id":700},"utilities-stay-small","Utilities stay small",[143,703,704,707,708,711],{},[154,705,706],{},"@onmax\u002Funimiq"," provides a runtime-aware Nimiq facade. In Node.js and Cloudflare Workers, use an RPC URL because direct ",[154,709,710],{},"@nimiq\u002Fcore"," loading is not used there.",[143,713,714,717],{},[154,715,716],{},"@onmax\u002Funerc20"," talks to ERC-20 contracts through any EIP-1193 provider.",[143,719,720,723],{},[154,721,722],{},"@onmax\u002Fbetter-auth-ledger"," stores app-local virtual balances. It is not a payment settlement layer.",[181,725,728],{"className":183,"code":726,"filename":727,"language":186,"meta":187,"style":187},"import { createNimiq } from '@onmax\u002Funimiq'\nimport { createMockNimiqDriver } from '@onmax\u002Funimiq\u002Fmock'\n\nconst nimiq = createNimiq({\n  driver: createMockNimiqDriver({\n    accounts: {\n      sender: { balance: 5_000_000n },\n    },\n  }),\n})\n\nconsole.log(await nimiq.balance('sender'))\n","test\u002Fnimiq-balance.test.ts",[154,729,730,749,769,773,790,803,812,835,840,849,855,859],{"__ignoreMap":187},[191,731,732,734,736,739,741,743,745,747],{"class":193,"line":194},[191,733,198],{"class":197},[191,735,202],{"class":201},[191,737,738],{"class":205}," createNimiq",[191,740,215],{"class":201},[191,742,218],{"class":197},[191,744,221],{"class":201},[191,746,706],{"class":224},[191,748,227],{"class":201},[191,750,751,753,755,758,760,762,764,767],{"class":193,"line":230},[191,752,198],{"class":197},[191,754,202],{"class":201},[191,756,757],{"class":205}," createMockNimiqDriver",[191,759,215],{"class":201},[191,761,218],{"class":197},[191,763,221],{"class":201},[191,765,766],{"class":224},"@onmax\u002Funimiq\u002Fmock",[191,768,227],{"class":201},[191,770,771],{"class":193,"line":237},[191,772,234],{"emptyLinePlaceholder":233},[191,774,775,778,781,784,786,788],{"class":193,"line":260},[191,776,777],{"class":243},"const",[191,779,780],{"class":205}," nimiq ",[191,782,783],{"class":201},"=",[191,785,738],{"class":250},[191,787,306],{"class":205},[191,789,619],{"class":201},[191,791,792,795,797,799,801],{"class":193,"line":300},[191,793,794],{"class":296},"  driver",[191,796,315],{"class":201},[191,798,757],{"class":250},[191,800,306],{"class":205},[191,802,619],{"class":201},[191,804,805,808,810],{"class":193,"line":330},[191,806,807],{"class":296},"    accounts",[191,809,315],{"class":201},[191,811,257],{"class":201},[191,813,814,817,819,821,824,826,829,832],{"class":193,"line":352},[191,815,816],{"class":296},"      sender",[191,818,315],{"class":201},[191,820,202],{"class":201},[191,822,823],{"class":296}," balance",[191,825,315],{"class":201},[191,827,828],{"class":318}," 5_000_000",[191,830,831],{"class":243},"n",[191,833,834],{"class":201}," },\n",[191,836,837],{"class":193,"line":358},[191,838,839],{"class":201},"    },\n",[191,841,842,845,847],{"class":193,"line":363},[191,843,844],{"class":201},"  }",[191,846,324],{"class":205},[191,848,327],{"class":201},[191,850,851,853],{"class":193,"line":371},[191,852,684],{"class":201},[191,854,687],{"class":205},[191,856,857],{"class":193,"line":400},[191,858,234],{"emptyLinePlaceholder":233},[191,860,861,864,866,869,871,874,876,878,881,883,885,888,890],{"class":193,"line":424},[191,862,863],{"class":205},"console",[191,865,290],{"class":201},[191,867,868],{"class":250},"log",[191,870,306],{"class":205},[191,872,873],{"class":197},"await",[191,875,379],{"class":205},[191,877,290],{"class":201},[191,879,880],{"class":250},"balance",[191,882,306],{"class":205},[191,884,395],{"class":201},[191,886,887],{"class":224},"sender",[191,889,395],{"class":201},[191,891,892],{"class":205},"))\n",[143,894,895],{},"Expected output:",[181,897,901],{"className":898,"code":899,"language":900,"meta":187,"style":187},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","5000000n\n","txt",[154,902,903],{"__ignoreMap":187},[191,904,905],{"class":193,"line":194},[191,906,899],{},[143,908,909],{},"Use mock drivers for deterministic unit tests. Use RPC-backed drivers when server or Worker code needs real network data.",[911,912,913],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":187,"searchDepth":230,"depth":230,"links":915},[916,917,918,919],{"id":149,"depth":230,"text":150},{"id":442,"depth":230,"text":443},{"id":532,"depth":230,"text":533},{"id":700,"depth":230,"text":701},"Place provider access, auth, cross-device approval, utilities, and tests in the right runtime.","md",null,{},{"title":23,"description":920},"lLpsEsyu6WzPPstXY149_u_8EyM5QHlKceyP0BcMBVA",[927,929],{"title":19,"path":20,"stem":21,"description":928,"children":-1},"Add copy-pasteable provider access and Nimiq Better Auth sign-in.",{"title":34,"path":35,"stem":36,"description":930,"children":-1},"Wait for the Nimiq mini-app provider and handle unavailable host state.",1778838254307]