12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056 |
- :github-icon: pass:[<svg class="icon"><use href="#github-icon"/></svg>]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]]
- :IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]]
- :GovernorVotesQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction[`GovernorVotesQuorumFraction`]]
- :GovernorVotesSuperQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesSuperQuorumFraction[`GovernorVotesSuperQuorumFraction`]]
- :GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]]
- :GovernorCountingFractional: pass:normal[xref:governance.adoc#GovernorCountingFractional[`GovernorCountingFractional`]]
- :GovernorCountingOverridable: pass:normal[xref:governance.adoc#GovernorCountingOverridable[`GovernorCountingOverridable`]]
- :VotesExtended: pass:normal[xref:governance.adoc#VotesExtended[`VotesExtended`]]
- :GovernorTimelockAccess: pass:normal[xref:governance.adoc#GovernorTimelockAccess[`GovernorTimelockAccess`]]
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :GovernorTimelockControl: pass:normal[xref:governance.adoc#GovernorTimelockControl[`GovernorTimelockControl`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :GovernorTimelockCompound: pass:normal[xref:governance.adoc#GovernorTimelockCompound[`GovernorTimelockCompound`]]
- :GovernorStorage: pass:normal[xref:governance.adoc#GovernorStorage[`GovernorStorage`]]
- :GovernorSettings: pass:normal[xref:governance.adoc#GovernorSettings[`GovernorSettings`]]
- :GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]]
- :GovernorProposalGuardian: pass:normal[xref:governance.adoc#GovernorProposalGuardian[`GovernorProposalGuardian`]]
- :GovernorSuperQuorum: pass:normal[xref:governance.adoc#GovernorSuperQuorum[`GovernorSuperQuorum`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :GovernorNoncesKeyed: pass:normal[xref:governance.adoc#GovernorNoncesKeyed[`GovernorNoncesKeyed`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :xref-IGovernor-name--: xref:governance.adoc#IGovernor-name--
- :xref-IGovernor-version--: xref:governance.adoc#IGovernor-version--
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32-
- :xref-IGovernor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-getProposalId-address---uint256---bytes---bytes32-
- :xref-IGovernor-state-uint256-: xref:governance.adoc#IGovernor-state-uint256-
- :xref-IGovernor-proposalThreshold--: xref:governance.adoc#IGovernor-proposalThreshold--
- :xref-IGovernor-proposalSnapshot-uint256-: xref:governance.adoc#IGovernor-proposalSnapshot-uint256-
- :xref-IGovernor-proposalDeadline-uint256-: xref:governance.adoc#IGovernor-proposalDeadline-uint256-
- :xref-IGovernor-proposalProposer-uint256-: xref:governance.adoc#IGovernor-proposalProposer-uint256-
- :xref-IGovernor-proposalEta-uint256-: xref:governance.adoc#IGovernor-proposalEta-uint256-
- :xref-IGovernor-proposalNeedsQueuing-uint256-: xref:governance.adoc#IGovernor-proposalNeedsQueuing-uint256-
- :xref-IGovernor-votingDelay--: xref:governance.adoc#IGovernor-votingDelay--
- :xref-IGovernor-votingPeriod--: xref:governance.adoc#IGovernor-votingPeriod--
- :xref-IGovernor-quorum-uint256-: xref:governance.adoc#IGovernor-quorum-uint256-
- :xref-IGovernor-getVotes-address-uint256-: xref:governance.adoc#IGovernor-getVotes-address-uint256-
- :xref-IGovernor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#IGovernor-getVotesWithParams-address-uint256-bytes-
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-IGovernor-propose-address---uint256---bytes---string-: xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string-
- :xref-IGovernor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-queue-address---uint256---bytes---bytes32-
- :xref-IGovernor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32-
- :xref-IGovernor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-cancel-address---uint256---bytes---bytes32-
- :xref-IGovernor-castVote-uint256-uint8-: xref:governance.adoc#IGovernor-castVote-uint256-uint8-
- :xref-IGovernor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string-
- :xref-IGovernor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#IGovernor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-IGovernor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-IGovernor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#IGovernor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-IERC6372-clock--: xref:interfaces.adoc#IERC6372-clock--
- :xref-IERC6372-CLOCK_MODE--: xref:interfaces.adoc#IERC6372-CLOCK_MODE--
- :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :IERC6372-clock: pass:normal[xref:interfaces.adoc#IERC6372-clock--[`IERC6372.clock`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :IGovernor-votingDelay: pass:normal[xref:governance.adoc#IGovernor-votingDelay--[`IGovernor.votingDelay`]]
- :IGovernor-votingPeriod: pass:normal[xref:governance.adoc#IGovernor-votingPeriod--[`IGovernor.votingPeriod`]]
- :Governor-_encodeStateBitmap: pass:normal[xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-[`Governor._encodeStateBitmap`]]
- :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]]
- :xref-Governor-onlyGovernance--: xref:governance.adoc#Governor-onlyGovernance--
- :xref-Governor-constructor-string-: xref:governance.adoc#Governor-constructor-string-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :GovernorSettings: pass:normal[xref:governance.adoc#GovernorSettings[`GovernorSettings`]]
- :IGovernor-hashProposal: pass:normal[xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`IGovernor.hashProposal`]]
- :IGovernor-propose: pass:normal[xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string-[`IGovernor.propose`]]
- :IGovernor-ProposalCreated: pass:normal[xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-[`IGovernor.ProposalCreated`]]
- :IGovernor-ProposalCanceled: pass:normal[xref:governance.adoc#IGovernor-ProposalCanceled-uint256-[`IGovernor.ProposalCanceled`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :IGovernor-getVotes: pass:normal[xref:governance.adoc#IGovernor-getVotes-address-uint256-[`IGovernor.getVotes`]]
- :IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]]
- :IGovernor-getVotes: pass:normal[xref:governance.adoc#IGovernor-getVotes-address-uint256-[`IGovernor.getVotes`]]
- :IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]]
- :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
- :IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]]
- :IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]]
- :IERC6372-clock: pass:normal[xref:interfaces.adoc#IERC6372-clock--[`IERC6372.clock`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :xref-GovernorCountingSimple-COUNTING_MODE--: xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE--
- :xref-GovernorCountingSimple-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address-
- :xref-GovernorCountingSimple-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256-
- :xref-GovernorCountingSimple-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256-
- :xref-GovernorCountingSimple-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256-
- :xref-GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]]
- :Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-[`Governor._countVote`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :xref-GovernorCountingFractional-COUNTING_MODE--: xref:governance.adoc#GovernorCountingFractional-COUNTING_MODE--
- :xref-GovernorCountingFractional-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingFractional-hasVoted-uint256-address-
- :xref-GovernorCountingFractional-usedVotes-uint256-address-: xref:governance.adoc#GovernorCountingFractional-usedVotes-uint256-address-
- :xref-GovernorCountingFractional-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingFractional-proposalVotes-uint256-
- :xref-GovernorCountingFractional-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingFractional-_quorumReached-uint256-
- :xref-GovernorCountingFractional-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingFractional-_voteSucceeded-uint256-
- :xref-GovernorCountingFractional-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#GovernorCountingFractional-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-GovernorCountingFractional-GovernorExceedRemainingWeight-address-uint256-uint256-: xref:governance.adoc#GovernorCountingFractional-GovernorExceedRemainingWeight-address-uint256-uint256-
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :xref-GovernorCountingFractional-VOTE_TYPE_FRACTIONAL-uint8: xref:governance.adoc#GovernorCountingFractional-VOTE_TYPE_FRACTIONAL-uint8
- :Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]]
- :Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-[`Governor._countVote`]]
- :GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :VotesExtended: pass:normal[xref:governance.adoc#VotesExtended[`VotesExtended`]]
- :xref-GovernorCountingOverridable-COUNTING_MODE--: xref:governance.adoc#GovernorCountingOverridable-COUNTING_MODE--
- :xref-GovernorCountingOverridable-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingOverridable-hasVoted-uint256-address-
- :xref-GovernorCountingOverridable-hasVotedOverride-uint256-address-: xref:governance.adoc#GovernorCountingOverridable-hasVotedOverride-uint256-address-
- :xref-GovernorCountingOverridable-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingOverridable-proposalVotes-uint256-
- :xref-GovernorCountingOverridable-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingOverridable-_quorumReached-uint256-
- :xref-GovernorCountingOverridable-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingOverridable-_voteSucceeded-uint256-
- :xref-GovernorCountingOverridable-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#GovernorCountingOverridable-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-GovernorCountingOverridable-_countOverride-uint256-address-uint8-: xref:governance.adoc#GovernorCountingOverridable-_countOverride-uint256-address-uint8-
- :xref-GovernorCountingOverridable-_castOverride-uint256-address-uint8-string-: xref:governance.adoc#GovernorCountingOverridable-_castOverride-uint256-address-uint8-string-
- :xref-GovernorCountingOverridable-castOverrideVote-uint256-uint8-string-: xref:governance.adoc#GovernorCountingOverridable-castOverrideVote-uint256-uint8-string-
- :xref-GovernorCountingOverridable-castOverrideVoteBySig-uint256-uint8-address-string-bytes-: xref:governance.adoc#GovernorCountingOverridable-castOverrideVoteBySig-uint256-uint8-address-string-bytes-
- :xref-GovernorCountingOverridable-OVERRIDE_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#GovernorCountingOverridable-OVERRIDE_BALLOT_TYPEHASH-bytes32
- :xref-GovernorVotes-token--: xref:governance.adoc#GovernorVotes-token--
- :xref-GovernorVotes-clock--: xref:governance.adoc#GovernorVotes-clock--
- :xref-GovernorVotes-CLOCK_MODE--: xref:governance.adoc#GovernorVotes-CLOCK_MODE--
- :xref-GovernorVotes-_getVotes-address-uint256-bytes-: xref:governance.adoc#GovernorVotes-_getVotes-address-uint256-bytes-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorCountingOverridable-VoteReduced-address-uint256-uint8-uint256-: xref:governance.adoc#GovernorCountingOverridable-VoteReduced-address-uint256-uint8-uint256-
- :xref-GovernorCountingOverridable-OverrideVoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#GovernorCountingOverridable-OverrideVoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-GovernorCountingOverridable-GovernorAlreadyOverriddenVote-address-: xref:governance.adoc#GovernorCountingOverridable-GovernorAlreadyOverriddenVote-address-
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :IGovernor-hasVoted: pass:normal[xref:governance.adoc#IGovernor-hasVoted-uint256-address-[`IGovernor.hasVoted`]]
- :Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]]
- :Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-[`Governor._countVote`]]
- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-[`Governor._castVote`]]
- :IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]]
- :IGovernor-VoteCastWithParams: pass:normal[xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-[`IGovernor.VoteCastWithParams`]]
- :Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-[`Governor._countVote`]]
- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-[`Governor._castVote`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]]
- :xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-
- :xref-GovernorVotes-token--: xref:governance.adoc#GovernorVotes-token--
- :xref-GovernorVotes-clock--: xref:governance.adoc#GovernorVotes-clock--
- :xref-GovernorVotes-CLOCK_MODE--: xref:governance.adoc#GovernorVotes-CLOCK_MODE--
- :xref-GovernorVotes-_getVotes-address-uint256-bytes-: xref:governance.adoc#GovernorVotes-_getVotes-address-uint256-bytes-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :xref-GovernorVotesQuorumFraction-constructor-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256-
- :xref-GovernorVotesQuorumFraction-quorumNumerator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator--
- :xref-GovernorVotesQuorumFraction-quorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator-uint256-
- :xref-GovernorVotesQuorumFraction-quorumDenominator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator--
- :xref-GovernorVotesQuorumFraction-quorum-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256-
- :xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-
- :xref-GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-
- :xref-GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-
- :xref-GovernorVotes-token--: xref:governance.adoc#GovernorVotes-token--
- :xref-GovernorVotes-clock--: xref:governance.adoc#GovernorVotes-clock--
- :xref-GovernorVotes-CLOCK_MODE--: xref:governance.adoc#GovernorVotes-CLOCK_MODE--
- :xref-GovernorVotes-_getVotes-address-uint256-bytes-: xref:governance.adoc#GovernorVotes-_getVotes-address-uint256-bytes-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :GovernorVotesQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction[`GovernorVotesQuorumFraction`]]
- :xref-GovernorVotesSuperQuorumFraction-constructor-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-constructor-uint256-
- :xref-GovernorVotesSuperQuorumFraction-superQuorumNumerator--: xref:governance.adoc#GovernorVotesSuperQuorumFraction-superQuorumNumerator--
- :xref-GovernorVotesSuperQuorumFraction-superQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-superQuorumNumerator-uint256-
- :xref-GovernorVotesSuperQuorumFraction-superQuorum-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-superQuorum-uint256-
- :xref-GovernorVotesSuperQuorumFraction-updateSuperQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-updateSuperQuorumNumerator-uint256-
- :xref-GovernorVotesSuperQuorumFraction-_updateSuperQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-_updateSuperQuorumNumerator-uint256-
- :xref-GovernorVotesSuperQuorumFraction-_updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-_updateQuorumNumerator-uint256-
- :xref-GovernorVotesSuperQuorumFraction-state-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-state-uint256-
- :xref-GovernorSuperQuorum-proposalVotes-uint256-: xref:governance.adoc#GovernorSuperQuorum-proposalVotes-uint256-
- :xref-GovernorVotesQuorumFraction-quorumNumerator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator--
- :xref-GovernorVotesQuorumFraction-quorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator-uint256-
- :xref-GovernorVotesQuorumFraction-quorumDenominator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator--
- :xref-GovernorVotesQuorumFraction-quorum-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256-
- :xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-
- :xref-GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-
- :xref-GovernorVotes-token--: xref:governance.adoc#GovernorVotes-token--
- :xref-GovernorVotes-clock--: xref:governance.adoc#GovernorVotes-clock--
- :xref-GovernorVotes-CLOCK_MODE--: xref:governance.adoc#GovernorVotes-CLOCK_MODE--
- :xref-GovernorVotes-_getVotes-address-uint256-bytes-: xref:governance.adoc#GovernorVotes-_getVotes-address-uint256-bytes-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorVotesSuperQuorumFraction-SuperQuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-SuperQuorumNumeratorUpdated-uint256-uint256-
- :xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumFraction-uint256-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumFraction-uint256-uint256-
- :xref-GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumTooSmall-uint256-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumTooSmall-uint256-uint256-
- :xref-GovernorVotesSuperQuorumFraction-GovernorInvalidQuorumTooLarge-uint256-uint256-: xref:governance.adoc#GovernorVotesSuperQuorumFraction-GovernorInvalidQuorumTooLarge-uint256-uint256-
- :xref-GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :GovernorSuperQuorum-superQuorum: pass:normal[xref:governance.adoc#GovernorSuperQuorum-superQuorum-uint256-[`GovernorSuperQuorum.superQuorum`]]
- :GovernorVotesQuorumFraction-_updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction._updateQuorumNumerator`]]
- :Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :GovernorTimelockControl: pass:normal[xref:governance.adoc#GovernorTimelockControl[`GovernorTimelockControl`]]
- :GovernorTimelockCompound: pass:normal[xref:governance.adoc#GovernorTimelockCompound[`GovernorTimelockCompound`]]
- :AccessManager-execute: pass:normal[xref:access.adoc#AccessManager-execute-address-bytes-[`AccessManager.execute`]]
- :AccessManager-schedule: pass:normal[xref:access.adoc#AccessManager-schedule-address-bytes-uint48-[`AccessManager.schedule`]]
- :xref-GovernorTimelockAccess-constructor-address-uint32-: xref:governance.adoc#GovernorTimelockAccess-constructor-address-uint32-
- :xref-GovernorTimelockAccess-accessManager--: xref:governance.adoc#GovernorTimelockAccess-accessManager--
- :xref-GovernorTimelockAccess-baseDelaySeconds--: xref:governance.adoc#GovernorTimelockAccess-baseDelaySeconds--
- :xref-GovernorTimelockAccess-setBaseDelaySeconds-uint32-: xref:governance.adoc#GovernorTimelockAccess-setBaseDelaySeconds-uint32-
- :xref-GovernorTimelockAccess-_setBaseDelaySeconds-uint32-: xref:governance.adoc#GovernorTimelockAccess-_setBaseDelaySeconds-uint32-
- :xref-GovernorTimelockAccess-isAccessManagerIgnored-address-bytes4-: xref:governance.adoc#GovernorTimelockAccess-isAccessManagerIgnored-address-bytes4-
- :xref-GovernorTimelockAccess-setAccessManagerIgnored-address-bytes4---bool-: xref:governance.adoc#GovernorTimelockAccess-setAccessManagerIgnored-address-bytes4---bool-
- :xref-GovernorTimelockAccess-_setAccessManagerIgnored-address-bytes4-bool-: xref:governance.adoc#GovernorTimelockAccess-_setAccessManagerIgnored-address-bytes4-bool-
- :xref-GovernorTimelockAccess-proposalExecutionPlan-uint256-: xref:governance.adoc#GovernorTimelockAccess-proposalExecutionPlan-uint256-
- :xref-GovernorTimelockAccess-proposalNeedsQueuing-uint256-: xref:governance.adoc#GovernorTimelockAccess-proposalNeedsQueuing-uint256-
- :xref-GovernorTimelockAccess-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorTimelockAccess-propose-address---uint256---bytes---string-
- :xref-GovernorTimelockAccess-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockAccess-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockAccess-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockAccess-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockAccess-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockAccess-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorTimelockAccess-BaseDelaySet-uint32-uint32-: xref:governance.adoc#GovernorTimelockAccess-BaseDelaySet-uint32-uint32-
- :xref-GovernorTimelockAccess-AccessManagerIgnoredSet-address-bytes4-bool-: xref:governance.adoc#GovernorTimelockAccess-AccessManagerIgnoredSet-address-bytes4-bool-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-GovernorTimelockAccess-GovernorUnmetDelay-uint256-uint256-: xref:governance.adoc#GovernorTimelockAccess-GovernorUnmetDelay-uint256-uint256-
- :xref-GovernorTimelockAccess-GovernorMismatchedNonce-uint256-uint256-uint256-: xref:governance.adoc#GovernorTimelockAccess-GovernorMismatchedNonce-uint256-uint256-uint256-
- :xref-GovernorTimelockAccess-GovernorLockedIgnore--: xref:governance.adoc#GovernorTimelockAccess-GovernorLockedIgnore--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :AccessManager: pass:normal[xref:access.adoc#AccessManager[`AccessManager`]]
- :AccessManager-execute: pass:normal[xref:access.adoc#AccessManager-execute-address-bytes-[`AccessManager.execute`]]
- :IGovernor-ProposalCanceled: pass:normal[xref:governance.adoc#IGovernor-ProposalCanceled-uint256-[`IGovernor.ProposalCanceled`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]]
- :xref-GovernorTimelockControl-constructor-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController-
- :xref-GovernorTimelockControl-state-uint256-: xref:governance.adoc#GovernorTimelockControl-state-uint256-
- :xref-GovernorTimelockControl-timelock--: xref:governance.adoc#GovernorTimelockControl-timelock--
- :xref-GovernorTimelockControl-proposalNeedsQueuing-uint256-: xref:governance.adoc#GovernorTimelockControl-proposalNeedsQueuing-uint256-
- :xref-GovernorTimelockControl-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockControl-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockControl-_executor--: xref:governance.adoc#GovernorTimelockControl-_executor--
- :xref-GovernorTimelockControl-updateTimelock-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]]
- :Governor-_executeOperations: pass:normal[xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-[`Governor._executeOperations`]]
- :Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :GovernorTimelockCompound-__acceptAdmin: pass:normal[xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin--[`GovernorTimelockCompound.__acceptAdmin`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]]
- :xref-GovernorTimelockCompound-constructor-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-
- :xref-GovernorTimelockCompound-state-uint256-: xref:governance.adoc#GovernorTimelockCompound-state-uint256-
- :xref-GovernorTimelockCompound-timelock--: xref:governance.adoc#GovernorTimelockCompound-timelock--
- :xref-GovernorTimelockCompound-proposalNeedsQueuing-uint256-: xref:governance.adoc#GovernorTimelockCompound-proposalNeedsQueuing-uint256-
- :xref-GovernorTimelockCompound-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockCompound-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-
- :xref-GovernorTimelockCompound-_executor--: xref:governance.adoc#GovernorTimelockCompound-_executor--
- :xref-GovernorTimelockCompound-__acceptAdmin--: xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin--
- :xref-GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorTimelockCompound-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]]
- :Governor-_executeOperations: pass:normal[xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-[`Governor._executeOperations`]]
- :Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :xref-GovernorSettings-constructor-uint48-uint32-uint256-: xref:governance.adoc#GovernorSettings-constructor-uint48-uint32-uint256-
- :xref-GovernorSettings-votingDelay--: xref:governance.adoc#GovernorSettings-votingDelay--
- :xref-GovernorSettings-votingPeriod--: xref:governance.adoc#GovernorSettings-votingPeriod--
- :xref-GovernorSettings-proposalThreshold--: xref:governance.adoc#GovernorSettings-proposalThreshold--
- :xref-GovernorSettings-setVotingDelay-uint48-: xref:governance.adoc#GovernorSettings-setVotingDelay-uint48-
- :xref-GovernorSettings-setVotingPeriod-uint32-: xref:governance.adoc#GovernorSettings-setVotingPeriod-uint32-
- :xref-GovernorSettings-setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256-
- :xref-GovernorSettings-_setVotingDelay-uint48-: xref:governance.adoc#GovernorSettings-_setVotingDelay-uint48-
- :xref-GovernorSettings-_setVotingPeriod-uint32-: xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint32-
- :xref-GovernorSettings-_setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorSettings-VotingDelaySet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256-
- :xref-GovernorSettings-VotingPeriodSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256-
- :xref-GovernorSettings-ProposalThresholdSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :xref-GovernorPreventLateQuorum-constructor-uint48-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint48-
- :xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-
- :xref-GovernorPreventLateQuorum-_tallyUpdated-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-_tallyUpdated-uint256-
- :xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--
- :xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint48-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint48-
- :xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint48-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint48-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-
- :xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :Governor-proposalDeadline: pass:normal[xref:governance.adoc#Governor-proposalDeadline-uint256-[`Governor.proposalDeadline`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :Governor-queue: pass:normal[xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-[`Governor.queue`]]
- :Governor-execute: pass:normal[xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-[`Governor.execute`]]
- :xref-GovernorStorage-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#GovernorStorage-_propose-address---uint256---bytes---string-address-
- :xref-GovernorStorage-queue-uint256-: xref:governance.adoc#GovernorStorage-queue-uint256-
- :xref-GovernorStorage-execute-uint256-: xref:governance.adoc#GovernorStorage-execute-uint256-
- :xref-GovernorStorage-cancel-uint256-: xref:governance.adoc#GovernorStorage-cancel-uint256-
- :xref-GovernorStorage-proposalCount--: xref:governance.adoc#GovernorStorage-proposalCount--
- :xref-GovernorStorage-proposalDetails-uint256-: xref:governance.adoc#GovernorStorage-proposalDetails-uint256-
- :xref-GovernorStorage-proposalDetailsAt-uint256-: xref:governance.adoc#GovernorStorage-proposalDetailsAt-uint256-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :IGovernor-queue: pass:normal[xref:governance.adoc#IGovernor-queue-address---uint256---bytes---bytes32-[`IGovernor.queue`]]
- :IGovernor-execute: pass:normal[xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32-[`IGovernor.execute`]]
- :IGovernor-cancel: pass:normal[xref:governance.adoc#IGovernor-cancel-address---uint256---bytes---bytes32-[`IGovernor.cancel`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :xref-GovernorProposalGuardian-proposalGuardian--: xref:governance.adoc#GovernorProposalGuardian-proposalGuardian--
- :xref-GovernorProposalGuardian-setProposalGuardian-address-: xref:governance.adoc#GovernorProposalGuardian-setProposalGuardian-address-
- :xref-GovernorProposalGuardian-_setProposalGuardian-address-: xref:governance.adoc#GovernorProposalGuardian-_setProposalGuardian-address-
- :xref-GovernorProposalGuardian-_validateCancel-uint256-address-: xref:governance.adoc#GovernorProposalGuardian-_validateCancel-uint256-address-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-GovernorProposalGuardian-ProposalGuardianSet-address-address-: xref:governance.adoc#GovernorProposalGuardian-ProposalGuardianSet-address-address-
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :Governor-_validateCancel: pass:normal[xref:governance.adoc#Governor-_validateCancel-uint256-address-[`Governor._validateCancel`]]
- :IGovernor-proposalProposer: pass:normal[xref:governance.adoc#IGovernor-proposalProposer-uint256-[`IGovernor.proposalProposer`]]
- :Governor-_validateCancel: pass:normal[xref:governance.adoc#Governor-_validateCancel-uint256-address-[`Governor._validateCancel`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :xref-GovernorSuperQuorum-superQuorum-uint256-: xref:governance.adoc#GovernorSuperQuorum-superQuorum-uint256-
- :xref-GovernorSuperQuorum-proposalVotes-uint256-: xref:governance.adoc#GovernorSuperQuorum-proposalVotes-uint256-
- :xref-GovernorSuperQuorum-state-uint256-: xref:governance.adoc#GovernorSuperQuorum-state-uint256-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :NoncesKeyed: pass:normal[xref:utils.adoc#NoncesKeyed[`NoncesKeyed`]]
- :xref-GovernorNoncesKeyed-_useCheckedNonce-address-uint256-: xref:governance.adoc#GovernorNoncesKeyed-_useCheckedNonce-address-uint256-
- :xref-GovernorNoncesKeyed-_validateVoteSig-uint256-uint8-address-bytes-: xref:governance.adoc#GovernorNoncesKeyed-_validateVoteSig-uint256-uint8-address-bytes-
- :xref-GovernorNoncesKeyed-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#GovernorNoncesKeyed-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-
- :xref-NoncesKeyed-nonces-address-uint192-: xref:utils.adoc#NoncesKeyed-nonces-address-uint192-
- :xref-NoncesKeyed-_useNonce-address-uint192-: xref:utils.adoc#NoncesKeyed-_useNonce-address-uint192-
- :xref-NoncesKeyed-_useCheckedNonce-address-uint192-uint64-: xref:utils.adoc#NoncesKeyed-_useCheckedNonce-address-uint192-uint64-
- :xref-Governor-receive--: xref:governance.adoc#Governor-receive--
- :xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4-
- :xref-Governor-name--: xref:governance.adoc#Governor-name--
- :xref-Governor-version--: xref:governance.adoc#Governor-version--
- :xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-
- :xref-Governor-getProposalId-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-getProposalId-address---uint256---bytes---bytes32-
- :xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256-
- :xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold--
- :xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256-
- :xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256-
- :xref-Governor-proposalProposer-uint256-: xref:governance.adoc#Governor-proposalProposer-uint256-
- :xref-Governor-proposalEta-uint256-: xref:governance.adoc#Governor-proposalEta-uint256-
- :xref-Governor-proposalNeedsQueuing-uint256-: xref:governance.adoc#Governor-proposalNeedsQueuing-uint256-
- :xref-Governor-_checkGovernance--: xref:governance.adoc#Governor-_checkGovernance--
- :xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256-
- :xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256-
- :xref-Governor-_getVotes-address-uint256-bytes-: xref:governance.adoc#Governor-_getVotes-address-uint256-bytes-
- :xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-bytes-
- :xref-Governor-_tallyUpdated-uint256-: xref:governance.adoc#Governor-_tallyUpdated-uint256-
- :xref-Governor-_defaultParams--: xref:governance.adoc#Governor-_defaultParams--
- :xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string-
- :xref-Governor-_propose-address---uint256---bytes---string-address-: xref:governance.adoc#Governor-_propose-address---uint256---bytes---string-address-
- :xref-Governor-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-queue-address---uint256---bytes---bytes32-
- :xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-
- :xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-
- :xref-Governor-cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-cancel-address---uint256---bytes---bytes32-
- :xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-
- :xref-Governor-getVotes-address-uint256-: xref:governance.adoc#Governor-getVotes-address-uint256-
- :xref-Governor-getVotesWithParams-address-uint256-bytes-: xref:governance.adoc#Governor-getVotesWithParams-address-uint256-bytes-
- :xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8-
- :xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-
- :xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-
- :xref-Governor-castVoteBySig-uint256-uint8-address-bytes-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-address-bytes-
- :xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-: xref:governance.adoc#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-
- :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-
- :xref-Governor-_castVote-uint256-address-uint8-string-bytes-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-bytes-
- :xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes-
- :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor--
- :xref-Governor-onERC721Received-address-address-uint256-bytes-: xref:governance.adoc#Governor-onERC721Received-address-address-uint256-bytes-
- :xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-: xref:governance.adoc#Governor-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:governance.adoc#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-: xref:governance.adoc#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-
- :xref-Governor-_validateStateBitmap-uint256-bytes32-: xref:governance.adoc#Governor-_validateStateBitmap-uint256-bytes32-
- :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
- :xref-Governor-_validateCancel-uint256-address-: xref:governance.adoc#Governor-_validateCancel-uint256-address-
- :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
- :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
- :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
- :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
- :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
- :xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
- :xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
- :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
- :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-
- :xref-IGovernor-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernor-ProposalQueued-uint256-uint256-
- :xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256-
- :xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256-
- :xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-
- :xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-: xref:governance.adoc#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-
- :xref-IGovernor-GovernorAlreadyCastVote-address-: xref:governance.adoc#IGovernor-GovernorAlreadyCastVote-address-
- :xref-IGovernor-GovernorDisabledDeposit--: xref:governance.adoc#IGovernor-GovernorDisabledDeposit--
- :xref-IGovernor-GovernorOnlyExecutor-address-: xref:governance.adoc#IGovernor-GovernorOnlyExecutor-address-
- :xref-IGovernor-GovernorNonexistentProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNonexistentProposal-uint256-
- :xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-: xref:governance.adoc#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-
- :xref-IGovernor-GovernorInvalidVotingPeriod-uint256-: xref:governance.adoc#IGovernor-GovernorInvalidVotingPeriod-uint256-
- :xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-: xref:governance.adoc#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-
- :xref-IGovernor-GovernorRestrictedProposer-address-: xref:governance.adoc#IGovernor-GovernorRestrictedProposer-address-
- :xref-IGovernor-GovernorInvalidVoteType--: xref:governance.adoc#IGovernor-GovernorInvalidVoteType--
- :xref-IGovernor-GovernorInvalidVoteParams--: xref:governance.adoc#IGovernor-GovernorInvalidVoteParams--
- :xref-IGovernor-GovernorQueueNotImplemented--: xref:governance.adoc#IGovernor-GovernorQueueNotImplemented--
- :xref-IGovernor-GovernorNotQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorNotQueuedProposal-uint256-
- :xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-: xref:governance.adoc#IGovernor-GovernorAlreadyQueuedProposal-uint256-
- :xref-IGovernor-GovernorInvalidSignature-address-: xref:governance.adoc#IGovernor-GovernorInvalidSignature-address-
- :xref-IGovernor-GovernorUnableToCancel-uint256-address-: xref:governance.adoc#IGovernor-GovernorUnableToCancel-uint256-address-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]]
- :ERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#ERC721-balanceOf-address-[`ERC721.balanceOf`]]
- :ERC721-_update: pass:normal[xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-[`ERC721._update`]]
- :xref-Votes-clock--: xref:governance.adoc#Votes-clock--
- :xref-Votes-CLOCK_MODE--: xref:governance.adoc#Votes-CLOCK_MODE--
- :xref-Votes-_validateTimepoint-uint256-: xref:governance.adoc#Votes-_validateTimepoint-uint256-
- :xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address-
- :xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256-
- :xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256-
- :xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply--
- :xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address-
- :xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address-
- :xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-
- :xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address-
- :xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-
- :xref-Votes-_moveDelegateVotes-address-address-uint256-: xref:governance.adoc#Votes-_moveDelegateVotes-address-address-uint256-
- :xref-Votes-_numCheckpoints-address-: xref:governance.adoc#Votes-_numCheckpoints-address-
- :xref-Votes-_checkpoints-address-uint32-: xref:governance.adoc#Votes-_checkpoints-address-uint32-
- :xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address-
- :xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-Votes-ERC6372InconsistentClock--: xref:governance.adoc#Votes-ERC6372InconsistentClock--
- :xref-Votes-ERC5805FutureLookup-uint256-uint48-: xref:governance.adoc#Votes-ERC5805FutureLookup-uint256-uint48-
- :xref-IVotes-VotesExpiredSignature-uint256-: xref:governance.adoc#IVotes-VotesExpiredSignature-uint256-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]]
- :IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]]
- :Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]]
- :Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]]
- :Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]]
- :VotesExtended: pass:normal[xref:governance.adoc#VotesExtended[`VotesExtended`]]
- :VotesExtended: pass:normal[xref:governance.adoc#VotesExtended[`VotesExtended`]]
- :ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]]
- :ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]]
- :VotesExtended: pass:normal[xref:governance.adoc#VotesExtended[`VotesExtended`]]
- :xref-VotesExtended-getPastDelegate-address-uint256-: xref:governance.adoc#VotesExtended-getPastDelegate-address-uint256-
- :xref-VotesExtended-getPastBalanceOf-address-uint256-: xref:governance.adoc#VotesExtended-getPastBalanceOf-address-uint256-
- :xref-VotesExtended-_delegate-address-address-: xref:governance.adoc#VotesExtended-_delegate-address-address-
- :xref-VotesExtended-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#VotesExtended-_transferVotingUnits-address-address-uint256-
- :xref-Votes-clock--: xref:governance.adoc#Votes-clock--
- :xref-Votes-CLOCK_MODE--: xref:governance.adoc#Votes-CLOCK_MODE--
- :xref-Votes-_validateTimepoint-uint256-: xref:governance.adoc#Votes-_validateTimepoint-uint256-
- :xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address-
- :xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256-
- :xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256-
- :xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply--
- :xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address-
- :xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address-
- :xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-
- :xref-Votes-_moveDelegateVotes-address-address-uint256-: xref:governance.adoc#Votes-_moveDelegateVotes-address-address-uint256-
- :xref-Votes-_numCheckpoints-address-: xref:governance.adoc#Votes-_numCheckpoints-address-
- :xref-Votes-_checkpoints-address-uint32-: xref:governance.adoc#Votes-_checkpoints-address-uint32-
- :xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address-
- :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
- :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
- :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
- :xref-EIP712-_domainSeparatorV4--: xref:utils/cryptography.adoc#EIP712-_domainSeparatorV4--
- :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils/cryptography.adoc#EIP712-_hashTypedDataV4-bytes32-
- :xref-EIP712-eip712Domain--: xref:utils/cryptography.adoc#EIP712-eip712Domain--
- :xref-EIP712-_EIP712Name--: xref:utils/cryptography.adoc#EIP712-_EIP712Name--
- :xref-EIP712-_EIP712Version--: xref:utils/cryptography.adoc#EIP712-_EIP712Version--
- :xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address-
- :xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-
- :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
- :xref-Votes-ERC6372InconsistentClock--: xref:governance.adoc#Votes-ERC6372InconsistentClock--
- :xref-Votes-ERC5805FutureLookup-uint256-uint48-: xref:governance.adoc#Votes-ERC5805FutureLookup-uint256-uint48-
- :xref-IVotes-VotesExpiredSignature-uint256-: xref:governance.adoc#IVotes-VotesExpiredSignature-uint256-
- :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
- :IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]]
- :IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]]
- :TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]]
- :xref-TimelockController-onlyRoleOrOpenRole-bytes32-: xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32-
- :xref-TimelockController-constructor-uint256-address---address---address-: xref:governance.adoc#TimelockController-constructor-uint256-address---address---address-
- :xref-TimelockController-receive--: xref:governance.adoc#TimelockController-receive--
- :xref-TimelockController-supportsInterface-bytes4-: xref:governance.adoc#TimelockController-supportsInterface-bytes4-
- :xref-TimelockController-isOperation-bytes32-: xref:governance.adoc#TimelockController-isOperation-bytes32-
- :xref-TimelockController-isOperationPending-bytes32-: xref:governance.adoc#TimelockController-isOperationPending-bytes32-
- :xref-TimelockController-isOperationReady-bytes32-: xref:governance.adoc#TimelockController-isOperationReady-bytes32-
- :xref-TimelockController-isOperationDone-bytes32-: xref:governance.adoc#TimelockController-isOperationDone-bytes32-
- :xref-TimelockController-getTimestamp-bytes32-: xref:governance.adoc#TimelockController-getTimestamp-bytes32-
- :xref-TimelockController-getOperationState-bytes32-: xref:governance.adoc#TimelockController-getOperationState-bytes32-
- :xref-TimelockController-getMinDelay--: xref:governance.adoc#TimelockController-getMinDelay--
- :xref-TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-
- :xref-TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-
- :xref-TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-
- :xref-TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-
- :xref-TimelockController-cancel-bytes32-: xref:governance.adoc#TimelockController-cancel-bytes32-
- :xref-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-
- :xref-TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-
- :xref-TimelockController-_execute-address-uint256-bytes-: xref:governance.adoc#TimelockController-_execute-address-uint256-bytes-
- :xref-TimelockController-updateDelay-uint256-: xref:governance.adoc#TimelockController-updateDelay-uint256-
- :xref-TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-: xref:governance.adoc#TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-
- :xref-TimelockController-PROPOSER_ROLE-bytes32: xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32
- :xref-TimelockController-EXECUTOR_ROLE-bytes32: xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32
- :xref-TimelockController-CANCELLER_ROLE-bytes32: xref:governance.adoc#TimelockController-CANCELLER_ROLE-bytes32
- :xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-
- :xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
- :xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-
- :xref-AccessControl-hasRole-bytes32-address-: xref:access.adoc#AccessControl-hasRole-bytes32-address-
- :xref-AccessControl-_checkRole-bytes32-: xref:access.adoc#AccessControl-_checkRole-bytes32-
- :xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address-
- :xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32-
- :xref-AccessControl-grantRole-bytes32-address-: xref:access.adoc#AccessControl-grantRole-bytes32-address-
- :xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address-
- :xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address-
- :xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-
- :xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address-
- :xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address-
- :xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32
- :xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-: xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-
- :xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-: xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-
- :xref-TimelockController-CallSalt-bytes32-bytes32-: xref:governance.adoc#TimelockController-CallSalt-bytes32-bytes32-
- :xref-TimelockController-Cancelled-bytes32-: xref:governance.adoc#TimelockController-Cancelled-bytes32-
- :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256-
- :xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-
- :xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-
- :xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-
- :xref-TimelockController-TimelockInvalidOperationLength-uint256-uint256-uint256-: xref:governance.adoc#TimelockController-TimelockInvalidOperationLength-uint256-uint256-uint256-
- :xref-TimelockController-TimelockInsufficientDelay-uint256-uint256-: xref:governance.adoc#TimelockController-TimelockInsufficientDelay-uint256-uint256-
- :xref-TimelockController-TimelockUnexpectedOperationState-bytes32-bytes32-: xref:governance.adoc#TimelockController-TimelockUnexpectedOperationState-bytes32-bytes32-
- :xref-TimelockController-TimelockUnexecutedPredecessor-bytes32-: xref:governance.adoc#TimelockController-TimelockUnexecutedPredecessor-bytes32-
- :xref-TimelockController-TimelockUnauthorizedCaller-address-: xref:governance.adoc#TimelockController-TimelockUnauthorizedCaller-address-
- :xref-IAccessControl-AccessControlUnauthorizedAccount-address-bytes32-: xref:access.adoc#IAccessControl-AccessControlUnauthorizedAccount-address-bytes32-
- :xref-IAccessControl-AccessControlBadConfirmation--: xref:access.adoc#IAccessControl-AccessControlBadConfirmation--
- :xref-TimelockController-_DONE_TIMESTAMP-uint256: xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256
- :AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]]
- = Governance
- [.readme-notice]
- NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/governance
- This directory includes primitives for on-chain governance.
- == Governor
- This modular system of Governor contracts allows the deployment on-chain voting protocols similar to https://compound.finance/docs/governance[Compound's Governor Alpha & Bravo] and beyond, through the ability to easily customize multiple aspects of the protocol.
- [TIP]
- ====
- For a guided experience, set up your Governor contract using https://wizard.openzeppelin.com/#governor[Contracts Wizard].
- For a written walkthrough, check out our guide on xref:ROOT:governance.adoc[How to set up on-chain governance].
- ====
- * {Governor}: The core contract that contains all the logic and primitives. It is abstract and requires choosing one of each of the modules below, or custom ones.
- Votes modules determine the source of voting power, and sometimes quorum number.
- * {GovernorVotes}: Extracts voting weight from an {IVotes} contract.
- * {GovernorVotesQuorumFraction}: Combines with `GovernorVotes` to set the quorum as a fraction of the total token supply.
- * {GovernorVotesSuperQuorumFraction}: Combines `GovernorSuperQuorum` with `GovernorVotesQuorumFraction` to set the super quorum as a fraction of the total token supply.
- Counting modules determine valid voting options.
- * {GovernorCountingSimple}: Simple voting mechanism with 3 voting options: Against, For and Abstain.
- * {GovernorCountingFractional}: A more modular voting system that allows a user to vote with only part of its voting power, and to split that weight arbitrarily between the 3 different options (Against, For and Abstain).
- * {GovernorCountingOverridable}: An extended version of `GovernorCountingSimple` which allows delegatees to override their delegates while the vote is live. Must be used in conjunction with {VotesExtended}.
- Timelock extensions add a delay for governance decisions to be executed. The workflow is extended to require a `queue` step before execution. With these modules, proposals are executed by the external timelock contract, thus it is the timelock that has to hold the assets that are being governed.
- * {GovernorTimelockAccess}: Connects with an instance of an {AccessManager}. This allows restrictions (and delays) enforced by the manager to be considered by the Governor and integrated into the AccessManager's "schedule + execute" workflow.
- * {GovernorTimelockControl}: Connects with an instance of {TimelockController}. Allows multiple proposers and executors, in addition to the Governor itself.
- * {GovernorTimelockCompound}: Connects with an instance of Compound's https://github.com/compound-finance/compound-protocol/blob/master/contracts/Timelock.sol[`Timelock`] contract.
- Other extensions can customize the behavior or interface in multiple ways.
- * {GovernorStorage}: Stores the proposal details onchain and provides enumerability of the proposals. This can be useful for some L2 chains where storage is cheap compared to calldata.
- * {GovernorSettings}: Manages some of the settings (voting delay, voting period duration, and proposal threshold) in a way that can be updated through a governance proposal, without requiring an upgrade.
- * {GovernorPreventLateQuorum}: Ensures there is a minimum voting period after quorum is reached as a security protection against large voters.
- * {GovernorProposalGuardian}: Adds a proposal guardian that can cancel proposals at any stage in their lifecycle--this permission is passed on to the proposers if the guardian is not set.
- * {GovernorSuperQuorum}: Extension of {Governor} with a super quorum. Proposals that meet the super quorum (and have a majority of for votes) advance to the `Succeeded` state before the proposal deadline.
- * {GovernorNoncesKeyed}: An extension of {Governor} with support for keyed nonces in addition to traditional nonces when voting by signature.
- In addition to modules and extensions, the core contract requires a few virtual functions to be implemented to your particular specifications:
- * <<Governor-votingDelay-,`votingDelay()`>>: Delay (in ERC-6372 clock) since the proposal is submitted until voting power is fixed and voting starts. This can be used to enforce a delay after a proposal is published for users to buy tokens, or delegate their votes.
- * <<Governor-votingPeriod-,`votingPeriod()`>>: Delay (in ERC-6372 clock) since the proposal starts until voting ends.
- * <<Governor-quorum-uint256-,`quorum(uint256 timepoint)`>>: Quorum required for a proposal to be successful. This function includes a `timepoint` argument (see ERC-6372) so the quorum can adapt through time, for example, to follow a token's `totalSupply`.
- NOTE: Functions of the `Governor` contract do not include access control. If you want to restrict access, you should add these checks by overloading the particular functions. Among these, {Governor-_cancel} is internal by default, and you will have to expose it (with the right access control mechanism) yourself if this function is needed.
- === Core
- :ProposalState: pass:normal[xref:#IGovernor-ProposalState[`++ProposalState++`]]
- :GovernorInvalidProposalLength: pass:normal[xref:#IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-[`++GovernorInvalidProposalLength++`]]
- :GovernorAlreadyCastVote: pass:normal[xref:#IGovernor-GovernorAlreadyCastVote-address-[`++GovernorAlreadyCastVote++`]]
- :GovernorDisabledDeposit: pass:normal[xref:#IGovernor-GovernorDisabledDeposit--[`++GovernorDisabledDeposit++`]]
- :GovernorOnlyExecutor: pass:normal[xref:#IGovernor-GovernorOnlyExecutor-address-[`++GovernorOnlyExecutor++`]]
- :GovernorNonexistentProposal: pass:normal[xref:#IGovernor-GovernorNonexistentProposal-uint256-[`++GovernorNonexistentProposal++`]]
- :GovernorUnexpectedProposalState: pass:normal[xref:#IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-[`++GovernorUnexpectedProposalState++`]]
- :GovernorInvalidVotingPeriod: pass:normal[xref:#IGovernor-GovernorInvalidVotingPeriod-uint256-[`++GovernorInvalidVotingPeriod++`]]
- :GovernorInsufficientProposerVotes: pass:normal[xref:#IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-[`++GovernorInsufficientProposerVotes++`]]
- :GovernorRestrictedProposer: pass:normal[xref:#IGovernor-GovernorRestrictedProposer-address-[`++GovernorRestrictedProposer++`]]
- :GovernorInvalidVoteType: pass:normal[xref:#IGovernor-GovernorInvalidVoteType--[`++GovernorInvalidVoteType++`]]
- :GovernorInvalidVoteParams: pass:normal[xref:#IGovernor-GovernorInvalidVoteParams--[`++GovernorInvalidVoteParams++`]]
- :GovernorQueueNotImplemented: pass:normal[xref:#IGovernor-GovernorQueueNotImplemented--[`++GovernorQueueNotImplemented++`]]
- :GovernorNotQueuedProposal: pass:normal[xref:#IGovernor-GovernorNotQueuedProposal-uint256-[`++GovernorNotQueuedProposal++`]]
- :GovernorAlreadyQueuedProposal: pass:normal[xref:#IGovernor-GovernorAlreadyQueuedProposal-uint256-[`++GovernorAlreadyQueuedProposal++`]]
- :GovernorInvalidSignature: pass:normal[xref:#IGovernor-GovernorInvalidSignature-address-[`++GovernorInvalidSignature++`]]
- :GovernorUnableToCancel: pass:normal[xref:#IGovernor-GovernorUnableToCancel-uint256-address-[`++GovernorUnableToCancel++`]]
- :ProposalCreated: pass:normal[xref:#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-[`++ProposalCreated++`]]
- :ProposalQueued: pass:normal[xref:#IGovernor-ProposalQueued-uint256-uint256-[`++ProposalQueued++`]]
- :ProposalExecuted: pass:normal[xref:#IGovernor-ProposalExecuted-uint256-[`++ProposalExecuted++`]]
- :ProposalCanceled: pass:normal[xref:#IGovernor-ProposalCanceled-uint256-[`++ProposalCanceled++`]]
- :VoteCast: pass:normal[xref:#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`++VoteCast++`]]
- :VoteCastWithParams: pass:normal[xref:#IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-[`++VoteCastWithParams++`]]
- :name: pass:normal[xref:#IGovernor-name--[`++name++`]]
- :version: pass:normal[xref:#IGovernor-version--[`++version++`]]
- :COUNTING_MODE: pass:normal[xref:#IGovernor-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hashProposal: pass:normal[xref:#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`++hashProposal++`]]
- :getProposalId: pass:normal[xref:#IGovernor-getProposalId-address---uint256---bytes---bytes32-[`++getProposalId++`]]
- :state: pass:normal[xref:#IGovernor-state-uint256-[`++state++`]]
- :proposalThreshold: pass:normal[xref:#IGovernor-proposalThreshold--[`++proposalThreshold++`]]
- :proposalSnapshot: pass:normal[xref:#IGovernor-proposalSnapshot-uint256-[`++proposalSnapshot++`]]
- :proposalDeadline: pass:normal[xref:#IGovernor-proposalDeadline-uint256-[`++proposalDeadline++`]]
- :proposalProposer: pass:normal[xref:#IGovernor-proposalProposer-uint256-[`++proposalProposer++`]]
- :proposalEta: pass:normal[xref:#IGovernor-proposalEta-uint256-[`++proposalEta++`]]
- :proposalNeedsQueuing: pass:normal[xref:#IGovernor-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :votingDelay: pass:normal[xref:#IGovernor-votingDelay--[`++votingDelay++`]]
- :votingPeriod: pass:normal[xref:#IGovernor-votingPeriod--[`++votingPeriod++`]]
- :quorum: pass:normal[xref:#IGovernor-quorum-uint256-[`++quorum++`]]
- :getVotes: pass:normal[xref:#IGovernor-getVotes-address-uint256-[`++getVotes++`]]
- :getVotesWithParams: pass:normal[xref:#IGovernor-getVotesWithParams-address-uint256-bytes-[`++getVotesWithParams++`]]
- :hasVoted: pass:normal[xref:#IGovernor-hasVoted-uint256-address-[`++hasVoted++`]]
- :propose: pass:normal[xref:#IGovernor-propose-address---uint256---bytes---string-[`++propose++`]]
- :queue: pass:normal[xref:#IGovernor-queue-address---uint256---bytes---bytes32-[`++queue++`]]
- :execute: pass:normal[xref:#IGovernor-execute-address---uint256---bytes---bytes32-[`++execute++`]]
- :cancel: pass:normal[xref:#IGovernor-cancel-address---uint256---bytes---bytes32-[`++cancel++`]]
- :castVote: pass:normal[xref:#IGovernor-castVote-uint256-uint8-[`++castVote++`]]
- :castVoteWithReason: pass:normal[xref:#IGovernor-castVoteWithReason-uint256-uint8-string-[`++castVoteWithReason++`]]
- :castVoteWithReasonAndParams: pass:normal[xref:#IGovernor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-[`++castVoteWithReasonAndParams++`]]
- :castVoteBySig: pass:normal[xref:#IGovernor-castVoteBySig-uint256-uint8-address-bytes-[`++castVoteBySig++`]]
- :castVoteWithReasonAndParamsBySig: pass:normal[xref:#IGovernor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-[`++castVoteWithReasonAndParamsBySig++`]]
- :name-: pass:normal[xref:#IGovernor-name--[`++name++`]]
- :version-: pass:normal[xref:#IGovernor-version--[`++version++`]]
- :COUNTING_MODE-: pass:normal[xref:#IGovernor-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hashProposal-address---uint256---bytes---bytes32: pass:normal[xref:#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`++hashProposal++`]]
- :getProposalId-address---uint256---bytes---bytes32: pass:normal[xref:#IGovernor-getProposalId-address---uint256---bytes---bytes32-[`++getProposalId++`]]
- :state-uint256: pass:normal[xref:#IGovernor-state-uint256-[`++state++`]]
- :proposalThreshold-: pass:normal[xref:#IGovernor-proposalThreshold--[`++proposalThreshold++`]]
- :proposalSnapshot-uint256: pass:normal[xref:#IGovernor-proposalSnapshot-uint256-[`++proposalSnapshot++`]]
- :proposalDeadline-uint256: pass:normal[xref:#IGovernor-proposalDeadline-uint256-[`++proposalDeadline++`]]
- :proposalProposer-uint256: pass:normal[xref:#IGovernor-proposalProposer-uint256-[`++proposalProposer++`]]
- :proposalEta-uint256: pass:normal[xref:#IGovernor-proposalEta-uint256-[`++proposalEta++`]]
- :proposalNeedsQueuing-uint256: pass:normal[xref:#IGovernor-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :votingDelay-: pass:normal[xref:#IGovernor-votingDelay--[`++votingDelay++`]]
- :votingPeriod-: pass:normal[xref:#IGovernor-votingPeriod--[`++votingPeriod++`]]
- :quorum-uint256: pass:normal[xref:#IGovernor-quorum-uint256-[`++quorum++`]]
- :getVotes-address-uint256: pass:normal[xref:#IGovernor-getVotes-address-uint256-[`++getVotes++`]]
- :getVotesWithParams-address-uint256-bytes: pass:normal[xref:#IGovernor-getVotesWithParams-address-uint256-bytes-[`++getVotesWithParams++`]]
- :hasVoted-uint256-address: pass:normal[xref:#IGovernor-hasVoted-uint256-address-[`++hasVoted++`]]
- :propose-address---uint256---bytes---string: pass:normal[xref:#IGovernor-propose-address---uint256---bytes---string-[`++propose++`]]
- :queue-address---uint256---bytes---bytes32: pass:normal[xref:#IGovernor-queue-address---uint256---bytes---bytes32-[`++queue++`]]
- :execute-address---uint256---bytes---bytes32: pass:normal[xref:#IGovernor-execute-address---uint256---bytes---bytes32-[`++execute++`]]
- :cancel-address---uint256---bytes---bytes32: pass:normal[xref:#IGovernor-cancel-address---uint256---bytes---bytes32-[`++cancel++`]]
- :castVote-uint256-uint8: pass:normal[xref:#IGovernor-castVote-uint256-uint8-[`++castVote++`]]
- :castVoteWithReason-uint256-uint8-string: pass:normal[xref:#IGovernor-castVoteWithReason-uint256-uint8-string-[`++castVoteWithReason++`]]
- :castVoteWithReasonAndParams-uint256-uint8-string-bytes: pass:normal[xref:#IGovernor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-[`++castVoteWithReasonAndParams++`]]
- :castVoteBySig-uint256-uint8-address-bytes: pass:normal[xref:#IGovernor-castVoteBySig-uint256-uint8-address-bytes-[`++castVoteBySig++`]]
- :castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes: pass:normal[xref:#IGovernor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-[`++castVoteWithReasonAndParamsBySig++`]]
- [.contract]
- [[IGovernor]]
- === `++IGovernor++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/IGovernor.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/IGovernor.sol";
- ```
- Interface of the {Governor} core.
- NOTE: Event parameters lack the `indexed` keyword for compatibility with GovernorBravo events.
- Making event parameters `indexed` affects how events are decoded, potentially breaking existing indexers.
- [.contract-index]
- .Functions
- --
- * {xref-IGovernor-name--}[`++name()++`]
- * {xref-IGovernor-version--}[`++version()++`]
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-IGovernor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-IGovernor-state-uint256-}[`++state(proposalId)++`]
- * {xref-IGovernor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-IGovernor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-IGovernor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-IGovernor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-IGovernor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-IGovernor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing(proposalId)++`]
- * {xref-IGovernor-votingDelay--}[`++votingDelay()++`]
- * {xref-IGovernor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-IGovernor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-IGovernor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-IGovernor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- * {xref-IGovernor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-IGovernor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-IGovernor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-IGovernor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-IGovernor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-IGovernor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-IGovernor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-IGovernor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-IGovernor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- [.contract-subindex-inherited]
- .IERC6372
- * {xref-IERC6372-clock--}[`++clock()++`]
- * {xref-IERC6372-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- [.contract-subindex-inherited]
- .IERC165
- * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- --
- [.contract-index]
- .Events
- --
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[IGovernor-name--]]
- ==== `[.contract-item-name]#++name++#++() → string++` [.item-kind]#external#
- Name of the governor instance (used in building the EIP-712 domain separator).
- [.contract-item]
- [[IGovernor-version--]]
- ==== `[.contract-item-name]#++version++#++() → string++` [.item-kind]#external#
- Version of the governor instance (used in building the EIP-712 domain separator). Default: "1"
- [.contract-item]
- [[IGovernor-COUNTING_MODE--]]
- ==== `[.contract-item-name]#++COUNTING_MODE++#++() → string++` [.item-kind]#external#
- A description of the possible `support` values for {castVote} and the way these votes are counted, meant to
- be consumed by UIs to show correct vote options and interpret the results. The string is a URL-encoded sequence of
- key-value pairs that each describe one aspect, for example `support=bravo&quorum=for,abstain`.
- There are 2 standard keys: `support` and `quorum`.
- - `support=bravo` refers to the vote options 0 = Against, 1 = For, 2 = Abstain, as in `GovernorBravo`.
- - `quorum=bravo` means that only For votes are counted towards quorum.
- - `quorum=for,abstain` means that both For and Abstain votes are counted towards quorum.
- If a counting module makes use of encoded `params`, it should include this under a `params` key with a unique
- name that describes the behavior. For example:
- - `params=fractional` might refer to a scheme where votes are divided fractionally between for/against/abstain.
- - `params=erc721` might refer to a scheme where specific NFTs are delegated to vote.
- NOTE: The string can be decoded by the standard
- https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams[`URLSearchParams`]
- JavaScript class.
- [.contract-item]
- [[IGovernor-hashProposal-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++hashProposal++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#external#
- Hashing function used to (re)build the proposal id from the proposal details.
- NOTE: For all off-chain and external calls, use {getProposalId}.
- [.contract-item]
- [[IGovernor-getProposalId-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++getProposalId++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#external#
- Function used to get the proposal id from the proposal details.
- [.contract-item]
- [[IGovernor-state-uint256-]]
- ==== `[.contract-item-name]#++state++#++(uint256 proposalId) → enum IGovernor.ProposalState++` [.item-kind]#external#
- Current state of a proposal, following Compound's convention
- [.contract-item]
- [[IGovernor-proposalThreshold--]]
- ==== `[.contract-item-name]#++proposalThreshold++#++() → uint256++` [.item-kind]#external#
- The number of votes required in order for a voter to become a proposer.
- [.contract-item]
- [[IGovernor-proposalSnapshot-uint256-]]
- ==== `[.contract-item-name]#++proposalSnapshot++#++(uint256 proposalId) → uint256++` [.item-kind]#external#
- Timepoint used to retrieve user's votes and quorum. If using block number (as per Compound's Comp), the
- snapshot is performed at the end of this block. Hence, voting for this proposal starts at the beginning of the
- following block.
- [.contract-item]
- [[IGovernor-proposalDeadline-uint256-]]
- ==== `[.contract-item-name]#++proposalDeadline++#++(uint256 proposalId) → uint256++` [.item-kind]#external#
- Timepoint at which votes close. If using block number, votes close at the end of this block, so it is
- possible to cast a vote during this block.
- [.contract-item]
- [[IGovernor-proposalProposer-uint256-]]
- ==== `[.contract-item-name]#++proposalProposer++#++(uint256 proposalId) → address++` [.item-kind]#external#
- The account that created a proposal.
- [.contract-item]
- [[IGovernor-proposalEta-uint256-]]
- ==== `[.contract-item-name]#++proposalEta++#++(uint256 proposalId) → uint256++` [.item-kind]#external#
- The time when a queued proposal becomes executable ("ETA"). Unlike {proposalSnapshot} and
- {proposalDeadline}, this doesn't use the governor clock, and instead relies on the executor's clock which may be
- different. In most cases this will be a timestamp.
- [.contract-item]
- [[IGovernor-proposalNeedsQueuing-uint256-]]
- ==== `[.contract-item-name]#++proposalNeedsQueuing++#++(uint256 proposalId) → bool++` [.item-kind]#external#
- Whether a proposal needs to be queued before execution.
- [.contract-item]
- [[IGovernor-votingDelay--]]
- ==== `[.contract-item-name]#++votingDelay++#++() → uint256++` [.item-kind]#external#
- Delay, between the proposal is created and the vote starts. The unit this duration is expressed in depends
- on the clock (see ERC-6372) this contract uses.
- This can be increased to leave time for users to buy voting power, or delegate it, before the voting of a
- proposal starts.
- NOTE: While this interface returns a uint256, timepoints are stored as uint48 following the ERC-6372 clock type.
- Consequently this value must fit in a uint48 (when added to the current clock). See {IERC6372-clock}.
- [.contract-item]
- [[IGovernor-votingPeriod--]]
- ==== `[.contract-item-name]#++votingPeriod++#++() → uint256++` [.item-kind]#external#
- Delay between the vote start and vote end. The unit this duration is expressed in depends on the clock
- (see ERC-6372) this contract uses.
- NOTE: The {votingDelay} can delay the start of the vote. This must be considered when setting the voting
- duration compared to the voting delay.
- NOTE: This value is stored when the proposal is submitted so that possible changes to the value do not affect
- proposals that have already been submitted. The type used to save it is a uint32. Consequently, while this
- interface returns a uint256, the value it returns should fit in a uint32.
- [.contract-item]
- [[IGovernor-quorum-uint256-]]
- ==== `[.contract-item-name]#++quorum++#++(uint256 timepoint) → uint256++` [.item-kind]#external#
- Minimum number of cast voted required for a proposal to be successful.
- NOTE: The `timepoint` parameter corresponds to the snapshot used for counting vote. This allows to scale the
- quorum depending on values such as the totalSupply of a token at this timepoint (see {ERC20Votes}).
- [.contract-item]
- [[IGovernor-getVotes-address-uint256-]]
- ==== `[.contract-item-name]#++getVotes++#++(address account, uint256 timepoint) → uint256++` [.item-kind]#external#
- Voting power of an `account` at a specific `timepoint`.
- Note: this can be implemented in a number of ways, for example by reading the delegated balance from one (or
- multiple), {ERC20Votes} tokens.
- [.contract-item]
- [[IGovernor-getVotesWithParams-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++getVotesWithParams++#++(address account, uint256 timepoint, bytes params) → uint256++` [.item-kind]#external#
- Voting power of an `account` at a specific `timepoint` given additional encoded parameters.
- [.contract-item]
- [[IGovernor-hasVoted-uint256-address-]]
- ==== `[.contract-item-name]#++hasVoted++#++(uint256 proposalId, address account) → bool++` [.item-kind]#external#
- Returns whether `account` has cast a vote on `proposalId`.
- [.contract-item]
- [[IGovernor-propose-address---uint256---bytes---string-]]
- ==== `[.contract-item-name]#++propose++#++(address[] targets, uint256[] values, bytes[] calldatas, string description) → uint256 proposalId++` [.item-kind]#external#
- Create a new proposal. Vote start after a delay specified by {IGovernor-votingDelay} and lasts for a
- duration specified by {IGovernor-votingPeriod}.
- Emits a {ProposalCreated} event.
- NOTE: The state of the Governor and `targets` may change between the proposal creation and its execution.
- This may be the result of third party actions on the targeted contracts, or other governor proposals.
- For example, the balance of this contract could be updated or its access control permissions may be modified,
- possibly compromising the proposal's ability to execute successfully (e.g. the governor doesn't have enough
- value to cover a proposal with multiple transfers).
- [.contract-item]
- [[IGovernor-queue-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++queue++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256 proposalId++` [.item-kind]#external#
- Queue a proposal. Some governors require this step to be performed before execution can happen. If queuing
- is not necessary, this function may revert.
- Queuing a proposal requires the quorum to be reached, the vote to be successful, and the deadline to be reached.
- Emits a {ProposalQueued} event.
- [.contract-item]
- [[IGovernor-execute-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++execute++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256 proposalId++` [.item-kind]#external#
- Execute a successful proposal. This requires the quorum to be reached, the vote to be successful, and the
- deadline to be reached. Depending on the governor it might also be required that the proposal was queued and
- that some delay passed.
- Emits a {ProposalExecuted} event.
- NOTE: Some modules can modify the requirements for execution, for example by adding an additional timelock.
- [.contract-item]
- [[IGovernor-cancel-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++cancel++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256 proposalId++` [.item-kind]#external#
- Cancel a proposal. A proposal is cancellable by the proposer, but only while it is Pending state, i.e.
- before the vote starts.
- Emits a {ProposalCanceled} event.
- [.contract-item]
- [[IGovernor-castVote-uint256-uint8-]]
- ==== `[.contract-item-name]#++castVote++#++(uint256 proposalId, uint8 support) → uint256 balance++` [.item-kind]#external#
- Cast a vote
- Emits a {VoteCast} event.
- [.contract-item]
- [[IGovernor-castVoteWithReason-uint256-uint8-string-]]
- ==== `[.contract-item-name]#++castVoteWithReason++#++(uint256 proposalId, uint8 support, string reason) → uint256 balance++` [.item-kind]#external#
- Cast a vote with a reason
- Emits a {VoteCast} event.
- [.contract-item]
- [[IGovernor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-]]
- ==== `[.contract-item-name]#++castVoteWithReasonAndParams++#++(uint256 proposalId, uint8 support, string reason, bytes params) → uint256 balance++` [.item-kind]#external#
- Cast a vote with a reason and additional encoded parameters
- Emits a {VoteCast} or {VoteCastWithParams} event depending on the length of params.
- [.contract-item]
- [[IGovernor-castVoteBySig-uint256-uint8-address-bytes-]]
- ==== `[.contract-item-name]#++castVoteBySig++#++(uint256 proposalId, uint8 support, address voter, bytes signature) → uint256 balance++` [.item-kind]#external#
- Cast a vote using the voter's signature, including ERC-1271 signature support.
- Emits a {VoteCast} event.
- [.contract-item]
- [[IGovernor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-]]
- ==== `[.contract-item-name]#++castVoteWithReasonAndParamsBySig++#++(uint256 proposalId, uint8 support, address voter, string reason, bytes params, bytes signature) → uint256 balance++` [.item-kind]#external#
- Cast a vote with a reason and additional encoded parameters using the voter's signature,
- including ERC-1271 signature support.
- Emits a {VoteCast} or {VoteCastWithParams} event depending on the length of params.
- [.contract-item]
- [[IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-]]
- ==== `[.contract-item-name]#++ProposalCreated++#++(uint256 proposalId, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 voteStart, uint256 voteEnd, string description)++` [.item-kind]#event#
- Emitted when a proposal is created.
- [.contract-item]
- [[IGovernor-ProposalQueued-uint256-uint256-]]
- ==== `[.contract-item-name]#++ProposalQueued++#++(uint256 proposalId, uint256 etaSeconds)++` [.item-kind]#event#
- Emitted when a proposal is queued.
- [.contract-item]
- [[IGovernor-ProposalExecuted-uint256-]]
- ==== `[.contract-item-name]#++ProposalExecuted++#++(uint256 proposalId)++` [.item-kind]#event#
- Emitted when a proposal is executed.
- [.contract-item]
- [[IGovernor-ProposalCanceled-uint256-]]
- ==== `[.contract-item-name]#++ProposalCanceled++#++(uint256 proposalId)++` [.item-kind]#event#
- Emitted when a proposal is canceled.
- [.contract-item]
- [[IGovernor-VoteCast-address-uint256-uint8-uint256-string-]]
- ==== `[.contract-item-name]#++VoteCast++#++(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)++` [.item-kind]#event#
- Emitted when a vote is cast without params.
- Note: `support` values should be seen as buckets. Their interpretation depends on the voting module used.
- [.contract-item]
- [[IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-]]
- ==== `[.contract-item-name]#++VoteCastWithParams++#++(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason, bytes params)++` [.item-kind]#event#
- Emitted when a vote is cast with params.
- Note: `support` values should be seen as buckets. Their interpretation depends on the voting module used.
- `params` are additional encoded parameters. Their interpretation also depends on the voting module used.
- [.contract-item]
- [[IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorInvalidProposalLength++#++(uint256 targets, uint256 calldatas, uint256 values)++` [.item-kind]#error#
- Empty proposal or a mismatch between the parameters length for a proposal call.
- [.contract-item]
- [[IGovernor-GovernorAlreadyCastVote-address-]]
- ==== `[.contract-item-name]#++GovernorAlreadyCastVote++#++(address voter)++` [.item-kind]#error#
- The vote was already cast.
- [.contract-item]
- [[IGovernor-GovernorDisabledDeposit--]]
- ==== `[.contract-item-name]#++GovernorDisabledDeposit++#++()++` [.item-kind]#error#
- Token deposits are disabled in this contract.
- [.contract-item]
- [[IGovernor-GovernorOnlyExecutor-address-]]
- ==== `[.contract-item-name]#++GovernorOnlyExecutor++#++(address account)++` [.item-kind]#error#
- The `account` is not the governance executor.
- [.contract-item]
- [[IGovernor-GovernorNonexistentProposal-uint256-]]
- ==== `[.contract-item-name]#++GovernorNonexistentProposal++#++(uint256 proposalId)++` [.item-kind]#error#
- The `proposalId` doesn't exist.
- [.contract-item]
- [[IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-]]
- ==== `[.contract-item-name]#++GovernorUnexpectedProposalState++#++(uint256 proposalId, enum IGovernor.ProposalState current, bytes32 expectedStates)++` [.item-kind]#error#
- The current state of a proposal is not the required for performing an operation.
- The `expectedStates` is a bitmap with the bits enabled for each ProposalState enum position
- counting from right to left.
- NOTE: If `expectedState` is `bytes32(0)`, the proposal is expected to not be in any state (i.e. not exist).
- This is the case when a proposal that is expected to be unset is already initiated (the proposal is duplicated).
- See {Governor-_encodeStateBitmap}.
- [.contract-item]
- [[IGovernor-GovernorInvalidVotingPeriod-uint256-]]
- ==== `[.contract-item-name]#++GovernorInvalidVotingPeriod++#++(uint256 votingPeriod)++` [.item-kind]#error#
- The voting period set is not a valid period.
- [.contract-item]
- [[IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorInsufficientProposerVotes++#++(address proposer, uint256 votes, uint256 threshold)++` [.item-kind]#error#
- The `proposer` does not have the required votes to create a proposal.
- [.contract-item]
- [[IGovernor-GovernorRestrictedProposer-address-]]
- ==== `[.contract-item-name]#++GovernorRestrictedProposer++#++(address proposer)++` [.item-kind]#error#
- The `proposer` is not allowed to create a proposal.
- [.contract-item]
- [[IGovernor-GovernorInvalidVoteType--]]
- ==== `[.contract-item-name]#++GovernorInvalidVoteType++#++()++` [.item-kind]#error#
- The vote type used is not valid for the corresponding counting module.
- [.contract-item]
- [[IGovernor-GovernorInvalidVoteParams--]]
- ==== `[.contract-item-name]#++GovernorInvalidVoteParams++#++()++` [.item-kind]#error#
- The provided params buffer is not supported by the counting module.
- [.contract-item]
- [[IGovernor-GovernorQueueNotImplemented--]]
- ==== `[.contract-item-name]#++GovernorQueueNotImplemented++#++()++` [.item-kind]#error#
- Queue operation is not implemented for this governor. Execute should be called directly.
- [.contract-item]
- [[IGovernor-GovernorNotQueuedProposal-uint256-]]
- ==== `[.contract-item-name]#++GovernorNotQueuedProposal++#++(uint256 proposalId)++` [.item-kind]#error#
- The proposal hasn't been queued yet.
- [.contract-item]
- [[IGovernor-GovernorAlreadyQueuedProposal-uint256-]]
- ==== `[.contract-item-name]#++GovernorAlreadyQueuedProposal++#++(uint256 proposalId)++` [.item-kind]#error#
- The proposal has already been queued.
- [.contract-item]
- [[IGovernor-GovernorInvalidSignature-address-]]
- ==== `[.contract-item-name]#++GovernorInvalidSignature++#++(address voter)++` [.item-kind]#error#
- The provided signature is not valid for the expected `voter`.
- If the `voter` is a contract, the signature is not valid using {IERC1271-isValidSignature}.
- [.contract-item]
- [[IGovernor-GovernorUnableToCancel-uint256-address-]]
- ==== `[.contract-item-name]#++GovernorUnableToCancel++#++(uint256 proposalId, address account)++` [.item-kind]#error#
- The given `account` is unable to cancel the proposal with given `proposalId`.
- :BALLOT_TYPEHASH: pass:normal[xref:#Governor-BALLOT_TYPEHASH-bytes32[`++BALLOT_TYPEHASH++`]]
- :EXTENDED_BALLOT_TYPEHASH: pass:normal[xref:#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32[`++EXTENDED_BALLOT_TYPEHASH++`]]
- :ProposalCore: pass:normal[xref:#Governor-ProposalCore[`++ProposalCore++`]]
- :onlyGovernance: pass:normal[xref:#Governor-onlyGovernance--[`++onlyGovernance++`]]
- :constructor: pass:normal[xref:#Governor-constructor-string-[`++constructor++`]]
- :receive: pass:normal[xref:#Governor-receive--[`++receive++`]]
- :supportsInterface: pass:normal[xref:#Governor-supportsInterface-bytes4-[`++supportsInterface++`]]
- :name: pass:normal[xref:#Governor-name--[`++name++`]]
- :version: pass:normal[xref:#Governor-version--[`++version++`]]
- :hashProposal: pass:normal[xref:#Governor-hashProposal-address---uint256---bytes---bytes32-[`++hashProposal++`]]
- :getProposalId: pass:normal[xref:#Governor-getProposalId-address---uint256---bytes---bytes32-[`++getProposalId++`]]
- :state: pass:normal[xref:#Governor-state-uint256-[`++state++`]]
- :proposalThreshold: pass:normal[xref:#Governor-proposalThreshold--[`++proposalThreshold++`]]
- :proposalSnapshot: pass:normal[xref:#Governor-proposalSnapshot-uint256-[`++proposalSnapshot++`]]
- :proposalDeadline: pass:normal[xref:#Governor-proposalDeadline-uint256-[`++proposalDeadline++`]]
- :proposalProposer: pass:normal[xref:#Governor-proposalProposer-uint256-[`++proposalProposer++`]]
- :proposalEta: pass:normal[xref:#Governor-proposalEta-uint256-[`++proposalEta++`]]
- :proposalNeedsQueuing: pass:normal[xref:#Governor-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :_checkGovernance: pass:normal[xref:#Governor-_checkGovernance--[`++_checkGovernance++`]]
- :_quorumReached: pass:normal[xref:#Governor-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded: pass:normal[xref:#Governor-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_getVotes: pass:normal[xref:#Governor-_getVotes-address-uint256-bytes-[`++_getVotes++`]]
- :_countVote: pass:normal[xref:#Governor-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- :_tallyUpdated: pass:normal[xref:#Governor-_tallyUpdated-uint256-[`++_tallyUpdated++`]]
- :_defaultParams: pass:normal[xref:#Governor-_defaultParams--[`++_defaultParams++`]]
- :propose: pass:normal[xref:#Governor-propose-address---uint256---bytes---string-[`++propose++`]]
- :_propose: pass:normal[xref:#Governor-_propose-address---uint256---bytes---string-address-[`++_propose++`]]
- :queue: pass:normal[xref:#Governor-queue-address---uint256---bytes---bytes32-[`++queue++`]]
- :_queueOperations: pass:normal[xref:#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :execute: pass:normal[xref:#Governor-execute-address---uint256---bytes---bytes32-[`++execute++`]]
- :_executeOperations: pass:normal[xref:#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :cancel: pass:normal[xref:#Governor-cancel-address---uint256---bytes---bytes32-[`++cancel++`]]
- :_cancel: pass:normal[xref:#Governor-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :getVotes: pass:normal[xref:#Governor-getVotes-address-uint256-[`++getVotes++`]]
- :getVotesWithParams: pass:normal[xref:#Governor-getVotesWithParams-address-uint256-bytes-[`++getVotesWithParams++`]]
- :castVote: pass:normal[xref:#Governor-castVote-uint256-uint8-[`++castVote++`]]
- :castVoteWithReason: pass:normal[xref:#Governor-castVoteWithReason-uint256-uint8-string-[`++castVoteWithReason++`]]
- :castVoteWithReasonAndParams: pass:normal[xref:#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-[`++castVoteWithReasonAndParams++`]]
- :castVoteBySig: pass:normal[xref:#Governor-castVoteBySig-uint256-uint8-address-bytes-[`++castVoteBySig++`]]
- :castVoteWithReasonAndParamsBySig: pass:normal[xref:#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-[`++castVoteWithReasonAndParamsBySig++`]]
- :_validateVoteSig: pass:normal[xref:#Governor-_validateVoteSig-uint256-uint8-address-bytes-[`++_validateVoteSig++`]]
- :_validateExtendedVoteSig: pass:normal[xref:#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-[`++_validateExtendedVoteSig++`]]
- :_castVote: pass:normal[xref:#Governor-_castVote-uint256-address-uint8-string-[`++_castVote++`]]
- :_castVote: pass:normal[xref:#Governor-_castVote-uint256-address-uint8-string-bytes-[`++_castVote++`]]
- :relay: pass:normal[xref:#Governor-relay-address-uint256-bytes-[`++relay++`]]
- :_executor: pass:normal[xref:#Governor-_executor--[`++_executor++`]]
- :onERC721Received: pass:normal[xref:#Governor-onERC721Received-address-address-uint256-bytes-[`++onERC721Received++`]]
- :onERC1155Received: pass:normal[xref:#Governor-onERC1155Received-address-address-uint256-uint256-bytes-[`++onERC1155Received++`]]
- :onERC1155BatchReceived: pass:normal[xref:#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`++onERC1155BatchReceived++`]]
- :_encodeStateBitmap: pass:normal[xref:#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-[`++_encodeStateBitmap++`]]
- :_validateStateBitmap: pass:normal[xref:#Governor-_validateStateBitmap-uint256-bytes32-[`++_validateStateBitmap++`]]
- :_isValidDescriptionForProposer: pass:normal[xref:#Governor-_isValidDescriptionForProposer-address-string-[`++_isValidDescriptionForProposer++`]]
- :_validateCancel: pass:normal[xref:#Governor-_validateCancel-uint256-address-[`++_validateCancel++`]]
- :clock: pass:normal[xref:#Governor-clock--[`++clock++`]]
- :CLOCK_MODE: pass:normal[xref:#Governor-CLOCK_MODE--[`++CLOCK_MODE++`]]
- :votingDelay: pass:normal[xref:#Governor-votingDelay--[`++votingDelay++`]]
- :votingPeriod: pass:normal[xref:#Governor-votingPeriod--[`++votingPeriod++`]]
- :quorum: pass:normal[xref:#Governor-quorum-uint256-[`++quorum++`]]
- :constructor-string: pass:normal[xref:#Governor-constructor-string-[`++constructor++`]]
- :receive-: pass:normal[xref:#Governor-receive--[`++receive++`]]
- :supportsInterface-bytes4: pass:normal[xref:#Governor-supportsInterface-bytes4-[`++supportsInterface++`]]
- :name-: pass:normal[xref:#Governor-name--[`++name++`]]
- :version-: pass:normal[xref:#Governor-version--[`++version++`]]
- :hashProposal-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-hashProposal-address---uint256---bytes---bytes32-[`++hashProposal++`]]
- :getProposalId-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-getProposalId-address---uint256---bytes---bytes32-[`++getProposalId++`]]
- :state-uint256: pass:normal[xref:#Governor-state-uint256-[`++state++`]]
- :proposalThreshold-: pass:normal[xref:#Governor-proposalThreshold--[`++proposalThreshold++`]]
- :proposalSnapshot-uint256: pass:normal[xref:#Governor-proposalSnapshot-uint256-[`++proposalSnapshot++`]]
- :proposalDeadline-uint256: pass:normal[xref:#Governor-proposalDeadline-uint256-[`++proposalDeadline++`]]
- :proposalProposer-uint256: pass:normal[xref:#Governor-proposalProposer-uint256-[`++proposalProposer++`]]
- :proposalEta-uint256: pass:normal[xref:#Governor-proposalEta-uint256-[`++proposalEta++`]]
- :proposalNeedsQueuing-uint256: pass:normal[xref:#Governor-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :_checkGovernance-: pass:normal[xref:#Governor-_checkGovernance--[`++_checkGovernance++`]]
- :_quorumReached-uint256: pass:normal[xref:#Governor-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded-uint256: pass:normal[xref:#Governor-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_getVotes-address-uint256-bytes: pass:normal[xref:#Governor-_getVotes-address-uint256-bytes-[`++_getVotes++`]]
- :_countVote-uint256-address-uint8-uint256-bytes: pass:normal[xref:#Governor-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- :_tallyUpdated-uint256: pass:normal[xref:#Governor-_tallyUpdated-uint256-[`++_tallyUpdated++`]]
- :_defaultParams-: pass:normal[xref:#Governor-_defaultParams--[`++_defaultParams++`]]
- :propose-address---uint256---bytes---string: pass:normal[xref:#Governor-propose-address---uint256---bytes---string-[`++propose++`]]
- :_propose-address---uint256---bytes---string-address: pass:normal[xref:#Governor-_propose-address---uint256---bytes---string-address-[`++_propose++`]]
- :queue-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-queue-address---uint256---bytes---bytes32-[`++queue++`]]
- :_queueOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :execute-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-execute-address---uint256---bytes---bytes32-[`++execute++`]]
- :_executeOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :cancel-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-cancel-address---uint256---bytes---bytes32-[`++cancel++`]]
- :_cancel-address---uint256---bytes---bytes32: pass:normal[xref:#Governor-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :getVotes-address-uint256: pass:normal[xref:#Governor-getVotes-address-uint256-[`++getVotes++`]]
- :getVotesWithParams-address-uint256-bytes: pass:normal[xref:#Governor-getVotesWithParams-address-uint256-bytes-[`++getVotesWithParams++`]]
- :castVote-uint256-uint8: pass:normal[xref:#Governor-castVote-uint256-uint8-[`++castVote++`]]
- :castVoteWithReason-uint256-uint8-string: pass:normal[xref:#Governor-castVoteWithReason-uint256-uint8-string-[`++castVoteWithReason++`]]
- :castVoteWithReasonAndParams-uint256-uint8-string-bytes: pass:normal[xref:#Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-[`++castVoteWithReasonAndParams++`]]
- :castVoteBySig-uint256-uint8-address-bytes: pass:normal[xref:#Governor-castVoteBySig-uint256-uint8-address-bytes-[`++castVoteBySig++`]]
- :castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes: pass:normal[xref:#Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-[`++castVoteWithReasonAndParamsBySig++`]]
- :_validateVoteSig-uint256-uint8-address-bytes: pass:normal[xref:#Governor-_validateVoteSig-uint256-uint8-address-bytes-[`++_validateVoteSig++`]]
- :_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes: pass:normal[xref:#Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-[`++_validateExtendedVoteSig++`]]
- :_castVote-uint256-address-uint8-string: pass:normal[xref:#Governor-_castVote-uint256-address-uint8-string-[`++_castVote++`]]
- :_castVote-uint256-address-uint8-string-bytes: pass:normal[xref:#Governor-_castVote-uint256-address-uint8-string-bytes-[`++_castVote++`]]
- :relay-address-uint256-bytes: pass:normal[xref:#Governor-relay-address-uint256-bytes-[`++relay++`]]
- :_executor-: pass:normal[xref:#Governor-_executor--[`++_executor++`]]
- :onERC721Received-address-address-uint256-bytes: pass:normal[xref:#Governor-onERC721Received-address-address-uint256-bytes-[`++onERC721Received++`]]
- :onERC1155Received-address-address-uint256-uint256-bytes: pass:normal[xref:#Governor-onERC1155Received-address-address-uint256-uint256-bytes-[`++onERC1155Received++`]]
- :onERC1155BatchReceived-address-address-uint256---uint256---bytes: pass:normal[xref:#Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`++onERC1155BatchReceived++`]]
- :_encodeStateBitmap-enum-IGovernor-ProposalState: pass:normal[xref:#Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-[`++_encodeStateBitmap++`]]
- :_validateStateBitmap-uint256-bytes32: pass:normal[xref:#Governor-_validateStateBitmap-uint256-bytes32-[`++_validateStateBitmap++`]]
- :_isValidDescriptionForProposer-address-string: pass:normal[xref:#Governor-_isValidDescriptionForProposer-address-string-[`++_isValidDescriptionForProposer++`]]
- :_validateCancel-uint256-address: pass:normal[xref:#Governor-_validateCancel-uint256-address-[`++_validateCancel++`]]
- :clock-: pass:normal[xref:#Governor-clock--[`++clock++`]]
- :CLOCK_MODE-: pass:normal[xref:#Governor-CLOCK_MODE--[`++CLOCK_MODE++`]]
- :votingDelay-: pass:normal[xref:#Governor-votingDelay--[`++votingDelay++`]]
- :votingPeriod-: pass:normal[xref:#Governor-votingPeriod--[`++votingPeriod++`]]
- :quorum-uint256: pass:normal[xref:#Governor-quorum-uint256-[`++quorum++`]]
- :BALLOT_TYPEHASH-bytes32: pass:normal[xref:#Governor-BALLOT_TYPEHASH-bytes32[`++BALLOT_TYPEHASH++`]]
- :EXTENDED_BALLOT_TYPEHASH-bytes32: pass:normal[xref:#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32[`++EXTENDED_BALLOT_TYPEHASH++`]]
- [.contract]
- [[Governor]]
- === `++Governor++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/Governor.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/Governor.sol";
- ```
- Core of the governance system, designed to be extended through various modules.
- This contract is abstract and requires several functions to be implemented in various modules:
- - A counting module must implement {_quorumReached}, {_voteSucceeded} and {_countVote}
- - A voting module must implement {_getVotes}
- - Additionally, {votingPeriod}, {votingDelay}, and {quorum} must also be implemented
- [.contract-index]
- .Modifiers
- --
- * {xref-Governor-onlyGovernance--}[`++onlyGovernance()++`]
- --
- [.contract-index]
- .Functions
- --
- * {xref-Governor-constructor-string-}[`++constructor(name_)++`]
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[Governor-onlyGovernance--]]
- ==== `[.contract-item-name]#++onlyGovernance++#++()++` [.item-kind]#modifier#
- Restricts a function so it can only be executed through governance proposals. For example, governance
- parameter setters in {GovernorSettings} are protected using this modifier.
- The governance executing address may be different from the Governor's own address, for example it could be a
- timelock. This can be customized by modules by overriding {_executor}. The executor is only able to invoke these
- functions during the execution of the governor's {execute} function, and not under any other circumstances. Thus,
- for example, additional timelock proposers are not able to change governance parameters without going through the
- governance protocol (since v4.6).
- [.contract-item]
- [[Governor-constructor-string-]]
- ==== `[.contract-item-name]#++constructor++#++(string name_)++` [.item-kind]#internal#
- Sets the value for {name} and {version}
- [.contract-item]
- [[Governor-receive--]]
- ==== `[.contract-item-name]#++receive++#++()++` [.item-kind]#external#
- Function to receive ETH that will be handled by the governor (disabled if executor is a third party contract)
- [.contract-item]
- [[Governor-supportsInterface-bytes4-]]
- ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
- Returns true if this contract implements the interface defined by
- `interfaceId`. See the corresponding
- https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
- to learn more about how these ids are created.
- This function call must use less than 30 000 gas.
- [.contract-item]
- [[Governor-name--]]
- ==== `[.contract-item-name]#++name++#++() → string++` [.item-kind]#public#
- Name of the governor instance (used in building the EIP-712 domain separator).
- [.contract-item]
- [[Governor-version--]]
- ==== `[.contract-item-name]#++version++#++() → string++` [.item-kind]#public#
- Version of the governor instance (used in building the EIP-712 domain separator). Default: "1"
- [.contract-item]
- [[Governor-hashProposal-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++hashProposal++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#public#
- See {IGovernor-hashProposal}.
- The proposal id is produced by hashing the ABI encoded `targets` array, the `values` array, the `calldatas` array
- and the descriptionHash (bytes32 which itself is the keccak256 hash of the description string). This proposal id
- can be produced from the proposal data which is part of the {ProposalCreated} event. It can even be computed in
- advance, before the proposal is submitted.
- Note that the chainId and the governor address are not part of the proposal id computation. Consequently, the
- same proposal (with same operation and same description) will have the same id if submitted on multiple governors
- across multiple networks. This also means that in order to execute the same operation twice (on the same
- governor) the proposer will have to change the description in order to avoid proposal id conflicts.
- [.contract-item]
- [[Governor-getProposalId-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++getProposalId++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#public#
- Function used to get the proposal id from the proposal details.
- [.contract-item]
- [[Governor-state-uint256-]]
- ==== `[.contract-item-name]#++state++#++(uint256 proposalId) → enum IGovernor.ProposalState++` [.item-kind]#public#
- Current state of a proposal, following Compound's convention
- [.contract-item]
- [[Governor-proposalThreshold--]]
- ==== `[.contract-item-name]#++proposalThreshold++#++() → uint256++` [.item-kind]#public#
- The number of votes required in order for a voter to become a proposer.
- [.contract-item]
- [[Governor-proposalSnapshot-uint256-]]
- ==== `[.contract-item-name]#++proposalSnapshot++#++(uint256 proposalId) → uint256++` [.item-kind]#public#
- Timepoint used to retrieve user's votes and quorum. If using block number (as per Compound's Comp), the
- snapshot is performed at the end of this block. Hence, voting for this proposal starts at the beginning of the
- following block.
- [.contract-item]
- [[Governor-proposalDeadline-uint256-]]
- ==== `[.contract-item-name]#++proposalDeadline++#++(uint256 proposalId) → uint256++` [.item-kind]#public#
- Timepoint at which votes close. If using block number, votes close at the end of this block, so it is
- possible to cast a vote during this block.
- [.contract-item]
- [[Governor-proposalProposer-uint256-]]
- ==== `[.contract-item-name]#++proposalProposer++#++(uint256 proposalId) → address++` [.item-kind]#public#
- The account that created a proposal.
- [.contract-item]
- [[Governor-proposalEta-uint256-]]
- ==== `[.contract-item-name]#++proposalEta++#++(uint256 proposalId) → uint256++` [.item-kind]#public#
- The time when a queued proposal becomes executable ("ETA"). Unlike {proposalSnapshot} and
- {proposalDeadline}, this doesn't use the governor clock, and instead relies on the executor's clock which may be
- different. In most cases this will be a timestamp.
- [.contract-item]
- [[Governor-proposalNeedsQueuing-uint256-]]
- ==== `[.contract-item-name]#++proposalNeedsQueuing++#++(uint256) → bool++` [.item-kind]#public#
- Whether a proposal needs to be queued before execution.
- [.contract-item]
- [[Governor-_checkGovernance--]]
- ==== `[.contract-item-name]#++_checkGovernance++#++()++` [.item-kind]#internal#
- Reverts if the `msg.sender` is not the executor. In case the executor is not this contract
- itself, the function reverts if `msg.data` is not whitelisted as a result of an {execute}
- operation. See {onlyGovernance}.
- [.contract-item]
- [[Governor-_quorumReached-uint256-]]
- ==== `[.contract-item-name]#++_quorumReached++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- Amount of votes already cast passes the threshold limit.
- [.contract-item]
- [[Governor-_voteSucceeded-uint256-]]
- ==== `[.contract-item-name]#++_voteSucceeded++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- Is the proposal successful or not.
- [.contract-item]
- [[Governor-_getVotes-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++_getVotes++#++(address account, uint256 timepoint, bytes params) → uint256++` [.item-kind]#internal#
- Get the voting weight of `account` at a specific `timepoint`, for a vote as described by `params`.
- [.contract-item]
- [[Governor-_countVote-uint256-address-uint8-uint256-bytes-]]
- ==== `[.contract-item-name]#++_countVote++#++(uint256 proposalId, address account, uint8 support, uint256 totalWeight, bytes params) → uint256++` [.item-kind]#internal#
- Register a vote for `proposalId` by `account` with a given `support`, voting `weight` and voting `params`.
- Note: Support is generic and can represent various things depending on the voting system used.
- [.contract-item]
- [[Governor-_tallyUpdated-uint256-]]
- ==== `[.contract-item-name]#++_tallyUpdated++#++(uint256 proposalId)++` [.item-kind]#internal#
- Hook that should be called every time the tally for a proposal is updated.
- Note: This function must run successfully. Reverts will result in the bricking of governance
- [.contract-item]
- [[Governor-_defaultParams--]]
- ==== `[.contract-item-name]#++_defaultParams++#++() → bytes++` [.item-kind]#internal#
- Default additional encoded parameters used by castVote methods that don't include them
- Note: Should be overridden by specific implementations to use an appropriate value, the
- meaning of the additional params, in the context of that implementation
- [.contract-item]
- [[Governor-propose-address---uint256---bytes---string-]]
- ==== `[.contract-item-name]#++propose++#++(address[] targets, uint256[] values, bytes[] calldatas, string description) → uint256++` [.item-kind]#public#
- See {IGovernor-propose}. This function has opt-in frontrunning protection, described in {_isValidDescriptionForProposer}.
- [.contract-item]
- [[Governor-_propose-address---uint256---bytes---string-address-]]
- ==== `[.contract-item-name]#++_propose++#++(address[] targets, uint256[] values, bytes[] calldatas, string description, address proposer) → uint256 proposalId++` [.item-kind]#internal#
- Internal propose mechanism. Can be overridden to add more logic on proposal creation.
- Emits a {IGovernor-ProposalCreated} event.
- [.contract-item]
- [[Governor-queue-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++queue++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#public#
- Queue a proposal. Some governors require this step to be performed before execution can happen. If queuing
- is not necessary, this function may revert.
- Queuing a proposal requires the quorum to be reached, the vote to be successful, and the deadline to be reached.
- Emits a {ProposalQueued} event.
- [.contract-item]
- [[Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_queueOperations++#++(uint256, address[], uint256[], bytes[], bytes32) → uint48++` [.item-kind]#internal#
- Internal queuing mechanism. Can be overridden (without a super call) to modify the way queuing is
- performed (for example adding a vault/timelock).
- This is empty by default, and must be overridden to implement queuing.
- This function returns a timestamp that describes the expected ETA for execution. If the returned value is 0
- (which is the default value), the core will consider queueing did not succeed, and the public {queue} function
- will revert.
- NOTE: Calling this function directly will NOT check the current state of the proposal, or emit the
- `ProposalQueued` event. Queuing a proposal should be done using {queue}.
- [.contract-item]
- [[Governor-execute-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++execute++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#public#
- Execute a successful proposal. This requires the quorum to be reached, the vote to be successful, and the
- deadline to be reached. Depending on the governor it might also be required that the proposal was queued and
- that some delay passed.
- Emits a {ProposalExecuted} event.
- NOTE: Some modules can modify the requirements for execution, for example by adding an additional timelock.
- [.contract-item]
- [[Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_executeOperations++#++(uint256, address[] targets, uint256[] values, bytes[] calldatas, bytes32)++` [.item-kind]#internal#
- Internal execution mechanism. Can be overridden (without a super call) to modify the way execution is
- performed (for example adding a vault/timelock).
- NOTE: Calling this function directly will NOT check the current state of the proposal, set the executed flag to
- true or emit the `ProposalExecuted` event. Executing a proposal should be done using {execute}.
- [.contract-item]
- [[Governor-cancel-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++cancel++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#public#
- Cancel a proposal. A proposal is cancellable by the proposer, but only while it is Pending state, i.e.
- before the vote starts.
- Emits a {ProposalCanceled} event.
- [.contract-item]
- [[Governor-_cancel-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_cancel++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#internal#
- Internal cancel mechanism with minimal restrictions. A proposal can be cancelled in any state other than
- Canceled, Expired, or Executed. Once cancelled a proposal can't be re-submitted.
- Emits a {IGovernor-ProposalCanceled} event.
- [.contract-item]
- [[Governor-getVotes-address-uint256-]]
- ==== `[.contract-item-name]#++getVotes++#++(address account, uint256 timepoint) → uint256++` [.item-kind]#public#
- Voting power of an `account` at a specific `timepoint`.
- Note: this can be implemented in a number of ways, for example by reading the delegated balance from one (or
- multiple), {ERC20Votes} tokens.
- [.contract-item]
- [[Governor-getVotesWithParams-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++getVotesWithParams++#++(address account, uint256 timepoint, bytes params) → uint256++` [.item-kind]#public#
- Voting power of an `account` at a specific `timepoint` given additional encoded parameters.
- [.contract-item]
- [[Governor-castVote-uint256-uint8-]]
- ==== `[.contract-item-name]#++castVote++#++(uint256 proposalId, uint8 support) → uint256++` [.item-kind]#public#
- Cast a vote
- Emits a {VoteCast} event.
- [.contract-item]
- [[Governor-castVoteWithReason-uint256-uint8-string-]]
- ==== `[.contract-item-name]#++castVoteWithReason++#++(uint256 proposalId, uint8 support, string reason) → uint256++` [.item-kind]#public#
- Cast a vote with a reason
- Emits a {VoteCast} event.
- [.contract-item]
- [[Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-]]
- ==== `[.contract-item-name]#++castVoteWithReasonAndParams++#++(uint256 proposalId, uint8 support, string reason, bytes params) → uint256++` [.item-kind]#public#
- Cast a vote with a reason and additional encoded parameters
- Emits a {VoteCast} or {VoteCastWithParams} event depending on the length of params.
- [.contract-item]
- [[Governor-castVoteBySig-uint256-uint8-address-bytes-]]
- ==== `[.contract-item-name]#++castVoteBySig++#++(uint256 proposalId, uint8 support, address voter, bytes signature) → uint256++` [.item-kind]#public#
- Cast a vote using the voter's signature, including ERC-1271 signature support.
- Emits a {VoteCast} event.
- [.contract-item]
- [[Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-]]
- ==== `[.contract-item-name]#++castVoteWithReasonAndParamsBySig++#++(uint256 proposalId, uint8 support, address voter, string reason, bytes params, bytes signature) → uint256++` [.item-kind]#public#
- Cast a vote with a reason and additional encoded parameters using the voter's signature,
- including ERC-1271 signature support.
- Emits a {VoteCast} or {VoteCastWithParams} event depending on the length of params.
- [.contract-item]
- [[Governor-_validateVoteSig-uint256-uint8-address-bytes-]]
- ==== `[.contract-item-name]#++_validateVoteSig++#++(uint256 proposalId, uint8 support, address voter, bytes signature) → bool++` [.item-kind]#internal#
- Validate the `signature` used in {castVoteBySig} function.
- [.contract-item]
- [[Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-]]
- ==== `[.contract-item-name]#++_validateExtendedVoteSig++#++(uint256 proposalId, uint8 support, address voter, string reason, bytes params, bytes signature) → bool++` [.item-kind]#internal#
- Validate the `signature` used in {castVoteWithReasonAndParamsBySig} function.
- [.contract-item]
- [[Governor-_castVote-uint256-address-uint8-string-]]
- ==== `[.contract-item-name]#++_castVote++#++(uint256 proposalId, address account, uint8 support, string reason) → uint256++` [.item-kind]#internal#
- Internal vote casting mechanism: Check that the vote is pending, that it has not been cast yet, retrieve
- voting weight using {IGovernor-getVotes} and call the {_countVote} internal function. Uses the _defaultParams().
- Emits a {IGovernor-VoteCast} event.
- [.contract-item]
- [[Governor-_castVote-uint256-address-uint8-string-bytes-]]
- ==== `[.contract-item-name]#++_castVote++#++(uint256 proposalId, address account, uint8 support, string reason, bytes params) → uint256++` [.item-kind]#internal#
- Internal vote casting mechanism: Check that the vote is pending, that it has not been cast yet, retrieve
- voting weight using {IGovernor-getVotes} and call the {_countVote} internal function.
- Emits a {IGovernor-VoteCast} event.
- [.contract-item]
- [[Governor-relay-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++relay++#++(address target, uint256 value, bytes data)++` [.item-kind]#external#
- Relays a transaction or function call to an arbitrary target. In cases where the governance executor
- is some contract other than the governor itself, like when using a timelock, this function can be invoked
- in a governance proposal to recover tokens or Ether that was sent to the governor contract by mistake.
- Note that if the executor is simply the governor itself, use of `relay` is redundant.
- [.contract-item]
- [[Governor-_executor--]]
- ==== `[.contract-item-name]#++_executor++#++() → address++` [.item-kind]#internal#
- Address through which the governor executes action. Will be overloaded by module that execute actions
- through another contract such as a timelock.
- [.contract-item]
- [[Governor-onERC721Received-address-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++onERC721Received++#++(address, address, uint256, bytes) → bytes4++` [.item-kind]#public#
- See {IERC721Receiver-onERC721Received}.
- Receiving tokens is disabled if the governance executor is other than the governor itself (eg. when using with a timelock).
- [.contract-item]
- [[Governor-onERC1155Received-address-address-uint256-uint256-bytes-]]
- ==== `[.contract-item-name]#++onERC1155Received++#++(address, address, uint256, uint256, bytes) → bytes4++` [.item-kind]#public#
- See {IERC1155Receiver-onERC1155Received}.
- Receiving tokens is disabled if the governance executor is other than the governor itself (eg. when using with a timelock).
- [.contract-item]
- [[Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-]]
- ==== `[.contract-item-name]#++onERC1155BatchReceived++#++(address, address, uint256[], uint256[], bytes) → bytes4++` [.item-kind]#public#
- See {IERC1155Receiver-onERC1155BatchReceived}.
- Receiving tokens is disabled if the governance executor is other than the governor itself (eg. when using with a timelock).
- [.contract-item]
- [[Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-]]
- ==== `[.contract-item-name]#++_encodeStateBitmap++#++(enum IGovernor.ProposalState proposalState) → bytes32++` [.item-kind]#internal#
- Encodes a `ProposalState` into a `bytes32` representation where each bit enabled corresponds to
- the underlying position in the `ProposalState` enum. For example:
- 0x000...10000
- ^^^^^^------ ...
- ^----- Succeeded
- ^---- Defeated
- ^--- Canceled
- ^-- Active
- ^- Pending
- [.contract-item]
- [[Governor-_validateStateBitmap-uint256-bytes32-]]
- ==== `[.contract-item-name]#++_validateStateBitmap++#++(uint256 proposalId, bytes32 allowedStates) → enum IGovernor.ProposalState++` [.item-kind]#internal#
- Check that the current state of a proposal matches the requirements described by the `allowedStates` bitmap.
- This bitmap should be built using `_encodeStateBitmap`.
- If requirements are not met, reverts with a {GovernorUnexpectedProposalState} error.
- [.contract-item]
- [[Governor-_isValidDescriptionForProposer-address-string-]]
- ==== `[.contract-item-name]#++_isValidDescriptionForProposer++#++(address proposer, string description) → bool++` [.item-kind]#internal#
- [.contract-item]
- [[Governor-_validateCancel-uint256-address-]]
- ==== `[.contract-item-name]#++_validateCancel++#++(uint256 proposalId, address caller) → bool++` [.item-kind]#internal#
- Check if the `caller` can cancel the proposal with the given `proposalId`.
- The default implementation allows the proposal proposer to cancel the proposal during the pending state.
- [.contract-item]
- [[Governor-clock--]]
- ==== `[.contract-item-name]#++clock++#++() → uint48++` [.item-kind]#public#
- Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).
- [.contract-item]
- [[Governor-CLOCK_MODE--]]
- ==== `[.contract-item-name]#++CLOCK_MODE++#++() → string++` [.item-kind]#public#
- Description of the clock
- [.contract-item]
- [[Governor-votingDelay--]]
- ==== `[.contract-item-name]#++votingDelay++#++() → uint256++` [.item-kind]#public#
- Delay, between the proposal is created and the vote starts. The unit this duration is expressed in depends
- on the clock (see ERC-6372) this contract uses.
- This can be increased to leave time for users to buy voting power, or delegate it, before the voting of a
- proposal starts.
- NOTE: While this interface returns a uint256, timepoints are stored as uint48 following the ERC-6372 clock type.
- Consequently this value must fit in a uint48 (when added to the current clock). See {IERC6372-clock}.
- [.contract-item]
- [[Governor-votingPeriod--]]
- ==== `[.contract-item-name]#++votingPeriod++#++() → uint256++` [.item-kind]#public#
- Delay between the vote start and vote end. The unit this duration is expressed in depends on the clock
- (see ERC-6372) this contract uses.
- NOTE: The {votingDelay} can delay the start of the vote. This must be considered when setting the voting
- duration compared to the voting delay.
- NOTE: This value is stored when the proposal is submitted so that possible changes to the value do not affect
- proposals that have already been submitted. The type used to save it is a uint32. Consequently, while this
- interface returns a uint256, the value it returns should fit in a uint32.
- [.contract-item]
- [[Governor-quorum-uint256-]]
- ==== `[.contract-item-name]#++quorum++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Minimum number of cast voted required for a proposal to be successful.
- NOTE: The `timepoint` parameter corresponds to the snapshot used for counting vote. This allows to scale the
- quorum depending on values such as the totalSupply of a token at this timepoint (see {ERC20Votes}).
- [.contract-item]
- [[Governor-BALLOT_TYPEHASH-bytes32]]
- ==== `[.contract-item-name]#++BALLOT_TYPEHASH++#++() → bytes32++` [.item-kind]#public#
- [.contract-item]
- [[Governor-EXTENDED_BALLOT_TYPEHASH-bytes32]]
- ==== `[.contract-item-name]#++EXTENDED_BALLOT_TYPEHASH++#++() → bytes32++` [.item-kind]#public#
- === Modules
- :VoteType: pass:normal[xref:#GovernorCountingSimple-VoteType[`++VoteType++`]]
- :ProposalVote: pass:normal[xref:#GovernorCountingSimple-ProposalVote[`++ProposalVote++`]]
- :COUNTING_MODE: pass:normal[xref:#GovernorCountingSimple-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hasVoted: pass:normal[xref:#GovernorCountingSimple-hasVoted-uint256-address-[`++hasVoted++`]]
- :proposalVotes: pass:normal[xref:#GovernorCountingSimple-proposalVotes-uint256-[`++proposalVotes++`]]
- :_quorumReached: pass:normal[xref:#GovernorCountingSimple-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded: pass:normal[xref:#GovernorCountingSimple-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_countVote: pass:normal[xref:#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- :COUNTING_MODE-: pass:normal[xref:#GovernorCountingSimple-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hasVoted-uint256-address: pass:normal[xref:#GovernorCountingSimple-hasVoted-uint256-address-[`++hasVoted++`]]
- :proposalVotes-uint256: pass:normal[xref:#GovernorCountingSimple-proposalVotes-uint256-[`++proposalVotes++`]]
- :_quorumReached-uint256: pass:normal[xref:#GovernorCountingSimple-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded-uint256: pass:normal[xref:#GovernorCountingSimple-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_countVote-uint256-address-uint8-uint256-bytes: pass:normal[xref:#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- [.contract]
- [[GovernorCountingSimple]]
- === `++GovernorCountingSimple++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorCountingSimple.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";
- ```
- Extension of {Governor} for simple, 3 options, vote counting.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorCountingSimple-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-GovernorCountingSimple-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- * {xref-GovernorCountingSimple-proposalVotes-uint256-}[`++proposalVotes(proposalId)++`]
- * {xref-GovernorCountingSimple-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-GovernorCountingSimple-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, )++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorCountingSimple-COUNTING_MODE--]]
- ==== `[.contract-item-name]#++COUNTING_MODE++#++() → string++` [.item-kind]#public#
- A description of the possible `support` values for {castVote} and the way these votes are counted, meant to
- be consumed by UIs to show correct vote options and interpret the results. The string is a URL-encoded sequence of
- key-value pairs that each describe one aspect, for example `support=bravo&quorum=for,abstain`.
- There are 2 standard keys: `support` and `quorum`.
- - `support=bravo` refers to the vote options 0 = Against, 1 = For, 2 = Abstain, as in `GovernorBravo`.
- - `quorum=bravo` means that only For votes are counted towards quorum.
- - `quorum=for,abstain` means that both For and Abstain votes are counted towards quorum.
- If a counting module makes use of encoded `params`, it should include this under a `params` key with a unique
- name that describes the behavior. For example:
- - `params=fractional` might refer to a scheme where votes are divided fractionally between for/against/abstain.
- - `params=erc721` might refer to a scheme where specific NFTs are delegated to vote.
- NOTE: The string can be decoded by the standard
- https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams[`URLSearchParams`]
- JavaScript class.
- [.contract-item]
- [[GovernorCountingSimple-hasVoted-uint256-address-]]
- ==== `[.contract-item-name]#++hasVoted++#++(uint256 proposalId, address account) → bool++` [.item-kind]#public#
- Returns whether `account` has cast a vote on `proposalId`.
- [.contract-item]
- [[GovernorCountingSimple-proposalVotes-uint256-]]
- ==== `[.contract-item-name]#++proposalVotes++#++(uint256 proposalId) → uint256 againstVotes, uint256 forVotes, uint256 abstainVotes++` [.item-kind]#public#
- Accessor to the internal vote counts.
- [.contract-item]
- [[GovernorCountingSimple-_quorumReached-uint256-]]
- ==== `[.contract-item-name]#++_quorumReached++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- Amount of votes already cast passes the threshold limit.
- [.contract-item]
- [[GovernorCountingSimple-_voteSucceeded-uint256-]]
- ==== `[.contract-item-name]#++_voteSucceeded++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- See {Governor-_voteSucceeded}. In this module, the forVotes must be strictly over the againstVotes.
- [.contract-item]
- [[GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-bytes-]]
- ==== `[.contract-item-name]#++_countVote++#++(uint256 proposalId, address account, uint8 support, uint256 totalWeight, bytes) → uint256++` [.item-kind]#internal#
- See {Governor-_countVote}. In this module, the support follows the `VoteType` enum (from Governor Bravo).
- :VOTE_TYPE_FRACTIONAL: pass:normal[xref:#GovernorCountingFractional-VOTE_TYPE_FRACTIONAL-uint8[`++VOTE_TYPE_FRACTIONAL++`]]
- :ProposalVote: pass:normal[xref:#GovernorCountingFractional-ProposalVote[`++ProposalVote++`]]
- :GovernorExceedRemainingWeight: pass:normal[xref:#GovernorCountingFractional-GovernorExceedRemainingWeight-address-uint256-uint256-[`++GovernorExceedRemainingWeight++`]]
- :COUNTING_MODE: pass:normal[xref:#GovernorCountingFractional-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hasVoted: pass:normal[xref:#GovernorCountingFractional-hasVoted-uint256-address-[`++hasVoted++`]]
- :usedVotes: pass:normal[xref:#GovernorCountingFractional-usedVotes-uint256-address-[`++usedVotes++`]]
- :proposalVotes: pass:normal[xref:#GovernorCountingFractional-proposalVotes-uint256-[`++proposalVotes++`]]
- :_quorumReached: pass:normal[xref:#GovernorCountingFractional-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded: pass:normal[xref:#GovernorCountingFractional-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_countVote: pass:normal[xref:#GovernorCountingFractional-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- :COUNTING_MODE-: pass:normal[xref:#GovernorCountingFractional-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hasVoted-uint256-address: pass:normal[xref:#GovernorCountingFractional-hasVoted-uint256-address-[`++hasVoted++`]]
- :usedVotes-uint256-address: pass:normal[xref:#GovernorCountingFractional-usedVotes-uint256-address-[`++usedVotes++`]]
- :proposalVotes-uint256: pass:normal[xref:#GovernorCountingFractional-proposalVotes-uint256-[`++proposalVotes++`]]
- :_quorumReached-uint256: pass:normal[xref:#GovernorCountingFractional-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded-uint256: pass:normal[xref:#GovernorCountingFractional-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_countVote-uint256-address-uint8-uint256-bytes: pass:normal[xref:#GovernorCountingFractional-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- [.contract]
- [[GovernorCountingFractional]]
- === `++GovernorCountingFractional++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorCountingFractional.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorCountingFractional.sol";
- ```
- Extension of {Governor} for fractional voting.
- Similar to {GovernorCountingSimple}, this contract is a votes counting module for {Governor} that supports 3 options:
- Against, For, Abstain. Additionally, it includes a fourth option: Fractional, which allows voters to split their voting
- power amongst the other 3 options.
- Votes cast with the Fractional support must be accompanied by a `params` argument that is three packed `uint128` values
- representing the weight the delegate assigns to Against, For, and Abstain respectively. For those votes cast for the other
- 3 options, the `params` argument must be empty.
- This is mostly useful when the delegate is a contract that implements its own rules for voting. These delegate-contracts
- can cast fractional votes according to the preferences of multiple entities delegating their voting power.
- Some example use cases include:
- * Voting from tokens that are held by a DeFi pool
- * Voting from an L2 with tokens held by a bridge
- * Voting privately from a shielded pool using zero knowledge proofs.
- Based on ScopeLift's https://github.com/ScopeLift/flexible-voting/blob/e5de2efd1368387b840931f19f3c184c85842761/src/GovernorCountingFractional.sol[`GovernorCountingFractional`]
- _Available since v5.1._
- [.contract-index]
- .Functions
- --
- * {xref-GovernorCountingFractional-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-GovernorCountingFractional-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- * {xref-GovernorCountingFractional-usedVotes-uint256-address-}[`++usedVotes(proposalId, account)++`]
- * {xref-GovernorCountingFractional-proposalVotes-uint256-}[`++proposalVotes(proposalId)++`]
- * {xref-GovernorCountingFractional-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-GovernorCountingFractional-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-GovernorCountingFractional-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- * {xref-GovernorCountingFractional-GovernorExceedRemainingWeight-address-uint256-uint256-}[`++GovernorExceedRemainingWeight(voter, usedVotes, remainingWeight)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Internal Variables
- --
- * {xref-GovernorCountingFractional-VOTE_TYPE_FRACTIONAL-uint8}[`++uint8 constant VOTE_TYPE_FRACTIONAL++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorCountingFractional-COUNTING_MODE--]]
- ==== `[.contract-item-name]#++COUNTING_MODE++#++() → string++` [.item-kind]#public#
- A description of the possible `support` values for {castVote} and the way these votes are counted, meant to
- be consumed by UIs to show correct vote options and interpret the results. The string is a URL-encoded sequence of
- key-value pairs that each describe one aspect, for example `support=bravo&quorum=for,abstain`.
- There are 2 standard keys: `support` and `quorum`.
- - `support=bravo` refers to the vote options 0 = Against, 1 = For, 2 = Abstain, as in `GovernorBravo`.
- - `quorum=bravo` means that only For votes are counted towards quorum.
- - `quorum=for,abstain` means that both For and Abstain votes are counted towards quorum.
- If a counting module makes use of encoded `params`, it should include this under a `params` key with a unique
- name that describes the behavior. For example:
- - `params=fractional` might refer to a scheme where votes are divided fractionally between for/against/abstain.
- - `params=erc721` might refer to a scheme where specific NFTs are delegated to vote.
- NOTE: The string can be decoded by the standard
- https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams[`URLSearchParams`]
- JavaScript class.
- [.contract-item]
- [[GovernorCountingFractional-hasVoted-uint256-address-]]
- ==== `[.contract-item-name]#++hasVoted++#++(uint256 proposalId, address account) → bool++` [.item-kind]#public#
- Returns whether `account` has cast a vote on `proposalId`.
- [.contract-item]
- [[GovernorCountingFractional-usedVotes-uint256-address-]]
- ==== `[.contract-item-name]#++usedVotes++#++(uint256 proposalId, address account) → uint256++` [.item-kind]#public#
- Get the number of votes already cast by `account` for a proposal with `proposalId`. Useful for
- integrations that allow delegates to cast rolling, partial votes.
- [.contract-item]
- [[GovernorCountingFractional-proposalVotes-uint256-]]
- ==== `[.contract-item-name]#++proposalVotes++#++(uint256 proposalId) → uint256 againstVotes, uint256 forVotes, uint256 abstainVotes++` [.item-kind]#public#
- Get current distribution of votes for a given proposal.
- [.contract-item]
- [[GovernorCountingFractional-_quorumReached-uint256-]]
- ==== `[.contract-item-name]#++_quorumReached++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- Amount of votes already cast passes the threshold limit.
- [.contract-item]
- [[GovernorCountingFractional-_voteSucceeded-uint256-]]
- ==== `[.contract-item-name]#++_voteSucceeded++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- See {Governor-_voteSucceeded}. In this module, forVotes must be > againstVotes.
- [.contract-item]
- [[GovernorCountingFractional-_countVote-uint256-address-uint8-uint256-bytes-]]
- ==== `[.contract-item-name]#++_countVote++#++(uint256 proposalId, address account, uint8 support, uint256 totalWeight, bytes params) → uint256++` [.item-kind]#internal#
- See {Governor-_countVote}. Function that records the delegate's votes.
- Executing this function consumes (part of) the delegate's weight on the proposal. This weight can be
- distributed amongst the 3 options (Against, For, Abstain) by specifying a fractional `support`.
- This counting module supports two vote casting modes: nominal and fractional.
- - Nominal: A nominal vote is cast by setting `support` to one of the 3 bravo options (Against, For, Abstain).
- - Fractional: A fractional vote is cast by setting `support` to `type(uint8).max` (255).
- Casting a nominal vote requires `params` to be empty and consumes the delegate's full remaining weight on the
- proposal for the specified `support` option. This is similar to the {GovernorCountingSimple} module and follows
- the `VoteType` enum from Governor Bravo. As a consequence, no vote weight remains unspent so no further voting
- is possible (for this `proposalId` and this `account`).
- Casting a fractional vote consumes a fraction of the delegate's remaining weight on the proposal according to the
- weights the delegate assigns to each support option (Against, For, Abstain respectively). The sum total of the
- three decoded vote weights _must_ be less than or equal to the delegate's remaining weight on the proposal (i.e.
- their checkpointed total weight minus votes already cast on the proposal). This format can be produced using:
- `abi.encodePacked(uint128(againstVotes), uint128(forVotes), uint128(abstainVotes))`
- NOTE: Consider that fractional voting restricts the number of casted votes (in each category) to 128 bits.
- Depending on how many decimals the underlying token has, a single voter may require to split their vote into
- multiple vote operations. For precision higher than ~30 decimals, large token holders may require a
- potentially large number of calls to cast all their votes. The voter has the possibility to cast all the
- remaining votes in a single operation using the traditional "bravo" vote.
- [.contract-item]
- [[GovernorCountingFractional-GovernorExceedRemainingWeight-address-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorExceedRemainingWeight++#++(address voter, uint256 usedVotes, uint256 remainingWeight)++` [.item-kind]#error#
- A fractional vote params uses more votes than are available for that user.
- [.contract-item]
- [[GovernorCountingFractional-VOTE_TYPE_FRACTIONAL-uint8]]
- ==== `uint8 [.contract-item-name]#++VOTE_TYPE_FRACTIONAL++#` [.item-kind]#internal constant#
- :OVERRIDE_BALLOT_TYPEHASH: pass:normal[xref:#GovernorCountingOverridable-OVERRIDE_BALLOT_TYPEHASH-bytes32[`++OVERRIDE_BALLOT_TYPEHASH++`]]
- :VoteType: pass:normal[xref:#GovernorCountingOverridable-VoteType[`++VoteType++`]]
- :VoteReceipt: pass:normal[xref:#GovernorCountingOverridable-VoteReceipt[`++VoteReceipt++`]]
- :ProposalVote: pass:normal[xref:#GovernorCountingOverridable-ProposalVote[`++ProposalVote++`]]
- :VoteReduced: pass:normal[xref:#GovernorCountingOverridable-VoteReduced-address-uint256-uint8-uint256-[`++VoteReduced++`]]
- :OverrideVoteCast: pass:normal[xref:#GovernorCountingOverridable-OverrideVoteCast-address-uint256-uint8-uint256-string-[`++OverrideVoteCast++`]]
- :GovernorAlreadyOverriddenVote: pass:normal[xref:#GovernorCountingOverridable-GovernorAlreadyOverriddenVote-address-[`++GovernorAlreadyOverriddenVote++`]]
- :COUNTING_MODE: pass:normal[xref:#GovernorCountingOverridable-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hasVoted: pass:normal[xref:#GovernorCountingOverridable-hasVoted-uint256-address-[`++hasVoted++`]]
- :hasVotedOverride: pass:normal[xref:#GovernorCountingOverridable-hasVotedOverride-uint256-address-[`++hasVotedOverride++`]]
- :proposalVotes: pass:normal[xref:#GovernorCountingOverridable-proposalVotes-uint256-[`++proposalVotes++`]]
- :_quorumReached: pass:normal[xref:#GovernorCountingOverridable-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded: pass:normal[xref:#GovernorCountingOverridable-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_countVote: pass:normal[xref:#GovernorCountingOverridable-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- :_countOverride: pass:normal[xref:#GovernorCountingOverridable-_countOverride-uint256-address-uint8-[`++_countOverride++`]]
- :_castOverride: pass:normal[xref:#GovernorCountingOverridable-_castOverride-uint256-address-uint8-string-[`++_castOverride++`]]
- :castOverrideVote: pass:normal[xref:#GovernorCountingOverridable-castOverrideVote-uint256-uint8-string-[`++castOverrideVote++`]]
- :castOverrideVoteBySig: pass:normal[xref:#GovernorCountingOverridable-castOverrideVoteBySig-uint256-uint8-address-string-bytes-[`++castOverrideVoteBySig++`]]
- :COUNTING_MODE-: pass:normal[xref:#GovernorCountingOverridable-COUNTING_MODE--[`++COUNTING_MODE++`]]
- :hasVoted-uint256-address: pass:normal[xref:#GovernorCountingOverridable-hasVoted-uint256-address-[`++hasVoted++`]]
- :hasVotedOverride-uint256-address: pass:normal[xref:#GovernorCountingOverridable-hasVotedOverride-uint256-address-[`++hasVotedOverride++`]]
- :proposalVotes-uint256: pass:normal[xref:#GovernorCountingOverridable-proposalVotes-uint256-[`++proposalVotes++`]]
- :_quorumReached-uint256: pass:normal[xref:#GovernorCountingOverridable-_quorumReached-uint256-[`++_quorumReached++`]]
- :_voteSucceeded-uint256: pass:normal[xref:#GovernorCountingOverridable-_voteSucceeded-uint256-[`++_voteSucceeded++`]]
- :_countVote-uint256-address-uint8-uint256-bytes: pass:normal[xref:#GovernorCountingOverridable-_countVote-uint256-address-uint8-uint256-bytes-[`++_countVote++`]]
- :_countOverride-uint256-address-uint8: pass:normal[xref:#GovernorCountingOverridable-_countOverride-uint256-address-uint8-[`++_countOverride++`]]
- :_castOverride-uint256-address-uint8-string: pass:normal[xref:#GovernorCountingOverridable-_castOverride-uint256-address-uint8-string-[`++_castOverride++`]]
- :castOverrideVote-uint256-uint8-string: pass:normal[xref:#GovernorCountingOverridable-castOverrideVote-uint256-uint8-string-[`++castOverrideVote++`]]
- :castOverrideVoteBySig-uint256-uint8-address-string-bytes: pass:normal[xref:#GovernorCountingOverridable-castOverrideVoteBySig-uint256-uint8-address-string-bytes-[`++castOverrideVoteBySig++`]]
- :OVERRIDE_BALLOT_TYPEHASH-bytes32: pass:normal[xref:#GovernorCountingOverridable-OVERRIDE_BALLOT_TYPEHASH-bytes32[`++OVERRIDE_BALLOT_TYPEHASH++`]]
- [.contract]
- [[GovernorCountingOverridable]]
- === `++GovernorCountingOverridable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorCountingOverridable.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorCountingOverridable.sol";
- ```
- Extension of {Governor} which enables delegators to override the vote of their delegates. This module requires a
- token that inherits {VotesExtended}.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorCountingOverridable-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-GovernorCountingOverridable-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- * {xref-GovernorCountingOverridable-hasVotedOverride-uint256-address-}[`++hasVotedOverride(proposalId, account)++`]
- * {xref-GovernorCountingOverridable-proposalVotes-uint256-}[`++proposalVotes(proposalId)++`]
- * {xref-GovernorCountingOverridable-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-GovernorCountingOverridable-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-GovernorCountingOverridable-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, )++`]
- * {xref-GovernorCountingOverridable-_countOverride-uint256-address-uint8-}[`++_countOverride(proposalId, account, support)++`]
- * {xref-GovernorCountingOverridable-_castOverride-uint256-address-uint8-string-}[`++_castOverride(proposalId, account, support, reason)++`]
- * {xref-GovernorCountingOverridable-castOverrideVote-uint256-uint8-string-}[`++castOverrideVote(proposalId, support, reason)++`]
- * {xref-GovernorCountingOverridable-castOverrideVoteBySig-uint256-uint8-address-string-bytes-}[`++castOverrideVoteBySig(proposalId, support, voter, reason, signature)++`]
- * {xref-GovernorCountingOverridable-OVERRIDE_BALLOT_TYPEHASH-bytes32}[`++OVERRIDE_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- * {xref-GovernorVotes-token--}[`++token()++`]
- * {xref-GovernorVotes-clock--}[`++clock()++`]
- * {xref-GovernorVotes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-GovernorVotes-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, )++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorCountingOverridable-VoteReduced-address-uint256-uint8-uint256-}[`++VoteReduced(delegate, proposalId, support, weight)++`]
- * {xref-GovernorCountingOverridable-OverrideVoteCast-address-uint256-uint8-uint256-string-}[`++OverrideVoteCast(voter, proposalId, support, weight, reason)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- * {xref-GovernorCountingOverridable-GovernorAlreadyOverriddenVote-address-}[`++GovernorAlreadyOverriddenVote(account)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorCountingOverridable-COUNTING_MODE--]]
- ==== `[.contract-item-name]#++COUNTING_MODE++#++() → string++` [.item-kind]#public#
- A description of the possible `support` values for {castVote} and the way these votes are counted, meant to
- be consumed by UIs to show correct vote options and interpret the results. The string is a URL-encoded sequence of
- key-value pairs that each describe one aspect, for example `support=bravo&quorum=for,abstain`.
- There are 2 standard keys: `support` and `quorum`.
- - `support=bravo` refers to the vote options 0 = Against, 1 = For, 2 = Abstain, as in `GovernorBravo`.
- - `quorum=bravo` means that only For votes are counted towards quorum.
- - `quorum=for,abstain` means that both For and Abstain votes are counted towards quorum.
- If a counting module makes use of encoded `params`, it should include this under a `params` key with a unique
- name that describes the behavior. For example:
- - `params=fractional` might refer to a scheme where votes are divided fractionally between for/against/abstain.
- - `params=erc721` might refer to a scheme where specific NFTs are delegated to vote.
- NOTE: The string can be decoded by the standard
- https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams[`URLSearchParams`]
- JavaScript class.
- [.contract-item]
- [[GovernorCountingOverridable-hasVoted-uint256-address-]]
- ==== `[.contract-item-name]#++hasVoted++#++(uint256 proposalId, address account) → bool++` [.item-kind]#public#
- See {IGovernor-hasVoted}.
- NOTE: Calling {castVote} (or similar) casts a vote using the voting power that is delegated to the voter.
- Conversely, calling {castOverrideVote} (or similar) uses the voting power of the account itself, from its asset
- balances. Casting an "override vote" does not count as voting and won't be reflected by this getter. Consider
- using {hasVotedOverride} to check if an account has casted an "override vote" for a given proposal id.
- [.contract-item]
- [[GovernorCountingOverridable-hasVotedOverride-uint256-address-]]
- ==== `[.contract-item-name]#++hasVotedOverride++#++(uint256 proposalId, address account) → bool++` [.item-kind]#public#
- Check if an `account` has overridden their delegate for a proposal.
- [.contract-item]
- [[GovernorCountingOverridable-proposalVotes-uint256-]]
- ==== `[.contract-item-name]#++proposalVotes++#++(uint256 proposalId) → uint256 againstVotes, uint256 forVotes, uint256 abstainVotes++` [.item-kind]#public#
- Accessor to the internal vote counts.
- [.contract-item]
- [[GovernorCountingOverridable-_quorumReached-uint256-]]
- ==== `[.contract-item-name]#++_quorumReached++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- Amount of votes already cast passes the threshold limit.
- [.contract-item]
- [[GovernorCountingOverridable-_voteSucceeded-uint256-]]
- ==== `[.contract-item-name]#++_voteSucceeded++#++(uint256 proposalId) → bool++` [.item-kind]#internal#
- See {Governor-_voteSucceeded}. In this module, the forVotes must be strictly over the againstVotes.
- [.contract-item]
- [[GovernorCountingOverridable-_countVote-uint256-address-uint8-uint256-bytes-]]
- ==== `[.contract-item-name]#++_countVote++#++(uint256 proposalId, address account, uint8 support, uint256 totalWeight, bytes) → uint256++` [.item-kind]#internal#
- See {Governor-_countVote}. In this module, the support follows the `VoteType` enum (from Governor Bravo).
- NOTE: called by {Governor-_castVote} which emits the {IGovernor-VoteCast} (or {IGovernor-VoteCastWithParams})
- event.
- [.contract-item]
- [[GovernorCountingOverridable-_countOverride-uint256-address-uint8-]]
- ==== `[.contract-item-name]#++_countOverride++#++(uint256 proposalId, address account, uint8 support) → uint256++` [.item-kind]#internal#
- Variant of {Governor-_countVote} that deals with vote overrides.
- NOTE: See {hasVoted} for more details about the difference between {castVote} and {castOverrideVote}.
- [.contract-item]
- [[GovernorCountingOverridable-_castOverride-uint256-address-uint8-string-]]
- ==== `[.contract-item-name]#++_castOverride++#++(uint256 proposalId, address account, uint8 support, string reason) → uint256++` [.item-kind]#internal#
- Variant of {Governor-_castVote} that deals with vote overrides. Returns the overridden weight.
- [.contract-item]
- [[GovernorCountingOverridable-castOverrideVote-uint256-uint8-string-]]
- ==== `[.contract-item-name]#++castOverrideVote++#++(uint256 proposalId, uint8 support, string reason) → uint256++` [.item-kind]#public#
- Public function for casting an override vote. Returns the overridden weight.
- [.contract-item]
- [[GovernorCountingOverridable-castOverrideVoteBySig-uint256-uint8-address-string-bytes-]]
- ==== `[.contract-item-name]#++castOverrideVoteBySig++#++(uint256 proposalId, uint8 support, address voter, string reason, bytes signature) → uint256++` [.item-kind]#public#
- Public function for casting an override vote using a voter's signature. Returns the overridden weight.
- [.contract-item]
- [[GovernorCountingOverridable-OVERRIDE_BALLOT_TYPEHASH-bytes32]]
- ==== `[.contract-item-name]#++OVERRIDE_BALLOT_TYPEHASH++#++() → bytes32++` [.item-kind]#public#
- [.contract-item]
- [[GovernorCountingOverridable-VoteReduced-address-uint256-uint8-uint256-]]
- ==== `[.contract-item-name]#++VoteReduced++#++(address indexed delegate, uint256 proposalId, uint8 support, uint256 weight)++` [.item-kind]#event#
- The votes casted by `delegate` were reduced by `weight` after an override vote was casted by the original token holder
- [.contract-item]
- [[GovernorCountingOverridable-OverrideVoteCast-address-uint256-uint8-uint256-string-]]
- ==== `[.contract-item-name]#++OverrideVoteCast++#++(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)++` [.item-kind]#event#
- A delegated vote on `proposalId` was overridden by `weight`
- [.contract-item]
- [[GovernorCountingOverridable-GovernorAlreadyOverriddenVote-address-]]
- ==== `[.contract-item-name]#++GovernorAlreadyOverriddenVote++#++(address account)++` [.item-kind]#error#
- :constructor: pass:normal[xref:#GovernorVotes-constructor-contract-IVotes-[`++constructor++`]]
- :token: pass:normal[xref:#GovernorVotes-token--[`++token++`]]
- :clock: pass:normal[xref:#GovernorVotes-clock--[`++clock++`]]
- :CLOCK_MODE: pass:normal[xref:#GovernorVotes-CLOCK_MODE--[`++CLOCK_MODE++`]]
- :_getVotes: pass:normal[xref:#GovernorVotes-_getVotes-address-uint256-bytes-[`++_getVotes++`]]
- :constructor-contract-IVotes: pass:normal[xref:#GovernorVotes-constructor-contract-IVotes-[`++constructor++`]]
- :token-: pass:normal[xref:#GovernorVotes-token--[`++token++`]]
- :clock-: pass:normal[xref:#GovernorVotes-clock--[`++clock++`]]
- :CLOCK_MODE-: pass:normal[xref:#GovernorVotes-CLOCK_MODE--[`++CLOCK_MODE++`]]
- :_getVotes-address-uint256-bytes: pass:normal[xref:#GovernorVotes-_getVotes-address-uint256-bytes-[`++_getVotes++`]]
- [.contract]
- [[GovernorVotes]]
- === `++GovernorVotes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorVotes.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";
- ```
- Extension of {Governor} for voting weight extraction from an {ERC20Votes} token, or since v4.5 an {ERC721Votes}
- token.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorVotes-constructor-contract-IVotes-}[`++constructor(tokenAddress)++`]
- * {xref-GovernorVotes-token--}[`++token()++`]
- * {xref-GovernorVotes-clock--}[`++clock()++`]
- * {xref-GovernorVotes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-GovernorVotes-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, )++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorVotes-constructor-contract-IVotes-]]
- ==== `[.contract-item-name]#++constructor++#++(contract IVotes tokenAddress)++` [.item-kind]#internal#
- [.contract-item]
- [[GovernorVotes-token--]]
- ==== `[.contract-item-name]#++token++#++() → contract IERC5805++` [.item-kind]#public#
- The token that voting power is sourced from.
- [.contract-item]
- [[GovernorVotes-clock--]]
- ==== `[.contract-item-name]#++clock++#++() → uint48++` [.item-kind]#public#
- Clock (as specified in ERC-6372) is set to match the token's clock. Fallback to block numbers if the token
- does not implement ERC-6372.
- [.contract-item]
- [[GovernorVotes-CLOCK_MODE--]]
- ==== `[.contract-item-name]#++CLOCK_MODE++#++() → string++` [.item-kind]#public#
- Machine-readable description of the clock as specified in ERC-6372.
- [.contract-item]
- [[GovernorVotes-_getVotes-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++_getVotes++#++(address account, uint256 timepoint, bytes) → uint256++` [.item-kind]#internal#
- :QuorumNumeratorUpdated: pass:normal[xref:#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-[`++QuorumNumeratorUpdated++`]]
- :GovernorInvalidQuorumFraction: pass:normal[xref:#GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-[`++GovernorInvalidQuorumFraction++`]]
- :constructor: pass:normal[xref:#GovernorVotesQuorumFraction-constructor-uint256-[`++constructor++`]]
- :quorumNumerator: pass:normal[xref:#GovernorVotesQuorumFraction-quorumNumerator--[`++quorumNumerator++`]]
- :quorumNumerator: pass:normal[xref:#GovernorVotesQuorumFraction-quorumNumerator-uint256-[`++quorumNumerator++`]]
- :quorumDenominator: pass:normal[xref:#GovernorVotesQuorumFraction-quorumDenominator--[`++quorumDenominator++`]]
- :quorum: pass:normal[xref:#GovernorVotesQuorumFraction-quorum-uint256-[`++quorum++`]]
- :updateQuorumNumerator: pass:normal[xref:#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-[`++updateQuorumNumerator++`]]
- :_updateQuorumNumerator: pass:normal[xref:#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`++_updateQuorumNumerator++`]]
- :_optimisticUpperLookupRecent: pass:normal[xref:#GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-[`++_optimisticUpperLookupRecent++`]]
- :constructor-uint256: pass:normal[xref:#GovernorVotesQuorumFraction-constructor-uint256-[`++constructor++`]]
- :quorumNumerator-: pass:normal[xref:#GovernorVotesQuorumFraction-quorumNumerator--[`++quorumNumerator++`]]
- :quorumNumerator-uint256: pass:normal[xref:#GovernorVotesQuorumFraction-quorumNumerator-uint256-[`++quorumNumerator++`]]
- :quorumDenominator-: pass:normal[xref:#GovernorVotesQuorumFraction-quorumDenominator--[`++quorumDenominator++`]]
- :quorum-uint256: pass:normal[xref:#GovernorVotesQuorumFraction-quorum-uint256-[`++quorum++`]]
- :updateQuorumNumerator-uint256: pass:normal[xref:#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-[`++updateQuorumNumerator++`]]
- :_updateQuorumNumerator-uint256: pass:normal[xref:#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`++_updateQuorumNumerator++`]]
- :_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256: pass:normal[xref:#GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-[`++_optimisticUpperLookupRecent++`]]
- [.contract]
- [[GovernorVotesQuorumFraction]]
- === `++GovernorVotesQuorumFraction++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorVotesQuorumFraction.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";
- ```
- Extension of {Governor} for voting weight extraction from an {ERC20Votes} token and a quorum expressed as a
- fraction of the total supply.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorVotesQuorumFraction-constructor-uint256-}[`++constructor(quorumNumeratorValue)++`]
- * {xref-GovernorVotesQuorumFraction-quorumNumerator--}[`++quorumNumerator()++`]
- * {xref-GovernorVotesQuorumFraction-quorumNumerator-uint256-}[`++quorumNumerator(timepoint)++`]
- * {xref-GovernorVotesQuorumFraction-quorumDenominator--}[`++quorumDenominator()++`]
- * {xref-GovernorVotesQuorumFraction-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-}[`++updateQuorumNumerator(newQuorumNumerator)++`]
- * {xref-GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-}[`++_updateQuorumNumerator(newQuorumNumerator)++`]
- * {xref-GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-}[`++_optimisticUpperLookupRecent(ckpts, timepoint)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- * {xref-GovernorVotes-token--}[`++token()++`]
- * {xref-GovernorVotes-clock--}[`++clock()++`]
- * {xref-GovernorVotes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-GovernorVotes-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, )++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-}[`++QuorumNumeratorUpdated(oldQuorumNumerator, newQuorumNumerator)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- * {xref-GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-}[`++GovernorInvalidQuorumFraction(quorumNumerator, quorumDenominator)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorVotesQuorumFraction-constructor-uint256-]]
- ==== `[.contract-item-name]#++constructor++#++(uint256 quorumNumeratorValue)++` [.item-kind]#internal#
- Initialize quorum as a fraction of the token's total supply.
- The fraction is specified as `numerator / denominator`. By default the denominator is 100, so quorum is
- specified as a percent: a numerator of 10 corresponds to quorum being 10% of total supply. The denominator can be
- customized by overriding {quorumDenominator}.
- [.contract-item]
- [[GovernorVotesQuorumFraction-quorumNumerator--]]
- ==== `[.contract-item-name]#++quorumNumerator++#++() → uint256++` [.item-kind]#public#
- Returns the current quorum numerator. See {quorumDenominator}.
- [.contract-item]
- [[GovernorVotesQuorumFraction-quorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++quorumNumerator++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the quorum numerator at a specific timepoint. See {quorumDenominator}.
- [.contract-item]
- [[GovernorVotesQuorumFraction-quorumDenominator--]]
- ==== `[.contract-item-name]#++quorumDenominator++#++() → uint256++` [.item-kind]#public#
- Returns the quorum denominator. Defaults to 100, but may be overridden.
- [.contract-item]
- [[GovernorVotesQuorumFraction-quorum-uint256-]]
- ==== `[.contract-item-name]#++quorum++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the quorum for a timepoint, in terms of number of votes: `supply * numerator / denominator`.
- [.contract-item]
- [[GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++updateQuorumNumerator++#++(uint256 newQuorumNumerator)++` [.item-kind]#external#
- Changes the quorum numerator.
- Emits a {QuorumNumeratorUpdated} event.
- Requirements:
- - Must be called through a governance proposal.
- - New numerator must be smaller or equal to the denominator.
- [.contract-item]
- [[GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++_updateQuorumNumerator++#++(uint256 newQuorumNumerator)++` [.item-kind]#internal#
- Changes the quorum numerator.
- Emits a {QuorumNumeratorUpdated} event.
- Requirements:
- - New numerator must be smaller or equal to the denominator.
- [.contract-item]
- [[GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-]]
- ==== `[.contract-item-name]#++_optimisticUpperLookupRecent++#++(struct Checkpoints.Trace208 ckpts, uint256 timepoint) → uint256++` [.item-kind]#internal#
- Returns the numerator at a specific timepoint.
- [.contract-item]
- [[GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-]]
- ==== `[.contract-item-name]#++QuorumNumeratorUpdated++#++(uint256 oldQuorumNumerator, uint256 newQuorumNumerator)++` [.item-kind]#event#
- [.contract-item]
- [[GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorInvalidQuorumFraction++#++(uint256 quorumNumerator, uint256 quorumDenominator)++` [.item-kind]#error#
- The quorum set is not a valid fraction.
- :SuperQuorumNumeratorUpdated: pass:normal[xref:#GovernorVotesSuperQuorumFraction-SuperQuorumNumeratorUpdated-uint256-uint256-[`++SuperQuorumNumeratorUpdated++`]]
- :GovernorInvalidSuperQuorumFraction: pass:normal[xref:#GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumFraction-uint256-uint256-[`++GovernorInvalidSuperQuorumFraction++`]]
- :GovernorInvalidSuperQuorumTooSmall: pass:normal[xref:#GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumTooSmall-uint256-uint256-[`++GovernorInvalidSuperQuorumTooSmall++`]]
- :GovernorInvalidQuorumTooLarge: pass:normal[xref:#GovernorVotesSuperQuorumFraction-GovernorInvalidQuorumTooLarge-uint256-uint256-[`++GovernorInvalidQuorumTooLarge++`]]
- :constructor: pass:normal[xref:#GovernorVotesSuperQuorumFraction-constructor-uint256-[`++constructor++`]]
- :superQuorumNumerator: pass:normal[xref:#GovernorVotesSuperQuorumFraction-superQuorumNumerator--[`++superQuorumNumerator++`]]
- :superQuorumNumerator: pass:normal[xref:#GovernorVotesSuperQuorumFraction-superQuorumNumerator-uint256-[`++superQuorumNumerator++`]]
- :superQuorum: pass:normal[xref:#GovernorVotesSuperQuorumFraction-superQuorum-uint256-[`++superQuorum++`]]
- :updateSuperQuorumNumerator: pass:normal[xref:#GovernorVotesSuperQuorumFraction-updateSuperQuorumNumerator-uint256-[`++updateSuperQuorumNumerator++`]]
- :_updateSuperQuorumNumerator: pass:normal[xref:#GovernorVotesSuperQuorumFraction-_updateSuperQuorumNumerator-uint256-[`++_updateSuperQuorumNumerator++`]]
- :_updateQuorumNumerator: pass:normal[xref:#GovernorVotesSuperQuorumFraction-_updateQuorumNumerator-uint256-[`++_updateQuorumNumerator++`]]
- :state: pass:normal[xref:#GovernorVotesSuperQuorumFraction-state-uint256-[`++state++`]]
- :constructor-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-constructor-uint256-[`++constructor++`]]
- :superQuorumNumerator-: pass:normal[xref:#GovernorVotesSuperQuorumFraction-superQuorumNumerator--[`++superQuorumNumerator++`]]
- :superQuorumNumerator-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-superQuorumNumerator-uint256-[`++superQuorumNumerator++`]]
- :superQuorum-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-superQuorum-uint256-[`++superQuorum++`]]
- :updateSuperQuorumNumerator-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-updateSuperQuorumNumerator-uint256-[`++updateSuperQuorumNumerator++`]]
- :_updateSuperQuorumNumerator-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-_updateSuperQuorumNumerator-uint256-[`++_updateSuperQuorumNumerator++`]]
- :_updateQuorumNumerator-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-_updateQuorumNumerator-uint256-[`++_updateQuorumNumerator++`]]
- :state-uint256: pass:normal[xref:#GovernorVotesSuperQuorumFraction-state-uint256-[`++state++`]]
- [.contract]
- [[GovernorVotesSuperQuorumFraction]]
- === `++GovernorVotesSuperQuorumFraction++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol";
- ```
- Extension of {GovernorVotesQuorumFraction} with a super quorum expressed as a
- fraction of the total supply. Proposals that meet the super quorum (and have a majority of for votes) advance to
- the `Succeeded` state before the proposal deadline.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorVotesSuperQuorumFraction-constructor-uint256-}[`++constructor(superQuorumNumeratorValue)++`]
- * {xref-GovernorVotesSuperQuorumFraction-superQuorumNumerator--}[`++superQuorumNumerator()++`]
- * {xref-GovernorVotesSuperQuorumFraction-superQuorumNumerator-uint256-}[`++superQuorumNumerator(timepoint)++`]
- * {xref-GovernorVotesSuperQuorumFraction-superQuorum-uint256-}[`++superQuorum(timepoint)++`]
- * {xref-GovernorVotesSuperQuorumFraction-updateSuperQuorumNumerator-uint256-}[`++updateSuperQuorumNumerator(newSuperQuorumNumerator)++`]
- * {xref-GovernorVotesSuperQuorumFraction-_updateSuperQuorumNumerator-uint256-}[`++_updateSuperQuorumNumerator(newSuperQuorumNumerator)++`]
- * {xref-GovernorVotesSuperQuorumFraction-_updateQuorumNumerator-uint256-}[`++_updateQuorumNumerator(newQuorumNumerator)++`]
- * {xref-GovernorVotesSuperQuorumFraction-state-uint256-}[`++state(proposalId)++`]
- [.contract-subindex-inherited]
- .GovernorSuperQuorum
- * {xref-GovernorSuperQuorum-proposalVotes-uint256-}[`++proposalVotes(proposalId)++`]
- [.contract-subindex-inherited]
- .GovernorVotesQuorumFraction
- * {xref-GovernorVotesQuorumFraction-quorumNumerator--}[`++quorumNumerator()++`]
- * {xref-GovernorVotesQuorumFraction-quorumNumerator-uint256-}[`++quorumNumerator(timepoint)++`]
- * {xref-GovernorVotesQuorumFraction-quorumDenominator--}[`++quorumDenominator()++`]
- * {xref-GovernorVotesQuorumFraction-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-}[`++updateQuorumNumerator(newQuorumNumerator)++`]
- * {xref-GovernorVotesQuorumFraction-_optimisticUpperLookupRecent-struct-Checkpoints-Trace208-uint256-}[`++_optimisticUpperLookupRecent(ckpts, timepoint)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- * {xref-GovernorVotes-token--}[`++token()++`]
- * {xref-GovernorVotes-clock--}[`++clock()++`]
- * {xref-GovernorVotes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-GovernorVotes-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, )++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorVotesSuperQuorumFraction-SuperQuorumNumeratorUpdated-uint256-uint256-}[`++SuperQuorumNumeratorUpdated(oldSuperQuorumNumerator, newSuperQuorumNumerator)++`]
- [.contract-subindex-inherited]
- .GovernorSuperQuorum
- [.contract-subindex-inherited]
- .GovernorVotesQuorumFraction
- * {xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-}[`++QuorumNumeratorUpdated(oldQuorumNumerator, newQuorumNumerator)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- * {xref-GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumFraction-uint256-uint256-}[`++GovernorInvalidSuperQuorumFraction(superQuorumNumerator, denominator)++`]
- * {xref-GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumTooSmall-uint256-uint256-}[`++GovernorInvalidSuperQuorumTooSmall(superQuorumNumerator, quorumNumerator)++`]
- * {xref-GovernorVotesSuperQuorumFraction-GovernorInvalidQuorumTooLarge-uint256-uint256-}[`++GovernorInvalidQuorumTooLarge(quorumNumerator, superQuorumNumerator)++`]
- [.contract-subindex-inherited]
- .GovernorSuperQuorum
- [.contract-subindex-inherited]
- .GovernorVotesQuorumFraction
- * {xref-GovernorVotesQuorumFraction-GovernorInvalidQuorumFraction-uint256-uint256-}[`++GovernorInvalidQuorumFraction(quorumNumerator, quorumDenominator)++`]
- [.contract-subindex-inherited]
- .GovernorVotes
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-constructor-uint256-]]
- ==== `[.contract-item-name]#++constructor++#++(uint256 superQuorumNumeratorValue)++` [.item-kind]#internal#
- Initialize super quorum as a fraction of the token's total supply.
- The super quorum is specified as a fraction of the token's total supply and has to
- be greater than the quorum.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-superQuorumNumerator--]]
- ==== `[.contract-item-name]#++superQuorumNumerator++#++() → uint256++` [.item-kind]#public#
- Returns the current super quorum numerator.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-superQuorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++superQuorumNumerator++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the super quorum numerator at a specific `timepoint`.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-superQuorum-uint256-]]
- ==== `[.contract-item-name]#++superQuorum++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the super quorum for a `timepoint`, in terms of number of votes: `supply * numerator / denominator`.
- See {GovernorSuperQuorum-superQuorum} for more details.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-updateSuperQuorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++updateSuperQuorumNumerator++#++(uint256 newSuperQuorumNumerator)++` [.item-kind]#public#
- Changes the super quorum numerator.
- Emits a {SuperQuorumNumeratorUpdated} event.
- Requirements:
- - Must be called through a governance proposal.
- - New super quorum numerator must be smaller or equal to the denominator.
- - New super quorum numerator must be greater than or equal to the quorum numerator.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-_updateSuperQuorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++_updateSuperQuorumNumerator++#++(uint256 newSuperQuorumNumerator)++` [.item-kind]#internal#
- Changes the super quorum numerator.
- Emits a {SuperQuorumNumeratorUpdated} event.
- Requirements:
- - New super quorum numerator must be smaller or equal to the denominator.
- - New super quorum numerator must be greater than or equal to the quorum numerator.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-_updateQuorumNumerator-uint256-]]
- ==== `[.contract-item-name]#++_updateQuorumNumerator++#++(uint256 newQuorumNumerator)++` [.item-kind]#internal#
- Overrides {GovernorVotesQuorumFraction-_updateQuorumNumerator} to ensure the super
- quorum numerator is greater than or equal to the quorum numerator.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-state-uint256-]]
- ==== `[.contract-item-name]#++state++#++(uint256 proposalId) → enum IGovernor.ProposalState++` [.item-kind]#public#
- Overridden version of the {Governor-state} function that checks if the proposal has reached the super
- quorum.
- NOTE: If the proposal reaches super quorum but {_voteSucceeded} returns false, eg, assuming the super quorum
- has been set low enough that both FOR and AGAINST votes have exceeded it and AGAINST votes exceed FOR votes,
- the proposal continues to be active until {_voteSucceeded} returns true or the proposal deadline is reached.
- This means that with a low super quorum it is also possible that a vote can succeed prematurely before enough
- AGAINST voters have a chance to vote. Hence, it is recommended to set a high enough super quorum to avoid these
- types of scenarios.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-SuperQuorumNumeratorUpdated-uint256-uint256-]]
- ==== `[.contract-item-name]#++SuperQuorumNumeratorUpdated++#++(uint256 oldSuperQuorumNumerator, uint256 newSuperQuorumNumerator)++` [.item-kind]#event#
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumFraction-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorInvalidSuperQuorumFraction++#++(uint256 superQuorumNumerator, uint256 denominator)++` [.item-kind]#error#
- The super quorum set is not valid as it exceeds the quorum denominator.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-GovernorInvalidSuperQuorumTooSmall-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorInvalidSuperQuorumTooSmall++#++(uint256 superQuorumNumerator, uint256 quorumNumerator)++` [.item-kind]#error#
- The super quorum set is not valid as it is smaller or equal to the quorum.
- [.contract-item]
- [[GovernorVotesSuperQuorumFraction-GovernorInvalidQuorumTooLarge-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorInvalidQuorumTooLarge++#++(uint256 quorumNumerator, uint256 superQuorumNumerator)++` [.item-kind]#error#
- The quorum set is not valid as it exceeds the super quorum.
- === Extensions
- :ExecutionPlan: pass:normal[xref:#GovernorTimelockAccess-ExecutionPlan[`++ExecutionPlan++`]]
- :GovernorUnmetDelay: pass:normal[xref:#GovernorTimelockAccess-GovernorUnmetDelay-uint256-uint256-[`++GovernorUnmetDelay++`]]
- :GovernorMismatchedNonce: pass:normal[xref:#GovernorTimelockAccess-GovernorMismatchedNonce-uint256-uint256-uint256-[`++GovernorMismatchedNonce++`]]
- :GovernorLockedIgnore: pass:normal[xref:#GovernorTimelockAccess-GovernorLockedIgnore--[`++GovernorLockedIgnore++`]]
- :BaseDelaySet: pass:normal[xref:#GovernorTimelockAccess-BaseDelaySet-uint32-uint32-[`++BaseDelaySet++`]]
- :AccessManagerIgnoredSet: pass:normal[xref:#GovernorTimelockAccess-AccessManagerIgnoredSet-address-bytes4-bool-[`++AccessManagerIgnoredSet++`]]
- :constructor: pass:normal[xref:#GovernorTimelockAccess-constructor-address-uint32-[`++constructor++`]]
- :accessManager: pass:normal[xref:#GovernorTimelockAccess-accessManager--[`++accessManager++`]]
- :baseDelaySeconds: pass:normal[xref:#GovernorTimelockAccess-baseDelaySeconds--[`++baseDelaySeconds++`]]
- :setBaseDelaySeconds: pass:normal[xref:#GovernorTimelockAccess-setBaseDelaySeconds-uint32-[`++setBaseDelaySeconds++`]]
- :_setBaseDelaySeconds: pass:normal[xref:#GovernorTimelockAccess-_setBaseDelaySeconds-uint32-[`++_setBaseDelaySeconds++`]]
- :isAccessManagerIgnored: pass:normal[xref:#GovernorTimelockAccess-isAccessManagerIgnored-address-bytes4-[`++isAccessManagerIgnored++`]]
- :setAccessManagerIgnored: pass:normal[xref:#GovernorTimelockAccess-setAccessManagerIgnored-address-bytes4---bool-[`++setAccessManagerIgnored++`]]
- :_setAccessManagerIgnored: pass:normal[xref:#GovernorTimelockAccess-_setAccessManagerIgnored-address-bytes4-bool-[`++_setAccessManagerIgnored++`]]
- :proposalExecutionPlan: pass:normal[xref:#GovernorTimelockAccess-proposalExecutionPlan-uint256-[`++proposalExecutionPlan++`]]
- :proposalNeedsQueuing: pass:normal[xref:#GovernorTimelockAccess-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :propose: pass:normal[xref:#GovernorTimelockAccess-propose-address---uint256---bytes---string-[`++propose++`]]
- :_queueOperations: pass:normal[xref:#GovernorTimelockAccess-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :_executeOperations: pass:normal[xref:#GovernorTimelockAccess-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :_cancel: pass:normal[xref:#GovernorTimelockAccess-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :constructor-address-uint32: pass:normal[xref:#GovernorTimelockAccess-constructor-address-uint32-[`++constructor++`]]
- :accessManager-: pass:normal[xref:#GovernorTimelockAccess-accessManager--[`++accessManager++`]]
- :baseDelaySeconds-: pass:normal[xref:#GovernorTimelockAccess-baseDelaySeconds--[`++baseDelaySeconds++`]]
- :setBaseDelaySeconds-uint32: pass:normal[xref:#GovernorTimelockAccess-setBaseDelaySeconds-uint32-[`++setBaseDelaySeconds++`]]
- :_setBaseDelaySeconds-uint32: pass:normal[xref:#GovernorTimelockAccess-_setBaseDelaySeconds-uint32-[`++_setBaseDelaySeconds++`]]
- :isAccessManagerIgnored-address-bytes4: pass:normal[xref:#GovernorTimelockAccess-isAccessManagerIgnored-address-bytes4-[`++isAccessManagerIgnored++`]]
- :setAccessManagerIgnored-address-bytes4---bool: pass:normal[xref:#GovernorTimelockAccess-setAccessManagerIgnored-address-bytes4---bool-[`++setAccessManagerIgnored++`]]
- :_setAccessManagerIgnored-address-bytes4-bool: pass:normal[xref:#GovernorTimelockAccess-_setAccessManagerIgnored-address-bytes4-bool-[`++_setAccessManagerIgnored++`]]
- :proposalExecutionPlan-uint256: pass:normal[xref:#GovernorTimelockAccess-proposalExecutionPlan-uint256-[`++proposalExecutionPlan++`]]
- :proposalNeedsQueuing-uint256: pass:normal[xref:#GovernorTimelockAccess-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :propose-address---uint256---bytes---string: pass:normal[xref:#GovernorTimelockAccess-propose-address---uint256---bytes---string-[`++propose++`]]
- :_queueOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockAccess-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :_executeOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockAccess-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :_cancel-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockAccess-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- [.contract]
- [[GovernorTimelockAccess]]
- === `++GovernorTimelockAccess++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorTimelockAccess.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorTimelockAccess.sol";
- ```
- This module connects a {Governor} instance to an {AccessManager} instance, allowing the governor to make calls
- that are delay-restricted by the manager using the normal {queue} workflow. An optional base delay is applied to
- operations that are not delayed externally by the manager. Execution of a proposal will be delayed as much as
- necessary to meet the required delays of all of its operations.
- This extension allows the governor to hold and use its own assets and permissions, unlike {GovernorTimelockControl}
- and {GovernorTimelockCompound}, where the timelock is a separate contract that must be the one to hold assets and
- permissions. Operations that are delay-restricted by the manager, however, will be executed through the
- {AccessManager-execute} function.
- ==== Security Considerations
- Some operations may be cancelable in the `AccessManager` by the admin or a set of guardians, depending on the
- restricted function being invoked. Since proposals are atomic, the cancellation by a guardian of a single operation
- in a proposal will cause all of the proposal to become unable to execute. Consider proposing cancellable operations
- separately.
- By default, function calls will be routed through the associated `AccessManager` whenever it claims the target
- function to be restricted by it. However, admins may configure the manager to make that claim for functions that a
- governor would want to call directly (e.g., token transfers) in an attempt to deny it access to those functions. To
- mitigate this attack vector, the governor is able to ignore the restrictions claimed by the `AccessManager` using
- {setAccessManagerIgnored}. While permanent denial of service is mitigated, temporary DoS may still be technically
- possible. All of the governor's own functions (e.g., {setBaseDelaySeconds}) ignore the `AccessManager` by default.
- NOTE: `AccessManager` does not support scheduling more than one operation with the same target and calldata at
- the same time. See {AccessManager-schedule} for a workaround.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorTimelockAccess-constructor-address-uint32-}[`++constructor(manager, initialBaseDelay)++`]
- * {xref-GovernorTimelockAccess-accessManager--}[`++accessManager()++`]
- * {xref-GovernorTimelockAccess-baseDelaySeconds--}[`++baseDelaySeconds()++`]
- * {xref-GovernorTimelockAccess-setBaseDelaySeconds-uint32-}[`++setBaseDelaySeconds(newBaseDelay)++`]
- * {xref-GovernorTimelockAccess-_setBaseDelaySeconds-uint32-}[`++_setBaseDelaySeconds(newBaseDelay)++`]
- * {xref-GovernorTimelockAccess-isAccessManagerIgnored-address-bytes4-}[`++isAccessManagerIgnored(target, selector)++`]
- * {xref-GovernorTimelockAccess-setAccessManagerIgnored-address-bytes4---bool-}[`++setAccessManagerIgnored(target, selectors, ignored)++`]
- * {xref-GovernorTimelockAccess-_setAccessManagerIgnored-address-bytes4-bool-}[`++_setAccessManagerIgnored(target, selector, ignored)++`]
- * {xref-GovernorTimelockAccess-proposalExecutionPlan-uint256-}[`++proposalExecutionPlan(proposalId)++`]
- * {xref-GovernorTimelockAccess-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing(proposalId)++`]
- * {xref-GovernorTimelockAccess-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-GovernorTimelockAccess-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(proposalId, targets, , calldatas, )++`]
- * {xref-GovernorTimelockAccess-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(proposalId, targets, values, calldatas, )++`]
- * {xref-GovernorTimelockAccess-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorTimelockAccess-BaseDelaySet-uint32-uint32-}[`++BaseDelaySet(oldBaseDelaySeconds, newBaseDelaySeconds)++`]
- * {xref-GovernorTimelockAccess-AccessManagerIgnoredSet-address-bytes4-bool-}[`++AccessManagerIgnoredSet(target, selector, ignored)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- * {xref-GovernorTimelockAccess-GovernorUnmetDelay-uint256-uint256-}[`++GovernorUnmetDelay(proposalId, neededTimestamp)++`]
- * {xref-GovernorTimelockAccess-GovernorMismatchedNonce-uint256-uint256-uint256-}[`++GovernorMismatchedNonce(proposalId, expectedNonce, actualNonce)++`]
- * {xref-GovernorTimelockAccess-GovernorLockedIgnore--}[`++GovernorLockedIgnore()++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorTimelockAccess-constructor-address-uint32-]]
- ==== `[.contract-item-name]#++constructor++#++(address manager, uint32 initialBaseDelay)++` [.item-kind]#internal#
- Initialize the governor with an {AccessManager} and initial base delay.
- [.contract-item]
- [[GovernorTimelockAccess-accessManager--]]
- ==== `[.contract-item-name]#++accessManager++#++() → contract IAccessManager++` [.item-kind]#public#
- Returns the {AccessManager} instance associated to this governor.
- [.contract-item]
- [[GovernorTimelockAccess-baseDelaySeconds--]]
- ==== `[.contract-item-name]#++baseDelaySeconds++#++() → uint32++` [.item-kind]#public#
- Base delay that will be applied to all function calls. Some may be further delayed by their associated
- `AccessManager` authority; in this case the final delay will be the maximum of the base delay and the one
- demanded by the authority.
- NOTE: Execution delays are processed by the `AccessManager` contracts, and according to that contract are
- expressed in seconds. Therefore, the base delay is also in seconds, regardless of the governor's clock mode.
- [.contract-item]
- [[GovernorTimelockAccess-setBaseDelaySeconds-uint32-]]
- ==== `[.contract-item-name]#++setBaseDelaySeconds++#++(uint32 newBaseDelay)++` [.item-kind]#public#
- Change the value of {baseDelaySeconds}. This operation can only be invoked through a governance proposal.
- [.contract-item]
- [[GovernorTimelockAccess-_setBaseDelaySeconds-uint32-]]
- ==== `[.contract-item-name]#++_setBaseDelaySeconds++#++(uint32 newBaseDelay)++` [.item-kind]#internal#
- Change the value of {baseDelaySeconds}. Internal function without access control.
- [.contract-item]
- [[GovernorTimelockAccess-isAccessManagerIgnored-address-bytes4-]]
- ==== `[.contract-item-name]#++isAccessManagerIgnored++#++(address target, bytes4 selector) → bool++` [.item-kind]#public#
- Check if restrictions from the associated {AccessManager} are ignored for a target function. Returns true
- when the target function will be invoked directly regardless of `AccessManager` settings for the function.
- See {setAccessManagerIgnored} and Security Considerations above.
- [.contract-item]
- [[GovernorTimelockAccess-setAccessManagerIgnored-address-bytes4---bool-]]
- ==== `[.contract-item-name]#++setAccessManagerIgnored++#++(address target, bytes4[] selectors, bool ignored)++` [.item-kind]#public#
- Configure whether restrictions from the associated {AccessManager} are ignored for a target function.
- See Security Considerations above.
- [.contract-item]
- [[GovernorTimelockAccess-_setAccessManagerIgnored-address-bytes4-bool-]]
- ==== `[.contract-item-name]#++_setAccessManagerIgnored++#++(address target, bytes4 selector, bool ignored)++` [.item-kind]#internal#
- Internal version of {setAccessManagerIgnored} without access restriction.
- [.contract-item]
- [[GovernorTimelockAccess-proposalExecutionPlan-uint256-]]
- ==== `[.contract-item-name]#++proposalExecutionPlan++#++(uint256 proposalId) → uint32 delay, bool[] indirect, bool[] withDelay++` [.item-kind]#public#
- Public accessor to check the execution plan, including the number of seconds that the proposal will be
- delayed since queuing, an array indicating which of the proposal actions will be executed indirectly through
- the associated {AccessManager}, and another indicating which will be scheduled in {queue}. Note that
- those that must be scheduled are cancellable by `AccessManager` guardians.
- [.contract-item]
- [[GovernorTimelockAccess-proposalNeedsQueuing-uint256-]]
- ==== `[.contract-item-name]#++proposalNeedsQueuing++#++(uint256 proposalId) → bool++` [.item-kind]#public#
- [.contract-item]
- [[GovernorTimelockAccess-propose-address---uint256---bytes---string-]]
- ==== `[.contract-item-name]#++propose++#++(address[] targets, uint256[] values, bytes[] calldatas, string description) → uint256++` [.item-kind]#public#
- [.contract-item]
- [[GovernorTimelockAccess-_queueOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_queueOperations++#++(uint256 proposalId, address[] targets, uint256[], bytes[] calldatas, bytes32) → uint48++` [.item-kind]#internal#
- Mechanism to queue a proposal, potentially scheduling some of its operations in the AccessManager.
- NOTE: The execution delay is chosen based on the delay information retrieved in {propose}. This value may be
- off if the delay was updated since proposal creation. In this case, the proposal needs to be recreated.
- [.contract-item]
- [[GovernorTimelockAccess-_executeOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_executeOperations++#++(uint256 proposalId, address[] targets, uint256[] values, bytes[] calldatas, bytes32)++` [.item-kind]#internal#
- Mechanism to execute a proposal, potentially going through {AccessManager-execute} for delayed operations.
- [.contract-item]
- [[GovernorTimelockAccess-_cancel-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_cancel++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#internal#
- Internal cancel mechanism with minimal restrictions. A proposal can be cancelled in any state other than
- Canceled, Expired, or Executed. Once cancelled a proposal can't be re-submitted.
- Emits a {IGovernor-ProposalCanceled} event.
- [.contract-item]
- [[GovernorTimelockAccess-BaseDelaySet-uint32-uint32-]]
- ==== `[.contract-item-name]#++BaseDelaySet++#++(uint32 oldBaseDelaySeconds, uint32 newBaseDelaySeconds)++` [.item-kind]#event#
- [.contract-item]
- [[GovernorTimelockAccess-AccessManagerIgnoredSet-address-bytes4-bool-]]
- ==== `[.contract-item-name]#++AccessManagerIgnoredSet++#++(address target, bytes4 selector, bool ignored)++` [.item-kind]#event#
- [.contract-item]
- [[GovernorTimelockAccess-GovernorUnmetDelay-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorUnmetDelay++#++(uint256 proposalId, uint256 neededTimestamp)++` [.item-kind]#error#
- [.contract-item]
- [[GovernorTimelockAccess-GovernorMismatchedNonce-uint256-uint256-uint256-]]
- ==== `[.contract-item-name]#++GovernorMismatchedNonce++#++(uint256 proposalId, uint256 expectedNonce, uint256 actualNonce)++` [.item-kind]#error#
- [.contract-item]
- [[GovernorTimelockAccess-GovernorLockedIgnore--]]
- ==== `[.contract-item-name]#++GovernorLockedIgnore++#++()++` [.item-kind]#error#
- :TimelockChange: pass:normal[xref:#GovernorTimelockControl-TimelockChange-address-address-[`++TimelockChange++`]]
- :constructor: pass:normal[xref:#GovernorTimelockControl-constructor-contract-TimelockController-[`++constructor++`]]
- :state: pass:normal[xref:#GovernorTimelockControl-state-uint256-[`++state++`]]
- :timelock: pass:normal[xref:#GovernorTimelockControl-timelock--[`++timelock++`]]
- :proposalNeedsQueuing: pass:normal[xref:#GovernorTimelockControl-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :_queueOperations: pass:normal[xref:#GovernorTimelockControl-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :_executeOperations: pass:normal[xref:#GovernorTimelockControl-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :_cancel: pass:normal[xref:#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :_executor: pass:normal[xref:#GovernorTimelockControl-_executor--[`++_executor++`]]
- :updateTimelock: pass:normal[xref:#GovernorTimelockControl-updateTimelock-contract-TimelockController-[`++updateTimelock++`]]
- :constructor-contract-TimelockController: pass:normal[xref:#GovernorTimelockControl-constructor-contract-TimelockController-[`++constructor++`]]
- :state-uint256: pass:normal[xref:#GovernorTimelockControl-state-uint256-[`++state++`]]
- :timelock-: pass:normal[xref:#GovernorTimelockControl-timelock--[`++timelock++`]]
- :proposalNeedsQueuing-uint256: pass:normal[xref:#GovernorTimelockControl-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :_queueOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockControl-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :_executeOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockControl-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :_cancel-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :_executor-: pass:normal[xref:#GovernorTimelockControl-_executor--[`++_executor++`]]
- :updateTimelock-contract-TimelockController: pass:normal[xref:#GovernorTimelockControl-updateTimelock-contract-TimelockController-[`++updateTimelock++`]]
- [.contract]
- [[GovernorTimelockControl]]
- === `++GovernorTimelockControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorTimelockControl.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";
- ```
- Extension of {Governor} that binds the execution process to an instance of {TimelockController}. This adds a
- delay, enforced by the {TimelockController} to all successful proposal (in addition to the voting duration). The
- {Governor} needs the proposer (and ideally the executor and canceller) roles for the {Governor} to work properly.
- Using this model means the proposal will be operated by the {TimelockController} and not by the {Governor}. Thus,
- the assets and permissions must be attached to the {TimelockController}. Any asset sent to the {Governor} will be
- inaccessible from a proposal, unless executed via {Governor-relay}.
- WARNING: Setting up the TimelockController to have additional proposers or cancelers besides the governor is very
- risky, as it grants them the ability to: 1) execute operations as the timelock, and thus possibly performing
- operations or accessing funds that are expected to only be accessible through a vote, and 2) block governance
- proposals that have been approved by the voters, effectively executing a Denial of Service attack.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorTimelockControl-constructor-contract-TimelockController-}[`++constructor(timelockAddress)++`]
- * {xref-GovernorTimelockControl-state-uint256-}[`++state(proposalId)++`]
- * {xref-GovernorTimelockControl-timelock--}[`++timelock()++`]
- * {xref-GovernorTimelockControl-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-GovernorTimelockControl-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(proposalId, targets, values, calldatas, descriptionHash)++`]
- * {xref-GovernorTimelockControl-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(proposalId, targets, values, calldatas, descriptionHash)++`]
- * {xref-GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-GovernorTimelockControl-_executor--}[`++_executor()++`]
- * {xref-GovernorTimelockControl-updateTimelock-contract-TimelockController-}[`++updateTimelock(newTimelock)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorTimelockControl-TimelockChange-address-address-}[`++TimelockChange(oldTimelock, newTimelock)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorTimelockControl-constructor-contract-TimelockController-]]
- ==== `[.contract-item-name]#++constructor++#++(contract TimelockController timelockAddress)++` [.item-kind]#internal#
- Set the timelock.
- [.contract-item]
- [[GovernorTimelockControl-state-uint256-]]
- ==== `[.contract-item-name]#++state++#++(uint256 proposalId) → enum IGovernor.ProposalState++` [.item-kind]#public#
- Overridden version of the {Governor-state} function that considers the status reported by the timelock.
- [.contract-item]
- [[GovernorTimelockControl-timelock--]]
- ==== `[.contract-item-name]#++timelock++#++() → address++` [.item-kind]#public#
- Public accessor to check the address of the timelock
- [.contract-item]
- [[GovernorTimelockControl-proposalNeedsQueuing-uint256-]]
- ==== `[.contract-item-name]#++proposalNeedsQueuing++#++(uint256) → bool++` [.item-kind]#public#
- [.contract-item]
- [[GovernorTimelockControl-_queueOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_queueOperations++#++(uint256 proposalId, address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint48++` [.item-kind]#internal#
- Function to queue a proposal to the timelock.
- [.contract-item]
- [[GovernorTimelockControl-_executeOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_executeOperations++#++(uint256 proposalId, address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash)++` [.item-kind]#internal#
- Overridden version of the {Governor-_executeOperations} function that runs the already queued proposal
- through the timelock.
- [.contract-item]
- [[GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_cancel++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#internal#
- Overridden version of the {Governor-_cancel} function to cancel the timelocked proposal if it has already
- been queued.
- [.contract-item]
- [[GovernorTimelockControl-_executor--]]
- ==== `[.contract-item-name]#++_executor++#++() → address++` [.item-kind]#internal#
- Address through which the governor executes action. In this case, the timelock.
- [.contract-item]
- [[GovernorTimelockControl-updateTimelock-contract-TimelockController-]]
- ==== `[.contract-item-name]#++updateTimelock++#++(contract TimelockController newTimelock)++` [.item-kind]#external#
- Public endpoint to update the underlying timelock instance. Restricted to the timelock itself, so updates
- must be proposed, scheduled, and executed through governance proposals.
- CAUTION: It is not recommended to change the timelock while there are other queued governance proposals.
- [.contract-item]
- [[GovernorTimelockControl-TimelockChange-address-address-]]
- ==== `[.contract-item-name]#++TimelockChange++#++(address oldTimelock, address newTimelock)++` [.item-kind]#event#
- Emitted when the timelock controller used for proposal execution is modified.
- :TimelockChange: pass:normal[xref:#GovernorTimelockCompound-TimelockChange-address-address-[`++TimelockChange++`]]
- :constructor: pass:normal[xref:#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-[`++constructor++`]]
- :state: pass:normal[xref:#GovernorTimelockCompound-state-uint256-[`++state++`]]
- :timelock: pass:normal[xref:#GovernorTimelockCompound-timelock--[`++timelock++`]]
- :proposalNeedsQueuing: pass:normal[xref:#GovernorTimelockCompound-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :_queueOperations: pass:normal[xref:#GovernorTimelockCompound-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :_executeOperations: pass:normal[xref:#GovernorTimelockCompound-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :_cancel: pass:normal[xref:#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :_executor: pass:normal[xref:#GovernorTimelockCompound-_executor--[`++_executor++`]]
- :__acceptAdmin: pass:normal[xref:#GovernorTimelockCompound-__acceptAdmin--[`++__acceptAdmin++`]]
- :updateTimelock: pass:normal[xref:#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-[`++updateTimelock++`]]
- :constructor-contract-ICompoundTimelock: pass:normal[xref:#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-[`++constructor++`]]
- :state-uint256: pass:normal[xref:#GovernorTimelockCompound-state-uint256-[`++state++`]]
- :timelock-: pass:normal[xref:#GovernorTimelockCompound-timelock--[`++timelock++`]]
- :proposalNeedsQueuing-uint256: pass:normal[xref:#GovernorTimelockCompound-proposalNeedsQueuing-uint256-[`++proposalNeedsQueuing++`]]
- :_queueOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockCompound-_queueOperations-uint256-address---uint256---bytes---bytes32-[`++_queueOperations++`]]
- :_executeOperations-uint256-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockCompound-_executeOperations-uint256-address---uint256---bytes---bytes32-[`++_executeOperations++`]]
- :_cancel-address---uint256---bytes---bytes32: pass:normal[xref:#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-[`++_cancel++`]]
- :_executor-: pass:normal[xref:#GovernorTimelockCompound-_executor--[`++_executor++`]]
- :__acceptAdmin-: pass:normal[xref:#GovernorTimelockCompound-__acceptAdmin--[`++__acceptAdmin++`]]
- :updateTimelock-contract-ICompoundTimelock: pass:normal[xref:#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-[`++updateTimelock++`]]
- [.contract]
- [[GovernorTimelockCompound]]
- === `++GovernorTimelockCompound++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorTimelockCompound.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorTimelockCompound.sol";
- ```
- Extension of {Governor} that binds the execution process to a Compound Timelock. This adds a delay, enforced by
- the external timelock to all successful proposals (in addition to the voting duration). The {Governor} needs to be
- the admin of the timelock for any operation to be performed. A public, unrestricted,
- {GovernorTimelockCompound-__acceptAdmin} is available to accept ownership of the timelock.
- Using this model means the proposal will be operated by the {TimelockController} and not by the {Governor}. Thus,
- the assets and permissions must be attached to the {TimelockController}. Any asset sent to the {Governor} will be
- inaccessible from a proposal, unless executed via {Governor-relay}.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorTimelockCompound-constructor-contract-ICompoundTimelock-}[`++constructor(timelockAddress)++`]
- * {xref-GovernorTimelockCompound-state-uint256-}[`++state(proposalId)++`]
- * {xref-GovernorTimelockCompound-timelock--}[`++timelock()++`]
- * {xref-GovernorTimelockCompound-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-GovernorTimelockCompound-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(proposalId, targets, values, calldatas, )++`]
- * {xref-GovernorTimelockCompound-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(proposalId, targets, values, calldatas, )++`]
- * {xref-GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-GovernorTimelockCompound-_executor--}[`++_executor()++`]
- * {xref-GovernorTimelockCompound-__acceptAdmin--}[`++__acceptAdmin()++`]
- * {xref-GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-}[`++updateTimelock(newTimelock)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorTimelockCompound-TimelockChange-address-address-}[`++TimelockChange(oldTimelock, newTimelock)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorTimelockCompound-constructor-contract-ICompoundTimelock-]]
- ==== `[.contract-item-name]#++constructor++#++(contract ICompoundTimelock timelockAddress)++` [.item-kind]#internal#
- Set the timelock.
- [.contract-item]
- [[GovernorTimelockCompound-state-uint256-]]
- ==== `[.contract-item-name]#++state++#++(uint256 proposalId) → enum IGovernor.ProposalState++` [.item-kind]#public#
- Overridden version of the {Governor-state} function with added support for the `Expired` state.
- [.contract-item]
- [[GovernorTimelockCompound-timelock--]]
- ==== `[.contract-item-name]#++timelock++#++() → address++` [.item-kind]#public#
- Public accessor to check the address of the timelock
- [.contract-item]
- [[GovernorTimelockCompound-proposalNeedsQueuing-uint256-]]
- ==== `[.contract-item-name]#++proposalNeedsQueuing++#++(uint256) → bool++` [.item-kind]#public#
- [.contract-item]
- [[GovernorTimelockCompound-_queueOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_queueOperations++#++(uint256 proposalId, address[] targets, uint256[] values, bytes[] calldatas, bytes32) → uint48++` [.item-kind]#internal#
- Function to queue a proposal to the timelock.
- [.contract-item]
- [[GovernorTimelockCompound-_executeOperations-uint256-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_executeOperations++#++(uint256 proposalId, address[] targets, uint256[] values, bytes[] calldatas, bytes32)++` [.item-kind]#internal#
- Overridden version of the {Governor-_executeOperations} function that run the already queued proposal
- through the timelock.
- [.contract-item]
- [[GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-]]
- ==== `[.contract-item-name]#++_cancel++#++(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256++` [.item-kind]#internal#
- Overridden version of the {Governor-_cancel} function to cancel the timelocked proposal if it has already
- been queued.
- [.contract-item]
- [[GovernorTimelockCompound-_executor--]]
- ==== `[.contract-item-name]#++_executor++#++() → address++` [.item-kind]#internal#
- Address through which the governor executes action. In this case, the timelock.
- [.contract-item]
- [[GovernorTimelockCompound-__acceptAdmin--]]
- ==== `[.contract-item-name]#++__acceptAdmin++#++()++` [.item-kind]#public#
- Accept admin right over the timelock.
- [.contract-item]
- [[GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-]]
- ==== `[.contract-item-name]#++updateTimelock++#++(contract ICompoundTimelock newTimelock)++` [.item-kind]#external#
- Public endpoint to update the underlying timelock instance. Restricted to the timelock itself, so updates
- must be proposed, scheduled, and executed through governance proposals.
- For security reasons, the timelock must be handed over to another admin before setting up a new one. The two
- operations (hand over the timelock) and do the update can be batched in a single proposal.
- Note that if the timelock admin has been handed over in a previous operation, we refuse updates made through the
- timelock if admin of the timelock has already been accepted and the operation is executed outside the scope of
- governance.
- CAUTION: It is not recommended to change the timelock while there are other queued governance proposals.
- [.contract-item]
- [[GovernorTimelockCompound-TimelockChange-address-address-]]
- ==== `[.contract-item-name]#++TimelockChange++#++(address oldTimelock, address newTimelock)++` [.item-kind]#event#
- Emitted when the timelock controller used for proposal execution is modified.
- :VotingDelaySet: pass:normal[xref:#GovernorSettings-VotingDelaySet-uint256-uint256-[`++VotingDelaySet++`]]
- :VotingPeriodSet: pass:normal[xref:#GovernorSettings-VotingPeriodSet-uint256-uint256-[`++VotingPeriodSet++`]]
- :ProposalThresholdSet: pass:normal[xref:#GovernorSettings-ProposalThresholdSet-uint256-uint256-[`++ProposalThresholdSet++`]]
- :constructor: pass:normal[xref:#GovernorSettings-constructor-uint48-uint32-uint256-[`++constructor++`]]
- :votingDelay: pass:normal[xref:#GovernorSettings-votingDelay--[`++votingDelay++`]]
- :votingPeriod: pass:normal[xref:#GovernorSettings-votingPeriod--[`++votingPeriod++`]]
- :proposalThreshold: pass:normal[xref:#GovernorSettings-proposalThreshold--[`++proposalThreshold++`]]
- :setVotingDelay: pass:normal[xref:#GovernorSettings-setVotingDelay-uint48-[`++setVotingDelay++`]]
- :setVotingPeriod: pass:normal[xref:#GovernorSettings-setVotingPeriod-uint32-[`++setVotingPeriod++`]]
- :setProposalThreshold: pass:normal[xref:#GovernorSettings-setProposalThreshold-uint256-[`++setProposalThreshold++`]]
- :_setVotingDelay: pass:normal[xref:#GovernorSettings-_setVotingDelay-uint48-[`++_setVotingDelay++`]]
- :_setVotingPeriod: pass:normal[xref:#GovernorSettings-_setVotingPeriod-uint32-[`++_setVotingPeriod++`]]
- :_setProposalThreshold: pass:normal[xref:#GovernorSettings-_setProposalThreshold-uint256-[`++_setProposalThreshold++`]]
- :constructor-uint48-uint32-uint256: pass:normal[xref:#GovernorSettings-constructor-uint48-uint32-uint256-[`++constructor++`]]
- :votingDelay-: pass:normal[xref:#GovernorSettings-votingDelay--[`++votingDelay++`]]
- :votingPeriod-: pass:normal[xref:#GovernorSettings-votingPeriod--[`++votingPeriod++`]]
- :proposalThreshold-: pass:normal[xref:#GovernorSettings-proposalThreshold--[`++proposalThreshold++`]]
- :setVotingDelay-uint48: pass:normal[xref:#GovernorSettings-setVotingDelay-uint48-[`++setVotingDelay++`]]
- :setVotingPeriod-uint32: pass:normal[xref:#GovernorSettings-setVotingPeriod-uint32-[`++setVotingPeriod++`]]
- :setProposalThreshold-uint256: pass:normal[xref:#GovernorSettings-setProposalThreshold-uint256-[`++setProposalThreshold++`]]
- :_setVotingDelay-uint48: pass:normal[xref:#GovernorSettings-_setVotingDelay-uint48-[`++_setVotingDelay++`]]
- :_setVotingPeriod-uint32: pass:normal[xref:#GovernorSettings-_setVotingPeriod-uint32-[`++_setVotingPeriod++`]]
- :_setProposalThreshold-uint256: pass:normal[xref:#GovernorSettings-_setProposalThreshold-uint256-[`++_setProposalThreshold++`]]
- [.contract]
- [[GovernorSettings]]
- === `++GovernorSettings++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorSettings.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";
- ```
- Extension of {Governor} for settings updatable through governance.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorSettings-constructor-uint48-uint32-uint256-}[`++constructor(initialVotingDelay, initialVotingPeriod, initialProposalThreshold)++`]
- * {xref-GovernorSettings-votingDelay--}[`++votingDelay()++`]
- * {xref-GovernorSettings-votingPeriod--}[`++votingPeriod()++`]
- * {xref-GovernorSettings-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-GovernorSettings-setVotingDelay-uint48-}[`++setVotingDelay(newVotingDelay)++`]
- * {xref-GovernorSettings-setVotingPeriod-uint32-}[`++setVotingPeriod(newVotingPeriod)++`]
- * {xref-GovernorSettings-setProposalThreshold-uint256-}[`++setProposalThreshold(newProposalThreshold)++`]
- * {xref-GovernorSettings-_setVotingDelay-uint48-}[`++_setVotingDelay(newVotingDelay)++`]
- * {xref-GovernorSettings-_setVotingPeriod-uint32-}[`++_setVotingPeriod(newVotingPeriod)++`]
- * {xref-GovernorSettings-_setProposalThreshold-uint256-}[`++_setProposalThreshold(newProposalThreshold)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorSettings-VotingDelaySet-uint256-uint256-}[`++VotingDelaySet(oldVotingDelay, newVotingDelay)++`]
- * {xref-GovernorSettings-VotingPeriodSet-uint256-uint256-}[`++VotingPeriodSet(oldVotingPeriod, newVotingPeriod)++`]
- * {xref-GovernorSettings-ProposalThresholdSet-uint256-uint256-}[`++ProposalThresholdSet(oldProposalThreshold, newProposalThreshold)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorSettings-constructor-uint48-uint32-uint256-]]
- ==== `[.contract-item-name]#++constructor++#++(uint48 initialVotingDelay, uint32 initialVotingPeriod, uint256 initialProposalThreshold)++` [.item-kind]#internal#
- Initialize the governance parameters.
- [.contract-item]
- [[GovernorSettings-votingDelay--]]
- ==== `[.contract-item-name]#++votingDelay++#++() → uint256++` [.item-kind]#public#
- [.contract-item]
- [[GovernorSettings-votingPeriod--]]
- ==== `[.contract-item-name]#++votingPeriod++#++() → uint256++` [.item-kind]#public#
- [.contract-item]
- [[GovernorSettings-proposalThreshold--]]
- ==== `[.contract-item-name]#++proposalThreshold++#++() → uint256++` [.item-kind]#public#
- The number of votes required in order for a voter to become a proposer.
- [.contract-item]
- [[GovernorSettings-setVotingDelay-uint48-]]
- ==== `[.contract-item-name]#++setVotingDelay++#++(uint48 newVotingDelay)++` [.item-kind]#public#
- Update the voting delay. This operation can only be performed through a governance proposal.
- Emits a {VotingDelaySet} event.
- [.contract-item]
- [[GovernorSettings-setVotingPeriod-uint32-]]
- ==== `[.contract-item-name]#++setVotingPeriod++#++(uint32 newVotingPeriod)++` [.item-kind]#public#
- Update the voting period. This operation can only be performed through a governance proposal.
- Emits a {VotingPeriodSet} event.
- [.contract-item]
- [[GovernorSettings-setProposalThreshold-uint256-]]
- ==== `[.contract-item-name]#++setProposalThreshold++#++(uint256 newProposalThreshold)++` [.item-kind]#public#
- Update the proposal threshold. This operation can only be performed through a governance proposal.
- Emits a {ProposalThresholdSet} event.
- [.contract-item]
- [[GovernorSettings-_setVotingDelay-uint48-]]
- ==== `[.contract-item-name]#++_setVotingDelay++#++(uint48 newVotingDelay)++` [.item-kind]#internal#
- Internal setter for the voting delay.
- Emits a {VotingDelaySet} event.
- [.contract-item]
- [[GovernorSettings-_setVotingPeriod-uint32-]]
- ==== `[.contract-item-name]#++_setVotingPeriod++#++(uint32 newVotingPeriod)++` [.item-kind]#internal#
- Internal setter for the voting period.
- Emits a {VotingPeriodSet} event.
- [.contract-item]
- [[GovernorSettings-_setProposalThreshold-uint256-]]
- ==== `[.contract-item-name]#++_setProposalThreshold++#++(uint256 newProposalThreshold)++` [.item-kind]#internal#
- Internal setter for the proposal threshold.
- Emits a {ProposalThresholdSet} event.
- [.contract-item]
- [[GovernorSettings-VotingDelaySet-uint256-uint256-]]
- ==== `[.contract-item-name]#++VotingDelaySet++#++(uint256 oldVotingDelay, uint256 newVotingDelay)++` [.item-kind]#event#
- [.contract-item]
- [[GovernorSettings-VotingPeriodSet-uint256-uint256-]]
- ==== `[.contract-item-name]#++VotingPeriodSet++#++(uint256 oldVotingPeriod, uint256 newVotingPeriod)++` [.item-kind]#event#
- [.contract-item]
- [[GovernorSettings-ProposalThresholdSet-uint256-uint256-]]
- ==== `[.contract-item-name]#++ProposalThresholdSet++#++(uint256 oldProposalThreshold, uint256 newProposalThreshold)++` [.item-kind]#event#
- :ProposalExtended: pass:normal[xref:#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`++ProposalExtended++`]]
- :LateQuorumVoteExtensionSet: pass:normal[xref:#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`++LateQuorumVoteExtensionSet++`]]
- :constructor: pass:normal[xref:#GovernorPreventLateQuorum-constructor-uint48-[`++constructor++`]]
- :proposalDeadline: pass:normal[xref:#GovernorPreventLateQuorum-proposalDeadline-uint256-[`++proposalDeadline++`]]
- :_tallyUpdated: pass:normal[xref:#GovernorPreventLateQuorum-_tallyUpdated-uint256-[`++_tallyUpdated++`]]
- :lateQuorumVoteExtension: pass:normal[xref:#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`++lateQuorumVoteExtension++`]]
- :setLateQuorumVoteExtension: pass:normal[xref:#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint48-[`++setLateQuorumVoteExtension++`]]
- :_setLateQuorumVoteExtension: pass:normal[xref:#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint48-[`++_setLateQuorumVoteExtension++`]]
- :constructor-uint48: pass:normal[xref:#GovernorPreventLateQuorum-constructor-uint48-[`++constructor++`]]
- :proposalDeadline-uint256: pass:normal[xref:#GovernorPreventLateQuorum-proposalDeadline-uint256-[`++proposalDeadline++`]]
- :_tallyUpdated-uint256: pass:normal[xref:#GovernorPreventLateQuorum-_tallyUpdated-uint256-[`++_tallyUpdated++`]]
- :lateQuorumVoteExtension-: pass:normal[xref:#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`++lateQuorumVoteExtension++`]]
- :setLateQuorumVoteExtension-uint48: pass:normal[xref:#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint48-[`++setLateQuorumVoteExtension++`]]
- :_setLateQuorumVoteExtension-uint48: pass:normal[xref:#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint48-[`++_setLateQuorumVoteExtension++`]]
- [.contract]
- [[GovernorPreventLateQuorum]]
- === `++GovernorPreventLateQuorum++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorPreventLateQuorum.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorPreventLateQuorum.sol";
- ```
- A module that ensures there is a minimum voting period after quorum is reached. This prevents a large voter from
- swaying a vote and triggering quorum at the last minute, by ensuring there is always time for other voters to react
- and try to oppose the decision.
- If a vote causes quorum to be reached, the proposal's voting period may be extended so that it does not end before at
- least a specified time has passed (the "vote extension" parameter). This parameter can be set through a governance
- proposal.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorPreventLateQuorum-constructor-uint48-}[`++constructor(initialVoteExtension)++`]
- * {xref-GovernorPreventLateQuorum-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-GovernorPreventLateQuorum-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--}[`++lateQuorumVoteExtension()++`]
- * {xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint48-}[`++setLateQuorumVoteExtension(newVoteExtension)++`]
- * {xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint48-}[`++_setLateQuorumVoteExtension(newVoteExtension)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-}[`++ProposalExtended(proposalId, extendedDeadline)++`]
- * {xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-}[`++LateQuorumVoteExtensionSet(oldVoteExtension, newVoteExtension)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorPreventLateQuorum-constructor-uint48-]]
- ==== `[.contract-item-name]#++constructor++#++(uint48 initialVoteExtension)++` [.item-kind]#internal#
- Initializes the vote extension parameter: the time in either number of blocks or seconds (depending on the
- governor clock mode) that is required to pass since the moment a proposal reaches quorum until its voting period
- ends. If necessary the voting period will be extended beyond the one set during proposal creation.
- [.contract-item]
- [[GovernorPreventLateQuorum-proposalDeadline-uint256-]]
- ==== `[.contract-item-name]#++proposalDeadline++#++(uint256 proposalId) → uint256++` [.item-kind]#public#
- Returns the proposal deadline, which may have been extended beyond that set at proposal creation, if the
- proposal reached quorum late in the voting period. See {Governor-proposalDeadline}.
- [.contract-item]
- [[GovernorPreventLateQuorum-_tallyUpdated-uint256-]]
- ==== `[.contract-item-name]#++_tallyUpdated++#++(uint256 proposalId)++` [.item-kind]#internal#
- Vote tally updated and detects if it caused quorum to be reached, potentially extending the voting period.
- May emit a {ProposalExtended} event.
- [.contract-item]
- [[GovernorPreventLateQuorum-lateQuorumVoteExtension--]]
- ==== `[.contract-item-name]#++lateQuorumVoteExtension++#++() → uint48++` [.item-kind]#public#
- Returns the current value of the vote extension parameter: the number of blocks that are required to pass
- from the time a proposal reaches quorum until its voting period ends.
- [.contract-item]
- [[GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint48-]]
- ==== `[.contract-item-name]#++setLateQuorumVoteExtension++#++(uint48 newVoteExtension)++` [.item-kind]#public#
- Changes the {lateQuorumVoteExtension}. This operation can only be performed by the governance executor,
- generally through a governance proposal.
- Emits a {LateQuorumVoteExtensionSet} event.
- [.contract-item]
- [[GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint48-]]
- ==== `[.contract-item-name]#++_setLateQuorumVoteExtension++#++(uint48 newVoteExtension)++` [.item-kind]#internal#
- Changes the {lateQuorumVoteExtension}. This is an internal function that can be exposed in a public function
- like {setLateQuorumVoteExtension} if another access control mechanism is needed.
- Emits a {LateQuorumVoteExtensionSet} event.
- [.contract-item]
- [[GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-]]
- ==== `[.contract-item-name]#++ProposalExtended++#++(uint256 indexed proposalId, uint64 extendedDeadline)++` [.item-kind]#event#
- Emitted when a proposal deadline is pushed back due to reaching quorum late in its voting period.
- [.contract-item]
- [[GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-]]
- ==== `[.contract-item-name]#++LateQuorumVoteExtensionSet++#++(uint64 oldVoteExtension, uint64 newVoteExtension)++` [.item-kind]#event#
- Emitted when the {lateQuorumVoteExtension} parameter is changed.
- :ProposalDetails: pass:normal[xref:#GovernorStorage-ProposalDetails[`++ProposalDetails++`]]
- :_propose: pass:normal[xref:#GovernorStorage-_propose-address---uint256---bytes---string-address-[`++_propose++`]]
- :queue: pass:normal[xref:#GovernorStorage-queue-uint256-[`++queue++`]]
- :execute: pass:normal[xref:#GovernorStorage-execute-uint256-[`++execute++`]]
- :cancel: pass:normal[xref:#GovernorStorage-cancel-uint256-[`++cancel++`]]
- :proposalCount: pass:normal[xref:#GovernorStorage-proposalCount--[`++proposalCount++`]]
- :proposalDetails: pass:normal[xref:#GovernorStorage-proposalDetails-uint256-[`++proposalDetails++`]]
- :proposalDetailsAt: pass:normal[xref:#GovernorStorage-proposalDetailsAt-uint256-[`++proposalDetailsAt++`]]
- :_propose-address---uint256---bytes---string-address: pass:normal[xref:#GovernorStorage-_propose-address---uint256---bytes---string-address-[`++_propose++`]]
- :queue-uint256: pass:normal[xref:#GovernorStorage-queue-uint256-[`++queue++`]]
- :execute-uint256: pass:normal[xref:#GovernorStorage-execute-uint256-[`++execute++`]]
- :cancel-uint256: pass:normal[xref:#GovernorStorage-cancel-uint256-[`++cancel++`]]
- :proposalCount-: pass:normal[xref:#GovernorStorage-proposalCount--[`++proposalCount++`]]
- :proposalDetails-uint256: pass:normal[xref:#GovernorStorage-proposalDetails-uint256-[`++proposalDetails++`]]
- :proposalDetailsAt-uint256: pass:normal[xref:#GovernorStorage-proposalDetailsAt-uint256-[`++proposalDetailsAt++`]]
- [.contract]
- [[GovernorStorage]]
- === `++GovernorStorage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorStorage.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorStorage.sol";
- ```
- Extension of {Governor} that implements storage of proposal details. This modules also provides primitives for
- the enumerability of proposals.
- Use cases for this module include:
- - UIs that explore the proposal state without relying on event indexing.
- - Using only the proposalId as an argument in the {Governor-queue} and {Governor-execute} functions for L2 chains
- where storage is cheap compared to calldata.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorStorage-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-GovernorStorage-queue-uint256-}[`++queue(proposalId)++`]
- * {xref-GovernorStorage-execute-uint256-}[`++execute(proposalId)++`]
- * {xref-GovernorStorage-cancel-uint256-}[`++cancel(proposalId)++`]
- * {xref-GovernorStorage-proposalCount--}[`++proposalCount()++`]
- * {xref-GovernorStorage-proposalDetails-uint256-}[`++proposalDetails(proposalId)++`]
- * {xref-GovernorStorage-proposalDetailsAt-uint256-}[`++proposalDetailsAt(index)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorStorage-_propose-address---uint256---bytes---string-address-]]
- ==== `[.contract-item-name]#++_propose++#++(address[] targets, uint256[] values, bytes[] calldatas, string description, address proposer) → uint256++` [.item-kind]#internal#
- Hook into the proposing mechanism
- [.contract-item]
- [[GovernorStorage-queue-uint256-]]
- ==== `[.contract-item-name]#++queue++#++(uint256 proposalId)++` [.item-kind]#public#
- Version of {IGovernor-queue} with only `proposalId` as an argument.
- [.contract-item]
- [[GovernorStorage-execute-uint256-]]
- ==== `[.contract-item-name]#++execute++#++(uint256 proposalId)++` [.item-kind]#public#
- Version of {IGovernor-execute} with only `proposalId` as an argument.
- [.contract-item]
- [[GovernorStorage-cancel-uint256-]]
- ==== `[.contract-item-name]#++cancel++#++(uint256 proposalId)++` [.item-kind]#public#
- ProposalId version of {IGovernor-cancel}.
- [.contract-item]
- [[GovernorStorage-proposalCount--]]
- ==== `[.contract-item-name]#++proposalCount++#++() → uint256++` [.item-kind]#public#
- Returns the number of stored proposals.
- [.contract-item]
- [[GovernorStorage-proposalDetails-uint256-]]
- ==== `[.contract-item-name]#++proposalDetails++#++(uint256 proposalId) → address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash++` [.item-kind]#public#
- Returns the details of a proposalId. Reverts if `proposalId` is not a known proposal.
- [.contract-item]
- [[GovernorStorage-proposalDetailsAt-uint256-]]
- ==== `[.contract-item-name]#++proposalDetailsAt++#++(uint256 index) → uint256 proposalId, address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash++` [.item-kind]#public#
- Returns the details (including the proposalId) of a proposal given its sequential index.
- :ProposalGuardianSet: pass:normal[xref:#GovernorProposalGuardian-ProposalGuardianSet-address-address-[`++ProposalGuardianSet++`]]
- :proposalGuardian: pass:normal[xref:#GovernorProposalGuardian-proposalGuardian--[`++proposalGuardian++`]]
- :setProposalGuardian: pass:normal[xref:#GovernorProposalGuardian-setProposalGuardian-address-[`++setProposalGuardian++`]]
- :_setProposalGuardian: pass:normal[xref:#GovernorProposalGuardian-_setProposalGuardian-address-[`++_setProposalGuardian++`]]
- :_validateCancel: pass:normal[xref:#GovernorProposalGuardian-_validateCancel-uint256-address-[`++_validateCancel++`]]
- :proposalGuardian-: pass:normal[xref:#GovernorProposalGuardian-proposalGuardian--[`++proposalGuardian++`]]
- :setProposalGuardian-address: pass:normal[xref:#GovernorProposalGuardian-setProposalGuardian-address-[`++setProposalGuardian++`]]
- :_setProposalGuardian-address: pass:normal[xref:#GovernorProposalGuardian-_setProposalGuardian-address-[`++_setProposalGuardian++`]]
- :_validateCancel-uint256-address: pass:normal[xref:#GovernorProposalGuardian-_validateCancel-uint256-address-[`++_validateCancel++`]]
- [.contract]
- [[GovernorProposalGuardian]]
- === `++GovernorProposalGuardian++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorProposalGuardian.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorProposalGuardian.sol";
- ```
- Extension of {Governor} which adds a proposal guardian that can cancel proposals at any stage in the proposal's lifecycle.
- NOTE: if the proposal guardian is not configured, then proposers take this role for their proposals.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorProposalGuardian-proposalGuardian--}[`++proposalGuardian()++`]
- * {xref-GovernorProposalGuardian-setProposalGuardian-address-}[`++setProposalGuardian(newProposalGuardian)++`]
- * {xref-GovernorProposalGuardian-_setProposalGuardian-address-}[`++_setProposalGuardian(newProposalGuardian)++`]
- * {xref-GovernorProposalGuardian-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- * {xref-GovernorProposalGuardian-ProposalGuardianSet-address-address-}[`++ProposalGuardianSet(oldProposalGuardian, newProposalGuardian)++`]
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorProposalGuardian-proposalGuardian--]]
- ==== `[.contract-item-name]#++proposalGuardian++#++() → address++` [.item-kind]#public#
- Getter that returns the address of the proposal guardian.
- [.contract-item]
- [[GovernorProposalGuardian-setProposalGuardian-address-]]
- ==== `[.contract-item-name]#++setProposalGuardian++#++(address newProposalGuardian)++` [.item-kind]#public#
- Update the proposal guardian's address. This operation can only be performed through a governance proposal.
- Emits a {ProposalGuardianSet} event.
- [.contract-item]
- [[GovernorProposalGuardian-_setProposalGuardian-address-]]
- ==== `[.contract-item-name]#++_setProposalGuardian++#++(address newProposalGuardian)++` [.item-kind]#internal#
- Internal setter for the proposal guardian.
- Emits a {ProposalGuardianSet} event.
- [.contract-item]
- [[GovernorProposalGuardian-_validateCancel-uint256-address-]]
- ==== `[.contract-item-name]#++_validateCancel++#++(uint256 proposalId, address caller) → bool++` [.item-kind]#internal#
- Override {Governor-_validateCancel} to implement the extended cancellation logic.
- * The {proposalGuardian} can cancel any proposal at any point.
- * If no proposal guardian is set, the {IGovernor-proposalProposer} can cancel their proposals at any point.
- * In any case, permissions defined in {Governor-_validateCancel} (or another override) remains valid.
- [.contract-item]
- [[GovernorProposalGuardian-ProposalGuardianSet-address-address-]]
- ==== `[.contract-item-name]#++ProposalGuardianSet++#++(address oldProposalGuardian, address newProposalGuardian)++` [.item-kind]#event#
- :superQuorum: pass:normal[xref:#GovernorSuperQuorum-superQuorum-uint256-[`++superQuorum++`]]
- :proposalVotes: pass:normal[xref:#GovernorSuperQuorum-proposalVotes-uint256-[`++proposalVotes++`]]
- :state: pass:normal[xref:#GovernorSuperQuorum-state-uint256-[`++state++`]]
- :superQuorum-uint256: pass:normal[xref:#GovernorSuperQuorum-superQuorum-uint256-[`++superQuorum++`]]
- :proposalVotes-uint256: pass:normal[xref:#GovernorSuperQuorum-proposalVotes-uint256-[`++proposalVotes++`]]
- :state-uint256: pass:normal[xref:#GovernorSuperQuorum-state-uint256-[`++state++`]]
- [.contract]
- [[GovernorSuperQuorum]]
- === `++GovernorSuperQuorum++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorSuperQuorum.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorSuperQuorum.sol";
- ```
- Extension of {Governor} with a super quorum. Proposals that meet the super quorum (and have a majority of for
- votes) advance to the `Succeeded` state before the proposal deadline. Counting modules that want to use this
- extension must implement {proposalVotes}.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorSuperQuorum-superQuorum-uint256-}[`++superQuorum(timepoint)++`]
- * {xref-GovernorSuperQuorum-proposalVotes-uint256-}[`++proposalVotes(proposalId)++`]
- * {xref-GovernorSuperQuorum-state-uint256-}[`++state(proposalId)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-Governor-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorSuperQuorum-superQuorum-uint256-]]
- ==== `[.contract-item-name]#++superQuorum++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Minimum number of cast votes required for a proposal to reach super quorum. Only FOR votes are counted
- towards the super quorum. Once the super quorum is reached, an active proposal can proceed to the next state
- without waiting for the proposal deadline.
- NOTE: The `timepoint` parameter corresponds to the snapshot used for counting the vote. This enables scaling of the
- quorum depending on values such as the `totalSupply` of a token at this timepoint (see {ERC20Votes}).
- NOTE: Make sure the value specified for the super quorum is greater than {quorum}, otherwise, it may be
- possible to pass a proposal with less votes than the default quorum.
- [.contract-item]
- [[GovernorSuperQuorum-proposalVotes-uint256-]]
- ==== `[.contract-item-name]#++proposalVotes++#++(uint256 proposalId) → uint256 againstVotes, uint256 forVotes, uint256 abstainVotes++` [.item-kind]#public#
- Accessor to the internal vote counts. This must be implemented by the counting module. Counting modules
- that don't implement this function are incompatible with this module
- [.contract-item]
- [[GovernorSuperQuorum-state-uint256-]]
- ==== `[.contract-item-name]#++state++#++(uint256 proposalId) → enum IGovernor.ProposalState++` [.item-kind]#public#
- Overridden version of the {Governor-state} function that checks if the proposal has reached the super
- quorum.
- NOTE: If the proposal reaches super quorum but {_voteSucceeded} returns false, eg, assuming the super quorum
- has been set low enough that both FOR and AGAINST votes have exceeded it and AGAINST votes exceed FOR votes,
- the proposal continues to be active until {_voteSucceeded} returns true or the proposal deadline is reached.
- This means that with a low super quorum it is also possible that a vote can succeed prematurely before enough
- AGAINST voters have a chance to vote. Hence, it is recommended to set a high enough super quorum to avoid these
- types of scenarios.
- :_useCheckedNonce: pass:normal[xref:#GovernorNoncesKeyed-_useCheckedNonce-address-uint256-[`++_useCheckedNonce++`]]
- :_validateVoteSig: pass:normal[xref:#GovernorNoncesKeyed-_validateVoteSig-uint256-uint8-address-bytes-[`++_validateVoteSig++`]]
- :_validateExtendedVoteSig: pass:normal[xref:#GovernorNoncesKeyed-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-[`++_validateExtendedVoteSig++`]]
- :_useCheckedNonce-address-uint256: pass:normal[xref:#GovernorNoncesKeyed-_useCheckedNonce-address-uint256-[`++_useCheckedNonce++`]]
- :_validateVoteSig-uint256-uint8-address-bytes: pass:normal[xref:#GovernorNoncesKeyed-_validateVoteSig-uint256-uint8-address-bytes-[`++_validateVoteSig++`]]
- :_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes: pass:normal[xref:#GovernorNoncesKeyed-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-[`++_validateExtendedVoteSig++`]]
- [.contract]
- [[GovernorNoncesKeyed]]
- === `++GovernorNoncesKeyed++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/extensions/GovernorNoncesKeyed.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/extensions/GovernorNoncesKeyed.sol";
- ```
- An extension of {Governor} that extends existing nonce management to use {NoncesKeyed}, where the key is the low-order 192 bits of the `proposalId`.
- This is useful for voting by signature while maintaining separate sequences of nonces for each proposal.
- NOTE: Traditional (un-keyed) nonces are still supported and can continue to be used as if this extension was not present.
- [.contract-index]
- .Functions
- --
- * {xref-GovernorNoncesKeyed-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- * {xref-GovernorNoncesKeyed-_validateVoteSig-uint256-uint8-address-bytes-}[`++_validateVoteSig(proposalId, support, voter, signature)++`]
- * {xref-GovernorNoncesKeyed-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-}[`++_validateExtendedVoteSig(proposalId, support, voter, reason, params, signature)++`]
- [.contract-subindex-inherited]
- .NoncesKeyed
- * {xref-NoncesKeyed-nonces-address-uint192-}[`++nonces(owner, key)++`]
- * {xref-NoncesKeyed-_useNonce-address-uint192-}[`++_useNonce(owner, key)++`]
- * {xref-NoncesKeyed-_useCheckedNonce-address-uint192-uint64-}[`++_useCheckedNonce(owner, key, nonce)++`]
- [.contract-subindex-inherited]
- .Governor
- * {xref-Governor-receive--}[`++receive()++`]
- * {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-Governor-name--}[`++name()++`]
- * {xref-Governor-version--}[`++version()++`]
- * {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getProposalId-address---uint256---bytes---bytes32-}[`++getProposalId(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-state-uint256-}[`++state(proposalId)++`]
- * {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`]
- * {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`]
- * {xref-Governor-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`]
- * {xref-Governor-proposalProposer-uint256-}[`++proposalProposer(proposalId)++`]
- * {xref-Governor-proposalEta-uint256-}[`++proposalEta(proposalId)++`]
- * {xref-Governor-proposalNeedsQueuing-uint256-}[`++proposalNeedsQueuing()++`]
- * {xref-Governor-_checkGovernance--}[`++_checkGovernance()++`]
- * {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`]
- * {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`]
- * {xref-Governor-_getVotes-address-uint256-bytes-}[`++_getVotes(account, timepoint, params)++`]
- * {xref-Governor-_countVote-uint256-address-uint8-uint256-bytes-}[`++_countVote(proposalId, account, support, totalWeight, params)++`]
- * {xref-Governor-_tallyUpdated-uint256-}[`++_tallyUpdated(proposalId)++`]
- * {xref-Governor-_defaultParams--}[`++_defaultParams()++`]
- * {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`]
- * {xref-Governor-_propose-address---uint256---bytes---string-address-}[`++_propose(targets, values, calldatas, description, proposer)++`]
- * {xref-Governor-queue-address---uint256---bytes---bytes32-}[`++queue(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_queueOperations-uint256-address---uint256---bytes---bytes32-}[`++_queueOperations(, , , , )++`]
- * {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_executeOperations-uint256-address---uint256---bytes---bytes32-}[`++_executeOperations(, targets, values, calldatas, )++`]
- * {xref-Governor-cancel-address---uint256---bytes---bytes32-}[`++cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`]
- * {xref-Governor-getVotes-address-uint256-}[`++getVotes(account, timepoint)++`]
- * {xref-Governor-getVotesWithParams-address-uint256-bytes-}[`++getVotesWithParams(account, timepoint, params)++`]
- * {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`]
- * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`]
- * {xref-Governor-castVoteWithReasonAndParams-uint256-uint8-string-bytes-}[`++castVoteWithReasonAndParams(proposalId, support, reason, params)++`]
- * {xref-Governor-castVoteBySig-uint256-uint8-address-bytes-}[`++castVoteBySig(proposalId, support, voter, signature)++`]
- * {xref-Governor-castVoteWithReasonAndParamsBySig-uint256-uint8-address-string-bytes-bytes-}[`++castVoteWithReasonAndParamsBySig(proposalId, support, voter, reason, params, signature)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`]
- * {xref-Governor-_castVote-uint256-address-uint8-string-bytes-}[`++_castVote(proposalId, account, support, reason, params)++`]
- * {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`]
- * {xref-Governor-_executor--}[`++_executor()++`]
- * {xref-Governor-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- * {xref-Governor-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-Governor-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- * {xref-Governor-_encodeStateBitmap-enum-IGovernor-ProposalState-}[`++_encodeStateBitmap(proposalState)++`]
- * {xref-Governor-_validateStateBitmap-uint256-bytes32-}[`++_validateStateBitmap(proposalId, allowedStates)++`]
- * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
- * {xref-Governor-_validateCancel-uint256-address-}[`++_validateCancel(proposalId, caller)++`]
- * {xref-Governor-clock--}[`++clock()++`]
- * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Governor-votingDelay--}[`++votingDelay()++`]
- * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
- * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
- * {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
- * {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`]
- * {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .NoncesKeyed
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, voteStart, voteEnd, description)++`]
- * {xref-IGovernor-ProposalQueued-uint256-uint256-}[`++ProposalQueued(proposalId, etaSeconds)++`]
- * {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`]
- * {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`]
- * {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`]
- * {xref-IGovernor-VoteCastWithParams-address-uint256-uint8-uint256-string-bytes-}[`++VoteCastWithParams(voter, proposalId, support, weight, reason, params)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .NoncesKeyed
- [.contract-subindex-inherited]
- .Governor
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .IGovernor
- * {xref-IGovernor-GovernorInvalidProposalLength-uint256-uint256-uint256-}[`++GovernorInvalidProposalLength(targets, calldatas, values)++`]
- * {xref-IGovernor-GovernorAlreadyCastVote-address-}[`++GovernorAlreadyCastVote(voter)++`]
- * {xref-IGovernor-GovernorDisabledDeposit--}[`++GovernorDisabledDeposit()++`]
- * {xref-IGovernor-GovernorOnlyExecutor-address-}[`++GovernorOnlyExecutor(account)++`]
- * {xref-IGovernor-GovernorNonexistentProposal-uint256-}[`++GovernorNonexistentProposal(proposalId)++`]
- * {xref-IGovernor-GovernorUnexpectedProposalState-uint256-enum-IGovernor-ProposalState-bytes32-}[`++GovernorUnexpectedProposalState(proposalId, current, expectedStates)++`]
- * {xref-IGovernor-GovernorInvalidVotingPeriod-uint256-}[`++GovernorInvalidVotingPeriod(votingPeriod)++`]
- * {xref-IGovernor-GovernorInsufficientProposerVotes-address-uint256-uint256-}[`++GovernorInsufficientProposerVotes(proposer, votes, threshold)++`]
- * {xref-IGovernor-GovernorRestrictedProposer-address-}[`++GovernorRestrictedProposer(proposer)++`]
- * {xref-IGovernor-GovernorInvalidVoteType--}[`++GovernorInvalidVoteType()++`]
- * {xref-IGovernor-GovernorInvalidVoteParams--}[`++GovernorInvalidVoteParams()++`]
- * {xref-IGovernor-GovernorQueueNotImplemented--}[`++GovernorQueueNotImplemented()++`]
- * {xref-IGovernor-GovernorNotQueuedProposal-uint256-}[`++GovernorNotQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorAlreadyQueuedProposal-uint256-}[`++GovernorAlreadyQueuedProposal(proposalId)++`]
- * {xref-IGovernor-GovernorInvalidSignature-address-}[`++GovernorInvalidSignature(voter)++`]
- * {xref-IGovernor-GovernorUnableToCancel-uint256-address-}[`++GovernorUnableToCancel(proposalId, account)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- --
- [.contract-item]
- [[GovernorNoncesKeyed-_useCheckedNonce-address-uint256-]]
- ==== `[.contract-item-name]#++_useCheckedNonce++#++(address owner, uint256 nonce)++` [.item-kind]#internal#
- [.contract-item]
- [[GovernorNoncesKeyed-_validateVoteSig-uint256-uint8-address-bytes-]]
- ==== `[.contract-item-name]#++_validateVoteSig++#++(uint256 proposalId, uint8 support, address voter, bytes signature) → bool++` [.item-kind]#internal#
- Check the signature against keyed nonce and falls back to the traditional nonce.
- NOTE: This function won't call `super._validateVoteSig` if the keyed nonce is valid.
- Side effects may be skipped depending on the linearization of the function.
- [.contract-item]
- [[GovernorNoncesKeyed-_validateExtendedVoteSig-uint256-uint8-address-string-bytes-bytes-]]
- ==== `[.contract-item-name]#++_validateExtendedVoteSig++#++(uint256 proposalId, uint8 support, address voter, string reason, bytes params, bytes signature) → bool++` [.item-kind]#internal#
- Check the signature against keyed nonce and falls back to the traditional nonce.
- NOTE: This function won't call `super._validateExtendedVoteSig` if the keyed nonce is valid.
- Side effects may be skipped depending on the linearization of the function.
- == Utils
- :ERC6372InconsistentClock: pass:normal[xref:#Votes-ERC6372InconsistentClock--[`++ERC6372InconsistentClock++`]]
- :ERC5805FutureLookup: pass:normal[xref:#Votes-ERC5805FutureLookup-uint256-uint48-[`++ERC5805FutureLookup++`]]
- :clock: pass:normal[xref:#Votes-clock--[`++clock++`]]
- :CLOCK_MODE: pass:normal[xref:#Votes-CLOCK_MODE--[`++CLOCK_MODE++`]]
- :_validateTimepoint: pass:normal[xref:#Votes-_validateTimepoint-uint256-[`++_validateTimepoint++`]]
- :getVotes: pass:normal[xref:#Votes-getVotes-address-[`++getVotes++`]]
- :getPastVotes: pass:normal[xref:#Votes-getPastVotes-address-uint256-[`++getPastVotes++`]]
- :getPastTotalSupply: pass:normal[xref:#Votes-getPastTotalSupply-uint256-[`++getPastTotalSupply++`]]
- :_getTotalSupply: pass:normal[xref:#Votes-_getTotalSupply--[`++_getTotalSupply++`]]
- :delegates: pass:normal[xref:#Votes-delegates-address-[`++delegates++`]]
- :delegate: pass:normal[xref:#Votes-delegate-address-[`++delegate++`]]
- :delegateBySig: pass:normal[xref:#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`++delegateBySig++`]]
- :_delegate: pass:normal[xref:#Votes-_delegate-address-address-[`++_delegate++`]]
- :_transferVotingUnits: pass:normal[xref:#Votes-_transferVotingUnits-address-address-uint256-[`++_transferVotingUnits++`]]
- :_moveDelegateVotes: pass:normal[xref:#Votes-_moveDelegateVotes-address-address-uint256-[`++_moveDelegateVotes++`]]
- :_numCheckpoints: pass:normal[xref:#Votes-_numCheckpoints-address-[`++_numCheckpoints++`]]
- :_checkpoints: pass:normal[xref:#Votes-_checkpoints-address-uint32-[`++_checkpoints++`]]
- :_getVotingUnits: pass:normal[xref:#Votes-_getVotingUnits-address-[`++_getVotingUnits++`]]
- :clock-: pass:normal[xref:#Votes-clock--[`++clock++`]]
- :CLOCK_MODE-: pass:normal[xref:#Votes-CLOCK_MODE--[`++CLOCK_MODE++`]]
- :_validateTimepoint-uint256: pass:normal[xref:#Votes-_validateTimepoint-uint256-[`++_validateTimepoint++`]]
- :getVotes-address: pass:normal[xref:#Votes-getVotes-address-[`++getVotes++`]]
- :getPastVotes-address-uint256: pass:normal[xref:#Votes-getPastVotes-address-uint256-[`++getPastVotes++`]]
- :getPastTotalSupply-uint256: pass:normal[xref:#Votes-getPastTotalSupply-uint256-[`++getPastTotalSupply++`]]
- :_getTotalSupply-: pass:normal[xref:#Votes-_getTotalSupply--[`++_getTotalSupply++`]]
- :delegates-address: pass:normal[xref:#Votes-delegates-address-[`++delegates++`]]
- :delegate-address: pass:normal[xref:#Votes-delegate-address-[`++delegate++`]]
- :delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32: pass:normal[xref:#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`++delegateBySig++`]]
- :_delegate-address-address: pass:normal[xref:#Votes-_delegate-address-address-[`++_delegate++`]]
- :_transferVotingUnits-address-address-uint256: pass:normal[xref:#Votes-_transferVotingUnits-address-address-uint256-[`++_transferVotingUnits++`]]
- :_moveDelegateVotes-address-address-uint256: pass:normal[xref:#Votes-_moveDelegateVotes-address-address-uint256-[`++_moveDelegateVotes++`]]
- :_numCheckpoints-address: pass:normal[xref:#Votes-_numCheckpoints-address-[`++_numCheckpoints++`]]
- :_checkpoints-address-uint32: pass:normal[xref:#Votes-_checkpoints-address-uint32-[`++_checkpoints++`]]
- :_getVotingUnits-address: pass:normal[xref:#Votes-_getVotingUnits-address-[`++_getVotingUnits++`]]
- [.contract]
- [[Votes]]
- === `++Votes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/utils/Votes.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/utils/Votes.sol";
- ```
- This is a base abstract contract that tracks voting units, which are a measure of voting power that can be
- transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of
- "representative" that will pool delegated voting units from different accounts and can then use it to vote in
- decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to
- delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.
- This contract is often combined with a token contract such that voting units correspond to token units. For an
- example, see {ERC721Votes}.
- The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed
- at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the
- cost of this history tracking optional.
- When using this module the derived contract must implement {_getVotingUnits} (for example, make it return
- {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the
- previous example, it would be included in {ERC721-_update}).
- [.contract-index]
- .Functions
- --
- * {xref-Votes-clock--}[`++clock()++`]
- * {xref-Votes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Votes-_validateTimepoint-uint256-}[`++_validateTimepoint(timepoint)++`]
- * {xref-Votes-getVotes-address-}[`++getVotes(account)++`]
- * {xref-Votes-getPastVotes-address-uint256-}[`++getPastVotes(account, timepoint)++`]
- * {xref-Votes-getPastTotalSupply-uint256-}[`++getPastTotalSupply(timepoint)++`]
- * {xref-Votes-_getTotalSupply--}[`++_getTotalSupply()++`]
- * {xref-Votes-delegates-address-}[`++delegates(account)++`]
- * {xref-Votes-delegate-address-}[`++delegate(delegatee)++`]
- * {xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-}[`++delegateBySig(delegatee, nonce, expiry, v, r, s)++`]
- * {xref-Votes-_delegate-address-address-}[`++_delegate(account, delegatee)++`]
- * {xref-Votes-_transferVotingUnits-address-address-uint256-}[`++_transferVotingUnits(from, to, amount)++`]
- * {xref-Votes-_moveDelegateVotes-address-address-uint256-}[`++_moveDelegateVotes(from, to, amount)++`]
- * {xref-Votes-_numCheckpoints-address-}[`++_numCheckpoints(account)++`]
- * {xref-Votes-_checkpoints-address-uint32-}[`++_checkpoints(account, pos)++`]
- * {xref-Votes-_getVotingUnits-address-}[`++_getVotingUnits()++`]
- [.contract-subindex-inherited]
- .IERC5805
- [.contract-subindex-inherited]
- .IVotes
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .IERC5805
- [.contract-subindex-inherited]
- .IVotes
- * {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`]
- * {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousVotes, newVotes)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- --
- [.contract-index]
- .Errors
- --
- * {xref-Votes-ERC6372InconsistentClock--}[`++ERC6372InconsistentClock()++`]
- * {xref-Votes-ERC5805FutureLookup-uint256-uint48-}[`++ERC5805FutureLookup(timepoint, clock)++`]
- [.contract-subindex-inherited]
- .IERC5805
- [.contract-subindex-inherited]
- .IVotes
- * {xref-IVotes-VotesExpiredSignature-uint256-}[`++VotesExpiredSignature(expiry)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- --
- [.contract-item]
- [[Votes-clock--]]
- ==== `[.contract-item-name]#++clock++#++() → uint48++` [.item-kind]#public#
- Clock used for flagging checkpoints. Can be overridden to implement timestamp based
- checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.
- [.contract-item]
- [[Votes-CLOCK_MODE--]]
- ==== `[.contract-item-name]#++CLOCK_MODE++#++() → string++` [.item-kind]#public#
- Machine-readable description of the clock as specified in ERC-6372.
- [.contract-item]
- [[Votes-_validateTimepoint-uint256-]]
- ==== `[.contract-item-name]#++_validateTimepoint++#++(uint256 timepoint) → uint48++` [.item-kind]#internal#
- Validate that a timepoint is in the past, and return it as a uint48.
- [.contract-item]
- [[Votes-getVotes-address-]]
- ==== `[.contract-item-name]#++getVotes++#++(address account) → uint256++` [.item-kind]#public#
- Returns the current amount of votes that `account` has.
- [.contract-item]
- [[Votes-getPastVotes-address-uint256-]]
- ==== `[.contract-item-name]#++getPastVotes++#++(address account, uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is
- configured to use block numbers, this will return the value at the end of the corresponding block.
- Requirements:
- - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.
- [.contract-item]
- [[Votes-getPastTotalSupply-uint256-]]
- ==== `[.contract-item-name]#++getPastTotalSupply++#++(uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the total supply of votes available at a specific moment in the past. If the `clock()` is
- configured to use block numbers, this will return the value at the end of the corresponding block.
- NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.
- Votes that have not been delegated are still part of total supply, even though they would not participate in a
- vote.
- Requirements:
- - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.
- [.contract-item]
- [[Votes-_getTotalSupply--]]
- ==== `[.contract-item-name]#++_getTotalSupply++#++() → uint256++` [.item-kind]#internal#
- Returns the current total supply of votes.
- [.contract-item]
- [[Votes-delegates-address-]]
- ==== `[.contract-item-name]#++delegates++#++(address account) → address++` [.item-kind]#public#
- Returns the delegate that `account` has chosen.
- [.contract-item]
- [[Votes-delegate-address-]]
- ==== `[.contract-item-name]#++delegate++#++(address delegatee)++` [.item-kind]#public#
- Delegates votes from the sender to `delegatee`.
- [.contract-item]
- [[Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-]]
- ==== `[.contract-item-name]#++delegateBySig++#++(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s)++` [.item-kind]#public#
- Delegates votes from signer to `delegatee`.
- [.contract-item]
- [[Votes-_delegate-address-address-]]
- ==== `[.contract-item-name]#++_delegate++#++(address account, address delegatee)++` [.item-kind]#internal#
- Delegate all of `account`'s voting units to `delegatee`.
- Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.
- [.contract-item]
- [[Votes-_transferVotingUnits-address-address-uint256-]]
- ==== `[.contract-item-name]#++_transferVotingUnits++#++(address from, address to, uint256 amount)++` [.item-kind]#internal#
- Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`
- should be zero. Total supply of voting units will be adjusted with mints and burns.
- [.contract-item]
- [[Votes-_moveDelegateVotes-address-address-uint256-]]
- ==== `[.contract-item-name]#++_moveDelegateVotes++#++(address from, address to, uint256 amount)++` [.item-kind]#internal#
- Moves delegated votes from one delegate to another.
- [.contract-item]
- [[Votes-_numCheckpoints-address-]]
- ==== `[.contract-item-name]#++_numCheckpoints++#++(address account) → uint32++` [.item-kind]#internal#
- Get number of checkpoints for `account`.
- [.contract-item]
- [[Votes-_checkpoints-address-uint32-]]
- ==== `[.contract-item-name]#++_checkpoints++#++(address account, uint32 pos) → struct Checkpoints.Checkpoint208++` [.item-kind]#internal#
- Get the `pos`-th checkpoint for `account`.
- [.contract-item]
- [[Votes-_getVotingUnits-address-]]
- ==== `[.contract-item-name]#++_getVotingUnits++#++(address) → uint256++` [.item-kind]#internal#
- Must return the voting units held by an account.
- [.contract-item]
- [[Votes-ERC6372InconsistentClock--]]
- ==== `[.contract-item-name]#++ERC6372InconsistentClock++#++()++` [.item-kind]#error#
- The clock was incorrectly modified.
- [.contract-item]
- [[Votes-ERC5805FutureLookup-uint256-uint48-]]
- ==== `[.contract-item-name]#++ERC5805FutureLookup++#++(uint256 timepoint, uint48 clock)++` [.item-kind]#error#
- Lookup to future votes is not available.
- :getPastDelegate: pass:normal[xref:#VotesExtended-getPastDelegate-address-uint256-[`++getPastDelegate++`]]
- :getPastBalanceOf: pass:normal[xref:#VotesExtended-getPastBalanceOf-address-uint256-[`++getPastBalanceOf++`]]
- :_delegate: pass:normal[xref:#VotesExtended-_delegate-address-address-[`++_delegate++`]]
- :_transferVotingUnits: pass:normal[xref:#VotesExtended-_transferVotingUnits-address-address-uint256-[`++_transferVotingUnits++`]]
- :getPastDelegate-address-uint256: pass:normal[xref:#VotesExtended-getPastDelegate-address-uint256-[`++getPastDelegate++`]]
- :getPastBalanceOf-address-uint256: pass:normal[xref:#VotesExtended-getPastBalanceOf-address-uint256-[`++getPastBalanceOf++`]]
- :_delegate-address-address: pass:normal[xref:#VotesExtended-_delegate-address-address-[`++_delegate++`]]
- :_transferVotingUnits-address-address-uint256: pass:normal[xref:#VotesExtended-_transferVotingUnits-address-address-uint256-[`++_transferVotingUnits++`]]
- [.contract]
- [[VotesExtended]]
- === `++VotesExtended++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/utils/VotesExtended.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/utils/VotesExtended.sol";
- ```
- Extension of {Votes} that adds checkpoints for delegations and balances.
- WARNING: While this contract extends {Votes}, valid uses of {Votes} may not be compatible with
- {VotesExtended} without additional considerations. This implementation of {_transferVotingUnits} must
- run AFTER the voting weight movement is registered, such that it is reflected on {_getVotingUnits}.
- Said differently, {VotesExtended} MUST be integrated in a way that calls {_transferVotingUnits} AFTER the
- asset transfer is registered and balances are updated:
- ```solidity
- contract VotingToken is Token, VotesExtended {
- function transfer(address from, address to, uint256 tokenId) public override {
- super.transfer(from, to, tokenId); // <- Perform the transfer first ...
- _transferVotingUnits(from, to, 1); // <- ... then call _transferVotingUnits.
- }
- function _getVotingUnits(address account) internal view override returns (uint256) {
- return balanceOf(account);
- }
- }
- ```
- {ERC20Votes} and {ERC721Votes} follow this pattern and are thus safe to use with {VotesExtended}.
- [.contract-index]
- .Functions
- --
- * {xref-VotesExtended-getPastDelegate-address-uint256-}[`++getPastDelegate(account, timepoint)++`]
- * {xref-VotesExtended-getPastBalanceOf-address-uint256-}[`++getPastBalanceOf(account, timepoint)++`]
- * {xref-VotesExtended-_delegate-address-address-}[`++_delegate(account, delegatee)++`]
- * {xref-VotesExtended-_transferVotingUnits-address-address-uint256-}[`++_transferVotingUnits(from, to, amount)++`]
- [.contract-subindex-inherited]
- .Votes
- * {xref-Votes-clock--}[`++clock()++`]
- * {xref-Votes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
- * {xref-Votes-_validateTimepoint-uint256-}[`++_validateTimepoint(timepoint)++`]
- * {xref-Votes-getVotes-address-}[`++getVotes(account)++`]
- * {xref-Votes-getPastVotes-address-uint256-}[`++getPastVotes(account, timepoint)++`]
- * {xref-Votes-getPastTotalSupply-uint256-}[`++getPastTotalSupply(timepoint)++`]
- * {xref-Votes-_getTotalSupply--}[`++_getTotalSupply()++`]
- * {xref-Votes-delegates-address-}[`++delegates(account)++`]
- * {xref-Votes-delegate-address-}[`++delegate(delegatee)++`]
- * {xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-}[`++delegateBySig(delegatee, nonce, expiry, v, r, s)++`]
- * {xref-Votes-_moveDelegateVotes-address-address-uint256-}[`++_moveDelegateVotes(from, to, amount)++`]
- * {xref-Votes-_numCheckpoints-address-}[`++_numCheckpoints(account)++`]
- * {xref-Votes-_checkpoints-address-uint32-}[`++_checkpoints(account, pos)++`]
- * {xref-Votes-_getVotingUnits-address-}[`++_getVotingUnits()++`]
- [.contract-subindex-inherited]
- .IERC5805
- [.contract-subindex-inherited]
- .IVotes
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
- * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
- * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
- * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
- * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
- * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
- * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
- [.contract-subindex-inherited]
- .IERC5267
- --
- [.contract-index]
- .Events
- --
- [.contract-subindex-inherited]
- .Votes
- [.contract-subindex-inherited]
- .IERC5805
- [.contract-subindex-inherited]
- .IVotes
- * {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`]
- * {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousVotes, newVotes)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
- --
- [.contract-index]
- .Errors
- --
- [.contract-subindex-inherited]
- .Votes
- * {xref-Votes-ERC6372InconsistentClock--}[`++ERC6372InconsistentClock()++`]
- * {xref-Votes-ERC5805FutureLookup-uint256-uint48-}[`++ERC5805FutureLookup(timepoint, clock)++`]
- [.contract-subindex-inherited]
- .IERC5805
- [.contract-subindex-inherited]
- .IVotes
- * {xref-IVotes-VotesExpiredSignature-uint256-}[`++VotesExpiredSignature(expiry)++`]
- [.contract-subindex-inherited]
- .IERC6372
- [.contract-subindex-inherited]
- .Nonces
- * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
- [.contract-subindex-inherited]
- .EIP712
- [.contract-subindex-inherited]
- .IERC5267
- --
- [.contract-item]
- [[VotesExtended-getPastDelegate-address-uint256-]]
- ==== `[.contract-item-name]#++getPastDelegate++#++(address account, uint256 timepoint) → address++` [.item-kind]#public#
- Returns the delegate of an `account` at a specific moment in the past. If the `clock()` is
- configured to use block numbers, this will return the value at the end of the corresponding block.
- Requirements:
- - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.
- [.contract-item]
- [[VotesExtended-getPastBalanceOf-address-uint256-]]
- ==== `[.contract-item-name]#++getPastBalanceOf++#++(address account, uint256 timepoint) → uint256++` [.item-kind]#public#
- Returns the `balanceOf` of an `account` at a specific moment in the past. If the `clock()` is
- configured to use block numbers, this will return the value at the end of the corresponding block.
- Requirements:
- - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.
- [.contract-item]
- [[VotesExtended-_delegate-address-address-]]
- ==== `[.contract-item-name]#++_delegate++#++(address account, address delegatee)++` [.item-kind]#internal#
- Delegate all of `account`'s voting units to `delegatee`.
- Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.
- [.contract-item]
- [[VotesExtended-_transferVotingUnits-address-address-uint256-]]
- ==== `[.contract-item-name]#++_transferVotingUnits++#++(address from, address to, uint256 amount)++` [.item-kind]#internal#
- Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`
- should be zero. Total supply of voting units will be adjusted with mints and burns.
- == Timelock
- In a governance system, the {TimelockController} contract is in charge of introducing a delay between a proposal and its execution. It can be used with or without a {Governor}.
- :PROPOSER_ROLE: pass:normal[xref:#TimelockController-PROPOSER_ROLE-bytes32[`++PROPOSER_ROLE++`]]
- :EXECUTOR_ROLE: pass:normal[xref:#TimelockController-EXECUTOR_ROLE-bytes32[`++EXECUTOR_ROLE++`]]
- :CANCELLER_ROLE: pass:normal[xref:#TimelockController-CANCELLER_ROLE-bytes32[`++CANCELLER_ROLE++`]]
- :_DONE_TIMESTAMP: pass:normal[xref:#TimelockController-_DONE_TIMESTAMP-uint256[`++_DONE_TIMESTAMP++`]]
- :OperationState: pass:normal[xref:#TimelockController-OperationState[`++OperationState++`]]
- :TimelockInvalidOperationLength: pass:normal[xref:#TimelockController-TimelockInvalidOperationLength-uint256-uint256-uint256-[`++TimelockInvalidOperationLength++`]]
- :TimelockInsufficientDelay: pass:normal[xref:#TimelockController-TimelockInsufficientDelay-uint256-uint256-[`++TimelockInsufficientDelay++`]]
- :TimelockUnexpectedOperationState: pass:normal[xref:#TimelockController-TimelockUnexpectedOperationState-bytes32-bytes32-[`++TimelockUnexpectedOperationState++`]]
- :TimelockUnexecutedPredecessor: pass:normal[xref:#TimelockController-TimelockUnexecutedPredecessor-bytes32-[`++TimelockUnexecutedPredecessor++`]]
- :TimelockUnauthorizedCaller: pass:normal[xref:#TimelockController-TimelockUnauthorizedCaller-address-[`++TimelockUnauthorizedCaller++`]]
- :CallScheduled: pass:normal[xref:#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-[`++CallScheduled++`]]
- :CallExecuted: pass:normal[xref:#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-[`++CallExecuted++`]]
- :CallSalt: pass:normal[xref:#TimelockController-CallSalt-bytes32-bytes32-[`++CallSalt++`]]
- :Cancelled: pass:normal[xref:#TimelockController-Cancelled-bytes32-[`++Cancelled++`]]
- :MinDelayChange: pass:normal[xref:#TimelockController-MinDelayChange-uint256-uint256-[`++MinDelayChange++`]]
- :constructor: pass:normal[xref:#TimelockController-constructor-uint256-address---address---address-[`++constructor++`]]
- :onlyRoleOrOpenRole: pass:normal[xref:#TimelockController-onlyRoleOrOpenRole-bytes32-[`++onlyRoleOrOpenRole++`]]
- :receive: pass:normal[xref:#TimelockController-receive--[`++receive++`]]
- :supportsInterface: pass:normal[xref:#TimelockController-supportsInterface-bytes4-[`++supportsInterface++`]]
- :isOperation: pass:normal[xref:#TimelockController-isOperation-bytes32-[`++isOperation++`]]
- :isOperationPending: pass:normal[xref:#TimelockController-isOperationPending-bytes32-[`++isOperationPending++`]]
- :isOperationReady: pass:normal[xref:#TimelockController-isOperationReady-bytes32-[`++isOperationReady++`]]
- :isOperationDone: pass:normal[xref:#TimelockController-isOperationDone-bytes32-[`++isOperationDone++`]]
- :getTimestamp: pass:normal[xref:#TimelockController-getTimestamp-bytes32-[`++getTimestamp++`]]
- :getOperationState: pass:normal[xref:#TimelockController-getOperationState-bytes32-[`++getOperationState++`]]
- :getMinDelay: pass:normal[xref:#TimelockController-getMinDelay--[`++getMinDelay++`]]
- :hashOperation: pass:normal[xref:#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-[`++hashOperation++`]]
- :hashOperationBatch: pass:normal[xref:#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-[`++hashOperationBatch++`]]
- :schedule: pass:normal[xref:#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`++schedule++`]]
- :scheduleBatch: pass:normal[xref:#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`++scheduleBatch++`]]
- :cancel: pass:normal[xref:#TimelockController-cancel-bytes32-[`++cancel++`]]
- :execute: pass:normal[xref:#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`++execute++`]]
- :executeBatch: pass:normal[xref:#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`++executeBatch++`]]
- :_execute: pass:normal[xref:#TimelockController-_execute-address-uint256-bytes-[`++_execute++`]]
- :updateDelay: pass:normal[xref:#TimelockController-updateDelay-uint256-[`++updateDelay++`]]
- :_encodeStateBitmap: pass:normal[xref:#TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-[`++_encodeStateBitmap++`]]
- :constructor-uint256-address---address---address: pass:normal[xref:#TimelockController-constructor-uint256-address---address---address-[`++constructor++`]]
- :receive-: pass:normal[xref:#TimelockController-receive--[`++receive++`]]
- :supportsInterface-bytes4: pass:normal[xref:#TimelockController-supportsInterface-bytes4-[`++supportsInterface++`]]
- :isOperation-bytes32: pass:normal[xref:#TimelockController-isOperation-bytes32-[`++isOperation++`]]
- :isOperationPending-bytes32: pass:normal[xref:#TimelockController-isOperationPending-bytes32-[`++isOperationPending++`]]
- :isOperationReady-bytes32: pass:normal[xref:#TimelockController-isOperationReady-bytes32-[`++isOperationReady++`]]
- :isOperationDone-bytes32: pass:normal[xref:#TimelockController-isOperationDone-bytes32-[`++isOperationDone++`]]
- :getTimestamp-bytes32: pass:normal[xref:#TimelockController-getTimestamp-bytes32-[`++getTimestamp++`]]
- :getOperationState-bytes32: pass:normal[xref:#TimelockController-getOperationState-bytes32-[`++getOperationState++`]]
- :getMinDelay-: pass:normal[xref:#TimelockController-getMinDelay--[`++getMinDelay++`]]
- :hashOperation-address-uint256-bytes-bytes32-bytes32: pass:normal[xref:#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-[`++hashOperation++`]]
- :hashOperationBatch-address---uint256---bytes---bytes32-bytes32: pass:normal[xref:#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-[`++hashOperationBatch++`]]
- :schedule-address-uint256-bytes-bytes32-bytes32-uint256: pass:normal[xref:#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`++schedule++`]]
- :scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256: pass:normal[xref:#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`++scheduleBatch++`]]
- :cancel-bytes32: pass:normal[xref:#TimelockController-cancel-bytes32-[`++cancel++`]]
- :execute-address-uint256-bytes-bytes32-bytes32: pass:normal[xref:#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`++execute++`]]
- :executeBatch-address---uint256---bytes---bytes32-bytes32: pass:normal[xref:#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`++executeBatch++`]]
- :_execute-address-uint256-bytes: pass:normal[xref:#TimelockController-_execute-address-uint256-bytes-[`++_execute++`]]
- :updateDelay-uint256: pass:normal[xref:#TimelockController-updateDelay-uint256-[`++updateDelay++`]]
- :_encodeStateBitmap-enum-TimelockController-OperationState: pass:normal[xref:#TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-[`++_encodeStateBitmap++`]]
- :PROPOSER_ROLE-bytes32: pass:normal[xref:#TimelockController-PROPOSER_ROLE-bytes32[`++PROPOSER_ROLE++`]]
- :EXECUTOR_ROLE-bytes32: pass:normal[xref:#TimelockController-EXECUTOR_ROLE-bytes32[`++EXECUTOR_ROLE++`]]
- :CANCELLER_ROLE-bytes32: pass:normal[xref:#TimelockController-CANCELLER_ROLE-bytes32[`++CANCELLER_ROLE++`]]
- [.contract]
- [[TimelockController]]
- === `++TimelockController++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.4.0/contracts/governance/TimelockController.sol[{github-icon},role=heading-link]
- [.hljs-theme-light.nopadding]
- ```solidity
- import "@openzeppelin/contracts/governance/TimelockController.sol";
- ```
- Contract module which acts as a timelocked controller. When set as the
- owner of an `Ownable` smart contract, it enforces a timelock on all
- `onlyOwner` maintenance operations. This gives time for users of the
- controlled contract to exit before a potentially dangerous maintenance
- operation is applied.
- By default, this contract is self administered, meaning administration tasks
- have to go through the timelock process. The proposer (resp executor) role
- is in charge of proposing (resp executing) operations. A common use case is
- to position this {TimelockController} as the owner of a smart contract, with
- a multisig or a DAO as the sole proposer.
- [.contract-index]
- .Modifiers
- --
- * {xref-TimelockController-onlyRoleOrOpenRole-bytes32-}[`++onlyRoleOrOpenRole(role)++`]
- --
- [.contract-index]
- .Functions
- --
- * {xref-TimelockController-constructor-uint256-address---address---address-}[`++constructor(minDelay, proposers, executors, admin)++`]
- * {xref-TimelockController-receive--}[`++receive()++`]
- * {xref-TimelockController-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
- * {xref-TimelockController-isOperation-bytes32-}[`++isOperation(id)++`]
- * {xref-TimelockController-isOperationPending-bytes32-}[`++isOperationPending(id)++`]
- * {xref-TimelockController-isOperationReady-bytes32-}[`++isOperationReady(id)++`]
- * {xref-TimelockController-isOperationDone-bytes32-}[`++isOperationDone(id)++`]
- * {xref-TimelockController-getTimestamp-bytes32-}[`++getTimestamp(id)++`]
- * {xref-TimelockController-getOperationState-bytes32-}[`++getOperationState(id)++`]
- * {xref-TimelockController-getMinDelay--}[`++getMinDelay()++`]
- * {xref-TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-}[`++hashOperation(target, value, data, predecessor, salt)++`]
- * {xref-TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-}[`++hashOperationBatch(targets, values, payloads, predecessor, salt)++`]
- * {xref-TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-}[`++schedule(target, value, data, predecessor, salt, delay)++`]
- * {xref-TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-}[`++scheduleBatch(targets, values, payloads, predecessor, salt, delay)++`]
- * {xref-TimelockController-cancel-bytes32-}[`++cancel(id)++`]
- * {xref-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-}[`++execute(target, value, payload, predecessor, salt)++`]
- * {xref-TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-}[`++executeBatch(targets, values, payloads, predecessor, salt)++`]
- * {xref-TimelockController-_execute-address-uint256-bytes-}[`++_execute(target, value, data)++`]
- * {xref-TimelockController-updateDelay-uint256-}[`++updateDelay(newDelay)++`]
- * {xref-TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-}[`++_encodeStateBitmap(operationState)++`]
- * {xref-TimelockController-PROPOSER_ROLE-bytes32}[`++PROPOSER_ROLE()++`]
- * {xref-TimelockController-EXECUTOR_ROLE-bytes32}[`++EXECUTOR_ROLE()++`]
- * {xref-TimelockController-CANCELLER_ROLE-bytes32}[`++CANCELLER_ROLE()++`]
- [.contract-subindex-inherited]
- .ERC1155Holder
- * {xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
- * {xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .ERC721Holder
- * {xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .AccessControl
- * {xref-AccessControl-hasRole-bytes32-address-}[`++hasRole(role, account)++`]
- * {xref-AccessControl-_checkRole-bytes32-}[`++_checkRole(role)++`]
- * {xref-AccessControl-_checkRole-bytes32-address-}[`++_checkRole(role, account)++`]
- * {xref-AccessControl-getRoleAdmin-bytes32-}[`++getRoleAdmin(role)++`]
- * {xref-AccessControl-grantRole-bytes32-address-}[`++grantRole(role, account)++`]
- * {xref-AccessControl-revokeRole-bytes32-address-}[`++revokeRole(role, account)++`]
- * {xref-AccessControl-renounceRole-bytes32-address-}[`++renounceRole(role, callerConfirmation)++`]
- * {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`]
- * {xref-AccessControl-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`]
- * {xref-AccessControl-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`]
- * {xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32}[`++DEFAULT_ADMIN_ROLE()++`]
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- [.contract-subindex-inherited]
- .IAccessControl
- --
- [.contract-index]
- .Events
- --
- * {xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-}[`++CallScheduled(id, index, target, value, data, predecessor, delay)++`]
- * {xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-}[`++CallExecuted(id, index, target, value, data)++`]
- * {xref-TimelockController-CallSalt-bytes32-bytes32-}[`++CallSalt(id, salt)++`]
- * {xref-TimelockController-Cancelled-bytes32-}[`++Cancelled(id)++`]
- * {xref-TimelockController-MinDelayChange-uint256-uint256-}[`++MinDelayChange(oldDuration, newDuration)++`]
- [.contract-subindex-inherited]
- .ERC1155Holder
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .ERC721Holder
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .AccessControl
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- [.contract-subindex-inherited]
- .IAccessControl
- * {xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-}[`++RoleAdminChanged(role, previousAdminRole, newAdminRole)++`]
- * {xref-IAccessControl-RoleGranted-bytes32-address-address-}[`++RoleGranted(role, account, sender)++`]
- * {xref-IAccessControl-RoleRevoked-bytes32-address-address-}[`++RoleRevoked(role, account, sender)++`]
- --
- [.contract-index]
- .Errors
- --
- * {xref-TimelockController-TimelockInvalidOperationLength-uint256-uint256-uint256-}[`++TimelockInvalidOperationLength(targets, payloads, values)++`]
- * {xref-TimelockController-TimelockInsufficientDelay-uint256-uint256-}[`++TimelockInsufficientDelay(delay, minDelay)++`]
- * {xref-TimelockController-TimelockUnexpectedOperationState-bytes32-bytes32-}[`++TimelockUnexpectedOperationState(operationId, expectedStates)++`]
- * {xref-TimelockController-TimelockUnexecutedPredecessor-bytes32-}[`++TimelockUnexecutedPredecessor(predecessorId)++`]
- * {xref-TimelockController-TimelockUnauthorizedCaller-address-}[`++TimelockUnauthorizedCaller(caller)++`]
- [.contract-subindex-inherited]
- .ERC1155Holder
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .ERC721Holder
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .AccessControl
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- [.contract-subindex-inherited]
- .IAccessControl
- * {xref-IAccessControl-AccessControlUnauthorizedAccount-address-bytes32-}[`++AccessControlUnauthorizedAccount(account, neededRole)++`]
- * {xref-IAccessControl-AccessControlBadConfirmation--}[`++AccessControlBadConfirmation()++`]
- --
- [.contract-index]
- .Internal Variables
- --
- * {xref-TimelockController-_DONE_TIMESTAMP-uint256}[`++uint256 constant _DONE_TIMESTAMP++`]
- [.contract-subindex-inherited]
- .ERC1155Holder
- [.contract-subindex-inherited]
- .IERC1155Receiver
- [.contract-subindex-inherited]
- .ERC721Holder
- [.contract-subindex-inherited]
- .IERC721Receiver
- [.contract-subindex-inherited]
- .AccessControl
- [.contract-subindex-inherited]
- .ERC165
- [.contract-subindex-inherited]
- .IERC165
- [.contract-subindex-inherited]
- .IAccessControl
- --
- [.contract-item]
- [[TimelockController-onlyRoleOrOpenRole-bytes32-]]
- ==== `[.contract-item-name]#++onlyRoleOrOpenRole++#++(bytes32 role)++` [.item-kind]#modifier#
- Modifier to make a function callable only by a certain role. In
- addition to checking the sender's role, `address(0)` 's role is also
- considered. Granting a role to `address(0)` is equivalent to enabling
- this role for everyone.
- [.contract-item]
- [[TimelockController-constructor-uint256-address---address---address-]]
- ==== `[.contract-item-name]#++constructor++#++(uint256 minDelay, address[] proposers, address[] executors, address admin)++` [.item-kind]#public#
- Initializes the contract with the following parameters:
- - `minDelay`: initial minimum delay in seconds for operations
- - `proposers`: accounts to be granted proposer and canceller roles
- - `executors`: accounts to be granted executor role
- - `admin`: optional account to be granted admin role; disable with zero address
- IMPORTANT: The optional admin can aid with initial configuration of roles after deployment
- without being subject to delay, but this role should be subsequently renounced in favor of
- administration through timelocked proposals. Previous versions of this contract would assign
- this admin to the deployer automatically and should be renounced as well.
- [.contract-item]
- [[TimelockController-receive--]]
- ==== `[.contract-item-name]#++receive++#++()++` [.item-kind]#external#
- Contract might receive/hold ETH as part of the maintenance process.
- [.contract-item]
- [[TimelockController-supportsInterface-bytes4-]]
- ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
- [.contract-item]
- [[TimelockController-isOperation-bytes32-]]
- ==== `[.contract-item-name]#++isOperation++#++(bytes32 id) → bool++` [.item-kind]#public#
- Returns whether an id corresponds to a registered operation. This
- includes both Waiting, Ready, and Done operations.
- [.contract-item]
- [[TimelockController-isOperationPending-bytes32-]]
- ==== `[.contract-item-name]#++isOperationPending++#++(bytes32 id) → bool++` [.item-kind]#public#
- Returns whether an operation is pending or not. Note that a "pending" operation may also be "ready".
- [.contract-item]
- [[TimelockController-isOperationReady-bytes32-]]
- ==== `[.contract-item-name]#++isOperationReady++#++(bytes32 id) → bool++` [.item-kind]#public#
- Returns whether an operation is ready for execution. Note that a "ready" operation is also "pending".
- [.contract-item]
- [[TimelockController-isOperationDone-bytes32-]]
- ==== `[.contract-item-name]#++isOperationDone++#++(bytes32 id) → bool++` [.item-kind]#public#
- Returns whether an operation is done or not.
- [.contract-item]
- [[TimelockController-getTimestamp-bytes32-]]
- ==== `[.contract-item-name]#++getTimestamp++#++(bytes32 id) → uint256++` [.item-kind]#public#
- Returns the timestamp at which an operation becomes ready (0 for
- unset operations, 1 for done operations).
- [.contract-item]
- [[TimelockController-getOperationState-bytes32-]]
- ==== `[.contract-item-name]#++getOperationState++#++(bytes32 id) → enum TimelockController.OperationState++` [.item-kind]#public#
- Returns operation state.
- [.contract-item]
- [[TimelockController-getMinDelay--]]
- ==== `[.contract-item-name]#++getMinDelay++#++() → uint256++` [.item-kind]#public#
- Returns the minimum delay in seconds for an operation to become valid.
- This value can be changed by executing an operation that calls `updateDelay`.
- [.contract-item]
- [[TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-]]
- ==== `[.contract-item-name]#++hashOperation++#++(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt) → bytes32++` [.item-kind]#public#
- Returns the identifier of an operation containing a single
- transaction.
- [.contract-item]
- [[TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-]]
- ==== `[.contract-item-name]#++hashOperationBatch++#++(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt) → bytes32++` [.item-kind]#public#
- Returns the identifier of an operation containing a batch of
- transactions.
- [.contract-item]
- [[TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-]]
- ==== `[.contract-item-name]#++schedule++#++(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt, uint256 delay)++` [.item-kind]#public#
- Schedule an operation containing a single transaction.
- Emits {CallSalt} if salt is nonzero, and {CallScheduled}.
- Requirements:
- - the caller must have the 'proposer' role.
- [.contract-item]
- [[TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-]]
- ==== `[.contract-item-name]#++scheduleBatch++#++(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt, uint256 delay)++` [.item-kind]#public#
- Schedule an operation containing a batch of transactions.
- Emits {CallSalt} if salt is nonzero, and one {CallScheduled} event per transaction in the batch.
- Requirements:
- - the caller must have the 'proposer' role.
- [.contract-item]
- [[TimelockController-cancel-bytes32-]]
- ==== `[.contract-item-name]#++cancel++#++(bytes32 id)++` [.item-kind]#public#
- Cancel an operation.
- Requirements:
- - the caller must have the 'canceller' role.
- [.contract-item]
- [[TimelockController-execute-address-uint256-bytes-bytes32-bytes32-]]
- ==== `[.contract-item-name]#++execute++#++(address target, uint256 value, bytes payload, bytes32 predecessor, bytes32 salt)++` [.item-kind]#public#
- Execute an (ready) operation containing a single transaction.
- Emits a {CallExecuted} event.
- Requirements:
- - the caller must have the 'executor' role.
- [.contract-item]
- [[TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-]]
- ==== `[.contract-item-name]#++executeBatch++#++(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt)++` [.item-kind]#public#
- Execute an (ready) operation containing a batch of transactions.
- Emits one {CallExecuted} event per transaction in the batch.
- Requirements:
- - the caller must have the 'executor' role.
- [.contract-item]
- [[TimelockController-_execute-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++_execute++#++(address target, uint256 value, bytes data)++` [.item-kind]#internal#
- Execute an operation's call.
- [.contract-item]
- [[TimelockController-updateDelay-uint256-]]
- ==== `[.contract-item-name]#++updateDelay++#++(uint256 newDelay)++` [.item-kind]#external#
- Changes the minimum timelock duration for future operations.
- Emits a {MinDelayChange} event.
- Requirements:
- - the caller must be the timelock itself. This can only be achieved by scheduling and later executing
- an operation where the timelock is the target and the data is the ABI-encoded call to this function.
- [.contract-item]
- [[TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-]]
- ==== `[.contract-item-name]#++_encodeStateBitmap++#++(enum TimelockController.OperationState operationState) → bytes32++` [.item-kind]#internal#
- Encodes a `OperationState` into a `bytes32` representation where each bit enabled corresponds to
- the underlying position in the `OperationState` enum. For example:
- 0x000...1000
- ^^^^^^----- ...
- ^---- Done
- ^--- Ready
- ^-- Waiting
- ^- Unset
- [.contract-item]
- [[TimelockController-PROPOSER_ROLE-bytes32]]
- ==== `[.contract-item-name]#++PROPOSER_ROLE++#++() → bytes32++` [.item-kind]#public#
- [.contract-item]
- [[TimelockController-EXECUTOR_ROLE-bytes32]]
- ==== `[.contract-item-name]#++EXECUTOR_ROLE++#++() → bytes32++` [.item-kind]#public#
- [.contract-item]
- [[TimelockController-CANCELLER_ROLE-bytes32]]
- ==== `[.contract-item-name]#++CANCELLER_ROLE++#++() → bytes32++` [.item-kind]#public#
- [.contract-item]
- [[TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-]]
- ==== `[.contract-item-name]#++CallScheduled++#++(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay)++` [.item-kind]#event#
- Emitted when a call is scheduled as part of operation `id`.
- [.contract-item]
- [[TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-]]
- ==== `[.contract-item-name]#++CallExecuted++#++(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data)++` [.item-kind]#event#
- Emitted when a call is performed as part of operation `id`.
- [.contract-item]
- [[TimelockController-CallSalt-bytes32-bytes32-]]
- ==== `[.contract-item-name]#++CallSalt++#++(bytes32 indexed id, bytes32 salt)++` [.item-kind]#event#
- Emitted when new proposal is scheduled with non-zero salt.
- [.contract-item]
- [[TimelockController-Cancelled-bytes32-]]
- ==== `[.contract-item-name]#++Cancelled++#++(bytes32 indexed id)++` [.item-kind]#event#
- Emitted when operation `id` is cancelled.
- [.contract-item]
- [[TimelockController-MinDelayChange-uint256-uint256-]]
- ==== `[.contract-item-name]#++MinDelayChange++#++(uint256 oldDuration, uint256 newDuration)++` [.item-kind]#event#
- Emitted when the minimum delay for future operations is modified.
- [.contract-item]
- [[TimelockController-TimelockInvalidOperationLength-uint256-uint256-uint256-]]
- ==== `[.contract-item-name]#++TimelockInvalidOperationLength++#++(uint256 targets, uint256 payloads, uint256 values)++` [.item-kind]#error#
- Mismatch between the parameters length for an operation call.
- [.contract-item]
- [[TimelockController-TimelockInsufficientDelay-uint256-uint256-]]
- ==== `[.contract-item-name]#++TimelockInsufficientDelay++#++(uint256 delay, uint256 minDelay)++` [.item-kind]#error#
- The schedule operation doesn't meet the minimum delay.
- [.contract-item]
- [[TimelockController-TimelockUnexpectedOperationState-bytes32-bytes32-]]
- ==== `[.contract-item-name]#++TimelockUnexpectedOperationState++#++(bytes32 operationId, bytes32 expectedStates)++` [.item-kind]#error#
- The current state of an operation is not as required.
- The `expectedStates` is a bitmap with the bits enabled for each OperationState enum position
- counting from right to left.
- See {_encodeStateBitmap}.
- [.contract-item]
- [[TimelockController-TimelockUnexecutedPredecessor-bytes32-]]
- ==== `[.contract-item-name]#++TimelockUnexecutedPredecessor++#++(bytes32 predecessorId)++` [.item-kind]#error#
- The predecessor to an operation not yet done.
- [.contract-item]
- [[TimelockController-TimelockUnauthorizedCaller-address-]]
- ==== `[.contract-item-name]#++TimelockUnauthorizedCaller++#++(address caller)++` [.item-kind]#error#
- The caller account is not authorized.
- [.contract-item]
- [[TimelockController-_DONE_TIMESTAMP-uint256]]
- ==== `uint256 [.contract-item-name]#++_DONE_TIMESTAMP++#` [.item-kind]#internal constant#
- [[timelock-terminology]]
- ==== Terminology
- * *Operation:* A transaction (or a set of transactions) that is the subject of the timelock. It has to be scheduled by a proposer and executed by an executor. The timelock enforces a minimum delay between the proposition and the execution. If the operation contains multiple transactions (batch mode), they are executed atomically. Operations are identified by the hash of their content.
- * *Operation status:*
- ** *Unset:* An operation that is not part of the timelock mechanism.
- ** *Waiting:* An operation that has been scheduled, before the timer expires.
- ** *Ready:* An operation that has been scheduled, after the timer expires.
- ** *Pending:* An operation that is either waiting or ready.
- ** *Done:* An operation that has been executed.
- * *Predecessor*: An (optional) dependency between operations. An operation can depend on another operation (its predecessor), forcing the execution order of these two operations.
- * *Role*:
- ** *Admin:* An address (smart contract or EOA) that is in charge of granting the roles of Proposer and Executor.
- ** *Proposer:* An address (smart contract or EOA) that is in charge of scheduling (and cancelling) operations.
- ** *Executor:* An address (smart contract or EOA) that is in charge of executing operations once the timelock has expired. This role can be given to the zero address to allow anyone to execute operations.
- [[timelock-operation]]
- ==== Operation structure
- Operation executed by the xref:api:governance.adoc#TimelockController[`TimelockController`] can contain one or multiple subsequent calls. Depending on whether you need to multiple calls to be executed atomically, you can either use simple or batched operations.
- Both operations contain:
- * *Target*, the address of the smart contract that the timelock should operate on.
- * *Value*, in wei, that should be sent with the transaction. Most of the time this will be 0. Ether can be deposited before-end or passed along when executing the transaction.
- * *Data*, containing the encoded function selector and parameters of the call. This can be produced using a number of tools. For example, a maintenance operation granting role `ROLE` to `ACCOUNT` can be encoded using web3js as follows:
- ```javascript
- const data = timelock.contract.methods.grantRole(ROLE, ACCOUNT).encodeABI()
- ```
- * *Predecessor*, that specifies a dependency between operations. This dependency is optional. Use `bytes32(0)` if the operation does not have any dependency.
- * *Salt*, used to disambiguate two otherwise identical operations. This can be any random value.
- In the case of batched operations, `target`, `value` and `data` are specified as arrays, which must be of the same length.
- [[timelock-operation-lifecycle]]
- ==== Operation lifecycle
- Timelocked operations are identified by a unique id (their hash) and follow a specific lifecycle:
- `Unset` -> `Pending` -> `Pending` + `Ready` -> `Done`
- * By calling xref:api:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`schedule`] (or xref:api:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`scheduleBatch`]), a proposer moves the operation from the `Unset` to the `Pending` state. This starts a timer that must be longer than the minimum delay. The timer expires at a timestamp accessible through the xref:api:governance.adoc#TimelockController-getTimestamp-bytes32-[`getTimestamp`] method.
- * Once the timer expires, the operation automatically gets the `Ready` state. At this point, it can be executed.
- * By calling xref:api:governance.adoc#TimelockController-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`execute`] (or xref:api:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`executeBatch`]), an executor triggers the operation's underlying transactions and moves it to the `Done` state. If the operation has a predecessor, it has to be in the `Done` state for this transition to succeed.
- * xref:api:governance.adoc#TimelockController-TimelockController-cancel-bytes32-[`cancel`] allows proposers to cancel any `Pending` operation. This resets the operation to the `Unset` state. It is thus possible for a proposer to re-schedule an operation that has been cancelled. In this case, the timer restarts when the operation is rescheduled.
- Operations status can be queried using the functions:
- * xref:api:governance.adoc#TimelockController-isOperationPending-bytes32-[`isOperationPending(bytes32)`]
- * xref:api:governance.adoc#TimelockController-isOperationReady-bytes32-[`isOperationReady(bytes32)`]
- * xref:api:governance.adoc#TimelockController-isOperationDone-bytes32-[`isOperationDone(bytes32)`]
- [[timelock-roles]]
- ==== Roles
- [[timelock-admin]]
- ===== Admin
- The admins are in charge of managing proposers and executors. For the timelock to be self-governed, this role should only be given to the timelock itself. Upon deployment, the admin role can be granted to any address (in addition to the timelock itself). After further configuration and testing, this optional admin should renounce its role such that all further maintenance operations have to go through the timelock process.
- [[timelock-proposer]]
- ===== Proposer
- The proposers are in charge of scheduling (and cancelling) operations. This is a critical role, that should be given to governing entities. This could be an EOA, a multisig, or a DAO.
- WARNING: *Proposer fight:* Having multiple proposers, while providing redundancy in case one becomes unavailable, can be dangerous. As proposer have their say on all operations, they could cancel operations they disagree with, including operations to remove them for the proposers.
- This role is identified by the *PROPOSER_ROLE* value: `0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1`
- [[timelock-executor]]
- ===== Executor
- The executors are in charge of executing the operations scheduled by the proposers once the timelock expires. Logic dictates that multisig or DAO that are proposers should also be executors in order to guarantee operations that have been scheduled will eventually be executed. However, having additional executors can reduce the cost (the executing transaction does not require validation by the multisig or DAO that proposed it), while ensuring whoever is in charge of execution cannot trigger actions that have not been scheduled by the proposers. Alternatively, it is possible to allow _any_ address to execute a proposal once the timelock has expired by granting the executor role to the zero address.
- This role is identified by the *EXECUTOR_ROLE* value: `0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63`
- WARNING: A live contract without at least one proposer and one executor is locked. Make sure these roles are filled by reliable entities before the deployer renounces its administrative rights in favour of the timelock contract itself. See the {AccessControl} documentation to learn more about role management.
|