[{"data":1,"prerenderedAt":3357},["ShallowReactive",2],{"navigation_docs":3,"-api-reference-authyra-instance":265,"-api-reference-authyra-instance-surround":3352},[4,35,49,89,117,164,193,235,253,257,261],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"/getting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/getting-started/introduction","1.getting-started/2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/getting-started/installation","1.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","/getting-started/quick-start","1.getting-started/4.quick-start","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Configuration","/getting-started/configuration","1.getting-started/5.configuration","i-lucide-sliders-horizontal",{"title":31,"path":32,"stem":33,"icon":34},"First Auth","/getting-started/first-auth","1.getting-started/6.first-auth","i-lucide-key-round",{"title":36,"path":37,"stem":38,"children":39,"page":6},"Migration","/migration","10.migration",[40,45],{"title":41,"path":42,"stem":43,"icon":44},"Migration depuis Firebase Auth","/migration/from-firebase","10.migration/1.from-firebase","i-lucide-arrow-right-left",{"title":46,"path":47,"stem":48,"icon":44},"Migration depuis Supabase Auth","/migration/from-supabase","10.migration/2.from-supabase",{"title":50,"path":51,"stem":52,"children":53,"page":6},"Core Concepts","/core-concepts","2.core-concepts",[54,59,64,69,74,79,84],{"title":55,"path":56,"stem":57,"icon":58},"Architecture","/core-concepts/architecture","2.core-concepts/1.architecture","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Providers","/core-concepts/providers","2.core-concepts/2.providers","i-lucide-plug",{"title":65,"path":66,"stem":67,"icon":68},"Sessions","/core-concepts/sessions","2.core-concepts/3.sessions","i-lucide-timer",{"title":70,"path":71,"stem":72,"icon":73},"Storage","/core-concepts/storage","2.core-concepts/4.storage","i-lucide-database",{"title":75,"path":76,"stem":77,"icon":78},"Reactivity","/core-concepts/reactivity","2.core-concepts/5.reactivity","i-lucide-activity",{"title":80,"path":81,"stem":82,"icon":83},"Callbacks","/core-concepts/callbacks","2.core-concepts/6.callbacks","i-lucide-shield-check",{"title":85,"path":86,"stem":87,"icon":88},"Events","/core-concepts/events","2.core-concepts/7.events","i-lucide-radio",{"title":60,"path":90,"stem":91,"children":92,"page":6},"/providers","3.providers",[93,97,101,105,109,113],{"title":94,"path":95,"stem":96},"Credentials Provider","/providers/credentials","3.providers/1.credentials",{"title":98,"path":99,"stem":100},"OAuth2 Provider","/providers/oauth2","3.providers/2.oauth2",{"title":102,"path":103,"stem":104},"Google Provider","/providers/google","3.providers/3.google",{"title":106,"path":107,"stem":108},"GitHub Provider","/providers/github","3.providers/4.github",{"title":110,"path":111,"stem":112},"Apple Provider","/providers/apple","3.providers/5.apple",{"title":114,"path":115,"stem":116},"Proxy OAuth Provider","/providers/proxy-oauth","3.providers/6.proxy-oauth",{"title":118,"path":119,"stem":120,"children":121,"page":6},"Guides","/guides","4.guides",[122,126,131,136,141,146,151,155,159],{"title":123,"path":124,"stem":125},"Email / Password Auth","/guides/email-auth","4.guides/1.email-auth",{"title":127,"path":128,"stem":129,"icon":130},"Custom OAuth2 Flow","/guides/oauth2-flow","4.guides/2.oauth2-flow","i-lucide-workflow",{"title":132,"path":133,"stem":134,"icon":135},"Deep Links & OAuth2 Callbacks","/guides/deep-links","4.guides/3.deep-links","i-lucide-link",{"title":137,"path":138,"stem":139,"icon":140},"Token Refresh","/guides/token-refresh","4.guides/4.token-refresh","i-lucide-refresh-cw",{"title":142,"path":143,"stem":144,"icon":145},"Multi-Account","/guides/multi-account","4.guides/5.multi-account","i-lucide-users",{"title":147,"path":148,"stem":149,"icon":150},"Route Protection","/guides/route-protection","4.guides/6.route-protection","i-lucide-lock",{"title":152,"path":153,"stem":154,"icon":63},"Custom Provider","/guides/custom-provider","4.guides/7.custom-provider",{"title":156,"path":157,"stem":158,"icon":73},"Custom Storage","/guides/custom-storage","4.guides/8.custom-storage",{"title":160,"path":161,"stem":162,"icon":163},"Testing","/guides/testing","4.guides/9.testing","i-lucide-flask-conical",{"title":165,"path":166,"stem":167,"children":168,"page":6},"Flutter","/flutter","5.flutter",[169,173,178,183,188],{"title":170,"path":171,"stem":172},"Flutter Setup","/flutter/setup","5.flutter/1.setup",{"title":174,"path":175,"stem":176,"icon":177},"Secure Storage","/flutter/secure-storage","5.flutter/2.secure-storage","i-lucide-vault",{"title":179,"path":180,"stem":181,"icon":182},"Widgets","/flutter/widgets","5.flutter/3.widgets","i-lucide-layout",{"title":184,"path":185,"stem":186,"icon":187},"Router Guard","/flutter/router-guard","5.flutter/4.router-guard","i-lucide-signpost",{"title":189,"path":190,"stem":191,"icon":192},"App Binding","/flutter/app-binding","5.flutter/5.app-binding","i-lucide-cpu",{"title":194,"path":195,"stem":196,"children":197,"page":6},"API Reference","/api-reference","6.api-reference",[198,202,206,211,216,221,225,230],{"title":199,"path":200,"stem":201},"AuthyraClient","/api-reference/authyra-client","6.api-reference/1.authyra-client",{"title":203,"path":204,"stem":205},"AuthyraInstance","/api-reference/authyra-instance","6.api-reference/2.authyra-instance",{"title":207,"path":208,"stem":209,"icon":210},"AccountManager","/api-reference/account-manager","6.api-reference/3.account-manager","i-lucide-users-round",{"title":212,"path":213,"stem":214,"icon":215},"AuthProvider","/api-reference/auth-provider","6.api-reference/4.auth-provider","i-lucide-plug-zap",{"title":217,"path":218,"stem":219,"icon":220},"AuthStorage","/api-reference/auth-storage","6.api-reference/5.auth-storage","i-lucide-hard-drive",{"title":222,"path":223,"stem":224,"icon":68},"AuthSession","/api-reference/auth-session","6.api-reference/6.auth-session",{"title":226,"path":227,"stem":228,"icon":229},"AuthState","/api-reference/auth-state","6.api-reference/7.auth-state","i-lucide-toggle-right",{"title":231,"path":232,"stem":233,"icon":234},"Exceptions","/api-reference/auth-exceptions","6.api-reference/8.auth-exceptions","i-lucide-triangle-alert",{"title":236,"path":237,"stem":238,"children":239,"page":6},"Examples","/examples","7.examples",[240,244,249],{"title":241,"path":242,"stem":243},"Flutter App Example","/examples/flutter-app","7.examples/1.flutter-app",{"title":245,"path":246,"stem":247,"icon":248},"Dart Backend","/examples/dart-backend","7.examples/2.dart-backend","i-lucide-server",{"title":250,"path":251,"stem":252,"icon":163},"Testing Setup","/examples/testing-setup","7.examples/3.testing-setup",{"title":254,"path":255,"stem":256},"Troubleshooting","/troubleshooting","8.troubleshooting",{"title":258,"path":259,"stem":260},"FAQ","/faq","9.faq",{"title":262,"path":263,"stem":264},"Changelog","/changelog","changelog",{"id":266,"title":203,"body":267,"description":3344,"extension":3345,"links":3346,"meta":3347,"navigation":397,"path":204,"seo":3348,"stem":205,"__hash__":3351},"docs/6.api-reference/2.authyra-instance.md",{"type":268,"value":269,"toc":3310},"minimark",[270,275,290,356,366,465,468,472,477,483,529,658,668,670,674,684,702,704,708,717,720,738,745,821,823,826,840,850,893,895,898,913,919,951,953,957,960,964,987,995,1054,1056,1060,1080,1109,1111,1115,1136,1142,1203,1205,1209,1212,1234,1240,1251,1420,1425,1547,1552,1599,1601,1604,1624,1633,1703,1705,1709,1713,1719,1778,1834,1849,2025,2027,2031,2034,2053,2062,2107,2109,2113,2116,2135,2146,2214,2216,2219,2221,2235,2241,2418,2420,2424,2427,2434,2453,2470,2529,2531,2535,3282,3284,3288,3306],[271,272,274],"h2",{"id":273},"overview","Overview",[276,277,278,281,282,286,287,289],"p",{},[279,280,203],"code",{}," is the ",[283,284,285],"strong",{},"singleton wrapper"," around ",[279,288,199],{},". It adds:",[291,292,293,316,330,345],"ul",{},[294,295,296,299,300,303,304,307,308,311,312,315],"li",{},[283,297,298],{},"Synchronous state"," — read ",[279,301,302],{},"currentUser",", ",[279,305,306],{},"currentState",", and ",[279,309,310],{},"isAuthenticated"," without ",[279,313,314],{},"await",".",[294,317,318,321,322,325,326,329],{},[283,319,320],{},"Reactive streams"," — ",[279,323,324],{},"authStateChanges"," and ",[279,327,328],{},"sessionStream"," broadcast every state change.",[294,331,332,321,335,303,338,307,341,344],{},[283,333,334],{},"Convenience delegation",[279,336,337],{},"signIn",[279,339,340],{},"signOut",[279,342,343],{},"refreshSession"," forward to the client.",[294,346,347,321,350,353,354,315],{},[283,348,349],{},"Multi-account API",[279,351,352],{},"accounts"," exposes ",[279,355,207],{},[276,357,358,359,362,363,365],{},"Access it via the ",[279,360,361],{},"Authyra"," typedef (a short alias for ",[279,364,203],{},"):",[367,368,373],"pre",{"className":369,"code":370,"language":371,"meta":372,"style":372},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import 'package:authyra/authyra.dart';\n\n// Initialize once at startup\nawait Authyra.initialize(client: client);\n\n// Use anywhere\nAuthyra.instance.isAuthenticated; // bool — synchronous\n","dart","",[279,374,375,392,399,406,434,439,445],{"__ignoreMap":372},[376,377,380,384,388],"span",{"class":378,"line":379},"line",1,[376,381,383],{"class":382},"sbssI","import",[376,385,387],{"class":386},"sfazB"," 'package:authyra/authyra.dart'",[376,389,391],{"class":390},"sMK4o",";\n",[376,393,395],{"class":378,"line":394},2,[376,396,398],{"emptyLinePlaceholder":397},true,"\n",[376,400,402],{"class":378,"line":401},3,[376,403,405],{"class":404},"sHwdD","// Initialize once at startup\n",[376,407,409,412,416,418,422,426,429,432],{"class":378,"line":408},4,[376,410,314],{"class":411},"s7zQu",[376,413,415],{"class":414},"sBMFI"," Authyra",[376,417,315],{"class":390},[376,419,421],{"class":420},"s2Zo4","initialize",[376,423,425],{"class":424},"sTEyZ","(client",[376,427,428],{"class":390},":",[376,430,431],{"class":424}," client)",[376,433,391],{"class":390},[376,435,437],{"class":378,"line":436},5,[376,438,398],{"emptyLinePlaceholder":397},[376,440,442],{"class":378,"line":441},6,[376,443,444],{"class":404},"// Use anywhere\n",[376,446,448,450,452,455,457,459,462],{"class":378,"line":447},7,[376,449,361],{"class":414},[376,451,315],{"class":390},[376,453,454],{"class":424},"instance",[376,456,315],{"class":390},[376,458,310],{"class":424},[376,460,461],{"class":390},";",[376,463,464],{"class":404}," // bool — synchronous\n",[466,467],"hr",{},[271,469,471],{"id":470},"initialization","Initialization",[473,474,476],"h3",{"id":475},"authyrainitialize","Authyra.initialize()",[276,478,479,480,315],{},"Static factory. Creates and initialises the singleton. Must be called once before ",[279,481,482],{},"Authyra.instance",[367,484,486],{"className":369,"code":485,"language":371,"meta":372,"style":372},"static Future\u003CAuthyraInstance> initialize({\n  required AuthyraClient client,\n})\n",[279,487,488,510,524],{"__ignoreMap":372},[376,489,490,494,497,500,502,505,507],{"class":378,"line":379},[376,491,493],{"class":492},"spNyl","static",[376,495,496],{"class":414}," Future",[376,498,499],{"class":424},"\u003C",[376,501,203],{"class":414},[376,503,504],{"class":424},"> ",[376,506,421],{"class":420},[376,508,509],{"class":424},"({\n",[376,511,512,515,518,521],{"class":378,"line":394},[376,513,514],{"class":492},"  required",[376,516,517],{"class":414}," AuthyraClient",[376,519,520],{"class":424}," client",[376,522,523],{"class":390},",\n",[376,525,526],{"class":378,"line":401},[376,527,528],{"class":424},"})\n",[367,530,532],{"className":369,"code":531,"language":371,"meta":372,"style":372},"void main() async {\n  final client = AuthyraClient(\n    providers: [CredentialsProvider(id: 'email', authorize: myCallback)],\n    storage:   InMemoryAuthStorage(),\n  );\n\n  await Authyra.initialize(client: client);\n  // Authyra.instance is now available everywhere.\n}\n",[279,533,534,551,567,601,616,623,627,646,652],{"__ignoreMap":372},[376,535,536,539,542,545,548],{"class":378,"line":379},[376,537,538],{"class":492},"void",[376,540,541],{"class":420}," main",[376,543,544],{"class":424},"() ",[376,546,547],{"class":411},"async",[376,549,550],{"class":424}," {\n",[376,552,553,556,559,562,564],{"class":378,"line":394},[376,554,555],{"class":492},"  final",[376,557,558],{"class":424}," client ",[376,560,561],{"class":390},"=",[376,563,517],{"class":414},[376,565,566],{"class":424},"(\n",[376,568,569,572,574,577,580,583,585,588,591,594,596,599],{"class":378,"line":401},[376,570,571],{"class":424},"    providers",[376,573,428],{"class":390},[376,575,576],{"class":424}," [",[376,578,579],{"class":414},"CredentialsProvider",[376,581,582],{"class":424},"(id",[376,584,428],{"class":390},[376,586,587],{"class":386}," 'email'",[376,589,590],{"class":390},",",[376,592,593],{"class":424}," authorize",[376,595,428],{"class":390},[376,597,598],{"class":424}," myCallback)]",[376,600,523],{"class":390},[376,602,603,606,608,611,614],{"class":378,"line":408},[376,604,605],{"class":424},"    storage",[376,607,428],{"class":390},[376,609,610],{"class":414},"   InMemoryAuthStorage",[376,612,613],{"class":424},"()",[376,615,523],{"class":390},[376,617,618,621],{"class":378,"line":436},[376,619,620],{"class":424},"  )",[376,622,391],{"class":390},[376,624,625],{"class":378,"line":441},[376,626,398],{"emptyLinePlaceholder":397},[376,628,629,632,634,636,638,640,642,644],{"class":378,"line":447},[376,630,631],{"class":411},"  await",[376,633,415],{"class":414},[376,635,315],{"class":390},[376,637,421],{"class":420},[376,639,425],{"class":424},[376,641,428],{"class":390},[376,643,431],{"class":424},[376,645,391],{"class":390},[376,647,649],{"class":378,"line":648},8,[376,650,651],{"class":404},"  // Authyra.instance is now available everywhere.\n",[376,653,655],{"class":378,"line":654},9,[376,656,657],{"class":424},"}\n",[276,659,660,661,663,664,667],{},"Calling ",[279,662,421],{}," a second time returns the existing instance without re-initialising. To reset (e.g., in tests), call ",[279,665,666],{},"dispose()"," first.",[466,669],{},[473,671,673],{"id":672},"isinitialized","isInitialized",[276,675,676,679,680,683],{},[279,677,678],{},"true"," after ",[279,681,682],{},"initialize()"," has completed.",[367,685,687],{"className":369,"code":686,"language":371,"meta":372,"style":372},"static bool get isInitialized\n",[279,688,689],{"__ignoreMap":372},[376,690,691,693,696,699],{"class":378,"line":379},[376,692,493],{"class":492},[376,694,695],{"class":414}," bool",[376,697,698],{"class":390}," get",[376,700,701],{"class":424}," isInitialized\n",[466,703],{},[271,705,707],{"id":706},"synchronous-state","Synchronous State",[276,709,710,711,714,715,315],{},"These getters are safe to call anywhere — including ",[279,712,713],{},"build()"," methods — without ",[279,716,314],{},[473,718,302],{"id":719},"currentuser",[367,721,723],{"className":369,"code":722,"language":371,"meta":372,"style":372},"AuthUser? get currentUser\n",[279,724,725],{"__ignoreMap":372},[376,726,727,730,733,735],{"class":378,"line":379},[376,728,729],{"class":414},"AuthUser",[376,731,732],{"class":390},"?",[376,734,698],{"class":390},[376,736,737],{"class":424}," currentUser\n",[276,739,740,741,744],{},"The currently active user, or ",[279,742,743],{},"null"," if not authenticated.",[367,746,748],{"className":369,"code":747,"language":371,"meta":372,"style":372},"final user = Authyra.instance.currentUser;\nif (user != null) print('Hello, ${user.name}');\n",[279,749,750,772],{"__ignoreMap":372},[376,751,752,755,758,760,762,764,766,768,770],{"class":378,"line":379},[376,753,754],{"class":492},"final",[376,756,757],{"class":424}," user ",[376,759,561],{"class":390},[376,761,415],{"class":414},[376,763,315],{"class":390},[376,765,454],{"class":424},[376,767,315],{"class":390},[376,769,302],{"class":424},[376,771,391],{"class":390},[376,773,774,777,780,783,786,789,792,795,798,801,805,807,810,813,816,819],{"class":378,"line":394},[376,775,776],{"class":411},"if",[376,778,779],{"class":424}," (user ",[376,781,782],{"class":390},"!=",[376,784,785],{"class":390}," null",[376,787,788],{"class":424},") ",[376,790,791],{"class":420},"print",[376,793,794],{"class":424},"(",[376,796,797],{"class":386},"'Hello, ",[376,799,800],{"class":424},"${",[376,802,804],{"class":803},"sHdIc","user",[376,806,315],{"class":424},[376,808,809],{"class":803},"name",[376,811,812],{"class":424},"}",[376,814,815],{"class":386},"'",[376,817,818],{"class":424},")",[376,820,391],{"class":390},[466,822],{},[473,824,306],{"id":825},"currentstate",[367,827,829],{"className":369,"code":828,"language":371,"meta":372,"style":372},"AuthState get currentState\n",[279,830,831],{"__ignoreMap":372},[376,832,833,835,837],{"class":378,"line":379},[376,834,226],{"class":414},[376,836,698],{"class":390},[376,838,839],{"class":424}," currentState\n",[276,841,842,843,845,846,849],{},"The latest ",[279,844,226],{},". Starts as ",[279,847,848],{},"AuthState.unauthenticated()"," before any sign-in.",[367,851,853],{"className":369,"code":852,"language":371,"meta":372,"style":372},"final state = Authyra.instance.currentState;\nprint(state.type); // AuthStateType.unauthenticated\n",[279,854,855,876],{"__ignoreMap":372},[376,856,857,859,862,864,866,868,870,872,874],{"class":378,"line":379},[376,858,754],{"class":492},[376,860,861],{"class":424}," state ",[376,863,561],{"class":390},[376,865,415],{"class":414},[376,867,315],{"class":390},[376,869,454],{"class":424},[376,871,315],{"class":390},[376,873,306],{"class":424},[376,875,391],{"class":390},[376,877,878,880,883,885,888,890],{"class":378,"line":394},[376,879,791],{"class":420},[376,881,882],{"class":424},"(state",[376,884,315],{"class":390},[376,886,887],{"class":424},"type)",[376,889,461],{"class":390},[376,891,892],{"class":404}," // AuthStateType.unauthenticated\n",[466,894],{},[473,896,310],{"id":897},"isauthenticated",[367,899,901],{"className":369,"code":900,"language":371,"meta":372,"style":372},"bool get isAuthenticated\n",[279,902,903],{"__ignoreMap":372},[376,904,905,908,910],{"class":378,"line":379},[376,906,907],{"class":414},"bool",[376,909,698],{"class":390},[376,911,912],{"class":424}," isAuthenticated\n",[276,914,915,916,315],{},"Shorthand for ",[279,917,918],{},"currentState.isAuthenticated",[367,920,922],{"className":369,"code":921,"language":371,"meta":372,"style":372},"if (Authyra.instance.isAuthenticated) {\n  // show home screen\n}\n",[279,923,924,942,947],{"__ignoreMap":372},[376,925,926,928,931,933,935,937,939],{"class":378,"line":379},[376,927,776],{"class":411},[376,929,930],{"class":424}," (",[376,932,361],{"class":414},[376,934,315],{"class":390},[376,936,454],{"class":424},[376,938,315],{"class":390},[376,940,941],{"class":424},"isAuthenticated) {\n",[376,943,944],{"class":378,"line":394},[376,945,946],{"class":404},"  // show home screen\n",[376,948,949],{"class":378,"line":401},[376,950,657],{"class":424},[466,952],{},[271,954,956],{"id":955},"async-accessors","Async Accessors",[276,958,959],{},"These reach into storage when the in-memory cache is stale.",[473,961,963],{"id":962},"getsession","getSession()",[367,965,967],{"className":369,"code":966,"language":371,"meta":372,"style":372},"Future\u003CAuthSession?> getSession()\n",[279,968,969],{"__ignoreMap":372},[376,970,971,974,976,978,981,984],{"class":378,"line":379},[376,972,973],{"class":414},"Future",[376,975,499],{"class":424},[376,977,222],{"class":414},[376,979,980],{"class":424},"?> ",[376,982,983],{"class":420},"getSession",[376,985,986],{"class":424},"()\n",[276,988,989,990,992,993,315],{},"Returns the full ",[279,991,222],{}," for the active user, or ",[279,994,743],{},[367,996,998],{"className":369,"code":997,"language":371,"meta":372,"style":372},"final session = await Authyra.instance.getSession();\nprint(session?.accessToken);\nprint(session?.expiresAt);\n",[279,999,1000,1026,1041],{"__ignoreMap":372},[376,1001,1002,1004,1007,1009,1012,1014,1016,1018,1020,1022,1024],{"class":378,"line":379},[376,1003,754],{"class":492},[376,1005,1006],{"class":424}," session ",[376,1008,561],{"class":390},[376,1010,1011],{"class":411}," await",[376,1013,415],{"class":414},[376,1015,315],{"class":390},[376,1017,454],{"class":424},[376,1019,315],{"class":390},[376,1021,983],{"class":420},[376,1023,613],{"class":424},[376,1025,391],{"class":390},[376,1027,1028,1030,1033,1036,1039],{"class":378,"line":394},[376,1029,791],{"class":420},[376,1031,1032],{"class":424},"(session",[376,1034,1035],{"class":390},"?.",[376,1037,1038],{"class":424},"accessToken)",[376,1040,391],{"class":390},[376,1042,1043,1045,1047,1049,1052],{"class":378,"line":401},[376,1044,791],{"class":420},[376,1046,1032],{"class":424},[376,1048,1035],{"class":390},[376,1050,1051],{"class":424},"expiresAt)",[376,1053,391],{"class":390},[466,1055],{},[473,1057,1059],{"id":1058},"getuser","getUser()",[367,1061,1063],{"className":369,"code":1062,"language":371,"meta":372,"style":372},"Future\u003CAuthUser?> getUser()\n",[279,1064,1065],{"__ignoreMap":372},[376,1066,1067,1069,1071,1073,1075,1078],{"class":378,"line":379},[376,1068,973],{"class":414},[376,1070,499],{"class":424},[376,1072,729],{"class":414},[376,1074,980],{"class":424},[376,1076,1077],{"class":420},"getUser",[376,1079,986],{"class":424},[367,1081,1083],{"className":369,"code":1082,"language":371,"meta":372,"style":372},"final user = await Authyra.instance.getUser();\n",[279,1084,1085],{"__ignoreMap":372},[376,1086,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107],{"class":378,"line":379},[376,1088,754],{"class":492},[376,1090,757],{"class":424},[376,1092,561],{"class":390},[376,1094,1011],{"class":411},[376,1096,415],{"class":414},[376,1098,315],{"class":390},[376,1100,454],{"class":424},[376,1102,315],{"class":390},[376,1104,1077],{"class":420},[376,1106,613],{"class":424},[376,1108,391],{"class":390},[466,1110],{},[473,1112,1114],{"id":1113},"getaccesstoken","getAccessToken()",[367,1116,1118],{"className":369,"code":1117,"language":371,"meta":372,"style":372},"Future\u003CString?> getAccessToken()\n",[279,1119,1120],{"__ignoreMap":372},[376,1121,1122,1124,1126,1129,1131,1134],{"class":378,"line":379},[376,1123,973],{"class":414},[376,1125,499],{"class":424},[376,1127,1128],{"class":414},"String",[376,1130,980],{"class":424},[376,1132,1133],{"class":420},"getAccessToken",[376,1135,986],{"class":424},[276,1137,1138,1139,1141],{},"Returns the raw access token string, or ",[279,1140,743],{}," when not authenticated.",[367,1143,1145],{"className":369,"code":1144,"language":371,"meta":372,"style":372},"final token = await Authyra.instance.getAccessToken();\nmyHttpClient.headers['Authorization'] = 'Bearer $token';\n",[279,1146,1147,1172],{"__ignoreMap":372},[376,1148,1149,1151,1154,1156,1158,1160,1162,1164,1166,1168,1170],{"class":378,"line":379},[376,1150,754],{"class":492},[376,1152,1153],{"class":424}," token ",[376,1155,561],{"class":390},[376,1157,1011],{"class":411},[376,1159,415],{"class":414},[376,1161,315],{"class":390},[376,1163,454],{"class":424},[376,1165,315],{"class":390},[376,1167,1133],{"class":420},[376,1169,613],{"class":424},[376,1171,391],{"class":390},[376,1173,1174,1177,1179,1182,1185,1188,1190,1193,1196,1199,1201],{"class":378,"line":394},[376,1175,1176],{"class":424},"myHttpClient",[376,1178,315],{"class":390},[376,1180,1181],{"class":424},"headers[",[376,1183,1184],{"class":386},"'Authorization'",[376,1186,1187],{"class":424},"] ",[376,1189,561],{"class":390},[376,1191,1192],{"class":386}," 'Bearer ",[376,1194,1195],{"class":424},"$",[376,1197,1198],{"class":803},"token",[376,1200,815],{"class":386},[376,1202,391],{"class":390},[466,1204],{},[271,1206,1208],{"id":1207},"reactive-streams","Reactive Streams",[473,1210,324],{"id":1211},"authstatechanges",[367,1213,1215],{"className":369,"code":1214,"language":371,"meta":372,"style":372},"Stream\u003CAuthState> get authStateChanges\n",[279,1216,1217],{"__ignoreMap":372},[376,1218,1219,1222,1224,1226,1228,1231],{"class":378,"line":379},[376,1220,1221],{"class":414},"Stream",[376,1223,499],{"class":424},[376,1225,226],{"class":414},[376,1227,504],{"class":424},[376,1229,1230],{"class":390},"get",[376,1232,1233],{"class":424}," authStateChanges\n",[276,1235,1236,1237,1239],{},"Broadcast stream of ",[279,1238,226],{},". Emits on every sign-in, sign-out, token refresh, and error.",[276,1241,1242,1243,1246,1247,1250],{},"Consecutive identical states are ",[283,1244,1245],{},"deduplicated"," (via ",[279,1248,1249],{},"Equatable",") — you won't get spurious rebuilds when the state hasn't actually changed.",[367,1252,1254],{"className":369,"code":1253,"language":371,"meta":372,"style":372},"Authyra.instance.authStateChanges.listen((AuthState state) {\n  switch (state.type) {\n    case AuthStateType.authenticated:\n      print('Signed in as ${state.user!.email}');\n    case AuthStateType.unauthenticated:\n      print('Signed out');\n    case AuthStateType.error:\n      print('Auth error: ${state.error}');\n  }\n});\n",[279,1255,1256,1281,1294,1310,1343,1356,1369,1382,1407,1412],{"__ignoreMap":372},[376,1257,1258,1260,1262,1264,1266,1268,1270,1273,1276,1278],{"class":378,"line":379},[376,1259,361],{"class":414},[376,1261,315],{"class":390},[376,1263,454],{"class":424},[376,1265,315],{"class":390},[376,1267,324],{"class":424},[376,1269,315],{"class":390},[376,1271,1272],{"class":420},"listen",[376,1274,1275],{"class":424},"((",[376,1277,226],{"class":414},[376,1279,1280],{"class":424}," state) {\n",[376,1282,1283,1286,1289,1291],{"class":378,"line":394},[376,1284,1285],{"class":411},"  switch",[376,1287,1288],{"class":424}," (state",[376,1290,315],{"class":390},[376,1292,1293],{"class":424},"type) {\n",[376,1295,1296,1299,1302,1304,1307],{"class":378,"line":401},[376,1297,1298],{"class":411},"    case",[376,1300,1301],{"class":414}," AuthStateType",[376,1303,315],{"class":390},[376,1305,1306],{"class":424},"authenticated",[376,1308,1309],{"class":390},":\n",[376,1311,1312,1315,1317,1320,1322,1325,1327,1329,1332,1335,1337,1339,1341],{"class":378,"line":408},[376,1313,1314],{"class":420},"      print",[376,1316,794],{"class":424},[376,1318,1319],{"class":386},"'Signed in as ",[376,1321,800],{"class":424},[376,1323,1324],{"class":803},"state",[376,1326,315],{"class":424},[376,1328,804],{"class":803},[376,1330,1331],{"class":424},"!.",[376,1333,1334],{"class":803},"email",[376,1336,812],{"class":424},[376,1338,815],{"class":386},[376,1340,818],{"class":424},[376,1342,391],{"class":390},[376,1344,1345,1347,1349,1351,1354],{"class":378,"line":436},[376,1346,1298],{"class":411},[376,1348,1301],{"class":414},[376,1350,315],{"class":390},[376,1352,1353],{"class":424},"unauthenticated",[376,1355,1309],{"class":390},[376,1357,1358,1360,1362,1365,1367],{"class":378,"line":441},[376,1359,1314],{"class":420},[376,1361,794],{"class":424},[376,1363,1364],{"class":386},"'Signed out'",[376,1366,818],{"class":424},[376,1368,391],{"class":390},[376,1370,1371,1373,1375,1377,1380],{"class":378,"line":447},[376,1372,1298],{"class":411},[376,1374,1301],{"class":414},[376,1376,315],{"class":390},[376,1378,1379],{"class":424},"error",[376,1381,1309],{"class":390},[376,1383,1384,1386,1388,1391,1393,1395,1397,1399,1401,1403,1405],{"class":378,"line":648},[376,1385,1314],{"class":420},[376,1387,794],{"class":424},[376,1389,1390],{"class":386},"'Auth error: ",[376,1392,800],{"class":424},[376,1394,1324],{"class":803},[376,1396,315],{"class":424},[376,1398,1379],{"class":803},[376,1400,812],{"class":424},[376,1402,815],{"class":386},[376,1404,818],{"class":424},[376,1406,391],{"class":390},[376,1408,1409],{"class":378,"line":654},[376,1410,1411],{"class":424},"  }\n",[376,1413,1415,1418],{"class":378,"line":1414},10,[376,1416,1417],{"class":424},"})",[376,1419,391],{"class":390},[276,1421,1422,428],{},[283,1423,1424],{},"GoRouter integration",[367,1426,1428],{"className":369,"code":1427,"language":371,"meta":372,"style":372},"GoRouter(\n  refreshListenable: StreamToListenable(Authyra.instance.authStateChanges),\n  redirect: (context, state) {\n    if (!Authyra.instance.isAuthenticated) return '/login';\n    return null; // no redirect needed\n  },\n  routes: [ ... ],\n);\n",[279,1429,1430,1437,1462,1476,1505,1516,1523,1541],{"__ignoreMap":372},[376,1431,1432,1435],{"class":378,"line":379},[376,1433,1434],{"class":414},"GoRouter",[376,1436,566],{"class":424},[376,1438,1439,1442,1444,1447,1449,1451,1453,1455,1457,1460],{"class":378,"line":394},[376,1440,1441],{"class":424},"  refreshListenable",[376,1443,428],{"class":390},[376,1445,1446],{"class":414}," StreamToListenable",[376,1448,794],{"class":424},[376,1450,361],{"class":414},[376,1452,315],{"class":390},[376,1454,454],{"class":424},[376,1456,315],{"class":390},[376,1458,1459],{"class":424},"authStateChanges)",[376,1461,523],{"class":390},[376,1463,1464,1467,1469,1472,1474],{"class":378,"line":401},[376,1465,1466],{"class":424},"  redirect",[376,1468,428],{"class":390},[376,1470,1471],{"class":424}," (context",[376,1473,590],{"class":390},[376,1475,1280],{"class":424},[376,1477,1478,1481,1483,1486,1488,1490,1492,1494,1497,1500,1503],{"class":378,"line":408},[376,1479,1480],{"class":411},"    if",[376,1482,930],{"class":424},[376,1484,1485],{"class":390},"!",[376,1487,361],{"class":414},[376,1489,315],{"class":390},[376,1491,454],{"class":424},[376,1493,315],{"class":390},[376,1495,1496],{"class":424},"isAuthenticated) ",[376,1498,1499],{"class":411},"return",[376,1501,1502],{"class":386}," '/login'",[376,1504,391],{"class":390},[376,1506,1507,1510,1513],{"class":378,"line":436},[376,1508,1509],{"class":411},"    return",[376,1511,1512],{"class":390}," null;",[376,1514,1515],{"class":404}," // no redirect needed\n",[376,1517,1518,1521],{"class":378,"line":441},[376,1519,1520],{"class":424},"  }",[376,1522,523],{"class":390},[376,1524,1525,1528,1530,1533,1536,1539],{"class":378,"line":447},[376,1526,1527],{"class":424},"  routes",[376,1529,428],{"class":390},[376,1531,1532],{"class":424}," [ ",[376,1534,1535],{"class":390},"...",[376,1537,1538],{"class":424}," ]",[376,1540,523],{"class":390},[376,1542,1543,1545],{"class":378,"line":648},[376,1544,818],{"class":424},[376,1546,391],{"class":390},[276,1548,1549,428],{},[283,1550,1551],{},"Riverpod integration",[367,1553,1555],{"className":369,"code":1554,"language":371,"meta":372,"style":372},"final authStateProvider = StreamProvider\u003CAuthState>((ref) {\n  return Authyra.instance.authStateChanges;\n});\n",[279,1556,1557,1576,1593],{"__ignoreMap":372},[376,1558,1559,1561,1564,1566,1569,1571,1573],{"class":378,"line":379},[376,1560,754],{"class":492},[376,1562,1563],{"class":424}," authStateProvider ",[376,1565,561],{"class":390},[376,1567,1568],{"class":414}," StreamProvider",[376,1570,499],{"class":424},[376,1572,226],{"class":414},[376,1574,1575],{"class":424},">((ref) {\n",[376,1577,1578,1581,1583,1585,1587,1589,1591],{"class":378,"line":394},[376,1579,1580],{"class":411},"  return",[376,1582,415],{"class":414},[376,1584,315],{"class":390},[376,1586,454],{"class":424},[376,1588,315],{"class":390},[376,1590,324],{"class":424},[376,1592,391],{"class":390},[376,1594,1595,1597],{"class":378,"line":401},[376,1596,1417],{"class":424},[376,1598,391],{"class":390},[466,1600],{},[473,1602,328],{"id":1603},"sessionstream",[367,1605,1607],{"className":369,"code":1606,"language":371,"meta":372,"style":372},"Stream\u003CAuthSession?> get sessionStream\n",[279,1608,1609],{"__ignoreMap":372},[376,1610,1611,1613,1615,1617,1619,1621],{"class":378,"line":379},[376,1612,1221],{"class":414},[376,1614,499],{"class":424},[376,1616,222],{"class":414},[376,1618,980],{"class":424},[376,1620,1230],{"class":390},[376,1622,1623],{"class":424}," sessionStream\n",[276,1625,1626,1627,1629,1630,1632],{},"Broadcast stream of the raw ",[279,1628,222],{},". Emits ",[279,1631,743],{}," on sign-out.",[367,1634,1636],{"className":369,"code":1635,"language":371,"meta":372,"style":372},"Authyra.instance.sessionStream.listen((session) {\n  if (session?.isExpired ?? false) {\n    print('Token expired — refresh needed');\n  }\n});\n",[279,1637,1638,1657,1679,1693,1697],{"__ignoreMap":372},[376,1639,1640,1642,1644,1646,1648,1650,1652,1654],{"class":378,"line":379},[376,1641,361],{"class":414},[376,1643,315],{"class":390},[376,1645,454],{"class":424},[376,1647,315],{"class":390},[376,1649,328],{"class":424},[376,1651,315],{"class":390},[376,1653,1272],{"class":420},[376,1655,1656],{"class":424},"((session) {\n",[376,1658,1659,1662,1665,1667,1670,1673,1676],{"class":378,"line":394},[376,1660,1661],{"class":411},"  if",[376,1663,1664],{"class":424}," (session",[376,1666,1035],{"class":390},[376,1668,1669],{"class":424},"isExpired ",[376,1671,1672],{"class":390},"??",[376,1674,1675],{"class":390}," false",[376,1677,1678],{"class":424},") {\n",[376,1680,1681,1684,1686,1689,1691],{"class":378,"line":401},[376,1682,1683],{"class":420},"    print",[376,1685,794],{"class":424},[376,1687,1688],{"class":386},"'Token expired — refresh needed'",[376,1690,818],{"class":424},[376,1692,391],{"class":390},[376,1694,1695],{"class":378,"line":408},[376,1696,1411],{"class":424},[376,1698,1699,1701],{"class":378,"line":436},[376,1700,1417],{"class":424},[376,1702,391],{"class":390},[466,1704],{},[271,1706,1708],{"id":1707},"authentication-actions","Authentication Actions",[473,1710,1712],{"id":1711},"signin","signIn()",[276,1714,1715,1716,315],{},"Delegates to ",[279,1717,1718],{},"AuthyraClient.signIn()",[367,1720,1722],{"className":369,"code":1721,"language":371,"meta":372,"style":372},"Future\u003CAuthUser> signIn(\n  String providerId, {\n  Map\u003CString, dynamic>? params,\n})\n",[279,1723,1724,1738,1750,1774],{"__ignoreMap":372},[376,1725,1726,1728,1730,1732,1734,1736],{"class":378,"line":379},[376,1727,973],{"class":414},[376,1729,499],{"class":424},[376,1731,729],{"class":414},[376,1733,504],{"class":424},[376,1735,337],{"class":420},[376,1737,566],{"class":424},[376,1739,1740,1743,1746,1748],{"class":378,"line":394},[376,1741,1742],{"class":414},"  String",[376,1744,1745],{"class":424}," providerId",[376,1747,590],{"class":390},[376,1749,550],{"class":424},[376,1751,1752,1755,1757,1759,1761,1764,1767,1769,1772],{"class":378,"line":401},[376,1753,1754],{"class":414},"  Map",[376,1756,499],{"class":424},[376,1758,1128],{"class":414},[376,1760,303],{"class":424},[376,1762,1763],{"class":414},"dynamic",[376,1765,1766],{"class":424},">",[376,1768,732],{"class":390},[376,1770,1771],{"class":424}," params",[376,1773,523],{"class":390},[376,1775,1776],{"class":378,"line":408},[376,1777,528],{"class":424},[1779,1780,1781,1797],"table",{},[1782,1783,1784],"thead",{},[1785,1786,1787,1791,1794],"tr",{},[1788,1789,1790],"th",{},"Parameter",[1788,1792,1793],{},"Type",[1788,1795,1796],{},"Description",[1798,1799,1800,1819],"tbody",{},[1785,1801,1802,1808,1812],{},[1803,1804,1805],"td",{},[279,1806,1807],{},"providerId",[1803,1809,1810],{},[279,1811,1128],{},[1803,1813,1814,1815,1818],{},"The ",[279,1816,1817],{},"id"," of the provider to use.",[1785,1820,1821,1826,1831],{},[1803,1822,1823],{},[279,1824,1825],{},"params",[1803,1827,1828],{},[279,1829,1830],{},"Map\u003CString, dynamic>?",[1803,1832,1833],{},"Credentials or OAuth params passed to the provider.",[276,1835,1836,1839,1840,1842,1843,1846,1847,315],{},[283,1837,1838],{},"Returns"," ",[279,1841,729],{}," on success. ",[283,1844,1845],{},"Throws"," on failure — never returns ",[279,1848,743],{},[367,1850,1852],{"className":369,"code":1851,"language":371,"meta":372,"style":372},"try {\n  final user = await Authyra.instance.signIn('email', params: {\n    'email':    'alice@example.com',\n    'password': 's3cr3t',\n  });\n  print('Welcome, ${user.name}');\n} on AuthenticationFailedException catch (e) {\n  print('Invalid credentials: $e');\n} on ProviderNotFoundException catch (e) {\n  print('No such provider: $e');\n}\n",[279,1853,1854,1861,1894,1906,1918,1925,1951,1968,1988,2001,2020],{"__ignoreMap":372},[376,1855,1856,1859],{"class":378,"line":379},[376,1857,1858],{"class":411},"try",[376,1860,550],{"class":424},[376,1862,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1886,1888,1890,1892],{"class":378,"line":394},[376,1864,555],{"class":492},[376,1866,757],{"class":424},[376,1868,561],{"class":390},[376,1870,1011],{"class":411},[376,1872,415],{"class":414},[376,1874,315],{"class":390},[376,1876,454],{"class":424},[376,1878,315],{"class":390},[376,1880,337],{"class":420},[376,1882,794],{"class":424},[376,1884,1885],{"class":386},"'email'",[376,1887,590],{"class":390},[376,1889,1771],{"class":424},[376,1891,428],{"class":390},[376,1893,550],{"class":424},[376,1895,1896,1899,1901,1904],{"class":378,"line":401},[376,1897,1898],{"class":386},"    'email'",[376,1900,428],{"class":390},[376,1902,1903],{"class":386},"    'alice@example.com'",[376,1905,523],{"class":390},[376,1907,1908,1911,1913,1916],{"class":378,"line":408},[376,1909,1910],{"class":386},"    'password'",[376,1912,428],{"class":390},[376,1914,1915],{"class":386}," 's3cr3t'",[376,1917,523],{"class":390},[376,1919,1920,1923],{"class":378,"line":436},[376,1921,1922],{"class":424},"  })",[376,1924,391],{"class":390},[376,1926,1927,1930,1932,1935,1937,1939,1941,1943,1945,1947,1949],{"class":378,"line":441},[376,1928,1929],{"class":420},"  print",[376,1931,794],{"class":424},[376,1933,1934],{"class":386},"'Welcome, ",[376,1936,800],{"class":424},[376,1938,804],{"class":803},[376,1940,315],{"class":424},[376,1942,809],{"class":803},[376,1944,812],{"class":424},[376,1946,815],{"class":386},[376,1948,818],{"class":424},[376,1950,391],{"class":390},[376,1952,1953,1956,1959,1962,1965],{"class":378,"line":447},[376,1954,1955],{"class":424},"} ",[376,1957,1958],{"class":411},"on",[376,1960,1961],{"class":414}," AuthenticationFailedException",[376,1963,1964],{"class":411}," catch",[376,1966,1967],{"class":424}," (e) {\n",[376,1969,1970,1972,1974,1977,1979,1982,1984,1986],{"class":378,"line":648},[376,1971,1929],{"class":420},[376,1973,794],{"class":424},[376,1975,1976],{"class":386},"'Invalid credentials: ",[376,1978,1195],{"class":424},[376,1980,1981],{"class":803},"e",[376,1983,815],{"class":386},[376,1985,818],{"class":424},[376,1987,391],{"class":390},[376,1989,1990,1992,1994,1997,1999],{"class":378,"line":654},[376,1991,1955],{"class":424},[376,1993,1958],{"class":411},[376,1995,1996],{"class":414}," ProviderNotFoundException",[376,1998,1964],{"class":411},[376,2000,1967],{"class":424},[376,2002,2003,2005,2007,2010,2012,2014,2016,2018],{"class":378,"line":1414},[376,2004,1929],{"class":420},[376,2006,794],{"class":424},[376,2008,2009],{"class":386},"'No such provider: ",[376,2011,1195],{"class":424},[376,2013,1981],{"class":803},[376,2015,815],{"class":386},[376,2017,818],{"class":424},[376,2019,391],{"class":390},[376,2021,2023],{"class":378,"line":2022},11,[376,2024,657],{"class":424},[466,2026],{},[473,2028,2030],{"id":2029},"signout","signOut()",[276,2032,2033],{},"Signs out the currently active account.",[367,2035,2037],{"className":369,"code":2036,"language":371,"meta":372,"style":372},"Future\u003Cvoid> signOut()\n",[279,2038,2039],{"__ignoreMap":372},[376,2040,2041,2043,2045,2047,2049,2051],{"class":378,"line":379},[376,2042,973],{"class":414},[376,2044,499],{"class":424},[376,2046,538],{"class":492},[376,2048,504],{"class":424},[376,2050,340],{"class":420},[376,2052,986],{"class":424},[276,2054,2055,2056,2058,2059,2061],{},"Emits ",[279,2057,848],{}," on ",[279,2060,324],{}," after completion.",[367,2063,2065],{"className":369,"code":2064,"language":371,"meta":372,"style":372},"await Authyra.instance.signOut();\nprint(Authyra.instance.isAuthenticated); // false\n",[279,2066,2067,2085],{"__ignoreMap":372},[376,2068,2069,2071,2073,2075,2077,2079,2081,2083],{"class":378,"line":379},[376,2070,314],{"class":411},[376,2072,415],{"class":414},[376,2074,315],{"class":390},[376,2076,454],{"class":424},[376,2078,315],{"class":390},[376,2080,340],{"class":420},[376,2082,613],{"class":424},[376,2084,391],{"class":390},[376,2086,2087,2089,2091,2093,2095,2097,2099,2102,2104],{"class":378,"line":394},[376,2088,791],{"class":420},[376,2090,794],{"class":424},[376,2092,361],{"class":414},[376,2094,315],{"class":390},[376,2096,454],{"class":424},[376,2098,315],{"class":390},[376,2100,2101],{"class":424},"isAuthenticated)",[376,2103,461],{"class":390},[376,2105,2106],{"class":404}," // false\n",[466,2108],{},[473,2110,2112],{"id":2111},"refreshsession","refreshSession()",[276,2114,2115],{},"Silently refreshes the access token for the active session.",[367,2117,2119],{"className":369,"code":2118,"language":371,"meta":372,"style":372},"Future\u003Cbool> refreshSession()\n",[279,2120,2121],{"__ignoreMap":372},[376,2122,2123,2125,2127,2129,2131,2133],{"class":378,"line":379},[376,2124,973],{"class":414},[376,2126,499],{"class":424},[376,2128,907],{"class":414},[376,2130,504],{"class":424},[376,2132,343],{"class":420},[376,2134,986],{"class":424},[276,2136,2137,1839,2139,2141,2142,2145],{},[283,2138,1838],{},[279,2140,678],{}," on success, ",[279,2143,2144],{},"false"," if the refresh token is expired or the provider does not support refresh.",[367,2147,2149],{"className":369,"code":2148,"language":371,"meta":372,"style":372},"final ok = await Authyra.instance.refreshSession();\nif (!ok) {\n  // Force re-authentication\n  await Authyra.instance.signOut();\n}\n",[279,2150,2151,2176,2187,2192,2210],{"__ignoreMap":372},[376,2152,2153,2155,2158,2160,2162,2164,2166,2168,2170,2172,2174],{"class":378,"line":379},[376,2154,754],{"class":492},[376,2156,2157],{"class":424}," ok ",[376,2159,561],{"class":390},[376,2161,1011],{"class":411},[376,2163,415],{"class":414},[376,2165,315],{"class":390},[376,2167,454],{"class":424},[376,2169,315],{"class":390},[376,2171,343],{"class":420},[376,2173,613],{"class":424},[376,2175,391],{"class":390},[376,2177,2178,2180,2182,2184],{"class":378,"line":394},[376,2179,776],{"class":411},[376,2181,930],{"class":424},[376,2183,1485],{"class":390},[376,2185,2186],{"class":424},"ok) {\n",[376,2188,2189],{"class":378,"line":401},[376,2190,2191],{"class":404},"  // Force re-authentication\n",[376,2193,2194,2196,2198,2200,2202,2204,2206,2208],{"class":378,"line":408},[376,2195,631],{"class":411},[376,2197,415],{"class":414},[376,2199,315],{"class":390},[376,2201,454],{"class":424},[376,2203,315],{"class":390},[376,2205,340],{"class":420},[376,2207,613],{"class":424},[376,2209,391],{"class":390},[376,2211,2212],{"class":378,"line":436},[376,2213,657],{"class":424},[466,2215],{},[271,2217,142],{"id":2218},"multi-account",[473,2220,352],{"id":352},[367,2222,2224],{"className":369,"code":2223,"language":371,"meta":372,"style":372},"AccountManager get accounts\n",[279,2225,2226],{"__ignoreMap":372},[376,2227,2228,2230,2232],{"class":378,"line":379},[376,2229,207],{"class":414},[376,2231,698],{"class":390},[376,2233,2234],{"class":424}," accounts\n",[276,2236,2237,2238,2240],{},"Exposes the ",[279,2239,207],{}," for multi-session operations.",[367,2242,2244],{"className":369,"code":2243,"language":371,"meta":372,"style":372},"final mgr = Authyra.instance.accounts;\n\n// List all signed-in users (sorted by last activity)\nfinal users = await mgr.getAll();     // List\u003CAuthUser>\n\n// Switch the active account\nawait mgr.switchTo('user_id_here');\n\n// Sign out a specific account\nawait mgr.signOut('user_id_here');\n\n// Sign out every account\nawait mgr.signOutAll();\n\n// Remove expired sessions, returns count removed\nfinal removed = await mgr.cleanExpired();\n",[279,2245,2246,2267,2271,2276,2302,2306,2311,2331,2335,2340,2358,2362,2368,2384,2389,2395],{"__ignoreMap":372},[376,2247,2248,2250,2253,2255,2257,2259,2261,2263,2265],{"class":378,"line":379},[376,2249,754],{"class":492},[376,2251,2252],{"class":424}," mgr ",[376,2254,561],{"class":390},[376,2256,415],{"class":414},[376,2258,315],{"class":390},[376,2260,454],{"class":424},[376,2262,315],{"class":390},[376,2264,352],{"class":424},[376,2266,391],{"class":390},[376,2268,2269],{"class":378,"line":394},[376,2270,398],{"emptyLinePlaceholder":397},[376,2272,2273],{"class":378,"line":401},[376,2274,2275],{"class":404},"// List all signed-in users (sorted by last activity)\n",[376,2277,2278,2280,2283,2285,2287,2290,2292,2295,2297,2299],{"class":378,"line":408},[376,2279,754],{"class":492},[376,2281,2282],{"class":424}," users ",[376,2284,561],{"class":390},[376,2286,1011],{"class":411},[376,2288,2289],{"class":424}," mgr",[376,2291,315],{"class":390},[376,2293,2294],{"class":420},"getAll",[376,2296,613],{"class":424},[376,2298,461],{"class":390},[376,2300,2301],{"class":404},"     // List\u003CAuthUser>\n",[376,2303,2304],{"class":378,"line":436},[376,2305,398],{"emptyLinePlaceholder":397},[376,2307,2308],{"class":378,"line":441},[376,2309,2310],{"class":404},"// Switch the active account\n",[376,2312,2313,2315,2317,2319,2322,2324,2327,2329],{"class":378,"line":447},[376,2314,314],{"class":411},[376,2316,2289],{"class":424},[376,2318,315],{"class":390},[376,2320,2321],{"class":420},"switchTo",[376,2323,794],{"class":424},[376,2325,2326],{"class":386},"'user_id_here'",[376,2328,818],{"class":424},[376,2330,391],{"class":390},[376,2332,2333],{"class":378,"line":648},[376,2334,398],{"emptyLinePlaceholder":397},[376,2336,2337],{"class":378,"line":654},[376,2338,2339],{"class":404},"// Sign out a specific account\n",[376,2341,2342,2344,2346,2348,2350,2352,2354,2356],{"class":378,"line":1414},[376,2343,314],{"class":411},[376,2345,2289],{"class":424},[376,2347,315],{"class":390},[376,2349,340],{"class":420},[376,2351,794],{"class":424},[376,2353,2326],{"class":386},[376,2355,818],{"class":424},[376,2357,391],{"class":390},[376,2359,2360],{"class":378,"line":2022},[376,2361,398],{"emptyLinePlaceholder":397},[376,2363,2365],{"class":378,"line":2364},12,[376,2366,2367],{"class":404},"// Sign out every account\n",[376,2369,2371,2373,2375,2377,2380,2382],{"class":378,"line":2370},13,[376,2372,314],{"class":411},[376,2374,2289],{"class":424},[376,2376,315],{"class":390},[376,2378,2379],{"class":420},"signOutAll",[376,2381,613],{"class":424},[376,2383,391],{"class":390},[376,2385,2387],{"class":378,"line":2386},14,[376,2388,398],{"emptyLinePlaceholder":397},[376,2390,2392],{"class":378,"line":2391},15,[376,2393,2394],{"class":404},"// Remove expired sessions, returns count removed\n",[376,2396,2398,2400,2403,2405,2407,2409,2411,2414,2416],{"class":378,"line":2397},16,[376,2399,754],{"class":492},[376,2401,2402],{"class":424}," removed ",[376,2404,561],{"class":390},[376,2406,1011],{"class":411},[376,2408,2289],{"class":424},[376,2410,315],{"class":390},[376,2412,2413],{"class":420},"cleanExpired",[376,2415,613],{"class":424},[376,2417,391],{"class":390},[466,2419],{},[271,2421,2423],{"id":2422},"lifecycle","Lifecycle",[473,2425,666],{"id":2426},"dispose",[276,2428,2429,2430,2433],{},"Tears down the singleton: cancels stream subscriptions, closes controllers, and resets the internal ",[279,2431,2432],{},"_instance"," reference.",[367,2435,2437],{"className":369,"code":2436,"language":371,"meta":372,"style":372},"Future\u003Cvoid> dispose()\n",[279,2438,2439],{"__ignoreMap":372},[376,2440,2441,2443,2445,2447,2449,2451],{"class":378,"line":379},[376,2442,973],{"class":414},[376,2444,499],{"class":424},[376,2446,538],{"class":492},[376,2448,504],{"class":424},[376,2450,2426],{"class":420},[376,2452,986],{"class":424},[276,2454,2455,2456,303,2458,2461,2462,325,2464,2466,2467,2469],{},"After ",[279,2457,666],{},[279,2459,2460],{},"Authyra.isInitialized"," returns ",[279,2463,2144],{},[279,2465,482],{}," throws until ",[279,2468,682],{}," is called again. Useful in tests to reset state between test cases.",[367,2471,2473],{"className":369,"code":2472,"language":371,"meta":372,"style":372},"tearDown(() async {\n  if (Authyra.isInitialized) {\n    await Authyra.instance.dispose();\n  }\n});\n",[279,2474,2475,2487,2500,2519,2523],{"__ignoreMap":372},[376,2476,2477,2480,2483,2485],{"class":378,"line":379},[376,2478,2479],{"class":420},"tearDown",[376,2481,2482],{"class":424},"(() ",[376,2484,547],{"class":411},[376,2486,550],{"class":424},[376,2488,2489,2491,2493,2495,2497],{"class":378,"line":394},[376,2490,1661],{"class":411},[376,2492,930],{"class":424},[376,2494,361],{"class":414},[376,2496,315],{"class":390},[376,2498,2499],{"class":424},"isInitialized) {\n",[376,2501,2502,2505,2507,2509,2511,2513,2515,2517],{"class":378,"line":401},[376,2503,2504],{"class":411},"    await",[376,2506,415],{"class":414},[376,2508,315],{"class":390},[376,2510,454],{"class":424},[376,2512,315],{"class":390},[376,2514,2426],{"class":420},[376,2516,613],{"class":424},[376,2518,391],{"class":390},[376,2520,2521],{"class":378,"line":408},[376,2522,1411],{"class":424},[376,2524,2525,2527],{"class":378,"line":436},[376,2526,1417],{"class":424},[376,2528,391],{"class":390},[466,2530],{},[271,2532,2534],{"id":2533},"complete-example","Complete Example",[367,2536,2539],{"className":369,"code":2537,"filename":2538,"language":371,"meta":372,"style":372},"import 'package:authyra/authyra.dart';\n\nFuture\u003Cvoid> main() async {\n  // 1. Configure and initialize\n  await Authyra.initialize(\n    client: AuthyraClient(\n      providers: [\n        CredentialsProvider.withTokens(\n          id: 'api',\n          authorize: (creds) async {\n            final res = await myApi.post('/auth/login', body: creds);\n            if (res.statusCode != 200) return null;\n            return AuthSignInResult(\n              user:         AuthUser(id: res.data['id'], email: res.data['email']),\n              accessToken:  res.data['accessToken'],\n              refreshToken: res.data['refreshToken'],\n              expiresAt:    DateTime.parse(res.data['expiresAt']),\n            );\n          },\n        ),\n      ],\n      storage: InMemoryAuthStorage(),\n    ),\n  );\n\n  // 2. Subscribe to state changes before signing in\n  Authyra.instance.authStateChanges.listen((state) {\n    print('[auth] ${state.type.name} — user: ${state.user?.email}');\n  });\n\n  // 3. Sign in\n  final user = await Authyra.instance.signIn('api', params: {\n    'email':    'alice@example.com',\n    'password': 'secret',\n  });\n  print('Hello, ${user.name}!');\n\n  // 4. Use synchronous state in rendering logic\n  print('isAuthenticated: ${Authyra.instance.isAuthenticated}');\n\n  // 5. Read the access token for HTTP calls\n  final token = await Authyra.instance.getAccessToken();\n  print('Bearer $token');\n\n  // 6. Sign out\n  await Authyra.instance.signOut();\n  print('isAuthenticated: ${Authyra.instance.isAuthenticated}'); // false\n\n  // 7. Dispose (optional — mainly for tests)\n  await Authyra.instance.dispose();\n}\n","main.dart",[279,2540,2541,2549,2553,2572,2577,2589,2600,2610,2622,2634,2648,2685,2710,2720,2768,2789,2809,2839,2847,2855,2863,2871,2886,2894,2901,2906,2912,2933,2981,2988,2993,2999,3033,3044,3056,3063,3089,3094,3100,3130,3135,3141,3166,3186,3191,3197,3216,3247,3252,3258,3277],{"__ignoreMap":372},[376,2542,2543,2545,2547],{"class":378,"line":379},[376,2544,383],{"class":382},[376,2546,387],{"class":386},[376,2548,391],{"class":390},[376,2550,2551],{"class":378,"line":394},[376,2552,398],{"emptyLinePlaceholder":397},[376,2554,2555,2557,2559,2561,2563,2566,2568,2570],{"class":378,"line":401},[376,2556,973],{"class":414},[376,2558,499],{"class":424},[376,2560,538],{"class":492},[376,2562,504],{"class":424},[376,2564,2565],{"class":420},"main",[376,2567,544],{"class":424},[376,2569,547],{"class":411},[376,2571,550],{"class":424},[376,2573,2574],{"class":378,"line":408},[376,2575,2576],{"class":404},"  // 1. Configure and initialize\n",[376,2578,2579,2581,2583,2585,2587],{"class":378,"line":436},[376,2580,631],{"class":411},[376,2582,415],{"class":414},[376,2584,315],{"class":390},[376,2586,421],{"class":420},[376,2588,566],{"class":424},[376,2590,2591,2594,2596,2598],{"class":378,"line":441},[376,2592,2593],{"class":424},"    client",[376,2595,428],{"class":390},[376,2597,517],{"class":414},[376,2599,566],{"class":424},[376,2601,2602,2605,2607],{"class":378,"line":447},[376,2603,2604],{"class":424},"      providers",[376,2606,428],{"class":390},[376,2608,2609],{"class":424}," [\n",[376,2611,2612,2615,2617,2620],{"class":378,"line":648},[376,2613,2614],{"class":414},"        CredentialsProvider",[376,2616,315],{"class":390},[376,2618,2619],{"class":420},"withTokens",[376,2621,566],{"class":424},[376,2623,2624,2627,2629,2632],{"class":378,"line":654},[376,2625,2626],{"class":424},"          id",[376,2628,428],{"class":390},[376,2630,2631],{"class":386}," 'api'",[376,2633,523],{"class":390},[376,2635,2636,2639,2641,2644,2646],{"class":378,"line":1414},[376,2637,2638],{"class":424},"          authorize",[376,2640,428],{"class":390},[376,2642,2643],{"class":424}," (creds) ",[376,2645,547],{"class":411},[376,2647,550],{"class":424},[376,2649,2650,2653,2656,2658,2660,2663,2665,2668,2670,2673,2675,2678,2680,2683],{"class":378,"line":2022},[376,2651,2652],{"class":492},"            final",[376,2654,2655],{"class":424}," res ",[376,2657,561],{"class":390},[376,2659,1011],{"class":411},[376,2661,2662],{"class":424}," myApi",[376,2664,315],{"class":390},[376,2666,2667],{"class":420},"post",[376,2669,794],{"class":424},[376,2671,2672],{"class":386},"'/auth/login'",[376,2674,590],{"class":390},[376,2676,2677],{"class":424}," body",[376,2679,428],{"class":390},[376,2681,2682],{"class":424}," creds)",[376,2684,391],{"class":390},[376,2686,2687,2690,2693,2695,2698,2700,2703,2705,2707],{"class":378,"line":2364},[376,2688,2689],{"class":411},"            if",[376,2691,2692],{"class":424}," (res",[376,2694,315],{"class":390},[376,2696,2697],{"class":424},"statusCode ",[376,2699,782],{"class":390},[376,2701,2702],{"class":382}," 200",[376,2704,788],{"class":424},[376,2706,1499],{"class":411},[376,2708,2709],{"class":390}," null;\n",[376,2711,2712,2715,2718],{"class":378,"line":2370},[376,2713,2714],{"class":411},"            return",[376,2716,2717],{"class":414}," AuthSignInResult",[376,2719,566],{"class":424},[376,2721,2722,2725,2727,2730,2732,2734,2737,2739,2742,2745,2748,2750,2753,2755,2757,2759,2761,2763,2766],{"class":378,"line":2386},[376,2723,2724],{"class":424},"              user",[376,2726,428],{"class":390},[376,2728,2729],{"class":414},"         AuthUser",[376,2731,582],{"class":424},[376,2733,428],{"class":390},[376,2735,2736],{"class":424}," res",[376,2738,315],{"class":390},[376,2740,2741],{"class":424},"data[",[376,2743,2744],{"class":386},"'id'",[376,2746,2747],{"class":424},"]",[376,2749,590],{"class":390},[376,2751,2752],{"class":424}," email",[376,2754,428],{"class":390},[376,2756,2736],{"class":424},[376,2758,315],{"class":390},[376,2760,2741],{"class":424},[376,2762,1885],{"class":386},[376,2764,2765],{"class":424},"])",[376,2767,523],{"class":390},[376,2769,2770,2773,2775,2778,2780,2782,2785,2787],{"class":378,"line":2391},[376,2771,2772],{"class":424},"              accessToken",[376,2774,428],{"class":390},[376,2776,2777],{"class":424},"  res",[376,2779,315],{"class":390},[376,2781,2741],{"class":424},[376,2783,2784],{"class":386},"'accessToken'",[376,2786,2747],{"class":424},[376,2788,523],{"class":390},[376,2790,2791,2794,2796,2798,2800,2802,2805,2807],{"class":378,"line":2397},[376,2792,2793],{"class":424},"              refreshToken",[376,2795,428],{"class":390},[376,2797,2736],{"class":424},[376,2799,315],{"class":390},[376,2801,2741],{"class":424},[376,2803,2804],{"class":386},"'refreshToken'",[376,2806,2747],{"class":424},[376,2808,523],{"class":390},[376,2810,2812,2815,2817,2820,2822,2825,2828,2830,2832,2835,2837],{"class":378,"line":2811},17,[376,2813,2814],{"class":424},"              expiresAt",[376,2816,428],{"class":390},[376,2818,2819],{"class":414},"    DateTime",[376,2821,315],{"class":390},[376,2823,2824],{"class":420},"parse",[376,2826,2827],{"class":424},"(res",[376,2829,315],{"class":390},[376,2831,2741],{"class":424},[376,2833,2834],{"class":386},"'expiresAt'",[376,2836,2765],{"class":424},[376,2838,523],{"class":390},[376,2840,2842,2845],{"class":378,"line":2841},18,[376,2843,2844],{"class":424},"            )",[376,2846,391],{"class":390},[376,2848,2850,2853],{"class":378,"line":2849},19,[376,2851,2852],{"class":424},"          }",[376,2854,523],{"class":390},[376,2856,2858,2861],{"class":378,"line":2857},20,[376,2859,2860],{"class":424},"        )",[376,2862,523],{"class":390},[376,2864,2866,2869],{"class":378,"line":2865},21,[376,2867,2868],{"class":424},"      ]",[376,2870,523],{"class":390},[376,2872,2874,2877,2879,2882,2884],{"class":378,"line":2873},22,[376,2875,2876],{"class":424},"      storage",[376,2878,428],{"class":390},[376,2880,2881],{"class":414}," InMemoryAuthStorage",[376,2883,613],{"class":424},[376,2885,523],{"class":390},[376,2887,2889,2892],{"class":378,"line":2888},23,[376,2890,2891],{"class":424},"    )",[376,2893,523],{"class":390},[376,2895,2897,2899],{"class":378,"line":2896},24,[376,2898,620],{"class":424},[376,2900,391],{"class":390},[376,2902,2904],{"class":378,"line":2903},25,[376,2905,398],{"emptyLinePlaceholder":397},[376,2907,2909],{"class":378,"line":2908},26,[376,2910,2911],{"class":404},"  // 2. Subscribe to state changes before signing in\n",[376,2913,2915,2918,2920,2922,2924,2926,2928,2930],{"class":378,"line":2914},27,[376,2916,2917],{"class":414},"  Authyra",[376,2919,315],{"class":390},[376,2921,454],{"class":424},[376,2923,315],{"class":390},[376,2925,324],{"class":424},[376,2927,315],{"class":390},[376,2929,1272],{"class":420},[376,2931,2932],{"class":424},"((state) {\n",[376,2934,2936,2938,2940,2943,2945,2947,2949,2952,2954,2956,2958,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979],{"class":378,"line":2935},28,[376,2937,1683],{"class":420},[376,2939,794],{"class":424},[376,2941,2942],{"class":386},"'[auth] ",[376,2944,800],{"class":424},[376,2946,1324],{"class":803},[376,2948,315],{"class":424},[376,2950,2951],{"class":803},"type",[376,2953,315],{"class":424},[376,2955,809],{"class":803},[376,2957,812],{"class":424},[376,2959,2960],{"class":386}," — user: ",[376,2962,800],{"class":424},[376,2964,1324],{"class":803},[376,2966,315],{"class":424},[376,2968,804],{"class":803},[376,2970,1035],{"class":424},[376,2972,1334],{"class":803},[376,2974,812],{"class":424},[376,2976,815],{"class":386},[376,2978,818],{"class":424},[376,2980,391],{"class":390},[376,2982,2984,2986],{"class":378,"line":2983},29,[376,2985,1922],{"class":424},[376,2987,391],{"class":390},[376,2989,2991],{"class":378,"line":2990},30,[376,2992,398],{"emptyLinePlaceholder":397},[376,2994,2996],{"class":378,"line":2995},31,[376,2997,2998],{"class":404},"  // 3. Sign in\n",[376,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3025,3027,3029,3031],{"class":378,"line":3001},32,[376,3003,555],{"class":492},[376,3005,757],{"class":424},[376,3007,561],{"class":390},[376,3009,1011],{"class":411},[376,3011,415],{"class":414},[376,3013,315],{"class":390},[376,3015,454],{"class":424},[376,3017,315],{"class":390},[376,3019,337],{"class":420},[376,3021,794],{"class":424},[376,3023,3024],{"class":386},"'api'",[376,3026,590],{"class":390},[376,3028,1771],{"class":424},[376,3030,428],{"class":390},[376,3032,550],{"class":424},[376,3034,3036,3038,3040,3042],{"class":378,"line":3035},33,[376,3037,1898],{"class":386},[376,3039,428],{"class":390},[376,3041,1903],{"class":386},[376,3043,523],{"class":390},[376,3045,3047,3049,3051,3054],{"class":378,"line":3046},34,[376,3048,1910],{"class":386},[376,3050,428],{"class":390},[376,3052,3053],{"class":386}," 'secret'",[376,3055,523],{"class":390},[376,3057,3059,3061],{"class":378,"line":3058},35,[376,3060,1922],{"class":424},[376,3062,391],{"class":390},[376,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3085,3087],{"class":378,"line":3065},36,[376,3067,1929],{"class":420},[376,3069,794],{"class":424},[376,3071,797],{"class":386},[376,3073,800],{"class":424},[376,3075,804],{"class":803},[376,3077,315],{"class":424},[376,3079,809],{"class":803},[376,3081,812],{"class":424},[376,3083,3084],{"class":386},"!'",[376,3086,818],{"class":424},[376,3088,391],{"class":390},[376,3090,3092],{"class":378,"line":3091},37,[376,3093,398],{"emptyLinePlaceholder":397},[376,3095,3097],{"class":378,"line":3096},38,[376,3098,3099],{"class":404},"  // 4. Use synchronous state in rendering logic\n",[376,3101,3103,3105,3107,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128],{"class":378,"line":3102},39,[376,3104,1929],{"class":420},[376,3106,794],{"class":424},[376,3108,3109],{"class":386},"'isAuthenticated: ",[376,3111,800],{"class":424},[376,3113,361],{"class":414},[376,3115,315],{"class":424},[376,3117,454],{"class":803},[376,3119,315],{"class":424},[376,3121,310],{"class":803},[376,3123,812],{"class":424},[376,3125,815],{"class":386},[376,3127,818],{"class":424},[376,3129,391],{"class":390},[376,3131,3133],{"class":378,"line":3132},40,[376,3134,398],{"emptyLinePlaceholder":397},[376,3136,3138],{"class":378,"line":3137},41,[376,3139,3140],{"class":404},"  // 5. Read the access token for HTTP calls\n",[376,3142,3144,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164],{"class":378,"line":3143},42,[376,3145,555],{"class":492},[376,3147,1153],{"class":424},[376,3149,561],{"class":390},[376,3151,1011],{"class":411},[376,3153,415],{"class":414},[376,3155,315],{"class":390},[376,3157,454],{"class":424},[376,3159,315],{"class":390},[376,3161,1133],{"class":420},[376,3163,613],{"class":424},[376,3165,391],{"class":390},[376,3167,3169,3171,3173,3176,3178,3180,3182,3184],{"class":378,"line":3168},43,[376,3170,1929],{"class":420},[376,3172,794],{"class":424},[376,3174,3175],{"class":386},"'Bearer ",[376,3177,1195],{"class":424},[376,3179,1198],{"class":803},[376,3181,815],{"class":386},[376,3183,818],{"class":424},[376,3185,391],{"class":390},[376,3187,3189],{"class":378,"line":3188},44,[376,3190,398],{"emptyLinePlaceholder":397},[376,3192,3194],{"class":378,"line":3193},45,[376,3195,3196],{"class":404},"  // 6. Sign out\n",[376,3198,3200,3202,3204,3206,3208,3210,3212,3214],{"class":378,"line":3199},46,[376,3201,631],{"class":411},[376,3203,415],{"class":414},[376,3205,315],{"class":390},[376,3207,454],{"class":424},[376,3209,315],{"class":390},[376,3211,340],{"class":420},[376,3213,613],{"class":424},[376,3215,391],{"class":390},[376,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245],{"class":378,"line":3218},47,[376,3220,1929],{"class":420},[376,3222,794],{"class":424},[376,3224,3109],{"class":386},[376,3226,800],{"class":424},[376,3228,361],{"class":414},[376,3230,315],{"class":424},[376,3232,454],{"class":803},[376,3234,315],{"class":424},[376,3236,310],{"class":803},[376,3238,812],{"class":424},[376,3240,815],{"class":386},[376,3242,818],{"class":424},[376,3244,461],{"class":390},[376,3246,2106],{"class":404},[376,3248,3250],{"class":378,"line":3249},48,[376,3251,398],{"emptyLinePlaceholder":397},[376,3253,3255],{"class":378,"line":3254},49,[376,3256,3257],{"class":404},"  // 7. Dispose (optional — mainly for tests)\n",[376,3259,3261,3263,3265,3267,3269,3271,3273,3275],{"class":378,"line":3260},50,[376,3262,631],{"class":411},[376,3264,415],{"class":414},[376,3266,315],{"class":390},[376,3268,454],{"class":424},[376,3270,315],{"class":390},[376,3272,2426],{"class":420},[376,3274,613],{"class":424},[376,3276,391],{"class":390},[376,3278,3280],{"class":378,"line":3279},51,[376,3281,657],{"class":424},[466,3283],{},[271,3285,3287],{"id":3286},"see-also","See Also",[291,3289,3290,3296,3301],{},[294,3291,3292],{},[3293,3294,3295],"a",{"href":200},"AuthyraClient API →",[294,3297,3298],{},[3293,3299,3300],{"href":56},"Architecture →",[294,3302,3303],{},[3293,3304,3305],{"href":22},"Quick Start →",[3307,3308,3309],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":372,"searchDepth":394,"depth":394,"links":3311},[3312,3313,3317,3322,3327,3331,3336,3339,3342,3343],{"id":273,"depth":394,"text":274},{"id":470,"depth":394,"text":471,"children":3314},[3315,3316],{"id":475,"depth":401,"text":476},{"id":672,"depth":401,"text":673},{"id":706,"depth":394,"text":707,"children":3318},[3319,3320,3321],{"id":719,"depth":401,"text":302},{"id":825,"depth":401,"text":306},{"id":897,"depth":401,"text":310},{"id":955,"depth":394,"text":956,"children":3323},[3324,3325,3326],{"id":962,"depth":401,"text":963},{"id":1058,"depth":401,"text":1059},{"id":1113,"depth":401,"text":1114},{"id":1207,"depth":394,"text":1208,"children":3328},[3329,3330],{"id":1211,"depth":401,"text":324},{"id":1603,"depth":401,"text":328},{"id":1707,"depth":394,"text":1708,"children":3332},[3333,3334,3335],{"id":1711,"depth":401,"text":1712},{"id":2029,"depth":401,"text":2030},{"id":2111,"depth":401,"text":2112},{"id":2218,"depth":394,"text":142,"children":3337},[3338],{"id":352,"depth":401,"text":352},{"id":2422,"depth":394,"text":2423,"children":3340},[3341],{"id":2426,"depth":401,"text":666},{"id":2533,"depth":394,"text":2534},{"id":3286,"depth":394,"text":3287},"Complete API reference for AuthyraInstance — the reactive singleton entry point.","md",null,{},{"title":3349,"description":3350},"AuthyraInstance API | Authyra","Full reference for AuthyraInstance methods, streams, and synchronous state accessors.","DbQoBUo_Y3igg-i3qoktOq02Fts8hQhC35GD4xFc9UI",[3353,3355],{"title":199,"path":200,"stem":201,"description":3354,"children":-1},"Complete API reference for AuthyraClient — the stateless orchestration layer.",{"title":207,"path":208,"stem":209,"description":3356,"icon":210,"children":-1},"Référence complète de AccountManager — API multi-compte publique exposée via Authyra.instance.accounts.",1782700512619]