1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259 |
-
-
-
- declare namespace firebase {
-
-
- type NextFn<T> = (value: T) => void;
-
-
- type ErrorFn<E = Error> = (error: E) => void;
-
-
- type CompleteFn = () => void;
-
-
-
- interface FirebaseError {
-
-
- code: string;
-
-
- message: string;
-
-
- name: 'FirebaseError';
-
-
- stack?: string;
- }
-
-
-
- interface Observer<T, E = Error> {
- next: NextFn<T>;
- error: ErrorFn<E>;
- complete: CompleteFn;
- }
-
-
-
- type LogLevel = 'debug' | 'verbose' | 'info' | 'warn' | 'error' | 'silent';
-
-
-
- var SDK_VERSION: string;
-
-
-
- function registerVersion(
- library: string,
- version: string,
- variant?: string
- ): void;
-
-
-
- function setLogLevel(logLevel: LogLevel): void;
-
-
-
- function onLog(
- logCallback: (callbackParams: {
-
-
- level: LogLevel;
-
-
- message: string;
-
-
- args: any[];
-
-
- type: string;
- }) => void,
- options?: {
-
-
- level: LogLevel;
- }
- ): void;
-
-
-
- type Unsubscribe = () => void;
-
-
-
- interface User extends firebase.UserInfo {
-
-
- delete(): Promise<void>;
- emailVerified: boolean;
- getIdTokenResult(
- forceRefresh?: boolean
- ): Promise<firebase.auth.IdTokenResult>;
-
-
- getIdToken(forceRefresh?: boolean): Promise<string>;
- isAnonymous: boolean;
-
-
- linkAndRetrieveDataWithCredential(
- credential: firebase.auth.AuthCredential
- ): Promise<firebase.auth.UserCredential>;
-
-
- linkWithCredential(
- credential: firebase.auth.AuthCredential
- ): Promise<firebase.auth.UserCredential>;
-
-
- linkWithPhoneNumber(
- phoneNumber: string,
- applicationVerifier: firebase.auth.ApplicationVerifier
- ): Promise<firebase.auth.ConfirmationResult>;
-
-
- linkWithPopup(
- provider: firebase.auth.AuthProvider
- ): Promise<firebase.auth.UserCredential>;
-
-
- linkWithRedirect(provider: firebase.auth.AuthProvider): Promise<void>;
- metadata: firebase.auth.UserMetadata;
-
-
-
- multiFactor: firebase.User.MultiFactorUser;
-
-
- phoneNumber: string | null;
- providerData: (firebase.UserInfo | null)[];
-
-
- reauthenticateAndRetrieveDataWithCredential(
- credential: firebase.auth.AuthCredential
- ): Promise<firebase.auth.UserCredential>;
-
-
- reauthenticateWithCredential(
- credential: firebase.auth.AuthCredential
- ): Promise<firebase.auth.UserCredential>;
-
-
- reauthenticateWithPhoneNumber(
- phoneNumber: string,
- applicationVerifier: firebase.auth.ApplicationVerifier
- ): Promise<firebase.auth.ConfirmationResult>;
-
-
- reauthenticateWithPopup(
- provider: firebase.auth.AuthProvider
- ): Promise<firebase.auth.UserCredential>;
-
-
- reauthenticateWithRedirect(
- provider: firebase.auth.AuthProvider
- ): Promise<void>;
- refreshToken: string;
-
-
- reload(): Promise<void>;
-
-
- sendEmailVerification(
- actionCodeSettings?: firebase.auth.ActionCodeSettings | null
- ): Promise<void>;
-
-
- tenantId: string | null;
-
-
- toJSON(): Object;
-
-
- unlink(providerId: string): Promise<firebase.User>;
-
-
- updateEmail(newEmail: string): Promise<void>;
-
-
- updatePassword(newPassword: string): Promise<void>;
-
-
- updatePhoneNumber(
- phoneCredential: firebase.auth.AuthCredential
- ): Promise<void>;
-
-
- updateProfile(profile: {
- displayName?: string | null;
- photoURL?: string | null;
- }): Promise<void>;
-
-
- verifyBeforeUpdateEmail(
- newEmail: string,
- actionCodeSettings?: firebase.auth.ActionCodeSettings | null
- ): Promise<void>;
- }
-
-
-
- interface UserInfo {
- displayName: string | null;
- email: string | null;
- phoneNumber: string | null;
- photoURL: string | null;
- providerId: string;
-
-
- uid: string;
- }
-
- type FirebaseSignInProvider =
- | 'custom'
- | 'email'
- | 'password'
- | 'phone'
- | 'anonymous'
- | 'google.com'
- | 'facebook.com'
- | 'github.com'
- | 'twitter.com'
- | 'microsoft.com'
- | 'apple.com';
-
- interface FirebaseIdToken {
-
- iss: string;
-
-
- aud: string;
-
-
- sub: string;
-
-
- iat: number;
-
-
- exp: number;
-
-
- user_id: string;
-
-
- auth_time: number;
-
-
- provider_id?: 'anonymous';
-
-
- email?: string;
-
-
- email_verified?: boolean;
-
-
- phone_number?: string;
-
-
- name?: string;
-
-
- picture?: string;
-
-
- firebase: {
-
- sign_in_provider: FirebaseSignInProvider;
-
-
- identities?: { [provider in FirebaseSignInProvider]?: string[] };
- };
-
-
- [claim: string]: unknown;
-
-
- uid?: never;
- }
-
- export type EmulatorMockTokenOptions = (
- | { user_id: string }
- | { sub: string }
- ) &
- Partial<FirebaseIdToken>;
-
-
-
- function app(name?: string): firebase.app.App;
-
-
-
- var apps: firebase.app.App[];
-
-
-
- function auth(app?: firebase.app.App): firebase.auth.Auth;
-
-
-
- function database(app?: firebase.app.App): firebase.database.Database;
-
-
-
- function initializeApp(options: Object, name?: string): firebase.app.App;
-
-
-
- function messaging(app?: firebase.app.App): firebase.messaging.Messaging;
-
-
-
- function storage(app?: firebase.app.App): firebase.storage.Storage;
-
- function firestore(app?: firebase.app.App): firebase.firestore.Firestore;
-
- function functions(app?: firebase.app.App): firebase.functions.Functions;
-
- /**
- * Gets the {@link firebase.performance.Performance `Performance`} service.
- *
- * `firebase.performance()` can be called with no arguments to access the default
- * app's {@link firebase.performance.Performance `Performance`} service.
- * The {@link firebase.performance.Performance `Performance`} service does not work with
- * any other app.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * // Get the Performance service for the default app
- * const defaultPerformance = firebase.performance();
- * ```
- *
- * @param app The app to create a performance service for. Performance Monitoring only works with
- * the default app.
- * If not passed, uses the default app.
- */
- function performance(
- app?: firebase.app.App
- ): firebase.performance.Performance;
-
- /**
- * Gets the {@link firebase.remoteConfig.RemoteConfig `RemoteConfig`} instance.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * // Get the RemoteConfig instance for the default app
- * const defaultRemoteConfig = firebase.remoteConfig();
- * ```
- *
- * @param app The app to create a Remote Config service for. If not passed, uses the default app.
- */
- function remoteConfig(
- app?: firebase.app.App
- ): firebase.remoteConfig.RemoteConfig;
-
- /**
- * Gets the {@link firebase.analytics.Analytics `Analytics`} service.
- *
- * `firebase.analytics()` can be called with no arguments to access the default
- * app's {@link firebase.analytics.Analytics `Analytics`} service.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * // Get the Analytics service for the default app
- * const defaultAnalytics = firebase.analytics();
- * ```
- *
- * @param app The app to create an analytics service for.
- * If not passed, uses the default app.
- */
- function analytics(app?: firebase.app.App): firebase.analytics.Analytics;
-
- function appCheck(app?: firebase.app.App): firebase.appCheck.AppCheck;
- }
-
- declare namespace firebase.app {
- /**
- * A Firebase App holds the initialization information for a collection of
- * services.
- *
- * Do not call this constructor directly. Instead, use
- * {@link firebase.initializeApp|`firebase.initializeApp()`} to create an app.
- *
- */
- interface App {
- /**
- * Gets the {@link firebase.auth.Auth `Auth`} service for the current app.
- *
- * @example
- * ```javascript
- * var auth = app.auth();
- * // The above is shorthand for:
- * // var auth = firebase.auth(app);
- * ```
- */
- auth(): firebase.auth.Auth;
- /**
- * Gets the {@link firebase.database.Database `Database`} service for the
- * current app.
- *
- * @example
- * ```javascript
- * var database = app.database();
- * // The above is shorthand for:
- * // var database = firebase.database(app);
- * ```
- */
- database(url?: string): firebase.database.Database;
- /**
- * Renders this app unusable and frees the resources of all associated
- * services.
- *
- * @example
- * ```javascript
- * app.delete()
- * .then(function() {
- * console.log("App deleted successfully");
- * })
- * .catch(function(error) {
- * console.log("Error deleting app:", error);
- * });
- * ```
- */
- delete(): Promise<any>;
- /**
- * Gets the {@link firebase.installations.Installations `Installations`} service for the
- * current app.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * const installations = app.installations();
- * // The above is shorthand for:
- * // const installations = firebase.installations(app);
- * ```
- */
- installations(): firebase.installations.Installations;
- /**
- * Gets the {@link firebase.messaging.Messaging `Messaging`} service for the
- * current app.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * var messaging = app.messaging();
- * // The above is shorthand for:
- * // var messaging = firebase.messaging(app);
- * ```
- */
- messaging(): firebase.messaging.Messaging;
- /**
- * The (read-only) name for this app.
- *
- * The default app's name is `"[DEFAULT]"`.
- *
- * @example
- * ```javascript
- * // The default app's name is "[DEFAULT]"
- * firebase.initializeApp(defaultAppConfig);
- * console.log(firebase.app().name); // "[DEFAULT]"
- * ```
- *
- * @example
- * ```javascript
- * // A named app's name is what you provide to initializeApp()
- * var otherApp = firebase.initializeApp(otherAppConfig, "other");
- * console.log(otherApp.name); // "other"
- * ```
- */
- name: string;
- /**
- * The settable config flag for GDPR opt-in/opt-out
- */
- automaticDataCollectionEnabled: boolean;
- /**
- * The (read-only) configuration options for this app. These are the original
- * parameters given in
- * {@link firebase.initializeApp `firebase.initializeApp()`}.
- *
- * @example
- * ```javascript
- * var app = firebase.initializeApp(config);
- * console.log(app.options.databaseURL === config.databaseURL); // true
- * ```
- */
- options: Object;
- /**
- * Gets the {@link firebase.storage.Storage `Storage`} service for the current
- * app, optionally initialized with a custom storage bucket.
- *
- * @example
- * ```javascript
- * var storage = app.storage();
- * // The above is shorthand for:
- * // var storage = firebase.storage(app);
- * ```
- *
- * @example
- * ```javascript
- * var storage = app.storage("gs://your-app.appspot.com");
- * ```
- *
- * @param url The gs:
- * If not passed, uses the app's default Storage Bucket.
- */
- storage(url?: string): firebase.storage.Storage;
- firestore(): firebase.firestore.Firestore;
- functions(regionOrCustomDomain?: string): firebase.functions.Functions;
- /**
- * Gets the {@link firebase.performance.Performance `Performance`} service for the
- * current app. If the current app is not the default one, throws an error.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * const perf = app.performance();
- * // The above is shorthand for:
- * // const perf = firebase.performance(app);
- * ```
- */
- performance(): firebase.performance.Performance;
- /**
- * Gets the {@link firebase.remoteConfig.RemoteConfig `RemoteConfig`} instance.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * const rc = app.remoteConfig();
- * // The above is shorthand for:
- * // const rc = firebase.remoteConfig(app);
- * ```
- */
- remoteConfig(): firebase.remoteConfig.RemoteConfig;
- /**
- * Gets the {@link firebase.analytics.Analytics `Analytics`} service for the
- * current app. If the current app is not the default one, throws an error.
- *
- * @webonly
- *
- * @example
- * ```javascript
- * const analytics = app.analytics();
- * // The above is shorthand for:
- * // const analytics = firebase.analytics(app);
- * ```
- */
- analytics(): firebase.analytics.Analytics;
- appCheck(): firebase.appCheck.AppCheck;
- }
- }
-
- /**
- * @webonly
- */
- declare namespace firebase.appCheck {
- /**
- * Result returned by
- * {@link firebase.appCheck.AppCheck.getToken `firebase.appCheck().getToken()`}.
- */
- interface AppCheckTokenResult {
- token: string;
- }
- /*
- * reCAPTCHA v3 token provider.
- */
- class ReCaptchaV3Provider {
- /**
- * @param siteKey - reCAPTCHA v3 site key (public key).
- */
- constructor(siteKey: string);
- }
- /*
- * reCAPTCHA Enterprise token provider.
- */
- class ReCaptchaEnterpriseProvider {
- /**
- * @param keyId - reCAPTCHA Enterprise key ID.
- */
- constructor(keyId: string);
- }
- /*
- * Custom token provider.
- */
- class CustomProvider {
- /**
- * @param options - Options for creating the custom provider.
- */
- constructor(options: CustomProviderOptions);
- }
- /**
- * Options when creating a CustomProvider.
- */
- interface CustomProviderOptions {
- /**
- * Function to get an App Check token through a custom provider
- * service.
- */
- getToken: () => Promise<AppCheckToken>;
- }
-
- /**
- * The Firebase AppCheck service interface.
- *
- * Do not call this constructor directly. Instead, use
- * {@link firebase.appCheck `firebase.appCheck()`}.
- */
- export interface AppCheck {
- /**
- * Activate AppCheck
- * @param provider This can be a `ReCaptchaV3Provider` instance,
- * a `ReCaptchaEnterpriseProvider` instance, a `CustomProvider` instance,
- * an object with a custom `getToken()` method, or a reCAPTCHA site key.
- * @param isTokenAutoRefreshEnabled If true, the SDK automatically
- * refreshes App Check tokens as needed. If undefined, defaults to the
- * value of `app.automaticDataCollectionEnabled`, which defaults to
- * false and can be set in the app config.
- */
- activate(
- provider:
- | ReCaptchaV3Provider
- | ReCaptchaEnterpriseProvider
- | CustomProvider
- | AppCheckProvider
- | { getToken: () => AppCheckToken }
- | string,
- isTokenAutoRefreshEnabled?: boolean
- ): void;
-
- /**
- *
- * @param isTokenAutoRefreshEnabled If true, the SDK automatically
- * refreshes App Check tokens as needed. This overrides any value set
- * during `activate()`.
- */
- setTokenAutoRefreshEnabled(isTokenAutoRefreshEnabled: boolean): void;
- /**
- * Get the current App Check token. Attaches to the most recent
- * in-flight request if one is present. Returns null if no token
- * is present and no token requests are in-flight.
- *
- * @param forceRefresh - If true, will always try to fetch a fresh token.
- * If false, will use a cached token if found in storage.
- */
- getToken(
- forceRefresh?: boolean
- ): Promise<firebase.appCheck.AppCheckTokenResult>;
-
- /**
- * Registers a listener to changes in the token state. There can be more
- * than one listener registered at the same time for one or more
- * App Check instances. The listeners call back on the UI thread whenever
- * the current token associated with this App Check instance changes.
- *
- * @param observer An object with `next`, `error`, and `complete`
- * properties. `next` is called with an
- * {@link firebase.appCheck.AppCheckTokenResult `AppCheckTokenResult`}
- * whenever the token changes. `error` is optional and is called if an
- * error is thrown by the listener (the `next` function). `complete`
- * is unused, as the token stream is unending.
- *
- * @returns A function that unsubscribes this listener.
- */
- onTokenChanged(observer: {
- next: (tokenResult: firebase.appCheck.AppCheckTokenResult) => void;
- error?: (error: Error) => void;
- complete?: () => void;
- }): Unsubscribe;
-
- /**
- * Registers a listener to changes in the token state. There can be more
- * than one listener registered at the same time for one or more
- * App Check instances. The listeners call back on the UI thread whenever
- * the current token associated with this App Check instance changes.
- *
- * @param onNext When the token changes, this function is called with aa
- * {@link firebase.appCheck.AppCheckTokenResult `AppCheckTokenResult`}.
- * @param onError Optional. Called if there is an error thrown by the
- * listener (the `onNext` function).
- * @param onCompletion Currently unused, as the token stream is unending.
- * @returns A function that unsubscribes this listener.
- */
- onTokenChanged(
- onNext: (tokenResult: firebase.appCheck.AppCheckTokenResult) => void,
- onError?: (error: Error) => void,
- onCompletion?: () => void
- ): Unsubscribe;
- }
-
- /**
- * An App Check provider. This can be either the built-in reCAPTCHA
- * provider or a custom provider. For more on custom providers, see
- * https://firebase.google.com/docs/app-check/web-custom-provider
- */
- interface AppCheckProvider {
- /**
- * Returns an AppCheck token.
- */
- getToken(): Promise<AppCheckToken>;
- }
-
- /**
- * The token returned from an {@link firebase.appCheck.AppCheckProvider `AppCheckProvider`}.
- */
- interface AppCheckToken {
- /**
- * The token string in JWT format.
- */
- readonly token: string;
- /**
- * The local timestamp after which the token will expire.
- */
- readonly expireTimeMillis: number;
- }
- }
-
- /**
- * @webonly
- */
- declare namespace firebase.installations {
- /**
- * The Firebase Installations service interface.
- *
- * Do not call this constructor directly. Instead, use
- * {@link firebase.installations `firebase.installations()`}.
- */
- export interface Installations {
- /**
- * The {@link firebase.app.App app} associated with the `Installations` service
- * instance.
- *
- * @example
- * ```javascript
- * var app = analytics.app;
- * ```
- */
- app: firebase.app.App;
- /**
- * Creates a Firebase Installation if there isn't one for the app and
- * returns the Installation ID.
- *
- * @return Firebase Installation ID
- */
- getId(): Promise<string>;
-
- /**
- * Returns an Authentication Token for the current Firebase Installation.
- *
- * @return Firebase Installation Authentication Token
- */
- getToken(forceRefresh?: boolean): Promise<string>;
-
- /**
- * Deletes the Firebase Installation and all associated data.
- */
- delete(): Promise<void>;
-
- /**
- * Sets a new callback that will get called when Installlation ID changes.
- * Returns an unsubscribe function that will remove the callback when called.
- */
- onIdChange(callback: (installationId: string) => void): () => void;
- }
- }
-
-
- declare namespace firebase.performance {
-
-
- export interface Performance {
-
-
- app: firebase.app.App;
-
-
- trace(traceName: string): Trace;
-
-
-
- instrumentationEnabled: boolean;
-
-
- dataCollectionEnabled: boolean;
- }
-
- export interface Trace {
-
-
- start(): void;
-
-
- stop(): void;
-
-
- record(
- startTime: number,
- duration: number,
- options?: {
- metrics?: { [key: string]: number };
- attributes?: { [key: string]: string };
- }
- ): void;
-
-
- incrementMetric(metricName: string, num?: number): void;
-
-
- putMetric(metricName: string, num: number): void;
-
-
- getMetric(metricName: string): number;
-
-
- putAttribute(attr: string, value: string): void;
-
-
- getAttribute(attr: string): string | undefined;
-
-
-
- removeAttribute(attr: string): void;
-
-
- getAttributes(): { [key: string]: string };
- }
- }
-
-
- declare namespace firebase.remoteConfig {
-
-
- export interface RemoteConfig {
-
-
- app: firebase.app.App;
-
-
- settings: Settings;
-
-
-
- defaultConfig: { [key: string]: string | number | boolean };
-
-
-
- fetchTimeMillis: number;
-
-
-
- lastFetchStatus: FetchStatus;
-
-
-
- activate(): Promise<boolean>;
-
-
-
- ensureInitialized(): Promise<void>;
-
-
-
- fetch(): Promise<void>;
-
-
-
- fetchAndActivate(): Promise<boolean>;
-
-
-
- getAll(): { [key: string]: Value };
-
-
-
- getBoolean(key: string): boolean;
-
-
-
- getNumber(key: string): number;
-
-
-
- getString(key: string): string;
-
-
-
- getValue(key: string): Value;
-
-
-
- setLogLevel(logLevel: LogLevel): void;
- }
-
-
-
- export type ValueSource = 'static' | 'default' | 'remote';
-
-
-
- export interface Value {
-
-
- asBoolean(): boolean;
-
-
-
- asNumber(): number;
-
-
-
- asString(): string;
-
-
-
- getSource(): ValueSource;
- }
-
-
-
- export interface Settings {
-
-
- minimumFetchIntervalMillis: number;
-
-
-
- fetchTimeoutMillis: number;
- }
-
-
-
- export type FetchStatus = 'no-fetch-yet' | 'success' | 'failure' | 'throttle';
-
-
-
- export type LogLevel = 'debug' | 'error' | 'silent';
-
-
- export function isSupported(): Promise<boolean>;
- }
-
- declare namespace firebase.functions {
-
-
- export interface HttpsCallableResult {
- readonly data: any;
- }
-
-
- export interface HttpsCallable {
- (data?: any): Promise<HttpsCallableResult>;
- }
- export interface HttpsCallableOptions {
- timeout?: number;
- }
-
-
- export class Functions {
- private constructor();
-
- /**
- * Modify this instance to communicate with the Cloud Functions emulator.
- *
- * Note: this must be called before this instance has been used to do any operations.
- *
- * @param host The emulator host (ex: localhost)
- * @param port The emulator port (ex: 5001)
- */
- useEmulator(host: string, port: number): void;
-
- /**
- * Changes this instance to point to a Cloud Functions emulator running
- * locally. See https://firebase.google.com/docs/functions/local-emulator
- *
- * @deprecated Prefer the useEmulator(host, port) method.
- * @param origin The origin of the local emulator, such as
- * "http://localhost:5005".
- */
- useFunctionsEmulator(url: string): void;
- /**
- * Gets an `HttpsCallable` instance that refers to the function with the given
- * name.
- *
- * @param name The name of the https callable function.
- * @param options The options for this HttpsCallable instance.
- * @return The `HttpsCallable` instance.
- */
- httpsCallable(name: string, options?: HttpsCallableOptions): HttpsCallable;
- }
- /**
- * The set of Firebase Functions status codes. The codes are the same at the
- * ones exposed by gRPC here:
- * https://github.com/grpc/grpc/blob/master/doc/statuscodes.md
- *
- * Possible values:
- * - 'cancelled': The operation was cancelled (typically by the caller).
- * - 'unknown': Unknown error or an error from a different error domain.
- * - 'invalid-argument': Client specified an invalid argument. Note that this
- * differs from 'failed-precondition'. 'invalid-argument' indicates
- * arguments that are problematic regardless of the state of the system
- * (e.g. an invalid field name).
- * - 'deadline-exceeded': Deadline expired before operation could complete.
- * For operations that change the state of the system, this error may be
- * returned even if the operation has completed successfully. For example,
- * a successful response from a server could have been delayed long enough
- * for the deadline to expire.
- * - 'not-found': Some requested document was not found.
- * - 'already-exists': Some document that we attempted to create already
- * exists.
- * - 'permission-denied': The caller does not have permission to execute the
- * specified operation.
- * - 'resource-exhausted': Some resource has been exhausted, perhaps a
- * per-user quota, or perhaps the entire file system is out of space.
- * - 'failed-precondition': Operation was rejected because the system is not
- * in a state required for the operation's execution.
- * - 'aborted': The operation was aborted, typically due to a concurrency
- * issue like transaction aborts, etc.
- * - 'out-of-range': Operation was attempted past the valid range.
- * - 'unimplemented': Operation is not implemented or not supported/enabled.
- * - 'internal': Internal errors. Means some invariants expected by
- * underlying system has been broken. If you see one of these errors,
- * something is very broken.
- * - 'unavailable': The service is currently unavailable. This is most likely
- * a transient condition and may be corrected by retrying with a backoff.
- * - 'data-loss': Unrecoverable data loss or corruption.
- * - 'unauthenticated': The request does not have valid authentication
- * credentials for the operation.
- */
- export type FunctionsErrorCode =
- | 'ok'
- | 'cancelled'
- | 'unknown'
- | 'invalid-argument'
- | 'deadline-exceeded'
- | 'not-found'
- | 'already-exists'
- | 'permission-denied'
- | 'resource-exhausted'
- | 'failed-precondition'
- | 'aborted'
- | 'out-of-range'
- | 'unimplemented'
- | 'internal'
- | 'unavailable'
- | 'data-loss'
- | 'unauthenticated';
- export interface HttpsError extends Error {
-
-
- readonly code: FunctionsErrorCode;
-
-
- readonly details?: any;
- }
- }
-
- declare namespace firebase.auth {
-
-
- class ActionCodeURL {
- private constructor();
- /**
- * The API key of the email action link.
- */
- apiKey: string;
- /**
- * The action code of the email action link.
- */
- code: string;
- /**
- * The continue URL of the email action link. Null if not provided.
- */
- continueUrl: string | null;
- /**
- * The language code of the email action link. Null if not provided.
- */
- languageCode: string | null;
- /**
- * The action performed by the email action link. It returns from one
- * of the types from {@link firebase.auth.ActionCodeInfo}.
- */
- operation: firebase.auth.ActionCodeInfo.Operation;
- /**
- * Parses the email action link string and returns an ActionCodeURL object
- * if the link is valid, otherwise returns null.
- *
- * @param link The email action link string.
- * @return The ActionCodeURL object, or null if the link is invalid.
- */
- static parseLink(link: string): firebase.auth.ActionCodeURL | null;
- /**
- * The tenant ID of the email action link. Null if the email action
- * is from the parent project.
- */
- tenantId: string | null;
- }
- /**
- * A response from {@link firebase.auth.Auth.checkActionCode}.
- */
- interface ActionCodeInfo {
- /**
- * The data associated with the action code.
- *
- * For the `PASSWORD_RESET`, `VERIFY_EMAIL`, and `RECOVER_EMAIL` actions, this object
- * contains an `email` field with the address the email was sent to.
- *
- * For the RECOVER_EMAIL action, which allows a user to undo an email address
- * change, this object also contains a `previousEmail` field with the user account's
- * current email address. After the action completes, the user's email address will
- * revert to the value in the `email` field from the value in `previousEmail` field.
- *
- * For the VERIFY_AND_CHANGE_EMAIL action, which allows a user to verify the email
- * before updating it, this object contains a `previousEmail` field with the user
- * account's email address before updating. After the action completes, the user's
- * email address will be updated to the value in the `email` field from the value
- * in `previousEmail` field.
- *
- * For the REVERT_SECOND_FACTOR_ADDITION action, which allows a user to unenroll
- * a newly added second factor, this object contains a `multiFactorInfo` field with
- * the information about the second factor. For phone second factor, the
- * `multiFactorInfo` is a {@link firebase.auth.PhoneMultiFactorInfo} object,
- * which contains the phone number.
- */
- data: {
- email?: string | null;
- /**
- * @deprecated
- * This field is deprecated in favor of previousEmail.
- */
- fromEmail?: string | null;
- multiFactorInfo?: firebase.auth.MultiFactorInfo | null;
- previousEmail?: string | null;
- };
- /**
- * The type of operation that generated the action code. This could be:
- * <ul>
- * <li>`EMAIL_SIGNIN`: email sign in code generated via
- * {@link firebase.auth.Auth.sendSignInLinkToEmail}.</li>
- * <li>`PASSWORD_RESET`: password reset code generated via
- * {@link firebase.auth.Auth.sendPasswordResetEmail}.</li>
- * <li>`RECOVER_EMAIL`: email change revocation code generated via
- * {@link firebase.User.updateEmail}.</li>
- * <li>`REVERT_SECOND_FACTOR_ADDITION`: revert second factor addition
- * code generated via
- * {@link firebase.User.MultiFactorUser.enroll}.</li>
- * <li>`VERIFY_AND_CHANGE_EMAIL`: verify and change email code generated
- * via {@link firebase.User.verifyBeforeUpdateEmail}.</li>
- * <li>`VERIFY_EMAIL`: email verification code generated via
- * {@link firebase.User.sendEmailVerification}.</li>
- * </ul>
- */
- operation: string;
- }
-
-
-
- type ActionCodeSettings = {
- android?: {
- installApp?: boolean;
- minimumVersion?: string;
- packageName: string;
- };
- handleCodeInApp?: boolean;
- iOS?: { bundleId: string };
- url: string;
- dynamicLinkDomain?: string;
- };
-
-
-
- type AdditionalUserInfo = {
- isNewUser: boolean;
- profile: Object | null;
- providerId: string;
- username?: string | null;
- };
-
-
-
- interface ApplicationVerifier {
-
-
- type: string;
-
-
- verify(): Promise<string>;
- }
-
-
-
- interface AuthSettings {
-
-
- appVerificationDisabledForTesting: boolean;
- }
-
-
-
- export interface Config {
-
-
- apiKey: string;
-
-
- apiHost: string;
-
-
- apiScheme: string;
-
-
- tokenApiHost: string;
-
-
- sdkClientVersion: string;
-
-
- authDomain?: string;
- }
-
-
-
- export interface EmulatorConfig {
-
-
- readonly protocol: string;
-
-
- readonly host: string;
-
-
- readonly port: number | null;
-
-
- readonly options: {
-
-
- readonly disableWarnings: boolean;
- };
- }
-
-
-
- interface Auth {
-
- readonly name: string;
-
- readonly config: Config;
-
- readonly emulatorConfig: EmulatorConfig | null;
-
-
- app: firebase.app.App;
-
-
- applyActionCode(code: string): Promise<void>;
-
-
- checkActionCode(code: string): Promise<firebase.auth.ActionCodeInfo>;
-
-
- confirmPasswordReset(code: string, newPassword: string): Promise<void>;
-
-
-
- createUserWithEmailAndPassword(
- email: string,
- password: string
- ): Promise<firebase.auth.UserCredential>;
-
-
- currentUser: firebase.User | null;
-
-
-
- fetchSignInMethodsForEmail(email: string): Promise<Array<string>>;
-
-
-
- isSignInWithEmailLink(emailLink: string): boolean;
-
-
- getRedirectResult(): Promise<firebase.auth.UserCredential>;
-
-
- languageCode: string | null;
-
-
- settings: firebase.auth.AuthSettings;
-
-
- onAuthStateChanged(
- nextOrObserver:
- | firebase.Observer<any>
- | ((a: firebase.User | null) => any),
- error?: (a: firebase.auth.Error) => any,
- completed?: firebase.Unsubscribe
- ): firebase.Unsubscribe;
-
-
- onIdTokenChanged(
- nextOrObserver:
- | firebase.Observer<any>
- | ((a: firebase.User | null) => any),
- error?: (a: firebase.auth.Error) => any,
- completed?: firebase.Unsubscribe
- ): firebase.Unsubscribe;
-
-
- sendSignInLinkToEmail(
- email: string,
- actionCodeSettings: firebase.auth.ActionCodeSettings
- ): Promise<void>;
-
-
-
- sendPasswordResetEmail(
- email: string,
- actionCodeSettings?: firebase.auth.ActionCodeSettings | null
- ): Promise<void>;
-
-
-
- setPersistence(persistence: firebase.auth.Auth.Persistence): Promise<void>;
-
-
-
- signInAndRetrieveDataWithCredential(
- credential: firebase.auth.AuthCredential
- ): Promise<firebase.auth.UserCredential>;
-
-
- signInAnonymously(): Promise<firebase.auth.UserCredential>;
-
-
-
- signInWithCredential(
- credential: firebase.auth.AuthCredential
- ): Promise<firebase.auth.UserCredential>;
-
-
- signInWithCustomToken(token: string): Promise<firebase.auth.UserCredential>;
-
-
- signInWithEmailAndPassword(
- email: string,
- password: string
- ): Promise<firebase.auth.UserCredential>;
-
-
-
- signInWithPhoneNumber(
- phoneNumber: string,
- applicationVerifier: firebase.auth.ApplicationVerifier
- ): Promise<firebase.auth.ConfirmationResult>;
-
-
- signInWithEmailLink(
- email: string,
- emailLink?: string
- ): Promise<firebase.auth.UserCredential>;
-
-
- signInWithPopup(
- provider: firebase.auth.AuthProvider
- ): Promise<firebase.auth.UserCredential>;
-
-
- signInWithRedirect(provider: firebase.auth.AuthProvider): Promise<void>;
-
-
- signOut(): Promise<void>;
-
-
- tenantId: string | null;
-
-
- updateCurrentUser(user: firebase.User | null): Promise<void>;
-
-
- useDeviceLanguage(): void;
-
-
- useEmulator(url: string): void;
-
-
- verifyPasswordResetCode(code: string): Promise<string>;
- }
-
-
-
- abstract class AuthCredential {
-
-
- providerId: string;
-
-
- signInMethod: string;
-
-
- toJSON(): Object;
-
-
- static fromJSON(json: Object | string): AuthCredential | null;
- }
-
-
-
- class OAuthCredential extends AuthCredential {
- private constructor();
- /**
- * The OAuth ID token associated with the credential if it belongs to an
- * OIDC provider, such as `google.com`.
- */
- idToken?: string;
- /**
- * The OAuth access token associated with the credential if it belongs to
- * an OAuth provider, such as `facebook.com`, `twitter.com`, etc.
- */
- accessToken?: string;
- /**
- * The OAuth access token secret associated with the credential if it
- * belongs to an OAuth 1.0 provider, such as `twitter.com`.
- */
- secret?: string;
- }
-
- /**
- * Interface that represents an auth provider.
- */
- interface AuthProvider {
- providerId: string;
- }
-
-
-
- interface ConfirmationResult {
-
-
- confirm(verificationCode: string): Promise<firebase.auth.UserCredential>;
-
-
- verificationId: string;
- }
-
-
-
- class EmailAuthProvider extends EmailAuthProvider_Instance {
- static PROVIDER_ID: string;
-
-
- static EMAIL_PASSWORD_SIGN_IN_METHOD: string;
-
-
- static EMAIL_LINK_SIGN_IN_METHOD: string;
-
-
- static credential(
- email: string,
- password: string
- ): firebase.auth.AuthCredential;
-
-
- static credentialWithLink(
- email: string,
- emailLink: string
- ): firebase.auth.AuthCredential;
- }
-
-
- class EmailAuthProvider_Instance implements firebase.auth.AuthProvider {
- providerId: string;
- }
-
-
-
- interface Error {
- name: string;
-
-
- code: string;
-
-
- message: string;
- }
-
-
-
- interface AuthError extends firebase.auth.Error {
-
-
- credential?: firebase.auth.AuthCredential;
-
-
- email?: string;
-
-
- phoneNumber?: string;
-
-
- tenantId?: string;
- }
-
-
-
- interface MultiFactorError extends firebase.auth.AuthError {
-
-
- resolver: firebase.auth.MultiFactorResolver;
- }
-
-
-
- class FacebookAuthProvider extends FacebookAuthProvider_Instance {
- static PROVIDER_ID: string;
-
-
- static FACEBOOK_SIGN_IN_METHOD: string;
-
-
- static credential(token: string): firebase.auth.OAuthCredential;
- }
-
-
- class FacebookAuthProvider_Instance implements firebase.auth.AuthProvider {
-
-
- addScope(scope: string): firebase.auth.AuthProvider;
- providerId: string;
-
-
- setCustomParameters(
- customOAuthParameters: Object
- ): firebase.auth.AuthProvider;
- }
-
-
-
- class GithubAuthProvider extends GithubAuthProvider_Instance {
- static PROVIDER_ID: string;
-
-
- static GITHUB_SIGN_IN_METHOD: string;
-
-
- static credential(token: string): firebase.auth.OAuthCredential;
- }
-
-
- class GithubAuthProvider_Instance implements firebase.auth.AuthProvider {
-
-
- addScope(scope: string): firebase.auth.AuthProvider;
- providerId: string;
-
-
- setCustomParameters(
- customOAuthParameters: Object
- ): firebase.auth.AuthProvider;
- }
-
-
-
- class GoogleAuthProvider extends GoogleAuthProvider_Instance {
- static PROVIDER_ID: string;
-
-
- static GOOGLE_SIGN_IN_METHOD: string;
-
-
- static credential(
- idToken?: string | null,
- accessToken?: string | null
- ): firebase.auth.OAuthCredential;
- }
-
-
- class GoogleAuthProvider_Instance implements firebase.auth.AuthProvider {
-
-
- addScope(scope: string): firebase.auth.AuthProvider;
- providerId: string;
-
-
- setCustomParameters(
- customOAuthParameters: Object
- ): firebase.auth.AuthProvider;
- }
-
-
-
- class OAuthProvider implements firebase.auth.AuthProvider {
- constructor(providerId: string);
- providerId: string;
- /**
- * @param scope Provider OAuth scope to add.
- */
- addScope(scope: string): firebase.auth.AuthProvider;
- /**
- * Creates a Firebase credential from a generic OAuth provider's access token or
- * ID token. The raw nonce is required when an ID token with a nonce field is
- * provided. The SHA-256 hash of the raw nonce must match the nonce field in
- * the ID token.
- *
- * @example
- * ```javascript
- * // `googleUser` from the onsuccess Google Sign In callback.
- * // Initialize a generate OAuth provider with a `google.com` providerId.
- * var provider = new firebase.auth.OAuthProvider('google.com');
- * var credential = provider.credential({
- * idToken: googleUser.getAuthResponse().id_token,
- * });
- * firebase.auth().signInWithCredential(credential)
- * ```
- *
- * @param optionsOrIdToken Either the options object containing
- * the ID token, access token and raw nonce or the ID token string.
- * @param accessToken The OAuth access token.
- */
- credential(
- optionsOrIdToken: firebase.auth.OAuthCredentialOptions | string | null,
- accessToken?: string
- ): firebase.auth.OAuthCredential;
- /**
- * Sets the OAuth custom parameters to pass in an OAuth request for popup
- * and redirect sign-in operations.
- * For a detailed list, check the
- * reserved required OAuth 2.0 parameters such as `client_id`, `redirect_uri`,
- * `scope`, `response_type` and `state` are not allowed and will be ignored.
- * @param customOAuthParameters The custom OAuth parameters to pass
- * in the OAuth request.
- */
- setCustomParameters(
- customOAuthParameters: Object
- ): firebase.auth.AuthProvider;
- }
-
- class SAMLAuthProvider implements firebase.auth.AuthProvider {
- constructor(providerId: string);
- providerId: string;
- }
-
- /**
- * Interface representing ID token result obtained from
- * {@link firebase.User.getIdTokenResult}. It contains the ID token JWT string
- * and other helper properties for getting different data associated with the
- * token as well as all the decoded payload claims.
- *
- * Note that these claims are not to be trusted as they are parsed client side.
- * Only server side verification can guarantee the integrity of the token
- * claims.
- */
- interface IdTokenResult {
- /**
- * The Firebase Auth ID token JWT string.
- */
- token: string;
- /**
- * The ID token expiration time formatted as a UTC string.
- */
- expirationTime: string;
- /**
- * The authentication time formatted as a UTC string. This is the time the
- * user authenticated (signed in) and not the time the token was refreshed.
- */
- authTime: string;
- /**
- * The ID token issued at time formatted as a UTC string.
- */
- issuedAtTime: string;
- /**
- * The sign-in provider through which the ID token was obtained (anonymous,
- * custom, phone, password, etc). Note, this does not map to provider IDs.
- */
- signInProvider: string | null;
- /**
- * The type of second factor associated with this session, provided the user
- * was multi-factor authenticated (eg. phone, etc).
- */
- signInSecondFactor: string | null;
- /**
- * The entire payload claims of the ID token including the standard reserved
- * claims as well as the custom claims.
- */
- claims: {
- [key: string]: any;
- };
- }
-
- /**
- * Defines the options for initializing an
- * {@link firebase.auth.OAuthCredential}. For ID tokens with nonce claim,
- * the raw nonce has to also be provided.
- */
- interface OAuthCredentialOptions {
- /**
- * The OAuth ID token used to initialize the OAuthCredential.
- */
- idToken?: string;
- /**
- * The OAuth access token used to initialize the OAuthCredential.
- */
- accessToken?: string;
- /**
- * The raw nonce associated with the ID token. It is required when an ID token
- * with a nonce field is provided. The SHA-256 hash of the raw nonce must match
- * the nonce field in the ID token.
- */
- rawNonce?: string;
- }
-
- /**
- * The base class for asserting ownership of a second factor. This is used to
- * facilitate enrollment of a second factor on an existing user
- * or sign-in of a user who already verified the first factor.
- *
- */
- abstract class MultiFactorAssertion {
- /**
- * The identifier of the second factor.
- */
- factorId: string;
- }
-
- /**
- * The class for asserting ownership of a phone second factor.
- */
- class PhoneMultiFactorAssertion extends firebase.auth.MultiFactorAssertion {
- private constructor();
- }
-
- /**
- * The class used to initialize {@link firebase.auth.PhoneMultiFactorAssertion}.
- */
- class PhoneMultiFactorGenerator {
- private constructor();
- /**
- * The identifier of the phone second factor: `phone`.
- */
- static FACTOR_ID: string;
- /**
- * Initializes the {@link firebase.auth.PhoneMultiFactorAssertion} to confirm ownership
- * of the phone second factor.
- */
- static assertion(
- phoneAuthCredential: firebase.auth.PhoneAuthCredential
- ): firebase.auth.PhoneMultiFactorAssertion;
- }
-
- /**
- * A structure containing the information of a second factor entity.
- */
- interface MultiFactorInfo {
- /**
- * The multi-factor enrollment ID.
- */
- uid: string;
- /**
- * The user friendly name of the current second factor.
- */
- displayName?: string | null;
- /**
- * The enrollment date of the second factor formatted as a UTC string.
- */
- enrollmentTime: string;
- /**
- * The identifier of the second factor.
- */
- factorId: string;
- }
-
- /**
- * The subclass of the MultiFactorInfo interface for phone number second factors.
- * The factorId of this second factor is
- * {@link firebase.auth.PhoneMultiFactorGenerator.FACTOR_ID}.
- */
- interface PhoneMultiFactorInfo extends firebase.auth.MultiFactorInfo {
- /**
- * The phone number associated with the current second factor.
- */
- phoneNumber: string;
- }
-
- /**
- * The information required to verify the ownership of a phone number. The
- * information that's required depends on whether you are doing single-factor
- * sign-in, multi-factor enrollment or multi-factor sign-in.
- */
- type PhoneInfoOptions =
- | firebase.auth.PhoneSingleFactorInfoOptions
- | firebase.auth.PhoneMultiFactorEnrollInfoOptions
- | firebase.auth.PhoneMultiFactorSignInInfoOptions;
- /**
- * The phone info options for single-factor sign-in. Only phone number is
- * required.
- */
- interface PhoneSingleFactorInfoOptions {
- phoneNumber: string;
- }
-
- /**
- * The phone info options for multi-factor enrollment. Phone number and
- * multi-factor session are required.
- */
- interface PhoneMultiFactorEnrollInfoOptions {
- phoneNumber: string;
- session: firebase.auth.MultiFactorSession;
- }
-
- /**
- * The phone info options for multi-factor sign-in. Either multi-factor hint or
- * multi-factor UID and multi-factor session are required.
- */
- interface PhoneMultiFactorSignInInfoOptions {
- multiFactorHint?: firebase.auth.MultiFactorInfo;
- multiFactorUid?: string;
- session: firebase.auth.MultiFactorSession;
- }
-
- /**
- * The class used to facilitate recovery from
- * {@link firebase.auth.MultiFactorError} when a user needs to provide a second
- * factor to sign in.
- *
- * @example
- * ```javascript
- * firebase.auth().signInWithEmailAndPassword()
- * .then(function(result) {
- * // User signed in. No 2nd factor challenge is needed.
- * })
- * .catch(function(error) {
- * if (error.code == 'auth/multi-factor-auth-required') {
- * var resolver = error.resolver;
- * // Show UI to let user select second factor.
- * var multiFactorHints = resolver.hints;
- * } else {
- * // Handle other errors.
- * }
- * });
- *
- * // The enrolled second factors that can be used to complete
- * // sign-in are returned in the `MultiFactorResolver.hints` list.
- * // UI needs to be presented to allow the user to select a second factor
- * // from that list.
- *
- * var selectedHint = // ; selected from multiFactorHints
- * var phoneAuthProvider = new firebase.auth.PhoneAuthProvider();
- * var phoneInfoOptions = {
- * multiFactorHint: selectedHint,
- * session: resolver.session
- * };
- * phoneAuthProvider.verifyPhoneNumber(
- * phoneInfoOptions,
- * appVerifier
- * ).then(function(verificationId) {
- * // store verificationID and show UI to let user enter verification code.
- * });
- *
- * // UI to enter verification code and continue.
- * // Continue button click handler
- * var phoneAuthCredential =
- * firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode);
- * var multiFactorAssertion =
- * firebase.auth.PhoneMultiFactorGenerator.assertion(phoneAuthCredential);
- * resolver.resolveSignIn(multiFactorAssertion)
- * .then(function(userCredential) {
- * // User signed in.
- * });
- * ```
- */
- class MultiFactorResolver {
- private constructor();
- /**
- * The Auth instance used to sign in with the first factor.
- */
- auth: firebase.auth.Auth;
- /**
- * The session identifier for the current sign-in flow, which can be used
- * to complete the second factor sign-in.
- */
- session: firebase.auth.MultiFactorSession;
- /**
- * The list of hints for the second factors needed to complete the sign-in
- * for the current session.
- */
- hints: firebase.auth.MultiFactorInfo[];
- /**
- * A helper function to help users complete sign in with a second factor
- * using an {@link firebase.auth.MultiFactorAssertion} confirming the user
- * successfully completed the second factor challenge.
- *
- * <h4>Error Codes</h4>
- * <dl>
- * <dt>auth/invalid-verification-code</dt>
- * <dd>Thrown if the verification code is not valid.</dd>
- * <dt>auth/missing-verification-code</dt>
- * <dd>Thrown if the verification code is missing.</dd>
- * <dt>auth/invalid-verification-id</dt>
- * <dd>Thrown if the credential is a
- * {@link firebase.auth.PhoneAuthProvider.credential} and the verification
- * ID of the credential is not valid.</dd>
- * <dt>auth/missing-verification-id</dt>
- * <dd>Thrown if the verification ID is missing.</dd>
- * <dt>auth/code-expired</dt>
- * <dd>Thrown if the verification code has expired.</dd>
- * <dt>auth/invalid-multi-factor-session</dt>
- * <dd>Thrown if the request does not contain a valid proof of first factor
- * successful sign-in.</dd>
- * <dt>auth/missing-multi-factor-session</dt>
- * <dd>Thrown if The request is missing proof of first factor successful
- * sign-in.</dd>
- * </dl>
- *
- * @param assertion The multi-factor assertion to resolve sign-in with.
- * @return The promise that resolves with the user credential object.
- */
- resolveSignIn(
- assertion: firebase.auth.MultiFactorAssertion
- ): Promise<firebase.auth.UserCredential>;
- }
-
- /**
- * The multi-factor session object used for enrolling a second factor on a
- * user or helping sign in an enrolled user with a second factor.
- */
- class MultiFactorSession {
- private constructor();
- }
-
- /**
- * Classes that represents the Phone Auth credentials returned by a
- * {@link firebase.auth.PhoneAuthProvider}.
- *
- */
- class PhoneAuthCredential extends AuthCredential {
- private constructor();
- }
-
- /**
- * Phone number auth provider.
- *
- * @example
- * ```javascript
- * // 'recaptcha-container' is the ID of an element in the DOM.
- * var applicationVerifier = new firebase.auth.RecaptchaVerifier(
- * 'recaptcha-container');
- * var provider = new firebase.auth.PhoneAuthProvider();
- * provider.verifyPhoneNumber('+16505550101', applicationVerifier)
- * .then(function(verificationId) {
- * var verificationCode = window.prompt('Please enter the verification ' +
- * 'code that was sent to your mobile device.');
- * return firebase.auth.PhoneAuthProvider.credential(verificationId,
- * verificationCode);
- * })
- * .then(function(phoneCredential) {
- * return firebase.auth().signInWithCredential(phoneCredential);
- * });
- * ```
- * @param auth The Firebase Auth instance in which
- * sign-ins should occur. Uses the default Auth instance if unspecified.
- */
- class PhoneAuthProvider extends PhoneAuthProvider_Instance {
- static PROVIDER_ID: string;
- /**
- * This corresponds to the sign-in method identifier as returned in
- * {@link firebase.auth.Auth.fetchSignInMethodsForEmail}.
- */
- static PHONE_SIGN_IN_METHOD: string;
- /**
- * Creates a phone auth credential, given the verification ID from
- * {@link firebase.auth.PhoneAuthProvider.verifyPhoneNumber} and the code
- * that was sent to the user's mobile device.
- *
- * <h4>Error Codes</h4>
- * <dl>
- * <dt>auth/missing-verification-code</dt>
- * <dd>Thrown if the verification code is missing.</dd>
- * <dt>auth/missing-verification-id</dt>
- * <dd>Thrown if the verification ID is missing.</dd>
- * </dl>
- *
- * @param verificationId The verification ID returned from
- * {@link firebase.auth.PhoneAuthProvider.verifyPhoneNumber}.
- * @param verificationCode The verification code sent to the user's
- * mobile device.
- * @return The auth provider credential.
- */
- static credential(
- verificationId: string,
- verificationCode: string
- ): firebase.auth.AuthCredential;
- }
-
-
- class PhoneAuthProvider_Instance implements firebase.auth.AuthProvider {
- constructor(auth?: firebase.auth.Auth | null);
- providerId: string;
- /**
- * Starts a phone number authentication flow by sending a verification code to
- * the given phone number. Returns an ID that can be passed to
- * {@link firebase.auth.PhoneAuthProvider.credential} to identify this flow.
- *
- * For abuse prevention, this method also requires a
- * {@link firebase.auth.ApplicationVerifier}. The Firebase Auth SDK includes
- * a reCAPTCHA-based implementation, {@link firebase.auth.RecaptchaVerifier}.
- *
- * <h4>Error Codes</h4>
- * <dl>
- * <dt>auth/captcha-check-failed</dt>
- * <dd>Thrown if the reCAPTCHA response token was invalid, expired, or if
- * this method was called from a non-whitelisted domain.</dd>
- * <dt>auth/invalid-phone-number</dt>
- * <dd>Thrown if the phone number has an invalid format.</dd>
- * <dt>auth/missing-phone-number</dt>
- * <dd>Thrown if the phone number is missing.</dd>
- * <dt>auth/quota-exceeded</dt>
- * <dd>Thrown if the SMS quota for the Firebase project has been exceeded.</dd>
- * <dt>auth/user-disabled</dt>
- * <dd>Thrown if the user corresponding to the given phone number has been
- * disabled.</dd>
- * <dt>auth/maximum-second-factor-count-exceeded</dt>
- * <dd>Thrown if The maximum allowed number of second factors on a user
- * has been exceeded.</dd>
- * <dt>auth/second-factor-already-in-use</dt>
- * <dd>Thrown if the second factor is already enrolled on this account.</dd>
- * <dt>auth/unsupported-first-factor</dt>
- * <dd>Thrown if the first factor being used to sign in is not supported.</dd>
- * <dt>auth/unverified-email</dt>
- * <dd>Thrown if the email of the account is not verified.</dd>
- * </dl>
- *
- * @param phoneInfoOptions The user's {@link firebase.auth.PhoneInfoOptions}.
- * The phone number should be in E.164 format (e.g. +16505550101).
- * @param applicationVerifier
- * @return A Promise for the verification ID.
- */
- verifyPhoneNumber(
- phoneInfoOptions: firebase.auth.PhoneInfoOptions | string,
- applicationVerifier: firebase.auth.ApplicationVerifier
- ): Promise<string>;
- }
-
-
-
- class RecaptchaVerifier extends RecaptchaVerifier_Instance {}
-
-
- class RecaptchaVerifier_Instance
- implements firebase.auth.ApplicationVerifier
- {
- constructor(
- container: any | string,
- parameters?: Object | null,
- app?: firebase.app.App | null
- );
- /**
- * Clears the reCAPTCHA widget from the page and destroys the current instance.
- */
- clear(): void;
- /**
- * Renders the reCAPTCHA widget on the page.
- * @return A Promise that resolves with the
- * reCAPTCHA widget ID.
- */
- render(): Promise<number>;
- /**
- * The application verifier type. For a reCAPTCHA verifier, this is 'recaptcha'.
- */
- type: string;
- /**
- * Waits for the user to solve the reCAPTCHA and resolves with the reCAPTCHA
- * token.
- * @return A Promise for the reCAPTCHA token.
- */
- verify(): Promise<string>;
- }
-
- /**
- * Twitter auth provider.
- *
- * @example
- * ```javascript
- * // Using a redirect.
- * firebase.auth().getRedirectResult().then(function(result) {
- * if (result.credential) {
- *
- * var token = result.credential.accessToken;
- * var secret = result.credential.secret;
- * }
- * var user = result.user;
- * });
- *
- *
- * var provider = new firebase.auth.TwitterAuthProvider();
- * firebase.auth().signInWithRedirect(provider);
- * ```
- * @example
- * ```javascript
- *
- * var provider = new firebase.auth.TwitterAuthProvider();
- * firebase.auth().signInWithPopup(provider).then(function(result) {
- *
- * var token = result.credential.accessToken;
- * var secret = result.credential.secret;
- *
- * var user = result.user;
- * });
- * ```
- *
- * @see {@link firebase.auth.Auth.onAuthStateChanged} to receive sign in state
- * changes.
- */
- class TwitterAuthProvider extends TwitterAuthProvider_Instance {
- static PROVIDER_ID: string;
- /**
- * This corresponds to the sign-in method identifier as returned in
- * {@link firebase.auth.Auth.fetchSignInMethodsForEmail}.
- *
- */
- static TWITTER_SIGN_IN_METHOD: string;
- /**
- * @param token Twitter access token.
- * @param secret Twitter secret.
- * @return The auth provider credential.
- */
- static credential(
- token: string,
- secret: string
- ): firebase.auth.OAuthCredential;
- }
- /**
- * @hidden
- */
- class TwitterAuthProvider_Instance implements firebase.auth.AuthProvider {
- providerId: string;
- /**
- * Sets the OAuth custom parameters to pass in a Twitter OAuth request for popup
- * and redirect sign-in operations.
- * Valid parameters include 'lang'.
- * Reserved required OAuth 1.0 parameters such as 'oauth_consumer_key',
- * 'oauth_token', 'oauth_signature', etc are not allowed and will be ignored.
- * @param customOAuthParameters The custom OAuth parameters to pass
- * in the OAuth request.
- * @return The provider instance itself.
- */
- setCustomParameters(
- customOAuthParameters: Object
- ): firebase.auth.AuthProvider;
- }
-
- /**
- * A structure containing a User, an AuthCredential, the operationType, and
- * any additional user information that was returned from the identity provider.
- * operationType could be 'signIn' for a sign-in operation, 'link' for a linking
- * operation and 'reauthenticate' for a reauthentication operation.
- */
- type UserCredential = {
- additionalUserInfo?: firebase.auth.AdditionalUserInfo | null;
- credential: firebase.auth.AuthCredential | null;
- operationType?: string | null;
- user: firebase.User | null;
- };
-
- /**
- * Interface representing a user's metadata.
- */
- interface UserMetadata {
- creationTime?: string;
- lastSignInTime?: string;
- }
- }
-
- /**
- * @webonly
- */
- declare namespace firebase.analytics {
- /**
- * The Firebase Analytics service interface.
- *
- * Do not call this constructor directly. Instead, use
- * {@link firebase.analytics `firebase.analytics()`}.
- */
- export interface Analytics {
- /**
- * The {@link firebase.app.App app} associated with the `Analytics` service
- * instance.
- *
- * @example
- * ```javascript
- * var app = analytics.app;
- * ```
- */
- app: firebase.app.App;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'add_payment_info',
- eventParams?: {
- coupon?: EventParams['coupon'];
- currency?: EventParams['currency'];
- items?: EventParams['items'];
- payment_type?: EventParams['payment_type'];
- value?: EventParams['value'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'add_shipping_info',
- eventParams?: {
- coupon?: EventParams['coupon'];
- currency?: EventParams['currency'];
- items?: EventParams['items'];
- shipping_tier?: EventParams['shipping_tier'];
- value?: EventParams['value'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'add_to_cart' | 'add_to_wishlist' | 'remove_from_cart',
- eventParams?: {
- currency?: EventParams['currency'];
- value?: EventParams['value'];
- items?: EventParams['items'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'begin_checkout',
- eventParams?: {
- currency?: EventParams['currency'];
- coupon?: EventParams['coupon'];
- value?: EventParams['value'];
- items?: EventParams['items'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'checkout_progress',
- eventParams?: {
- currency?: EventParams['currency'];
- coupon?: EventParams['coupon'];
- value?: EventParams['value'];
- items?: EventParams['items'];
- checkout_step?: EventParams['checkout_step'];
- checkout_option?: EventParams['checkout_option'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * See
- * {@link https://developers.google.com/analytics/devguides/collection/ga4/exceptions
- * | Measure exceptions}.
- */
- logEvent(
- eventName: 'exception',
- eventParams?: {
- description?: EventParams['description'];
- fatal?: EventParams['fatal'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'generate_lead',
- eventParams?: {
- value?: EventParams['value'];
- currency?: EventParams['currency'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'login',
- eventParams?: {
- method?: EventParams['method'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * See
- * {@link https://developers.google.com/analytics/devguides/collection/ga4/page-view
- * | Page views}.
- */
- logEvent(
- eventName: 'page_view',
- eventParams?: {
- page_title?: string;
- page_location?: string;
- page_path?: string;
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'purchase' | 'refund',
- eventParams?: {
- value?: EventParams['value'];
- currency?: EventParams['currency'];
- transaction_id: EventParams['transaction_id'];
- tax?: EventParams['tax'];
- shipping?: EventParams['shipping'];
- items?: EventParams['items'];
- coupon?: EventParams['coupon'];
- affiliation?: EventParams['affiliation'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * See {@link https://firebase.google.com/docs/analytics/screenviews
- * | Track Screenviews}.
- */
- logEvent(
- eventName: 'screen_view',
- eventParams?: {
- firebase_screen: EventParams['firebase_screen'];
- firebase_screen_class: EventParams['firebase_screen_class'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'search' | 'view_search_results',
- eventParams?: {
- search_term?: EventParams['search_term'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'select_content',
- eventParams?: {
- content_type?: EventParams['content_type'];
- item_id?: EventParams['item_id'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'select_item',
- eventParams?: {
- items?: EventParams['items'];
- item_list_name?: EventParams['item_list_name'];
- item_list_id?: EventParams['item_list_id'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'select_promotion' | 'view_promotion',
- eventParams?: {
- items?: EventParams['items'];
- promotion_id?: EventParams['promotion_id'];
- promotion_name?: EventParams['promotion_name'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'set_checkout_option',
- eventParams?: {
- checkout_step?: EventParams['checkout_step'];
- checkout_option?: EventParams['checkout_option'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'share',
- eventParams?: {
- method?: EventParams['method'];
- content_type?: EventParams['content_type'];
- item_id?: EventParams['item_id'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'sign_up',
- eventParams?: {
- method?: EventParams['method'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'timing_complete',
- eventParams?: {
- name: string;
- value: number;
- event_category?: string;
- event_label?: string;
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'view_cart' | 'view_item',
- eventParams?: {
- currency?: EventParams['currency'];
- items?: EventParams['items'];
- value?: EventParams['value'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent(
- eventName: 'view_item_list',
- eventParams?: {
- items?: EventParams['items'];
- item_list_name?: EventParams['item_list_name'];
- item_list_id?: EventParams['item_list_id'];
- [key: string]: any;
- },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sends analytics event with given `eventParams`. This method
- * automatically associates this logged event with this Firebase web
- * app instance on this device.
- * List of recommended event parameters can be found in
- * {@link https://developers.google.com/gtagjs/reference/ga4-events
- * | the GA4 reference documentation}.
- */
- logEvent<T extends string>(
- eventName: CustomEventName<T>,
- eventParams?: { [key: string]: any },
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Use gtag 'config' command to set 'screen_name'.
- *
- * @deprecated Use {@link logEvent} with `eventName` as 'screen_view' and add relevant `eventParams`.
- * See {@link https://firebase.google.com/docs/analytics/screenviews | Track Screenviews}.
- */
- setCurrentScreen(
- screenName: string,
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Use gtag 'config' command to set 'user_id'.
- */
- setUserId(
- id: string,
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Use gtag 'config' command to set all params specified.
- */
- setUserProperties(
- properties: firebase.analytics.CustomParams,
- options?: firebase.analytics.AnalyticsCallOptions
- ): void;
-
- /**
- * Sets whether analytics collection is enabled for this app on this device.
- * window['ga-disable-analyticsId'] = true;
- */
- setAnalyticsCollectionEnabled(enabled: boolean): void;
- }
-
- export type CustomEventName<T> = T extends EventNameString ? never : T;
-
- /**
- * Additional options that can be passed to Firebase Analytics method
- * calls such as `logEvent`, `setCurrentScreen`, etc.
- */
- export interface AnalyticsCallOptions {
- /**
- * If true, this config or event call applies globally to all
- * analytics properties on the page.
- */
- global: boolean;
- }
-
- /**
- * Specifies custom options for your Firebase Analytics instance.
- * You must set these before initializing `firebase.analytics()`.
- */
- export interface SettingsOptions {
- /** Sets custom name for `gtag` function. */
- gtagName?: string;
- /** Sets custom name for `dataLayer` array used by gtag. */
- dataLayerName?: string;
- }
-
- /**
- * Configures Firebase Analytics to use custom `gtag` or `dataLayer` names.
- * Intended to be used if `gtag.js` script has been installed on
- * this page independently of Firebase Analytics, and is using non-default
- * names for either the `gtag` function or for `dataLayer`.
- * Must be called before calling `firebase.analytics()` or it won't
- * have any effect.
- */
- export function settings(settings: firebase.analytics.SettingsOptions): void;
-
- /**
- * Standard gtag.js control parameters.
- * For more information, see
- * {@link https://developers.google.com/gtagjs/reference/parameter
- * the gtag.js documentation on parameters}.
- */
- export interface ControlParams {
- groups?: string | string[];
- send_to?: string | string[];
- event_callback?: () => void;
- event_timeout?: number;
- }
-
- /**
- * Standard gtag.js event parameters.
- * For more information, see
- * {@link https://developers.google.com/gtagjs/reference/parameter
- * the gtag.js documentation on parameters}.
- */
- export interface EventParams {
- checkout_option?: string;
- checkout_step?: number;
- item_id?: string;
- content_type?: string;
- coupon?: string;
- currency?: string;
- description?: string;
- fatal?: boolean;
- items?: Item[];
- method?: string;
- number?: string;
- promotions?: Promotion[];
- screen_name?: string;
- /**
- * Firebase-specific. Use to log a `screen_name` to Firebase Analytics.
- */
- firebase_screen?: string;
- /**
- * Firebase-specific. Use to log a `screen_class` to Firebase Analytics.
- */
- firebase_screen_class?: string;
- search_term?: string;
- shipping?: Currency;
- tax?: Currency;
- transaction_id?: string;
- value?: number;
- event_label?: string;
- event_category: string;
- shipping_tier?: string;
- item_list_id?: string;
- item_list_name?: string;
- promotion_id?: string;
- promotion_name?: string;
- payment_type?: string;
- affiliation?: string;
- }
-
- /**
- * Any custom params the user may pass to gtag.js.
- */
- export interface CustomParams {
- [key: string]: any;
- }
-
- /**
- * Type for standard gtag.js event names. `logEvent` also accepts any
- * custom string and interprets it as a custom event name.
- */
- export type EventNameString =
- | 'add_payment_info'
- | 'add_shipping_info'
- | 'add_to_cart'
- | 'add_to_wishlist'
- | 'begin_checkout'
- | 'checkout_progress'
- | 'exception'
- | 'generate_lead'
- | 'login'
- | 'page_view'
- | 'purchase'
- | 'refund'
- | 'remove_from_cart'
- | 'screen_view'
- | 'search'
- | 'select_content'
- | 'select_item'
- | 'select_promotion'
- | 'set_checkout_option'
- | 'share'
- | 'sign_up'
- | 'timing_complete'
- | 'view_cart'
- | 'view_item'
- | 'view_item_list'
- | 'view_promotion'
- | 'view_search_results';
-
- /**
- * Enum of standard gtag.js event names provided for convenient
- * developer usage. `logEvent` will also accept any custom string
- * and interpret it as a custom event name.
- */
- export enum EventName {
- ADD_PAYMENT_INFO = 'add_payment_info',
- ADD_SHIPPING_INFO = 'add_shipping_info',
- ADD_TO_CART = 'add_to_cart',
- ADD_TO_WISHLIST = 'add_to_wishlist',
- BEGIN_CHECKOUT = 'begin_checkout',
- /** @deprecated */
- CHECKOUT_PROGRESS = 'checkout_progress',
- EXCEPTION = 'exception',
- GENERATE_LEAD = 'generate_lead',
- LOGIN = 'login',
- PAGE_VIEW = 'page_view',
- PURCHASE = 'purchase',
- REFUND = 'refund',
- REMOVE_FROM_CART = 'remove_from_cart',
- SCREEN_VIEW = 'screen_view',
- SEARCH = 'search',
- SELECT_CONTENT = 'select_content',
- SELECT_ITEM = 'select_item',
- SELECT_PROMOTION = 'select_promotion',
- /** @deprecated */
- SET_CHECKOUT_OPTION = 'set_checkout_option',
- SHARE = 'share',
- SIGN_UP = 'sign_up',
- TIMING_COMPLETE = 'timing_complete',
- VIEW_CART = 'view_cart',
- VIEW_ITEM = 'view_item',
- VIEW_ITEM_LIST = 'view_item_list',
- VIEW_PROMOTION = 'view_promotion',
- VIEW_SEARCH_RESULTS = 'view_search_results'
- }
-
- export type Currency = string | number;
-
- export interface Item {
- item_id?: string;
- item_name?: string;
- item_brand?: string;
- item_category?: string;
- item_category2?: string;
- item_category3?: string;
- item_category4?: string;
- item_category5?: string;
- item_variant?: string;
- price?: Currency;
- quantity?: number;
- index?: number;
- coupon?: string;
- item_list_name?: string;
- item_list_id?: string;
- discount?: Currency;
- affiliation?: string;
- creative_name?: string;
- creative_slot?: string;
- promotion_id?: string;
- promotion_name?: string;
- location_id?: string;
- /** @deprecated Use item_brand instead. */
- brand?: string;
- /** @deprecated Use item_category instead. */
- category?: string;
- /** @deprecated Use item_id instead. */
- id?: string;
- /** @deprecated Use item_name instead. */
- name?: string;
- }
-
- /** @deprecated Use Item instead. */
- export interface Promotion {
- creative_name?: string;
- creative_slot?: string;
- id?: string;
- name?: string;
- }
-
- /**
- * An async function that returns true if current browser context supports initialization of analytics module
- * (`firebase.analytics()`).
- *
- * Returns false otherwise.
- *
- *
- */
- function isSupported(): Promise<boolean>;
- }
-
- declare namespace firebase.auth.Auth {
- type Persistence = string;
- /**
- * An enumeration of the possible persistence mechanism types.
- */
- var Persistence: {
- /**
- * Indicates that the state will be persisted even when the browser window is
- * closed or the activity is destroyed in react-native.
- */
- LOCAL: Persistence;
- /**
- * Indicates that the state will only be stored in memory and will be cleared
- * when the window or activity is refreshed.
- */
- NONE: Persistence;
- /**
- * Indicates that the state will only persist in current session/tab, relevant
- * to web only, and will be cleared when the tab is closed.
- */
- SESSION: Persistence;
- };
- }
-
- declare namespace firebase.User {
- /**
- * This is the interface that defines the multi-factor related properties and
- * operations pertaining to a {@link firebase.User}.
- */
- interface MultiFactorUser {
- /**
- * Returns a list of the user's enrolled second factors.
- */
- enrolledFactors: firebase.auth.MultiFactorInfo[];
- /**
- * Enrolls a second factor as identified by the
- * {@link firebase.auth.MultiFactorAssertion} for the current user.
- * On resolution, the user tokens are updated to reflect the change in the
- * JWT payload.
- * Accepts an additional display name parameter used to identify the second
- * factor to the end user.
- * Recent re-authentication is required for this operation to succeed.
- * On successful enrollment, existing Firebase sessions (refresh tokens) are
- * revoked. When a new factor is enrolled, an email notification is sent
- * to the user’s email.
- *
- * <h4>Error Codes</h4>
- * <dl>
- * <dt>auth/invalid-verification-code</dt>
- * <dd>Thrown if the verification code is not valid.</dd>
- * <dt>auth/missing-verification-code</dt>
- * <dd>Thrown if the verification code is missing.</dd>
- * <dt>auth/invalid-verification-id</dt>
- * <dd>Thrown if the credential is a
- * {@link firebase.auth.PhoneAuthProvider.credential} and the verification
- * ID of the credential is not valid.</dd>
- * <dt>auth/missing-verification-id</dt>
- * <dd>Thrown if the verification ID is missing.</dd>
- * <dt>auth/code-expired</dt>
- * <dd>Thrown if the verification code has expired.</dd>
- * <dt>auth/maximum-second-factor-count-exceeded</dt>
- * <dd>Thrown if The maximum allowed number of second factors on a user
- * has been exceeded.</dd>
- * <dt>auth/second-factor-already-in-use</dt>
- * <dd>Thrown if the second factor is already enrolled on this account.</dd>
- * <dt>auth/unsupported-first-factor</dt>
- * <dd>Thrown if the first factor being used to sign in is not supported.</dd>
- * <dt>auth/unverified-email</dt>
- * <dd>Thrown if the email of the account is not verified.</dd>
- * <dt>auth/requires-recent-login</dt>
- * <dd>Thrown if the user's last sign-in time does not meet the security
- * threshold. Use {@link firebase.User.reauthenticateWithCredential} to
- * resolve.</dd>
- * </dl>
- *
- * @example
- * ```javascript
- * firebase.auth().currentUser.multiFactor.getSession()
- * .then(function(multiFactorSession) {
- *
- * var phoneAuthProvider = new firebase.auth.PhoneAuthProvider();
- * var phoneInfoOptions = {
- * phoneNumber: phoneNumber,
- * session: multiFactorSession
- * };
- * return phoneAuthProvider.verifyPhoneNumber(
- * phoneInfoOptions, appVerifier);
- * }).then(function(verificationId) {
- *
- * });
- *
- * var phoneAuthCredential =
- * firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode);
- * var multiFactorAssertion =
- * firebase.auth.PhoneMultiFactorGenerator.assertion(phoneAuthCredential);
- * firebase.auth().currentUser.multiFactor.enroll(multiFactorAssertion)
- * .then(function() {
- *
- * });
- * ```
- *
- * @param assertion The multi-factor assertion to enroll with.
- * @param displayName The display name of the second factor.
- */
- enroll(
- assertion: firebase.auth.MultiFactorAssertion,
- displayName?: string | null
- ): Promise<void>;
- /**
- * Returns the session identifier for a second factor enrollment operation.
- * This is used to identify the current user trying to enroll a second factor.
- * @return The promise that resolves with the
- * {@link firebase.auth.MultiFactorSession}.
- *
- * <h4>Error Codes</h4>
- * <dl>
- * <dt>auth/user-token-expired</dt>
- * <dd>Thrown if the token of the user is expired.</dd>
- * </dl>
- */
- getSession(): Promise<firebase.auth.MultiFactorSession>;
- /**
- * Unenrolls the specified second factor. To specify the factor to remove, pass
- * a {@link firebase.auth.MultiFactorInfo} object
- * (retrieved from <code>enrolledFactors()</code>)
- * or the factor's UID string.
- * Sessions are not revoked when the account is downgraded. An email
- * notification is likely to be sent to the user notifying them of the change.
- * Recent re-authentication is required for this operation to succeed.
- * When an existing factor is unenrolled, an email notification is sent to the
- * user’s email.
- *
- * <h4>Error Codes</h4>
- * <dl>
- * <dt>auth/multi-factor-info-not-found</dt>
- * <dd>Thrown if the user does not have a second factor matching the
- * identifier provided.</dd>
- * <dt>auth/requires-recent-login</dt>
- * <dd>Thrown if the user's last sign-in time does not meet the security
- * threshold. Use {@link firebase.User.reauthenticateWithCredential} to
- * resolve.</dd>
- * </dl>
- *
- * @example
- * ```javascript
- * var options = firebase.auth().currentUser.multiFactor.enrolledFactors;
- *
- * return firebase.auth().currentUser.multiFactor.unenroll(options[i])
- * .then(function() {
- *
- * }).catch(function(error) {
- *
- * });
- * ```
- *
- * @param option The multi-factor option to unenroll.
- */
- unenroll(option: firebase.auth.MultiFactorInfo | string): Promise<void>;
- }
- }
-
- declare namespace firebase.auth.ActionCodeInfo {
- type Operation = string;
- /**
- * An enumeration of the possible email action types.
- */
- var Operation: {
- /**
- * The email link sign-in action.
- */
- EMAIL_SIGNIN: Operation;
- /**
- * The password reset action.
- */
- PASSWORD_RESET: Operation;
- /**
- * The email revocation action.
- */
- RECOVER_EMAIL: Operation;
- /**
- * The revert second factor addition email action.
- */
- REVERT_SECOND_FACTOR_ADDITION: Operation;
- /**
- * The verify and update email action.
- */
- VERIFY_AND_CHANGE_EMAIL: Operation;
- /**
- * The email verification action.
- */
- VERIFY_EMAIL: Operation;
- };
- }
-
- declare namespace firebase.database {
- /**
- * A `DataSnapshot` contains data from a Database location.
- *
- * Any time you read data from the Database, you receive the data as a
- * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach
- * with `on()` or `once()`. You can extract the contents of the snapshot as a
- * JavaScript object by calling the `val()` method. Alternatively, you can
- * traverse into the snapshot by calling `child()` to return child snapshots
- * (which you could then call `val()` on).
- *
- * A `DataSnapshot` is an efficiently generated, immutable copy of the data at
- * a Database location. It cannot be modified and will never change (to modify
- * data, you always call the `set()` method on a `Reference` directly).
- *
- */
- interface DataSnapshot {
- /**
- * Gets another `DataSnapshot` for the location at the specified relative path.
- *
- * Passing a relative path to the `child()` method of a DataSnapshot returns
- * another `DataSnapshot` for the location at the specified relative path. The
- * relative path can either be a simple child name (for example, "ada") or a
- * deeper, slash-separated path (for example, "ada/name/first"). If the child
- * location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot`
- * whose value is `null`) is returned.
- *
- * @example
- * ```javascript
- *
- * {
- * "name": {
- * "first": "Ada",
- * "last": "Lovelace"
- * }
- * }
- *
- *
- * var ref = firebase.database().ref("users/ada");
- * ref.once("value")
- * .then(function(snapshot) {
- * var name = snapshot.child("name").val();
- * var firstName = snapshot.child("name/first").val();
- * var lastName = snapshot.child("name").child("last").val();
- * var age = snapshot.child("age").val();
- * });
- * ```
- *
- * @param path A relative path to the location of child data.
- */
- child(path: string): firebase.database.DataSnapshot;
- /**
- * Returns true if this `DataSnapshot` contains any data. It is slightly more
- * efficient than using `snapshot.val() !== null`.
- *
- * @example
- * ```javascript
- *
- * {
- * "name": {
- * "first": "Ada",
- * "last": "Lovelace"
- * }
- * }
- *
- *
- * var ref = firebase.database().ref("users/ada");
- * ref.once("value")
- * .then(function(snapshot) {
- * var a = snapshot.exists();
- * var b = snapshot.child("name").exists();
- * var c = snapshot.child("name/first").exists();
- * var d = snapshot.child("name/middle").exists();
- * });
- * ```
- */
- exists(): boolean;
- /**
- * Exports the entire contents of the DataSnapshot as a JavaScript object.
- *
- * The `exportVal()` method is similar to `val()`, except priority information
- * is included (if available), making it suitable for backing up your data.
- *
- * @return The DataSnapshot's contents as a JavaScript value (Object,
- * Array, string, number, boolean, or `null`).
- */
- exportVal(): any;
- /**
- * Enumerates the top-level children in the `DataSnapshot`.
- *
- * Because of the way JavaScript objects work, the ordering of data in the
- * JavaScript object returned by `val()` is not guaranteed to match the ordering
- * on the server nor the ordering of `child_added` events. That is where
- * `forEach()` comes in handy. It guarantees the children of a `DataSnapshot`
- * will be iterated in their query order.
- *
- * If no explicit `orderBy*()` method is used, results are returned
- * ordered by key (unless priorities are used, in which case, results are
- * returned by priority).
- *
- * @example
- * ```javascript
- *
- * {
- * "users": {
- * "ada": {
- * "first": "Ada",
- * "last": "Lovelace"
- * },
- * "alan": {
- * "first": "Alan",
- * "last": "Turing"
- * }
- * }
- * }
- *
- *
- *
- *
- * var query = firebase.database().ref("users").orderByKey();
- * query.once("value")
- * .then(function(snapshot) {
- * snapshot.forEach(function(childSnapshot) {
- *
- * var key = childSnapshot.key;
- *
- * var childData = childSnapshot.val();
- * });
- * });
- * ```
- *
- * @example
- * ```javascript
- *
- *
- *
- * var query = firebase.database().ref("users").orderByKey();
- * query.once("value")
- * .then(function(snapshot) {
- * snapshot.forEach(function(childSnapshot) {
- * var key = childSnapshot.key;
- *
- *
- * return true;
- * });
- * });
- * ```
- *
- * @param action A function
- * that will be called for each child DataSnapshot. The callback can return
- * true to cancel further enumeration.
- * @return true if enumeration was canceled due to your callback
- * returning true.
- */
- forEach(
- action: (a: firebase.database.DataSnapshot) => boolean | void
- ): boolean;
- /**
- * Gets the priority value of the data in this `DataSnapshot`.
- *
- * Applications need not use priority but can order collections by
- * ordinary properties (see
- * {@link
- * https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data
- * Sorting and filtering data}).
- */
- getPriority(): string | number | null;
- /**
- * Returns true if the specified child path has (non-null) data.
- *
- * @example
- * ```javascript
- *
- * {
- * "name": {
- * "first": "Ada",
- * "last": "Lovelace"
- * }
- * }
- *
- *
- * var ref = firebase.database().ref("users/ada");
- * ref.once("value")
- * .then(function(snapshot) {
- * var hasName = snapshot.hasChild("name");
- * var hasAge = snapshot.hasChild("age");
- * });
- * ```
- *
- * @param path A relative path to the location of a potential child.
- * @return `true` if data exists at the specified child path; else
- * `false`.
- */
- hasChild(path: string): boolean;
- /**
- * Returns whether or not the `DataSnapshot` has any non-`null` child
- * properties.
- *
- * You can use `hasChildren()` to determine if a `DataSnapshot` has any
- * children. If it does, you can enumerate them using `forEach()`. If it
- * doesn't, then either this snapshot contains a primitive value (which can be
- * retrieved with `val()`) or it is empty (in which case, `val()` will return
- * `null`).
- *
- * @example
- * ```javascript
- *
- * {
- * "name": {
- * "first": "Ada",
- * "last": "Lovelace"
- * }
- * }
- *
- * var ref = firebase.database().ref("users/ada");
- * ref.once("value")
- * .then(function(snapshot) {
- * var a = snapshot.hasChildren();
- * var b = snapshot.child("name").hasChildren();
- * var c = snapshot.child("name/first").hasChildren();
- * });
- * ```
- *
- * @return true if this snapshot has any children; else false.
- */
- hasChildren(): boolean;
- /**
- * The key (last part of the path) of the location of this `DataSnapshot`.
- *
- * The last token in a Database location is considered its key. For example,
- * "ada" is the key for the /users/ada/ node. Accessing the key on any
- * `DataSnapshot` will return the key for the location that generated it.
- * However, accessing the key on the root URL of a Database will return `null`.
- *
- * @example
- * ```javascript
- *
- * {
- * "name": {
- * "first": "Ada",
- * "last": "Lovelace"
- * }
- * }
- *
- * var ref = firebase.database().ref("users/ada");
- * ref.once("value")
- * .then(function(snapshot) {
- * var key = snapshot.key;
- * var childKey = snapshot.child("name/last").key;
- * });
- * ```
- *
- * @example
- * ```javascript
- * var rootRef = firebase.database().ref();
- * rootRef.once("value")
- * .then(function(snapshot) {
- * var key = snapshot.key;
- * var childKey = snapshot.child("users/ada").key;
- * });
- * ```
- */
- key: string | null;
- /**
- * Returns the number of child properties of this `DataSnapshot`.
- *
- * @example
- * ```javascript
- *
- * {
- * "name": {
- * "first": "Ada",
- * "last": "Lovelace"
- * }
- * }
- *
- * var ref = firebase.database().ref("users/ada");
- * ref.once("value")
- * .then(function(snapshot) {
- * var a = snapshot.numChildren();
- * var b = snapshot.child("name").numChildren();
- * var c = snapshot.child("name/first").numChildren();
- * });
- * ```
- */
- numChildren(): number;
- /**
- * Extracts a JavaScript value from a `DataSnapshot`.
- *
- * Depending on the data in a `DataSnapshot`, the `val()` method may return a
- * scalar type (string, number, or boolean), an array, or an object. It may also
- * return null, indicating that the `DataSnapshot` is empty (contains no data).
- *
- * @example
- * ```javascript
- *
- * ref.set("hello")
- * .then(function() {
- * return ref.once("value");
- * })
- * .then(function(snapshot) {
- * var data = snapshot.val();
- * });
- * ```
- *
- * @example
- * ```javascript
- *
- * ref.set({ name: "Ada", age: 36 })
- * .then(function() {
- * return ref.once("value");
- * })
- * .then(function(snapshot) {
- * var data = snapshot.val();
- *
- *
- *
- * });
- * ```
- *
- * @return The DataSnapshot's contents as a JavaScript value (Object,
- * Array, string, number, boolean, or `null`).
- */
- val(): any;
- /**
- * The `Reference` for the location that generated this `DataSnapshot`.
- */
- ref: firebase.database.Reference;
- /**
- * Returns a JSON-serializable representation of this object.
- */
- toJSON(): Object | null;
- }
-
- /**
- * The Firebase Database service interface.
- *
- * Do not call this constructor directly. Instead, use
- * {@link firebase.database `firebase.database()`}.
- *
- * See
- * {@link
- * https://firebase.google.com/docs/database/web/start/
- * Installation & Setup in JavaScript}
- * for a full guide on how to use the Firebase Database service.
- */
- interface Database {
- /**
- * The {@link firebase.app.App app} associated with the `Database` service
- * instance.
- *
- * @example
- * ```javascript
- * var app = database.app;
- * ```
- */
- app: firebase.app.App;
- /**
- * Additional methods for debugging and special cases.
- *
- */
- INTERNAL: {
- /**
- * Force the use of WebSockets instead of long polling.
- */
- forceWebSockets: () => void;
- /**
- * Force the use of long polling instead of WebSockets. This will be ignored if the WebSocket protocol is used in `databaseURL`.
- */
- forceLongPolling: () => void;
- };
- /**
- * Modify this instance to communicate with the Realtime Database emulator.
- *
- * <p>Note: This method must be called before performing any other operation.
- *
- * @param host the emulator host (ex: localhost)
- * @param port the emulator port (ex: 8080)
- * @param options.mockUserToken the mock auth token to use for unit testing Security Rules
- */
- useEmulator(
- host: string,
- port: number,
- options?: {
- mockUserToken?: EmulatorMockTokenOptions | string;
- }
- ): void;
- /**
- * Disconnects from the server (all Database operations will be completed
- * offline).
- *
- * The client automatically maintains a persistent connection to the Database
- * server, which will remain active indefinitely and reconnect when
- * disconnected. However, the `goOffline()` and `goOnline()` methods may be used
- * to control the client connection in cases where a persistent connection is
- * undesirable.
- *
- * While offline, the client will no longer receive data updates from the
- * Database. However, all Database operations performed locally will continue to
- * immediately fire events, allowing your application to continue behaving
- * normally. Additionally, each operation performed locally will automatically
- * be queued and retried upon reconnection to the Database server.
- *
- * To reconnect to the Database and begin receiving remote events, see
- * `goOnline()`.
- *
- * @example
- * ```javascript
- * firebase.database().goOffline();
- * ```
- */
- goOffline(): any;
- /**
- * Reconnects to the server and synchronizes the offline Database state
- * with the server state.
- *
- * This method should be used after disabling the active connection with
- * `goOffline()`. Once reconnected, the client will transmit the proper data
- * and fire the appropriate events so that your client "catches up"
- * automatically.
- *
- * @example
- * ```javascript
- * firebase.database().goOnline();
- * ```
- */
- goOnline(): any;
- /**
- * Returns a `Reference` representing the location in the Database
- * corresponding to the provided path. If no path is provided, the `Reference`
- * will point to the root of the Database.
- *
- * @example
- * ```javascript
- *
- * var rootRef = firebase.database().ref();
- * ```
- *
- * @example
- * ```javascript
- *
- * var adaRef = firebase.database().ref("users/ada");
- *
- *
- *
- * ```
- *
- * @param path Optional path representing the location the returned
- * `Reference` will point. If not provided, the returned `Reference` will
- * point to the root of the Database.
- * @return If a path is provided, a `Reference`
- * pointing to the provided path. Otherwise, a `Reference` pointing to the
- * root of the Database.
- */
- ref(path?: string): firebase.database.Reference;
- /**
- * Returns a `Reference` representing the location in the Database
- * corresponding to the provided Firebase URL.
- *
- * An exception is thrown if the URL is not a valid Firebase Database URL or it
- * has a different domain than the current `Database` instance.
- *
- * Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored
- * and are not applied to the returned `Reference`.
- *
- * @example
- * ```javascript
- *
- * var rootRef = firebase.database().ref("https://<DATABASE_NAME>.firebaseio.com");
- * ```
- *
- * @example
- * ```javascript
- *
- * var adaRef = firebase.database().ref("https://<DATABASE_NAME>.firebaseio.com/users/ada");
- * ```
- *
- * @param url The Firebase URL at which the returned `Reference` will
- * point.
- * @return A `Reference` pointing to the provided
- * Firebase URL.
- */
- refFromURL(url: string): firebase.database.Reference;
- }
-
- /**
- * The `onDisconnect` class allows you to write or clear data when your client
- * disconnects from the Database server. These updates occur whether your
- * client disconnects cleanly or not, so you can rely on them to clean up data
- * even if a connection is dropped or a client crashes.
- *
- * The `onDisconnect` class is most commonly used to manage presence in
- * applications where it is useful to detect how many clients are connected and
- * when other clients disconnect. See
- * {@link
- * https://firebase.google.com/docs/database/web/offline-capabilities
- * Enabling Offline Capabilities in JavaScript} for more information.
- *
- * To avoid problems when a connection is dropped before the requests can be
- * transferred to the Database server, these functions should be called before
- * writing any data.
- *
- * Note that `onDisconnect` operations are only triggered once. If you want an
- * operation to occur each time a disconnect occurs, you'll need to re-establish
- * the `onDisconnect` operations each time you reconnect.
- */
- interface OnDisconnect {
- /**
- * Cancels all previously queued `onDisconnect()` set or update events for this
- * location and all children.
- *
- * If a write has been queued for this location via a `set()` or `update()` at a
- * parent location, the write at this location will be canceled, though writes
- * to sibling locations will still occur.
- *
- * @example
- * ```javascript
- * var ref = firebase.database().ref("onlineState");
- * ref.onDisconnect().set(false);
- *
- * ref.onDisconnect().cancel();
- * ```
- *
- * @param onComplete An optional callback function that will
- * be called when synchronization to the server has completed. The callback
- * will be passed a single parameter: null for success, or an Error object
- * indicating a failure.
- * @return Resolves when synchronization to the server
- * is complete.
- */
- cancel(onComplete?: (a: Error | null) => any): Promise<any>;
- /**
- * Ensures the data at this location is deleted when the client is disconnected
- * (due to closing the browser, navigating to a new page, or network issues).
- *
- * @param onComplete An optional callback function that will
- * be called when synchronization to the server has completed. The callback
- * will be passed a single parameter: null for success, or an Error object
- * indicating a failure.
- * @return Resolves when synchronization to the server
- * is complete.
- */
- remove(onComplete?: (a: Error | null) => any): Promise<any>;
- /**
- * Ensures the data at this location is set to the specified value when the
- * client is disconnected (due to closing the browser, navigating to a new page,
- * or network issues).
- *
- * `set()` is especially useful for implementing "presence" systems, where a
- * value should be changed or cleared when a user disconnects so that they
- * appear "offline" to other users. See
- * {@link
- * https://firebase.google.com/docs/database/web/offline-capabilities
- * Enabling Offline Capabilities in JavaScript} for more information.
- *
- * Note that `onDisconnect` operations are only triggered once. If you want an
- * operation to occur each time a disconnect occurs, you'll need to re-establish
- * the `onDisconnect` operations each time.
- *
- * @example
- * ```javascript
- * var ref = firebase.database().ref("users/ada/status");
- * ref.onDisconnect().set("I disconnected!");
- * ```
- *
- * @param value The value to be written to this location on
- * disconnect (can be an object, array, string, number, boolean, or null).
- * @param onComplete An optional callback function that
- * will be called when synchronization to the Database server has completed.
- * The callback will be passed a single parameter: null for success, or an
- * `Error` object indicating a failure.
- * @return Resolves when synchronization to the
- * Database is complete.
- */
- set(value: any, onComplete?: (a: Error | null) => any): Promise<any>;
- /**
- * Ensures the data at this location is set to the specified value and priority
- * when the client is disconnected (due to closing the browser, navigating to a
- * new page, or network issues).
- */
- setWithPriority(
- value: any,
- priority: number | string | null,
- onComplete?: (a: Error | null) => any
- ): Promise<any>;
- /**
- * Writes multiple values at this location when the client is disconnected (due
- * to closing the browser, navigating to a new page, or network issues).
- *
- * The `values` argument contains multiple property-value pairs that will be
- * written to the Database together. Each child property can either be a simple
- * property (for example, "name") or a relative path (for example, "name/first")
- * from the current location to the data to update.
- *
- * As opposed to the `set()` method, `update()` can be use to selectively update
- * only the referenced properties at the current location (instead of replacing
- * all the child properties at the current location).
- *
- * See more examples using the connected version of
- * {@link firebase.database.Reference.update `update()`}.
- *
- * @example
- * ```javascript
- * var ref = firebase.database().ref("users/ada");
- * ref.update({
- * onlineState: true,
- * status: "I'm online."
- * });
- * ref.onDisconnect().update({
- * onlineState: false,
- * status: "I'm offline."
- * });
- * ```
- *
- * @param values Object containing multiple values.
- * @param onComplete An optional callback function that will
- * be called when synchronization to the server has completed. The
- * callback will be passed a single parameter: null for success, or an Error
- * object indicating a failure.
- * @return Resolves when synchronization to the
- * Database is complete.
- */
- update(values: Object, onComplete?: (a: Error | null) => any): Promise<any>;
- }
-
- type EventType =
- | 'value'
- | 'child_added'
- | 'child_changed'
- | 'child_moved'
- | 'child_removed';
-
- /**
- * A `Query` sorts and filters the data at a Database location so only a subset
- * of the child data is included. This can be used to order a collection of
- * data by some attribute (for example, height of dinosaurs) as well as to
- * restrict a large list of items (for example, chat messages) down to a number
- * suitable for synchronizing to the client. Queries are created by chaining
- * together one or more of the filter methods defined here.
- *
- * Just as with a `Reference`, you can receive data from a `Query` by using the
- * `on()` method. You will only receive events and `DataSnapshot`s for the
- * subset of the data that matches your query.
- *
- * Read our documentation on
- * {@link
- * https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data
- * Sorting and filtering data} for more information.
- */
- interface Query {
- /**
- * Creates a `Query` with the specified ending point.
- *
- * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`
- * allows you to choose arbitrary starting and ending points for your queries.
- *
- * The ending point is inclusive, so children with exactly the specified value
- * will be included in the query. The optional key argument can be used to
- * further limit the range of the query. If it is specified, then children that
- * have exactly the specified value must also have a key name less than or equal
- * to the specified key.
- *
- * You can read more about `endAt()` in
- * {@link
- * https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
- * Filtering data}.
- *
- * @example
- * ```javascript
- *
- *
- * var ref = firebase.database().ref("dinosaurs");
- * ref.orderByKey().endAt("pterodactyl").on("child_added", function(snapshot) {
- * console.log(snapshot.key);
- * });
- * ```
- *
- * @param value The value to end at. The argument
- * type depends on which `orderBy*()` function was used in this query.
- * Specify a value that matches the `orderBy*()` type. When used in
- * combination with `orderByKey()`, the value must be a string.
- * @param key The child key to end at, among the children with the
- * previously specified priority. This argument is only allowed if ordering by
- * child, value, or priority.
- */
- endAt(
- value: number | string | boolean | null,
- key?: string
- ): firebase.database.Query;
- /**
- * Creates a `Query` with the specified ending point (exclusive).
- *
- * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`
- * allows you to choose arbitrary starting and ending points for your queries.
- *
- * The ending point is exclusive. If only a value is provided, children
- * with a value less than the specified value will be included in the query.
- * If a key is specified, then children must have a value lesss than or equal
- * to the specified value and a a key name less than the specified key.
- *
- * @example
- * ```javascript
- *
- *
- * var ref = firebase.database().ref("dinosaurs");
- * ref.orderByKey().endBefore("pterodactyl").on("child_added", function(snapshot) {
- * console.log(snapshot.key);
- * });
- *
- * @param value The value to end before. The argument
- * type depends on which `orderBy*()` function was used in this query.
- * Specify a value that matches the `orderBy*()` type. When used in
- * combination with `orderByKey()`, the value must be a string.
- * @param key The child key to end before, among the children with the
- * previously specified priority. This argument is only allowed if ordering by
- * child, value, or priority.
- */
- endBefore(
- value: number | string | boolean | null,
- key?: string
- ): firebase.database.Query;
-
-
- equalTo(
- value: number | string | boolean | null,
- key?: string
- ): firebase.database.Query;
-
-
- isEqual(other: firebase.database.Query | null): boolean;
-
-
- limitToFirst(limit: number): firebase.database.Query;
-
-
- limitToLast(limit: number): firebase.database.Query;
-
-
- off(
- eventType?: EventType,
- callback?: (a: firebase.database.DataSnapshot, b?: string | null) => any,
- context?: Object | null
- ): void;
-
-
-
- get(): Promise<DataSnapshot>;
-
-
-
- on(
- eventType: EventType,
- callback: (a: firebase.database.DataSnapshot, b?: string | null) => any,
- cancelCallbackOrContext?: ((a: Error) => any) | Object | null,
- context?: Object | null
- ): (a: firebase.database.DataSnapshot | null, b?: string | null) => any;
-
-
-
- once(
- eventType: EventType,
- successCallback?: (
- a: firebase.database.DataSnapshot,
- b?: string | null
- ) => any,
- failureCallbackOrContext?: ((a: Error) => void) | Object | null,
- context?: Object | null
- ): Promise<firebase.database.DataSnapshot>;
- /**
- * Generates a new `Query` object ordered by the specified child key.
- *
- * Queries can only order by one key at a time. Calling `orderByChild()`
- * multiple times on the same query is an error.
- *
- * Firebase queries allow you to order your data by any child key on the fly.
- * However, if you know in advance what your indexes will be, you can define
- * them via the .indexOn rule in your Security Rules for better performance. See
- * the {@link https://firebase.google.com/docs/database/security/indexing-data
- * .indexOn} rule for more information.
- *
- * You can read more about `orderByChild()` in
- * {@link
- * https://firebase.google.com/docs/database/web/lists-of-data#sort_data
- * Sort data}.
- *
- * @example
- * ```javascript
- * var ref = firebase.database().ref("dinosaurs");
- * ref.orderByChild("height").on("child_added", function(snapshot) {
- * console.log(snapshot.key + " was " + snapshot.val().height + " m tall");
- * });
- * ```
- */
- orderByChild(path: string): firebase.database.Query;
- /**
- * Generates a new `Query` object ordered by key.
- *
- * Sorts the results of a query by their (ascending) key values.
- *
- * You can read more about `orderByKey()` in
- * {@link
- * https://firebase.google.com/docs/database/web/lists-of-data#sort_data
- * Sort data}.
- *
- * @example
- * ```javascript
- * var ref = firebase.database().ref("dinosaurs");
- * ref.orderByKey().on("child_added", function(snapshot) {
- * console.log(snapshot.key);
- * });
- * ```
- */
- orderByKey(): firebase.database.Query;
- /**
- * Generates a new `Query` object ordered by priority.
- *
- * Applications need not use priority but can order collections by
- * ordinary properties (see
- * {@link
- * https:
- * Sort data} for alternatives to priority.
- */
- orderByPriority(): firebase.database.Query;
-
-
- orderByValue(): firebase.database.Query;
-
-
- ref: firebase.database.Reference;
-
-
- startAt(
- value: number | string | boolean | null,
- key?: string
- ): firebase.database.Query;
-
-
- startAfter(
- value: number | string | boolean | null,
- key?: string
- ): firebase.database.Query;
-
-
- toJSON(): Object;
-
-
- toString(): string;
- }
-
-
-
- interface Reference extends firebase.database.Query {
-
-
- child(path: string): firebase.database.Reference;
-
-
- key: string | null;
-
-
- onDisconnect(): firebase.database.OnDisconnect;
-
-
- parent: firebase.database.Reference | null;
-
-
- push(
- value?: any,
- onComplete?: (a: Error | null) => any
- ): firebase.database.ThenableReference;
-
-
- remove(onComplete?: (a: Error | null) => void): Promise<void>;
-
-
- root: firebase.database.Reference;
-
-
- set(value: any, onComplete?: (a: Error | null) => void): Promise<void>;
-
-
- setPriority(
- priority: string | number | null,
- onComplete: (a: Error | null) => void
- ): Promise<void>;
-
-
- setWithPriority(
- newVal: any,
- newPriority: string | number | null,
- onComplete?: (a: Error | null) => void
- ): Promise<void>;
-
-
- transaction(
- transactionUpdate: (a: any) => any,
- onComplete?: (
- a: Error | null,
- b: boolean,
- c: firebase.database.DataSnapshot | null
- ) => void,
- applyLocally?: boolean
- ): Promise<TransactionResult>;
-
-
- update(
- values: Object,
- onComplete?: (a: Error | null) => void
- ): Promise<void>;
- }
-
- interface TransactionResult {
-
-
- committed: boolean;
-
-
- snapshot: DataSnapshot;
- }
-
- interface ThenableReference
- extends firebase.database.Reference,
- Pick<Promise<Reference>, 'then' | 'catch'> {}
-
-
-
- function enableLogging(
- logger?: boolean | ((a: string) => any),
- persistent?: boolean
- ): any;
-
- export type EmulatorMockTokenOptions = firebase.EmulatorMockTokenOptions;
- }
-
- declare namespace firebase.database.ServerValue {
-
-
- var TIMESTAMP: Object;
-
-
-
- function increment(delta: number): Object;
- }
-
-
- declare namespace firebase.messaging {
-
-
- interface Messaging {
-
-
- deleteToken(): Promise<boolean>;
-
-
-
- getToken(options?: {
- vapidKey?: string;
- serviceWorkerRegistration?: ServiceWorkerRegistration;
- }): Promise<string>;
-
-
-
- onMessage(
- nextOrObserver: firebase.NextFn<any> | firebase.Observer<any>
- ): firebase.Unsubscribe;
-
-
-
- onBackgroundMessage(
- nextOrObserver:
- | firebase.NextFn<MessagePayload>
- | firebase.Observer<MessagePayload>
- ): firebase.Unsubscribe;
- }
-
-
-
- export interface MessagePayload {
-
-
- notification?: NotificationPayload;
-
-
-
- data?: { [key: string]: string };
-
-
-
- fcmOptions?: FcmOptions;
-
-
-
- from: string;
-
-
-
- collapseKey: string;
- }
-
-
-
- export interface FcmOptions {
-
-
- link?: string;
-
-
-
- analyticsLabel?: string;
- }
-
-
-
- export interface NotificationPayload {
-
-
- title?: string;
-
-
-
- body?: string;
-
-
-
- image?: string;
- }
-
- function isSupported(): boolean;
- }
-
- declare namespace firebase.storage {
-
-
- interface FullMetadata extends firebase.storage.UploadMetadata {
-
-
- bucket: string;
-
-
- fullPath: string;
-
-
- generation: string;
-
-
- metageneration: string;
-
-
- name: string;
-
-
- size: number;
-
-
- timeCreated: string;
-
-
- updated: string;
- }
-
-
-
- interface Reference {
-
-
- bucket: string;
-
-
- child(path: string): firebase.storage.Reference;
-
-
- delete(): Promise<void>;
-
-
- fullPath: string;
-
-
- getDownloadURL(): Promise<string>;
-
-
- getMetadata(): Promise<FullMetadata>;
-
-
- name: string;
-
-
- parent: firebase.storage.Reference | null;
-
-
- put(
- data: Blob | Uint8Array | ArrayBuffer,
- metadata?: firebase.storage.UploadMetadata
- ): firebase.storage.UploadTask;
-
-
- putString(
- data: string,
- format?: firebase.storage.StringFormat,
- metadata?: firebase.storage.UploadMetadata
- ): firebase.storage.UploadTask;
-
-
- root: firebase.storage.Reference;
-
-
- storage: firebase.storage.Storage;
-
-
- toString(): string;
-
-
- updateMetadata(
- metadata: firebase.storage.SettableMetadata
- ): Promise<FullMetadata>;
-
-
- listAll(): Promise<ListResult>;
-
-
- list(options?: ListOptions): Promise<ListResult>;
- }
-
-
-
- interface ListResult {
-
-
- prefixes: Reference[];
-
-
- items: Reference[];
-
-
- nextPageToken: string | null;
- }
-
-
-
- interface ListOptions {
-
-
- maxResults?: number | null;
-
-
- pageToken?: string | null;
- }
-
-
-
- interface SettableMetadata {
-
-
- cacheControl?: string | null;
- contentDisposition?: string | null;
-
-
- contentEncoding?: string | null;
-
-
- contentLanguage?: string | null;
-
-
- contentType?: string | null;
-
-
- customMetadata?: {
- [ key: string]: string;
- } | null;
- }
-
-
-
- interface Storage {
-
-
- app: firebase.app.App;
-
-
- maxOperationRetryTime: number;
-
-
- maxUploadRetryTime: number;
-
-
- ref(path?: string): firebase.storage.Reference;
-
-
- refFromURL(url: string): firebase.storage.Reference;
-
-
- setMaxOperationRetryTime(time: number): any;
-
-
- setMaxUploadRetryTime(time: number): any;
-
-
- useEmulator(
- host: string,
- port: number,
- options?: {
- mockUserToken?: EmulatorMockTokenOptions | string;
- }
- ): void;
- }
-
-
-
- type StringFormat = string;
- var StringFormat: {
-
-
- BASE64: StringFormat;
-
-
- BASE64URL: StringFormat;
-
-
- DATA_URL: StringFormat;
-
-
- RAW: StringFormat;
- };
-
-
-
- type TaskEvent = string;
- var TaskEvent: {
-
-
- STATE_CHANGED: TaskEvent;
- };
-
-
-
- type TaskState = string;
- var TaskState: {
- CANCELED: TaskState;
- ERROR: TaskState;
- PAUSED: TaskState;
- RUNNING: TaskState;
- SUCCESS: TaskState;
- };
-
-
-
- interface UploadMetadata extends firebase.storage.SettableMetadata {
-
-
- md5Hash?: string | null;
- }
-
-
-
- interface FirebaseStorageError extends FirebaseError {
- serverResponse: string | null;
- }
-
- interface StorageObserver<T> {
- next?: NextFn<T> | null;
- error?: (error: FirebaseStorageError) => void | null;
- complete?: CompleteFn | null;
- }
-
-
-
- interface UploadTask {
-
-
- cancel(): boolean;
-
-
- catch(onRejected: (error: FirebaseStorageError) => any): Promise<any>;
-
-
- on(
- event: firebase.storage.TaskEvent,
- nextOrObserver?:
- | StorageObserver<UploadTaskSnapshot>
- | null
- | ((snapshot: UploadTaskSnapshot) => any),
- error?: ((error: FirebaseStorageError) => any) | null,
- complete?: firebase.Unsubscribe | null
- ): Function;
-
-
- pause(): boolean;
-
-
- resume(): boolean;
-
-
- snapshot: firebase.storage.UploadTaskSnapshot;
-
-
- then(
- onFulfilled?:
- | ((snapshot: firebase.storage.UploadTaskSnapshot) => any)
- | null,
- onRejected?: ((error: FirebaseStorageError) => any) | null
- ): Promise<any>;
- }
-
-
-
- interface UploadTaskSnapshot {
-
-
- bytesTransferred: number;
-
-
- metadata: firebase.storage.FullMetadata;
-
-
- ref: firebase.storage.Reference;
-
-
- state: firebase.storage.TaskState;
-
-
- task: firebase.storage.UploadTask;
-
-
- totalBytes: number;
- }
- }
-
- declare namespace firebase.firestore {
-
-
- export type DocumentData = { [field: string]: any };
-
-
-
- export type UpdateData = { [fieldPath: string]: any };
-
-
-
- export const CACHE_SIZE_UNLIMITED: number;
-
-
-
- export interface Settings {
-
- host?: string;
-
- ssl?: boolean;
-
-
-
- cacheSizeBytes?: number;
-
-
-
- experimentalForceLongPolling?: boolean;
-
-
-
- experimentalAutoDetectLongPolling?: boolean;
-
-
-
- ignoreUndefinedProperties?: boolean;
-
-
-
- merge?: boolean;
- }
-
-
-
- export interface PersistenceSettings {
-
-
- synchronizeTabs?: boolean;
-
-
-
- experimentalForceOwningTab?: boolean;
- }
-
- export type LogLevel = 'debug' | 'error' | 'silent';
-
-
-
- export function setLogLevel(logLevel: LogLevel): void;
-
-
-
- export interface FirestoreDataConverter<T> {
-
-
- toFirestore(modelObject: T): DocumentData;
- toFirestore(modelObject: Partial<T>, options: SetOptions): DocumentData;
-
-
-
- fromFirestore(snapshot: QueryDocumentSnapshot, options: SnapshotOptions): T;
- }
-
-
-
- export class Firestore {
- private constructor();
-
-
- settings(settings: Settings): void;
-
-
-
- useEmulator(
- host: string,
- port: number,
- options?: {
- mockUserToken?: EmulatorMockTokenOptions | string;
- }
- ): void;
-
-
-
- enablePersistence(settings?: PersistenceSettings): Promise<void>;
-
-
-
- collection(collectionPath: string): CollectionReference<DocumentData>;
-
-
-
- doc(documentPath: string): DocumentReference<DocumentData>;
-
-
-
- collectionGroup(collectionId: string): Query<DocumentData>;
-
-
-
- runTransaction<T>(
- updateFunction: (transaction: Transaction) => Promise<T>
- ): Promise<T>;
-
-
-
- batch(): WriteBatch;
-
-
-
- app: firebase.app.App;
-
-
-
- clearPersistence(): Promise<void>;
-
-
-
- enableNetwork(): Promise<void>;
-
-
-
- disableNetwork(): Promise<void>;
-
-
-
- waitForPendingWrites(): Promise<void>;
-
-
-
- onSnapshotsInSync(observer: {
- next?: (value: void) => void;
- error?: (error: FirestoreError) => void;
- complete?: () => void;
- }): () => void;
-
-
-
- onSnapshotsInSync(onSync: () => void): () => void;
-
-
-
- terminate(): Promise<void>;
-
-
-
- loadBundle(
- bundleData: ArrayBuffer | ReadableStream<Uint8Array> | string
- ): LoadBundleTask;
-
-
-
- namedQuery(name: string): Promise<Query<DocumentData> | null>;
-
-
-
- INTERNAL: { delete: () => Promise<void> };
- }
-
-
-
- export interface LoadBundleTask extends PromiseLike<LoadBundleTaskProgress> {
-
-
- onProgress(
- next?: (progress: LoadBundleTaskProgress) => any,
- error?: (error: Error) => any,
- complete?: () => void
- ): void;
-
-
-
- then<T, R>(
- onFulfilled?: (a: LoadBundleTaskProgress) => T | PromiseLike<T>,
- onRejected?: (a: Error) => R | PromiseLike<R>
- ): Promise<T | R>;
-
-
-
- catch<R>(
- onRejected: (a: Error) => R | PromiseLike<R>
- ): Promise<R | LoadBundleTaskProgress>;
- }
-
-
-
- export interface LoadBundleTaskProgress {
-
- documentsLoaded: number;
-
- totalDocuments: number;
-
- bytesLoaded: number;
-
- totalBytes: number;
-
- taskState: TaskState;
- }
-
-
-
- export type TaskState = 'Error' | 'Running' | 'Success';
-
-
-
- export class GeoPoint {
-
-
- constructor(latitude: number, longitude: number);
-
-
-
- readonly latitude: number;
-
-
- readonly longitude: number;
-
-
-
- isEqual(other: GeoPoint): boolean;
- }
-
-
-
- export class Timestamp {
-
-
- constructor(seconds: number, nanoseconds: number);
-
-
-
- static now(): Timestamp;
-
-
-
- static fromDate(date: Date): Timestamp;
-
-
-
- static fromMillis(milliseconds: number): Timestamp;
-
- readonly seconds: number;
- readonly nanoseconds: number;
-
-
-
- toDate(): Date;
-
-
-
- toMillis(): number;
-
-
-
- isEqual(other: Timestamp): boolean;
-
-
-
- valueOf(): string;
- }
-
-
-
- export class Blob {
- private constructor();
-
-
-
- static fromBase64String(base64: string): Blob;
-
-
-
- static fromUint8Array(array: Uint8Array): Blob;
-
-
-
- public toBase64(): string;
-
-
-
- public toUint8Array(): Uint8Array;
-
-
-
- isEqual(other: Blob): boolean;
- }
-
-
-
- export class Transaction {
- private constructor();
-
-
-
- get<T>(documentRef: DocumentReference<T>): Promise<DocumentSnapshot<T>>;
-
-
-
- set<T>(
- documentRef: DocumentReference<T>,
- data: Partial<T>,
- options: SetOptions
- ): Transaction;
-
-
-
- set<T>(documentRef: DocumentReference<T>, data: T): Transaction;
-
-
-
- update(documentRef: DocumentReference<any>, data: UpdateData): Transaction;
-
-
-
- update(
- documentRef: DocumentReference<any>,
- field: string | FieldPath,
- value: any,
- ...moreFieldsAndValues: any[]
- ): Transaction;
-
-
-
- delete(documentRef: DocumentReference<any>): Transaction;
- }
-
-
-
- export class WriteBatch {
- private constructor();
-
-
-
- set<T>(
- documentRef: DocumentReference<T>,
- data: Partial<T>,
- options: SetOptions
- ): WriteBatch;
-
-
-
- set<T>(documentRef: DocumentReference<T>, data: T): WriteBatch;
-
-
-
- update(documentRef: DocumentReference<any>, data: UpdateData): WriteBatch;
-
-
-
- update(
- documentRef: DocumentReference<any>,
- field: string | FieldPath,
- value: any,
- ...moreFieldsAndValues: any[]
- ): WriteBatch;
-
-
-
- delete(documentRef: DocumentReference<any>): WriteBatch;
-
-
-
- commit(): Promise<void>;
- }
-
-
-
- export interface SnapshotListenOptions {
-
-
- readonly includeMetadataChanges?: boolean;
- }
-
-
-
- export interface SetOptions {
-
-
- readonly merge?: boolean;
-
-
-
- readonly mergeFields?: (string | FieldPath)[];
- }
-
-
-
- export interface GetOptions {
-
-
- readonly source?: 'default' | 'server' | 'cache';
- }
-
-
-
- export class DocumentReference<T = DocumentData> {
- private constructor();
-
-
-
- readonly id: string;
-
-
-
- readonly firestore: Firestore;
-
-
-
- readonly parent: CollectionReference<T>;
-
-
-
- readonly path: string;
-
-
-
- collection(collectionPath: string): CollectionReference<DocumentData>;
-
-
-
- isEqual(other: DocumentReference<T>): boolean;
-
-
-
- set(data: Partial<T>, options: SetOptions): Promise<void>;
-
-
-
- set(data: T): Promise<void>;
-
-
-
- update(data: UpdateData): Promise<void>;
-
-
-
- update(
- field: string | FieldPath,
- value: any,
- ...moreFieldsAndValues: any[]
- ): Promise<void>;
-
-
-
- delete(): Promise<void>;
-
-
-
- get(options?: GetOptions): Promise<DocumentSnapshot<T>>;
-
-
-
- onSnapshot(observer: {
- next?: (snapshot: DocumentSnapshot<T>) => void;
- error?: (error: FirestoreError) => void;
- complete?: () => void;
- }): () => void;
-
-
- onSnapshot(
- options: SnapshotListenOptions,
- observer: {
- next?: (snapshot: DocumentSnapshot<T>) => void;
- error?: (error: FirestoreError) => void;
- complete?: () => void;
- }
- ): () => void;
-
-
- onSnapshot(
- onNext: (snapshot: DocumentSnapshot<T>) => void,
- onError?: (error: FirestoreError) => void,
- onCompletion?: () => void
- ): () => void;
-
-
- onSnapshot(
- options: SnapshotListenOptions,
- onNext: (snapshot: DocumentSnapshot<T>) => void,
- onError?: (error: FirestoreError) => void,
- onCompletion?: () => void
- ): () => void;
-
-
-
- withConverter(converter: null): DocumentReference<DocumentData>;
-
-
- withConverter<U>(
- converter: FirestoreDataConverter<U>
- ): DocumentReference<U>;
- }
-
-
-
- export interface SnapshotOptions {
-
-
- readonly serverTimestamps?: 'estimate' | 'previous' | 'none';
- }
-
-
-
- export interface SnapshotMetadata {
-
-
- readonly hasPendingWrites: boolean;
-
-
-
- readonly fromCache: boolean;
-
-
-
- isEqual(other: SnapshotMetadata): boolean;
- }
-
-
-
- export class DocumentSnapshot<T = DocumentData> {
- protected constructor();
-
-
-
- readonly exists: boolean;
-
-
- readonly ref: DocumentReference<T>;
-
-
- readonly id: string;
-
-
- readonly metadata: SnapshotMetadata;
-
-
-
- data(options?: SnapshotOptions): T | undefined;
-
-
-
- get(fieldPath: string | FieldPath, options?: SnapshotOptions): any;
-
-
-
- isEqual(other: DocumentSnapshot<T>): boolean;
- }
-
-
-
- export class QueryDocumentSnapshot<
- T = DocumentData
- > extends DocumentSnapshot<T> {
- private constructor();
-
-
-
- data(options?: SnapshotOptions): T;
- }
-
-
-
- export type OrderByDirection = 'desc' | 'asc';
-
-
-
- export type WhereFilterOp =
- | '<'
- | '<='
- | '=='
- | '!='
- | '>='
- | '>'
- | 'array-contains'
- | 'in'
- | 'array-contains-any'
- | 'not-in';
-
-
-
- export class Query<T = DocumentData> {
- protected constructor();
-
-
-
- readonly firestore: Firestore;
-
-
-
- where(
- fieldPath: string | FieldPath,
- opStr: WhereFilterOp,
- value: any
- ): Query<T>;
-
-
-
- orderBy(
- fieldPath: string | FieldPath,
- directionStr?: OrderByDirection
- ): Query<T>;
-
-
-
- limit(limit: number): Query<T>;
-
-
-
- limitToLast(limit: number): Query<T>;
-
-
-
- startAt(snapshot: DocumentSnapshot<any>): Query<T>;
-
-
-
- startAt(...fieldValues: any[]): Query<T>;
-
-
-
- startAfter(snapshot: DocumentSnapshot<any>): Query<T>;
-
-
-
- startAfter(...fieldValues: any[]): Query<T>;
-
-
-
- endBefore(snapshot: DocumentSnapshot<any>): Query<T>;
-
-
-
- endBefore(...fieldValues: any[]): Query<T>;
-
-
-
- endAt(snapshot: DocumentSnapshot<any>): Query<T>;
-
-
-
- endAt(...fieldValues: any[]): Query<T>;
-
-
-
- isEqual(other: Query<T>): boolean;
-
-
-
- get(options?: GetOptions): Promise<QuerySnapshot<T>>;
-
-
-
- onSnapshot(observer: {
- next?: (snapshot: QuerySnapshot<T>) => void;
- error?: (error: FirestoreError) => void;
- complete?: () => void;
- }): () => void;
-
-
- onSnapshot(
- options: SnapshotListenOptions,
- observer: {
- next?: (snapshot: QuerySnapshot<T>) => void;
- error?: (error: FirestoreError) => void;
- complete?: () => void;
- }
- ): () => void;
-
-
- onSnapshot(
- onNext: (snapshot: QuerySnapshot<T>) => void,
- onError?: (error: FirestoreError) => void,
- onCompletion?: () => void
- ): () => void;
-
-
- onSnapshot(
- options: SnapshotListenOptions,
- onNext: (snapshot: QuerySnapshot<T>) => void,
- onError?: (error: FirestoreError) => void,
- onCompletion?: () => void
- ): () => void;
-
-
-
- withConverter(converter: null): Query<DocumentData>;
-
-
- withConverter<U>(converter: FirestoreDataConverter<U>): Query<U>;
- }
-
-
-
- export class QuerySnapshot<T = DocumentData> {
- private constructor();
-
-
-
- readonly query: Query<T>;
-
-
- readonly metadata: SnapshotMetadata;
-
-
- readonly docs: Array<QueryDocumentSnapshot<T>>;
-
-
- readonly size: number;
-
-
- readonly empty: boolean;
-
-
-
- docChanges(options?: SnapshotListenOptions): Array<DocumentChange<T>>;
-
-
-
- forEach(
- callback: (result: QueryDocumentSnapshot<T>) => void,
- thisArg?: any
- ): void;
-
-
-
- isEqual(other: QuerySnapshot<T>): boolean;
- }
-
-
-
- export type DocumentChangeType = 'added' | 'removed' | 'modified';
-
-
-
- export interface DocumentChange<T = DocumentData> {
-
- readonly type: DocumentChangeType;
-
-
- readonly doc: QueryDocumentSnapshot<T>;
-
-
-
- readonly oldIndex: number;
-
-
-
- readonly newIndex: number;
- }
-
-
-
- export class CollectionReference<T = DocumentData> extends Query<T> {
- private constructor();
-
-
- readonly id: string;
-
-
-
- readonly parent: DocumentReference<DocumentData> | null;
-
-
-
- readonly path: string;
-
-
-
- doc(documentPath?: string): DocumentReference<T>;
-
-
-
- add(data: T): Promise<DocumentReference<T>>;
-
-
-
- isEqual(other: CollectionReference<T>): boolean;
-
-
-
- withConverter(converter: null): CollectionReference<DocumentData>;
-
-
- withConverter<U>(
- converter: FirestoreDataConverter<U>
- ): CollectionReference<U>;
- }
-
-
-
- export class FieldValue {
- private constructor();
-
-
-
- static serverTimestamp(): FieldValue;
-
-
-
- static delete(): FieldValue;
-
-
-
- static arrayUnion(...elements: any[]): FieldValue;
-
-
-
- static arrayRemove(...elements: any[]): FieldValue;
-
-
-
- static increment(n: number): FieldValue;
-
-
-
- isEqual(other: FieldValue): boolean;
- }
-
-
-
- export class FieldPath {
-
-
- constructor(...fieldNames: string[]);
-
-
-
- static documentId(): FieldPath;
-
-
-
- isEqual(other: FieldPath): boolean;
- }
-
-
-
- export type FirestoreErrorCode =
- | 'cancelled'
- | 'unknown'
- | 'invalid-argument'
- | 'deadline-exceeded'
- | 'not-found'
- | 'already-exists'
- | 'permission-denied'
- | 'resource-exhausted'
- | 'failed-precondition'
- | 'aborted'
- | 'out-of-range'
- | 'unimplemented'
- | 'internal'
- | 'unavailable'
- | 'data-loss'
- | 'unauthenticated';
-
-
-
- export interface FirestoreError {
- code: FirestoreErrorCode;
- message: string;
- name: string;
- stack?: string;
- }
-
- export type EmulatorMockTokenOptions = firebase.EmulatorMockTokenOptions;
- }
-
- export default firebase;
- export as namespace firebase;
|