ERC721.adoc 160 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036
  1. :github-icon: pass:[<svg class="icon"><use href="#github-icon"/></svg>]
  2. :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]]
  3. :IERC721Metadata: pass:normal[xref:token/ERC721.adoc#IERC721Metadata[`IERC721Metadata`]]
  4. :IERC721Enumerable: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable[`IERC721Enumerable`]]
  5. :IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]]
  6. :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
  7. :ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]]
  8. :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]]
  9. :ERC721Consecutive: pass:normal[xref:token/ERC721.adoc#ERC721Consecutive[`ERC721Consecutive`]]
  10. :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]]
  11. :ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]]
  12. :ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]]
  13. :ERC721Pausable: pass:normal[xref:token/ERC721.adoc#ERC721Pausable[`ERC721Pausable`]]
  14. :ERC721Burnable: pass:normal[xref:token/ERC721.adoc#ERC721Burnable[`ERC721Burnable`]]
  15. :ERC721Wrapper: pass:normal[xref:token/ERC721.adoc#ERC721Wrapper[`ERC721Wrapper`]]
  16. :ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]]
  17. :xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address-
  18. :xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256-
  19. :xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-
  20. :xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-
  21. :xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-
  22. :xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256-
  23. :xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-
  24. :xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256-
  25. :xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-
  26. :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
  27. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  28. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  29. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  30. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  31. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  32. :xref-IERC721Metadata-name--: xref:token/ERC721.adoc#IERC721Metadata-name--
  33. :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol--
  34. :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-
  35. :xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address-
  36. :xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256-
  37. :xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-
  38. :xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-
  39. :xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-
  40. :xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256-
  41. :xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-
  42. :xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256-
  43. :xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-
  44. :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
  45. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  46. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  47. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  48. :xref-IERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--
  49. :xref-IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-
  50. :xref-IERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-
  51. :xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address-
  52. :xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256-
  53. :xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-
  54. :xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-
  55. :xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-
  56. :xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256-
  57. :xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-
  58. :xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256-
  59. :xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-
  60. :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
  61. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  62. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  63. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  64. :ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]]
  65. :xref-ERC721-constructor-string-string-: xref:token/ERC721.adoc#ERC721-constructor-string-string-
  66. :xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-
  67. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  68. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  69. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  70. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  71. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  72. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  73. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  74. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  75. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  76. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  77. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  78. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  79. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  80. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  81. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  82. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  83. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  84. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  85. :xref-ERC721-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-
  86. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  87. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  88. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  89. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  90. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  91. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  92. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  93. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  94. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  95. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  96. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  97. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  98. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  99. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  100. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  101. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  102. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  103. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  104. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  105. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  106. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  107. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  108. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  109. :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]]
  110. :IERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#IERC721-ownerOf-uint256-[`IERC721.ownerOf`]]
  111. :IERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-name--[`IERC721Metadata.name`]]
  112. :IERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-symbol--[`IERC721Metadata.symbol`]]
  113. :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]]
  114. :IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]]
  115. :IERC721-getApproved: pass:normal[xref:token/ERC721.adoc#IERC721-getApproved-uint256-[`IERC721.getApproved`]]
  116. :IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]]
  117. :IERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-[`IERC721.isApprovedForAll`]]
  118. :IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]]
  119. :IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]]
  120. :IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]]
  121. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  122. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  123. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  124. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  125. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  126. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  127. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  128. :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
  129. :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
  130. :ERC721Consecutive: pass:normal[xref:token/ERC721.adoc#ERC721Consecutive[`ERC721Consecutive`]]
  131. :ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]]
  132. :xref-ERC721Enumerable-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4-
  133. :xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-
  134. :xref-ERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--
  135. :xref-ERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-
  136. :xref-ERC721Enumerable-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721Enumerable-_update-address-uint256-address-
  137. :xref-ERC721Enumerable-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721Enumerable-_increaseBalance-address-uint128-
  138. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  139. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  140. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  141. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  142. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  143. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  144. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  145. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  146. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  147. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  148. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  149. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  150. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  151. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  152. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  153. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  154. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  155. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  156. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  157. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  158. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  159. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  160. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  161. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  162. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  163. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  164. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  165. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  166. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  167. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  168. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  169. :xref-ERC721Enumerable-ERC721OutOfBoundsIndex-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-ERC721OutOfBoundsIndex-address-uint256-
  170. :xref-ERC721Enumerable-ERC721EnumerableForbiddenBatchMint--: xref:token/ERC721.adoc#ERC721Enumerable-ERC721EnumerableForbiddenBatchMint--
  171. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  172. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  173. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  174. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  175. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  176. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  177. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  178. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  179. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  180. :IERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`IERC721Enumerable.tokenOfOwnerByIndex`]]
  181. :IERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--[`IERC721Enumerable.totalSupply`]]
  182. :IERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-[`IERC721Enumerable.tokenByIndex`]]
  183. :ERC721-_update: pass:normal[xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-[`ERC721._update`]]
  184. :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
  185. :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]]
  186. :IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]]
  187. :Pausable-_pause: pass:normal[xref:utils.adoc#Pausable-_pause--[`Pausable._pause`]]
  188. :Pausable-_unpause: pass:normal[xref:utils.adoc#Pausable-_unpause--[`Pausable._unpause`]]
  189. :AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]]
  190. :Ownable: pass:normal[xref:access.adoc#Ownable[`Ownable`]]
  191. :xref-ERC721Pausable-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721Pausable-_update-address-uint256-address-
  192. :xref-Pausable-paused--: xref:utils.adoc#Pausable-paused--
  193. :xref-Pausable-_requireNotPaused--: xref:utils.adoc#Pausable-_requireNotPaused--
  194. :xref-Pausable-_requirePaused--: xref:utils.adoc#Pausable-_requirePaused--
  195. :xref-Pausable-_pause--: xref:utils.adoc#Pausable-_pause--
  196. :xref-Pausable-_unpause--: xref:utils.adoc#Pausable-_unpause--
  197. :xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-
  198. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  199. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  200. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  201. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  202. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  203. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  204. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  205. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  206. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  207. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  208. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  209. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  210. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  211. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  212. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  213. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  214. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  215. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  216. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  217. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  218. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  219. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  220. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  221. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  222. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  223. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  224. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  225. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  226. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  227. :xref-Pausable-Paused-address-: xref:utils.adoc#Pausable-Paused-address-
  228. :xref-Pausable-Unpaused-address-: xref:utils.adoc#Pausable-Unpaused-address-
  229. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  230. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  231. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  232. :xref-Pausable-EnforcedPause--: xref:utils.adoc#Pausable-EnforcedPause--
  233. :xref-Pausable-ExpectedPause--: xref:utils.adoc#Pausable-ExpectedPause--
  234. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  235. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  236. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  237. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  238. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  239. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  240. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  241. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  242. :ERC721-_update: pass:normal[xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-[`ERC721._update`]]
  243. :xref-ERC721Burnable-burn-uint256-: xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-
  244. :xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-
  245. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  246. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  247. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  248. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  249. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  250. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  251. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  252. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  253. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  254. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  255. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  256. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  257. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  258. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  259. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  260. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  261. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  262. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  263. :xref-ERC721-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-
  264. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  265. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  266. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  267. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  268. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  269. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  270. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  271. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  272. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  273. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  274. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  275. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  276. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  277. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  278. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  279. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  280. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  281. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  282. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  283. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  284. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  285. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  286. :ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-uint256-[`ERC721._burn`]]
  287. :xref-ERC721Consecutive-_maxBatchSize--: xref:token/ERC721.adoc#ERC721Consecutive-_maxBatchSize--
  288. :xref-ERC721Consecutive-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721Consecutive-_ownerOf-uint256-
  289. :xref-ERC721Consecutive-_mintConsecutive-address-uint96-: xref:token/ERC721.adoc#ERC721Consecutive-_mintConsecutive-address-uint96-
  290. :xref-ERC721Consecutive-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721Consecutive-_update-address-uint256-address-
  291. :xref-ERC721Consecutive-_firstConsecutiveId--: xref:token/ERC721.adoc#ERC721Consecutive-_firstConsecutiveId--
  292. :xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-
  293. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  294. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  295. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  296. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  297. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  298. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  299. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  300. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  301. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  302. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  303. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  304. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  305. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  306. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  307. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  308. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  309. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  310. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  311. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  312. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  313. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  314. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  315. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  316. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  317. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  318. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  319. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  320. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  321. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  322. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  323. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  324. :xref-IERC2309-ConsecutiveTransfer-uint256-uint256-address-address-: xref:interfaces.adoc#IERC2309-ConsecutiveTransfer-uint256-uint256-address-address-
  325. :xref-ERC721Consecutive-ERC721ForbiddenBatchMint--: xref:token/ERC721.adoc#ERC721Consecutive-ERC721ForbiddenBatchMint--
  326. :xref-ERC721Consecutive-ERC721ExceededMaxBatchMint-uint256-uint256-: xref:token/ERC721.adoc#ERC721Consecutive-ERC721ExceededMaxBatchMint-uint256-uint256-
  327. :xref-ERC721Consecutive-ERC721ForbiddenMint--: xref:token/ERC721.adoc#ERC721Consecutive-ERC721ForbiddenMint--
  328. :xref-ERC721Consecutive-ERC721ForbiddenBatchBurn--: xref:token/ERC721.adoc#ERC721Consecutive-ERC721ForbiddenBatchBurn--
  329. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  330. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  331. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  332. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  333. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  334. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  335. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  336. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  337. :ERC721-_ownerOf: pass:normal[xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-[`ERC721._ownerOf`]]
  338. :IERC2309-ConsecutiveTransfer: pass:normal[xref:interfaces.adoc#IERC2309-ConsecutiveTransfer-uint256-uint256-address-address-[`IERC2309.ConsecutiveTransfer`]]
  339. :ERC721-_update: pass:normal[xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-[`ERC721._update`]]
  340. :ERC721Consecutive: pass:normal[xref:token/ERC721.adoc#ERC721Consecutive[`ERC721Consecutive`]]
  341. :IERC721-Transfer: pass:normal[xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-[`IERC721.Transfer`]]
  342. :xref-ERC721URIStorage-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721URIStorage-supportsInterface-bytes4-
  343. :xref-ERC721URIStorage-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-
  344. :xref-ERC721URIStorage-_setTokenURI-uint256-string-: xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string-
  345. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  346. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  347. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  348. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  349. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  350. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  351. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  352. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  353. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  354. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  355. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  356. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  357. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  358. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  359. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  360. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  361. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  362. :xref-ERC721-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-
  363. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  364. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  365. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  366. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  367. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  368. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  369. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  370. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  371. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  372. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  373. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  374. :xref-IERC4906-MetadataUpdate-uint256-: xref:interfaces.adoc#IERC4906-MetadataUpdate-uint256-
  375. :xref-IERC4906-BatchMetadataUpdate-uint256-uint256-: xref:interfaces.adoc#IERC4906-BatchMetadataUpdate-uint256-uint256-
  376. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  377. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  378. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  379. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  380. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  381. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  382. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  383. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  384. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  385. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  386. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  387. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  388. :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]]
  389. :Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]]
  390. :xref-ERC721Votes-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721Votes-_update-address-uint256-address-
  391. :xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-
  392. :xref-ERC721Votes-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721Votes-_increaseBalance-address-uint128-
  393. :xref-Votes-clock--: xref:governance.adoc#Votes-clock--
  394. :xref-Votes-CLOCK_MODE--: xref:governance.adoc#Votes-CLOCK_MODE--
  395. :xref-Votes-_validateTimepoint-uint256-: xref:governance.adoc#Votes-_validateTimepoint-uint256-
  396. :xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address-
  397. :xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256-
  398. :xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256-
  399. :xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply--
  400. :xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address-
  401. :xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address-
  402. :xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-
  403. :xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address-
  404. :xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-
  405. :xref-Votes-_moveDelegateVotes-address-address-uint256-: xref:governance.adoc#Votes-_moveDelegateVotes-address-address-uint256-
  406. :xref-Votes-_numCheckpoints-address-: xref:governance.adoc#Votes-_numCheckpoints-address-
  407. :xref-Votes-_checkpoints-address-uint32-: xref:governance.adoc#Votes-_checkpoints-address-uint32-
  408. :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
  409. :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
  410. :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
  411. :xref-EIP712-_domainSeparatorV4--: xref:utils.adoc#EIP712-_domainSeparatorV4--
  412. :xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32-
  413. :xref-EIP712-eip712Domain--: xref:utils.adoc#EIP712-eip712Domain--
  414. :xref-EIP712-_EIP712Name--: xref:utils.adoc#EIP712-_EIP712Name--
  415. :xref-EIP712-_EIP712Version--: xref:utils.adoc#EIP712-_EIP712Version--
  416. :xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-
  417. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  418. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  419. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  420. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  421. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  422. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  423. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  424. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  425. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  426. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  427. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  428. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  429. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  430. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  431. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  432. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  433. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  434. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  435. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  436. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  437. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  438. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  439. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  440. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  441. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  442. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  443. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  444. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  445. :xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address-
  446. :xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-
  447. :xref-IERC5267-EIP712DomainChanged--: xref:interfaces.adoc#IERC5267-EIP712DomainChanged--
  448. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  449. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  450. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  451. :xref-Votes-ERC6372InconsistentClock--: xref:governance.adoc#Votes-ERC6372InconsistentClock--
  452. :xref-Votes-ERC5805FutureLookup-uint256-uint48-: xref:governance.adoc#Votes-ERC5805FutureLookup-uint256-uint48-
  453. :xref-IVotes-VotesExpiredSignature-uint256-: xref:governance.adoc#IVotes-VotesExpiredSignature-uint256-
  454. :xref-Nonces-InvalidAccountNonce-address-uint256-: xref:utils.adoc#Nonces-InvalidAccountNonce-address-uint256-
  455. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  456. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  457. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  458. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  459. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  460. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  461. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  462. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  463. :ERC721-_update: pass:normal[xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-[`ERC721._update`]]
  464. :IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]]
  465. :ERC721-_increaseBalance: pass:normal[xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-[`ERC721._increaseBalance`]]
  466. :ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]]
  467. :ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]]
  468. :xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-
  469. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  470. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  471. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  472. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  473. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  474. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  475. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  476. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  477. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  478. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  479. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  480. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  481. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  482. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  483. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  484. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  485. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  486. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  487. :xref-ERC721-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-
  488. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  489. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  490. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  491. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  492. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  493. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  494. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  495. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  496. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  497. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  498. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  499. :xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-
  500. :xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator--
  501. :xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-
  502. :xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--
  503. :xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-
  504. :xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-
  505. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  506. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  507. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  508. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  509. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  510. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  511. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  512. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  513. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  514. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  515. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  516. :xref-ERC2981-ERC2981InvalidDefaultRoyalty-uint256-uint256-: xref:token/common.adoc#ERC2981-ERC2981InvalidDefaultRoyalty-uint256-uint256-
  517. :xref-ERC2981-ERC2981InvalidDefaultRoyaltyReceiver-address-: xref:token/common.adoc#ERC2981-ERC2981InvalidDefaultRoyaltyReceiver-address-
  518. :xref-ERC2981-ERC2981InvalidTokenRoyalty-uint256-uint256-uint256-: xref:token/common.adoc#ERC2981-ERC2981InvalidTokenRoyalty-uint256-uint256-uint256-
  519. :xref-ERC2981-ERC2981InvalidTokenRoyaltyReceiver-uint256-address-: xref:token/common.adoc#ERC2981-ERC2981InvalidTokenRoyaltyReceiver-uint256-address-
  520. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  521. :ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]]
  522. :xref-ERC721Wrapper-constructor-contract-IERC721-: xref:token/ERC721.adoc#ERC721Wrapper-constructor-contract-IERC721-
  523. :xref-ERC721Wrapper-depositFor-address-uint256---: xref:token/ERC721.adoc#ERC721Wrapper-depositFor-address-uint256---
  524. :xref-ERC721Wrapper-withdrawTo-address-uint256---: xref:token/ERC721.adoc#ERC721Wrapper-withdrawTo-address-uint256---
  525. :xref-ERC721Wrapper-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Wrapper-onERC721Received-address-address-uint256-bytes-
  526. :xref-ERC721Wrapper-_recover-address-uint256-: xref:token/ERC721.adoc#ERC721Wrapper-_recover-address-uint256-
  527. :xref-ERC721Wrapper-underlying--: xref:token/ERC721.adoc#ERC721Wrapper-underlying--
  528. :xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-
  529. :xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address-
  530. :xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
  531. :xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name--
  532. :xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol--
  533. :xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256-
  534. :xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI--
  535. :xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
  536. :xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
  537. :xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
  538. :xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
  539. :xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
  540. :xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
  541. :xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
  542. :xref-ERC721-_ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-_ownerOf-uint256-
  543. :xref-ERC721-_getApproved-uint256-: xref:token/ERC721.adoc#ERC721-_getApproved-uint256-
  544. :xref-ERC721-_isAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_isAuthorized-address-address-uint256-
  545. :xref-ERC721-_checkAuthorized-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_checkAuthorized-address-address-uint256-
  546. :xref-ERC721-_increaseBalance-address-uint128-: xref:token/ERC721.adoc#ERC721-_increaseBalance-address-uint128-
  547. :xref-ERC721-_update-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_update-address-uint256-address-
  548. :xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
  549. :xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
  550. :xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
  551. :xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256-
  552. :xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-
  553. :xref-ERC721-_safeTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-
  554. :xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-
  555. :xref-ERC721-_approve-address-uint256-address-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-
  556. :xref-ERC721-_approve-address-uint256-address-bool-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256-address-bool-
  557. :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-
  558. :xref-ERC721-_requireOwned-uint256-: xref:token/ERC721.adoc#ERC721-_requireOwned-uint256-
  559. :xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
  560. :xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
  561. :xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
  562. :xref-ERC721Wrapper-ERC721UnsupportedToken-address-: xref:token/ERC721.adoc#ERC721Wrapper-ERC721UnsupportedToken-address-
  563. :xref-IERC721Errors-ERC721InvalidOwner-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOwner-address-
  564. :xref-IERC721Errors-ERC721NonexistentToken-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721NonexistentToken-uint256-
  565. :xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-: xref:interfaces.adoc#IERC721Errors-ERC721IncorrectOwner-address-uint256-address-
  566. :xref-IERC721Errors-ERC721InvalidSender-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidSender-address-
  567. :xref-IERC721Errors-ERC721InvalidReceiver-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidReceiver-address-
  568. :xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-: xref:interfaces.adoc#IERC721Errors-ERC721InsufficientApproval-address-uint256-
  569. :xref-IERC721Errors-ERC721InvalidApprover-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidApprover-address-
  570. :xref-IERC721Errors-ERC721InvalidOperator-address-: xref:interfaces.adoc#IERC721Errors-ERC721InvalidOperator-address-
  571. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  572. :IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]]
  573. :ERC721Wrapper-_recover: pass:normal[xref:token/ERC721.adoc#ERC721Wrapper-_recover-address-uint256-[`ERC721Wrapper._recover`]]
  574. :IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]]
  575. :IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]]
  576. :IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]]
  577. :IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]]
  578. :xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-
  579. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  580. :xref-ERC721Utils-checkOnERC721Received-address-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Utils-checkOnERC721Received-address-address-address-uint256-bytes-
  581. :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
  582. = ERC-721
  583. [.readme-notice]
  584. NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/token/erc721
  585. This set of interfaces, contracts, and utilities are all related to the https://eips.ethereum.org/EIPS/eip-721[ERC-721 Non-Fungible Token Standard].
  586. TIP: For a walk through on how to create an ERC-721 token read our xref:ROOT:erc721.adoc[ERC-721 guide].
  587. The ERC specifies four interfaces:
  588. * {IERC721}: Core functionality required in all compliant implementation.
  589. * {IERC721Metadata}: Optional extension that adds name, symbol, and token URI, almost always included.
  590. * {IERC721Enumerable}: Optional extension that allows enumerating the tokens on chain, often not included since it requires large gas overhead.
  591. * {IERC721Receiver}: An interface that must be implemented by contracts if they want to accept tokens through `safeTransferFrom`.
  592. OpenZeppelin Contracts provides implementations of all four interfaces:
  593. * {ERC721}: The core and metadata extensions, with a base URI mechanism.
  594. * {ERC721Enumerable}: The enumerable extension.
  595. * {ERC721Holder}: A bare bones implementation of the receiver interface.
  596. Additionally there are a few of other extensions:
  597. * {ERC721Consecutive}: An implementation of https://eips.ethereum.org/EIPS/eip-2309[ERC-2309] for minting batchs of tokens during construction, in accordance with ERC-721.
  598. * {ERC721URIStorage}: A more flexible but more expensive way of storing metadata.
  599. * {ERC721Votes}: Support for voting and vote delegation.
  600. * {ERC721Royalty}: A way to signal royalty information following ERC-2981.
  601. * {ERC721Pausable}: A primitive to pause contract operation.
  602. * {ERC721Burnable}: A way for token holders to burn their own tokens.
  603. * {ERC721Wrapper}: Wrapper to create an ERC-721 backed by another ERC-721, with deposit and withdraw methods. Useful in conjunction with {ERC721Votes}.
  604. NOTE: This core set of contracts is designed to be unopinionated, allowing developers to access the internal functions in ERC-721 (such as <<ERC721-_mint-address-uint256-,`_mint`>>) and expose them as external functions in the way they prefer.
  605. == Core
  606. :Transfer: pass:normal[xref:#IERC721-Transfer-address-address-uint256-[`++Transfer++`]]
  607. :Approval: pass:normal[xref:#IERC721-Approval-address-address-uint256-[`++Approval++`]]
  608. :ApprovalForAll: pass:normal[xref:#IERC721-ApprovalForAll-address-address-bool-[`++ApprovalForAll++`]]
  609. :balanceOf: pass:normal[xref:#IERC721-balanceOf-address-[`++balanceOf++`]]
  610. :ownerOf: pass:normal[xref:#IERC721-ownerOf-uint256-[`++ownerOf++`]]
  611. :safeTransferFrom: pass:normal[xref:#IERC721-safeTransferFrom-address-address-uint256-bytes-[`++safeTransferFrom++`]]
  612. :safeTransferFrom: pass:normal[xref:#IERC721-safeTransferFrom-address-address-uint256-[`++safeTransferFrom++`]]
  613. :transferFrom: pass:normal[xref:#IERC721-transferFrom-address-address-uint256-[`++transferFrom++`]]
  614. :approve: pass:normal[xref:#IERC721-approve-address-uint256-[`++approve++`]]
  615. :setApprovalForAll: pass:normal[xref:#IERC721-setApprovalForAll-address-bool-[`++setApprovalForAll++`]]
  616. :getApproved: pass:normal[xref:#IERC721-getApproved-uint256-[`++getApproved++`]]
  617. :isApprovedForAll: pass:normal[xref:#IERC721-isApprovedForAll-address-address-[`++isApprovedForAll++`]]
  618. [.contract]
  619. [[IERC721]]
  620. === `++IERC721++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/IERC721.sol[{github-icon},role=heading-link]
  621. [.hljs-theme-light.nopadding]
  622. ```solidity
  623. import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
  624. ```
  625. Required interface of an ERC-721 compliant contract.
  626. [.contract-index]
  627. .Functions
  628. --
  629. * {xref-IERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  630. * {xref-IERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  631. * {xref-IERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  632. * {xref-IERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  633. * {xref-IERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  634. * {xref-IERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  635. * {xref-IERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  636. * {xref-IERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  637. * {xref-IERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  638. [.contract-subindex-inherited]
  639. .IERC165
  640. * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  641. --
  642. [.contract-index]
  643. .Events
  644. --
  645. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  646. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  647. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  648. [.contract-subindex-inherited]
  649. .IERC165
  650. --
  651. [.contract-item]
  652. [[IERC721-balanceOf-address-]]
  653. ==== `[.contract-item-name]#++balanceOf++#++(address owner) → uint256 balance++` [.item-kind]#external#
  654. Returns the number of tokens in ``owner``'s account.
  655. [.contract-item]
  656. [[IERC721-ownerOf-uint256-]]
  657. ==== `[.contract-item-name]#++ownerOf++#++(uint256 tokenId) → address owner++` [.item-kind]#external#
  658. Returns the owner of the `tokenId` token.
  659. Requirements:
  660. - `tokenId` must exist.
  661. [.contract-item]
  662. [[IERC721-safeTransferFrom-address-address-uint256-bytes-]]
  663. ==== `[.contract-item-name]#++safeTransferFrom++#++(address from, address to, uint256 tokenId, bytes data)++` [.item-kind]#external#
  664. Safely transfers `tokenId` token from `from` to `to`.
  665. Requirements:
  666. - `from` cannot be the zero address.
  667. - `to` cannot be the zero address.
  668. - `tokenId` token must exist and be owned by `from`.
  669. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
  670. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
  671. a safe transfer.
  672. Emits a {Transfer} event.
  673. [.contract-item]
  674. [[IERC721-safeTransferFrom-address-address-uint256-]]
  675. ==== `[.contract-item-name]#++safeTransferFrom++#++(address from, address to, uint256 tokenId)++` [.item-kind]#external#
  676. Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
  677. are aware of the ERC-721 protocol to prevent tokens from being forever locked.
  678. Requirements:
  679. - `from` cannot be the zero address.
  680. - `to` cannot be the zero address.
  681. - `tokenId` token must exist and be owned by `from`.
  682. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or
  683. {setApprovalForAll}.
  684. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
  685. a safe transfer.
  686. Emits a {Transfer} event.
  687. [.contract-item]
  688. [[IERC721-transferFrom-address-address-uint256-]]
  689. ==== `[.contract-item-name]#++transferFrom++#++(address from, address to, uint256 tokenId)++` [.item-kind]#external#
  690. Transfers `tokenId` token from `from` to `to`.
  691. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721
  692. or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
  693. understand this adds an external call which potentially creates a reentrancy vulnerability.
  694. Requirements:
  695. - `from` cannot be the zero address.
  696. - `to` cannot be the zero address.
  697. - `tokenId` token must be owned by `from`.
  698. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
  699. Emits a {Transfer} event.
  700. [.contract-item]
  701. [[IERC721-approve-address-uint256-]]
  702. ==== `[.contract-item-name]#++approve++#++(address to, uint256 tokenId)++` [.item-kind]#external#
  703. Gives permission to `to` to transfer `tokenId` token to another account.
  704. The approval is cleared when the token is transferred.
  705. Only a single account can be approved at a time, so approving the zero address clears previous approvals.
  706. Requirements:
  707. - The caller must own the token or be an approved operator.
  708. - `tokenId` must exist.
  709. Emits an {Approval} event.
  710. [.contract-item]
  711. [[IERC721-setApprovalForAll-address-bool-]]
  712. ==== `[.contract-item-name]#++setApprovalForAll++#++(address operator, bool approved)++` [.item-kind]#external#
  713. Approve or remove `operator` as an operator for the caller.
  714. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
  715. Requirements:
  716. - The `operator` cannot be the address zero.
  717. Emits an {ApprovalForAll} event.
  718. [.contract-item]
  719. [[IERC721-getApproved-uint256-]]
  720. ==== `[.contract-item-name]#++getApproved++#++(uint256 tokenId) → address operator++` [.item-kind]#external#
  721. Returns the account approved for `tokenId` token.
  722. Requirements:
  723. - `tokenId` must exist.
  724. [.contract-item]
  725. [[IERC721-isApprovedForAll-address-address-]]
  726. ==== `[.contract-item-name]#++isApprovedForAll++#++(address owner, address operator) → bool++` [.item-kind]#external#
  727. Returns if the `operator` is allowed to manage all of the assets of `owner`.
  728. See {setApprovalForAll}
  729. [.contract-item]
  730. [[IERC721-Transfer-address-address-uint256-]]
  731. ==== `[.contract-item-name]#++Transfer++#++(address indexed from, address indexed to, uint256 indexed tokenId)++` [.item-kind]#event#
  732. Emitted when `tokenId` token is transferred from `from` to `to`.
  733. [.contract-item]
  734. [[IERC721-Approval-address-address-uint256-]]
  735. ==== `[.contract-item-name]#++Approval++#++(address indexed owner, address indexed approved, uint256 indexed tokenId)++` [.item-kind]#event#
  736. Emitted when `owner` enables `approved` to manage the `tokenId` token.
  737. [.contract-item]
  738. [[IERC721-ApprovalForAll-address-address-bool-]]
  739. ==== `[.contract-item-name]#++ApprovalForAll++#++(address indexed owner, address indexed operator, bool approved)++` [.item-kind]#event#
  740. Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
  741. :name: pass:normal[xref:#IERC721Metadata-name--[`++name++`]]
  742. :symbol: pass:normal[xref:#IERC721Metadata-symbol--[`++symbol++`]]
  743. :tokenURI: pass:normal[xref:#IERC721Metadata-tokenURI-uint256-[`++tokenURI++`]]
  744. [.contract]
  745. [[IERC721Metadata]]
  746. === `++IERC721Metadata++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/IERC721Metadata.sol[{github-icon},role=heading-link]
  747. [.hljs-theme-light.nopadding]
  748. ```solidity
  749. import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
  750. ```
  751. See https://eips.ethereum.org/EIPS/eip-721
  752. [.contract-index]
  753. .Functions
  754. --
  755. * {xref-IERC721Metadata-name--}[`++name()++`]
  756. * {xref-IERC721Metadata-symbol--}[`++symbol()++`]
  757. * {xref-IERC721Metadata-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  758. [.contract-subindex-inherited]
  759. .IERC721
  760. * {xref-IERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  761. * {xref-IERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  762. * {xref-IERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  763. * {xref-IERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  764. * {xref-IERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  765. * {xref-IERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  766. * {xref-IERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  767. * {xref-IERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  768. * {xref-IERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  769. [.contract-subindex-inherited]
  770. .IERC165
  771. * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  772. --
  773. [.contract-index]
  774. .Events
  775. --
  776. [.contract-subindex-inherited]
  777. .IERC721
  778. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  779. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  780. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  781. [.contract-subindex-inherited]
  782. .IERC165
  783. --
  784. [.contract-item]
  785. [[IERC721Metadata-name--]]
  786. ==== `[.contract-item-name]#++name++#++() → string++` [.item-kind]#external#
  787. Returns the token collection name.
  788. [.contract-item]
  789. [[IERC721Metadata-symbol--]]
  790. ==== `[.contract-item-name]#++symbol++#++() → string++` [.item-kind]#external#
  791. Returns the token collection symbol.
  792. [.contract-item]
  793. [[IERC721Metadata-tokenURI-uint256-]]
  794. ==== `[.contract-item-name]#++tokenURI++#++(uint256 tokenId) → string++` [.item-kind]#external#
  795. Returns the Uniform Resource Identifier (URI) for `tokenId` token.
  796. :totalSupply: pass:normal[xref:#IERC721Enumerable-totalSupply--[`++totalSupply++`]]
  797. :tokenOfOwnerByIndex: pass:normal[xref:#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`++tokenOfOwnerByIndex++`]]
  798. :tokenByIndex: pass:normal[xref:#IERC721Enumerable-tokenByIndex-uint256-[`++tokenByIndex++`]]
  799. [.contract]
  800. [[IERC721Enumerable]]
  801. === `++IERC721Enumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/IERC721Enumerable.sol[{github-icon},role=heading-link]
  802. [.hljs-theme-light.nopadding]
  803. ```solidity
  804. import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
  805. ```
  806. See https://eips.ethereum.org/EIPS/eip-721
  807. [.contract-index]
  808. .Functions
  809. --
  810. * {xref-IERC721Enumerable-totalSupply--}[`++totalSupply()++`]
  811. * {xref-IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-}[`++tokenOfOwnerByIndex(owner, index)++`]
  812. * {xref-IERC721Enumerable-tokenByIndex-uint256-}[`++tokenByIndex(index)++`]
  813. [.contract-subindex-inherited]
  814. .IERC721
  815. * {xref-IERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  816. * {xref-IERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  817. * {xref-IERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  818. * {xref-IERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  819. * {xref-IERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  820. * {xref-IERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  821. * {xref-IERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  822. * {xref-IERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  823. * {xref-IERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  824. [.contract-subindex-inherited]
  825. .IERC165
  826. * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  827. --
  828. [.contract-index]
  829. .Events
  830. --
  831. [.contract-subindex-inherited]
  832. .IERC721
  833. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  834. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  835. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  836. [.contract-subindex-inherited]
  837. .IERC165
  838. --
  839. [.contract-item]
  840. [[IERC721Enumerable-totalSupply--]]
  841. ==== `[.contract-item-name]#++totalSupply++#++() → uint256++` [.item-kind]#external#
  842. Returns the total amount of tokens stored by the contract.
  843. [.contract-item]
  844. [[IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-]]
  845. ==== `[.contract-item-name]#++tokenOfOwnerByIndex++#++(address owner, uint256 index) → uint256++` [.item-kind]#external#
  846. Returns a token ID owned by `owner` at a given `index` of its token list.
  847. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
  848. [.contract-item]
  849. [[IERC721Enumerable-tokenByIndex-uint256-]]
  850. ==== `[.contract-item-name]#++tokenByIndex++#++(uint256 index) → uint256++` [.item-kind]#external#
  851. Returns a token ID at a given `index` of all the tokens stored by the contract.
  852. Use along with {totalSupply} to enumerate all tokens.
  853. :constructor: pass:normal[xref:#ERC721-constructor-string-string-[`++constructor++`]]
  854. :supportsInterface: pass:normal[xref:#ERC721-supportsInterface-bytes4-[`++supportsInterface++`]]
  855. :balanceOf: pass:normal[xref:#ERC721-balanceOf-address-[`++balanceOf++`]]
  856. :ownerOf: pass:normal[xref:#ERC721-ownerOf-uint256-[`++ownerOf++`]]
  857. :name: pass:normal[xref:#ERC721-name--[`++name++`]]
  858. :symbol: pass:normal[xref:#ERC721-symbol--[`++symbol++`]]
  859. :tokenURI: pass:normal[xref:#ERC721-tokenURI-uint256-[`++tokenURI++`]]
  860. :_baseURI: pass:normal[xref:#ERC721-_baseURI--[`++_baseURI++`]]
  861. :approve: pass:normal[xref:#ERC721-approve-address-uint256-[`++approve++`]]
  862. :getApproved: pass:normal[xref:#ERC721-getApproved-uint256-[`++getApproved++`]]
  863. :setApprovalForAll: pass:normal[xref:#ERC721-setApprovalForAll-address-bool-[`++setApprovalForAll++`]]
  864. :isApprovedForAll: pass:normal[xref:#ERC721-isApprovedForAll-address-address-[`++isApprovedForAll++`]]
  865. :transferFrom: pass:normal[xref:#ERC721-transferFrom-address-address-uint256-[`++transferFrom++`]]
  866. :safeTransferFrom: pass:normal[xref:#ERC721-safeTransferFrom-address-address-uint256-[`++safeTransferFrom++`]]
  867. :safeTransferFrom: pass:normal[xref:#ERC721-safeTransferFrom-address-address-uint256-bytes-[`++safeTransferFrom++`]]
  868. :_ownerOf: pass:normal[xref:#ERC721-_ownerOf-uint256-[`++_ownerOf++`]]
  869. :_getApproved: pass:normal[xref:#ERC721-_getApproved-uint256-[`++_getApproved++`]]
  870. :_isAuthorized: pass:normal[xref:#ERC721-_isAuthorized-address-address-uint256-[`++_isAuthorized++`]]
  871. :_checkAuthorized: pass:normal[xref:#ERC721-_checkAuthorized-address-address-uint256-[`++_checkAuthorized++`]]
  872. :_increaseBalance: pass:normal[xref:#ERC721-_increaseBalance-address-uint128-[`++_increaseBalance++`]]
  873. :_update: pass:normal[xref:#ERC721-_update-address-uint256-address-[`++_update++`]]
  874. :_mint: pass:normal[xref:#ERC721-_mint-address-uint256-[`++_mint++`]]
  875. :_safeMint: pass:normal[xref:#ERC721-_safeMint-address-uint256-[`++_safeMint++`]]
  876. :_safeMint: pass:normal[xref:#ERC721-_safeMint-address-uint256-bytes-[`++_safeMint++`]]
  877. :_burn: pass:normal[xref:#ERC721-_burn-uint256-[`++_burn++`]]
  878. :_transfer: pass:normal[xref:#ERC721-_transfer-address-address-uint256-[`++_transfer++`]]
  879. :_safeTransfer: pass:normal[xref:#ERC721-_safeTransfer-address-address-uint256-[`++_safeTransfer++`]]
  880. :_safeTransfer: pass:normal[xref:#ERC721-_safeTransfer-address-address-uint256-bytes-[`++_safeTransfer++`]]
  881. :_approve: pass:normal[xref:#ERC721-_approve-address-uint256-address-[`++_approve++`]]
  882. :_approve: pass:normal[xref:#ERC721-_approve-address-uint256-address-bool-[`++_approve++`]]
  883. :_setApprovalForAll: pass:normal[xref:#ERC721-_setApprovalForAll-address-address-bool-[`++_setApprovalForAll++`]]
  884. :_requireOwned: pass:normal[xref:#ERC721-_requireOwned-uint256-[`++_requireOwned++`]]
  885. [.contract]
  886. [[ERC721]]
  887. === `++ERC721++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/ERC721.sol[{github-icon},role=heading-link]
  888. [.hljs-theme-light.nopadding]
  889. ```solidity
  890. import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
  891. ```
  892. Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including
  893. the Metadata extension, but not including the Enumerable extension, which is available separately as
  894. {ERC721Enumerable}.
  895. [.contract-index]
  896. .Functions
  897. --
  898. * {xref-ERC721-constructor-string-string-}[`++constructor(name_, symbol_)++`]
  899. * {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  900. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  901. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  902. * {xref-ERC721-name--}[`++name()++`]
  903. * {xref-ERC721-symbol--}[`++symbol()++`]
  904. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  905. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  906. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  907. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  908. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  909. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  910. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  911. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  912. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  913. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  914. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  915. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  916. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  917. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  918. * {xref-ERC721-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  919. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  920. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  921. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  922. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  923. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  924. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  925. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  926. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  927. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  928. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  929. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  930. [.contract-subindex-inherited]
  931. .IERC721Errors
  932. [.contract-subindex-inherited]
  933. .IERC721Metadata
  934. [.contract-subindex-inherited]
  935. .IERC721
  936. [.contract-subindex-inherited]
  937. .ERC165
  938. [.contract-subindex-inherited]
  939. .IERC165
  940. --
  941. [.contract-index]
  942. .Events
  943. --
  944. [.contract-subindex-inherited]
  945. .IERC721Errors
  946. [.contract-subindex-inherited]
  947. .IERC721Metadata
  948. [.contract-subindex-inherited]
  949. .IERC721
  950. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  951. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  952. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  953. [.contract-subindex-inherited]
  954. .ERC165
  955. [.contract-subindex-inherited]
  956. .IERC165
  957. --
  958. [.contract-index]
  959. .Errors
  960. --
  961. [.contract-subindex-inherited]
  962. .IERC721Errors
  963. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  964. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  965. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  966. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  967. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  968. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  969. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  970. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  971. [.contract-subindex-inherited]
  972. .IERC721Metadata
  973. [.contract-subindex-inherited]
  974. .IERC721
  975. [.contract-subindex-inherited]
  976. .ERC165
  977. [.contract-subindex-inherited]
  978. .IERC165
  979. --
  980. [.contract-item]
  981. [[ERC721-constructor-string-string-]]
  982. ==== `[.contract-item-name]#++constructor++#++(string name_, string symbol_)++` [.item-kind]#internal#
  983. Initializes the contract by setting a `name` and a `symbol` to the token collection.
  984. [.contract-item]
  985. [[ERC721-supportsInterface-bytes4-]]
  986. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  987. See {IERC165-supportsInterface}.
  988. [.contract-item]
  989. [[ERC721-balanceOf-address-]]
  990. ==== `[.contract-item-name]#++balanceOf++#++(address owner) → uint256++` [.item-kind]#public#
  991. See {IERC721-balanceOf}.
  992. [.contract-item]
  993. [[ERC721-ownerOf-uint256-]]
  994. ==== `[.contract-item-name]#++ownerOf++#++(uint256 tokenId) → address++` [.item-kind]#public#
  995. See {IERC721-ownerOf}.
  996. [.contract-item]
  997. [[ERC721-name--]]
  998. ==== `[.contract-item-name]#++name++#++() → string++` [.item-kind]#public#
  999. See {IERC721Metadata-name}.
  1000. [.contract-item]
  1001. [[ERC721-symbol--]]
  1002. ==== `[.contract-item-name]#++symbol++#++() → string++` [.item-kind]#public#
  1003. See {IERC721Metadata-symbol}.
  1004. [.contract-item]
  1005. [[ERC721-tokenURI-uint256-]]
  1006. ==== `[.contract-item-name]#++tokenURI++#++(uint256 tokenId) → string++` [.item-kind]#public#
  1007. See {IERC721Metadata-tokenURI}.
  1008. [.contract-item]
  1009. [[ERC721-_baseURI--]]
  1010. ==== `[.contract-item-name]#++_baseURI++#++() → string++` [.item-kind]#internal#
  1011. Base URI for computing {tokenURI}. If set, the resulting URI for each
  1012. token will be the concatenation of the `baseURI` and the `tokenId`. Empty
  1013. by default, can be overridden in child contracts.
  1014. [.contract-item]
  1015. [[ERC721-approve-address-uint256-]]
  1016. ==== `[.contract-item-name]#++approve++#++(address to, uint256 tokenId)++` [.item-kind]#public#
  1017. See {IERC721-approve}.
  1018. [.contract-item]
  1019. [[ERC721-getApproved-uint256-]]
  1020. ==== `[.contract-item-name]#++getApproved++#++(uint256 tokenId) → address++` [.item-kind]#public#
  1021. See {IERC721-getApproved}.
  1022. [.contract-item]
  1023. [[ERC721-setApprovalForAll-address-bool-]]
  1024. ==== `[.contract-item-name]#++setApprovalForAll++#++(address operator, bool approved)++` [.item-kind]#public#
  1025. See {IERC721-setApprovalForAll}.
  1026. [.contract-item]
  1027. [[ERC721-isApprovedForAll-address-address-]]
  1028. ==== `[.contract-item-name]#++isApprovedForAll++#++(address owner, address operator) → bool++` [.item-kind]#public#
  1029. See {IERC721-isApprovedForAll}.
  1030. [.contract-item]
  1031. [[ERC721-transferFrom-address-address-uint256-]]
  1032. ==== `[.contract-item-name]#++transferFrom++#++(address from, address to, uint256 tokenId)++` [.item-kind]#public#
  1033. See {IERC721-transferFrom}.
  1034. [.contract-item]
  1035. [[ERC721-safeTransferFrom-address-address-uint256-]]
  1036. ==== `[.contract-item-name]#++safeTransferFrom++#++(address from, address to, uint256 tokenId)++` [.item-kind]#public#
  1037. See {IERC721-safeTransferFrom}.
  1038. [.contract-item]
  1039. [[ERC721-safeTransferFrom-address-address-uint256-bytes-]]
  1040. ==== `[.contract-item-name]#++safeTransferFrom++#++(address from, address to, uint256 tokenId, bytes data)++` [.item-kind]#public#
  1041. See {IERC721-safeTransferFrom}.
  1042. [.contract-item]
  1043. [[ERC721-_ownerOf-uint256-]]
  1044. ==== `[.contract-item-name]#++_ownerOf++#++(uint256 tokenId) → address++` [.item-kind]#internal#
  1045. Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist
  1046. IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the
  1047. core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances
  1048. consistent with ownership. The invariant to preserve is that for any address `a` the value returned by
  1049. `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.
  1050. [.contract-item]
  1051. [[ERC721-_getApproved-uint256-]]
  1052. ==== `[.contract-item-name]#++_getApproved++#++(uint256 tokenId) → address++` [.item-kind]#internal#
  1053. Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.
  1054. [.contract-item]
  1055. [[ERC721-_isAuthorized-address-address-uint256-]]
  1056. ==== `[.contract-item-name]#++_isAuthorized++#++(address owner, address spender, uint256 tokenId) → bool++` [.item-kind]#internal#
  1057. Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in
  1058. particular (ignoring whether it is owned by `owner`).
  1059. WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this
  1060. assumption.
  1061. [.contract-item]
  1062. [[ERC721-_checkAuthorized-address-address-uint256-]]
  1063. ==== `[.contract-item-name]#++_checkAuthorized++#++(address owner, address spender, uint256 tokenId)++` [.item-kind]#internal#
  1064. Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.
  1065. Reverts if:
  1066. - `spender` does not have approval from `owner` for `tokenId`.
  1067. - `spender` does not have approval to manage all of `owner`'s assets.
  1068. WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this
  1069. assumption.
  1070. [.contract-item]
  1071. [[ERC721-_increaseBalance-address-uint128-]]
  1072. ==== `[.contract-item-name]#++_increaseBalance++#++(address account, uint128 value)++` [.item-kind]#internal#
  1073. Unsafe write access to the balances, used by extensions that "mint" tokens using an {ownerOf} override.
  1074. NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that
  1075. a uint256 would ever overflow from increments when these increments are bounded to uint128 values.
  1076. WARNING: Increasing an account's balance using this function tends to be paired with an override of the
  1077. {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership
  1078. remain consistent with one another.
  1079. [.contract-item]
  1080. [[ERC721-_update-address-uint256-address-]]
  1081. ==== `[.contract-item-name]#++_update++#++(address to, uint256 tokenId, address auth) → address++` [.item-kind]#internal#
  1082. Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner
  1083. (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.
  1084. The `auth` argument is optional. If the value passed is non 0, then this function will check that
  1085. `auth` is either the owner of the token, or approved to operate on the token (by the owner).
  1086. Emits a {Transfer} event.
  1087. NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.
  1088. [.contract-item]
  1089. [[ERC721-_mint-address-uint256-]]
  1090. ==== `[.contract-item-name]#++_mint++#++(address to, uint256 tokenId)++` [.item-kind]#internal#
  1091. Mints `tokenId` and transfers it to `to`.
  1092. WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
  1093. Requirements:
  1094. - `tokenId` must not exist.
  1095. - `to` cannot be the zero address.
  1096. Emits a {Transfer} event.
  1097. [.contract-item]
  1098. [[ERC721-_safeMint-address-uint256-]]
  1099. ==== `[.contract-item-name]#++_safeMint++#++(address to, uint256 tokenId)++` [.item-kind]#internal#
  1100. Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.
  1101. Requirements:
  1102. - `tokenId` must not exist.
  1103. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
  1104. Emits a {Transfer} event.
  1105. [.contract-item]
  1106. [[ERC721-_safeMint-address-uint256-bytes-]]
  1107. ==== `[.contract-item-name]#++_safeMint++#++(address to, uint256 tokenId, bytes data)++` [.item-kind]#internal#
  1108. Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
  1109. forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
  1110. [.contract-item]
  1111. [[ERC721-_burn-uint256-]]
  1112. ==== `[.contract-item-name]#++_burn++#++(uint256 tokenId)++` [.item-kind]#internal#
  1113. Destroys `tokenId`.
  1114. The approval is cleared when the token is burned.
  1115. This is an internal function that does not check if the sender is authorized to operate on the token.
  1116. Requirements:
  1117. - `tokenId` must exist.
  1118. Emits a {Transfer} event.
  1119. [.contract-item]
  1120. [[ERC721-_transfer-address-address-uint256-]]
  1121. ==== `[.contract-item-name]#++_transfer++#++(address from, address to, uint256 tokenId)++` [.item-kind]#internal#
  1122. Transfers `tokenId` from `from` to `to`.
  1123. As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
  1124. Requirements:
  1125. - `to` cannot be the zero address.
  1126. - `tokenId` token must be owned by `from`.
  1127. Emits a {Transfer} event.
  1128. [.contract-item]
  1129. [[ERC721-_safeTransfer-address-address-uint256-]]
  1130. ==== `[.contract-item-name]#++_safeTransfer++#++(address from, address to, uint256 tokenId)++` [.item-kind]#internal#
  1131. Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients
  1132. are aware of the ERC-721 standard to prevent tokens from being forever locked.
  1133. `data` is additional data, it has no specified format and it is sent in call to `to`.
  1134. This internal function is like {safeTransferFrom} in the sense that it invokes
  1135. {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.
  1136. implement alternative mechanisms to perform token transfer, such as signature-based.
  1137. Requirements:
  1138. - `tokenId` token must exist and be owned by `from`.
  1139. - `to` cannot be the zero address.
  1140. - `from` cannot be the zero address.
  1141. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
  1142. Emits a {Transfer} event.
  1143. [.contract-item]
  1144. [[ERC721-_safeTransfer-address-address-uint256-bytes-]]
  1145. ==== `[.contract-item-name]#++_safeTransfer++#++(address from, address to, uint256 tokenId, bytes data)++` [.item-kind]#internal#
  1146. Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is
  1147. forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
  1148. [.contract-item]
  1149. [[ERC721-_approve-address-uint256-address-]]
  1150. ==== `[.contract-item-name]#++_approve++#++(address to, uint256 tokenId, address auth)++` [.item-kind]#internal#
  1151. Approve `to` to operate on `tokenId`
  1152. The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is
  1153. either the owner of the token, or approved to operate on all tokens held by this owner.
  1154. Emits an {Approval} event.
  1155. Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
  1156. [.contract-item]
  1157. [[ERC721-_approve-address-uint256-address-bool-]]
  1158. ==== `[.contract-item-name]#++_approve++#++(address to, uint256 tokenId, address auth, bool emitEvent)++` [.item-kind]#internal#
  1159. Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not
  1160. emitted in the context of transfers.
  1161. [.contract-item]
  1162. [[ERC721-_setApprovalForAll-address-address-bool-]]
  1163. ==== `[.contract-item-name]#++_setApprovalForAll++#++(address owner, address operator, bool approved)++` [.item-kind]#internal#
  1164. Approve `operator` to operate on all of `owner` tokens
  1165. Requirements:
  1166. - operator can't be the address zero.
  1167. Emits an {ApprovalForAll} event.
  1168. [.contract-item]
  1169. [[ERC721-_requireOwned-uint256-]]
  1170. ==== `[.contract-item-name]#++_requireOwned++#++(uint256 tokenId) → address++` [.item-kind]#internal#
  1171. Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).
  1172. Returns the owner.
  1173. Overrides to ownership logic should be done to {_ownerOf}.
  1174. :ERC721OutOfBoundsIndex: pass:normal[xref:#ERC721Enumerable-ERC721OutOfBoundsIndex-address-uint256-[`++ERC721OutOfBoundsIndex++`]]
  1175. :ERC721EnumerableForbiddenBatchMint: pass:normal[xref:#ERC721Enumerable-ERC721EnumerableForbiddenBatchMint--[`++ERC721EnumerableForbiddenBatchMint++`]]
  1176. :supportsInterface: pass:normal[xref:#ERC721Enumerable-supportsInterface-bytes4-[`++supportsInterface++`]]
  1177. :tokenOfOwnerByIndex: pass:normal[xref:#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`++tokenOfOwnerByIndex++`]]
  1178. :totalSupply: pass:normal[xref:#ERC721Enumerable-totalSupply--[`++totalSupply++`]]
  1179. :tokenByIndex: pass:normal[xref:#ERC721Enumerable-tokenByIndex-uint256-[`++tokenByIndex++`]]
  1180. :_update: pass:normal[xref:#ERC721Enumerable-_update-address-uint256-address-[`++_update++`]]
  1181. :_increaseBalance: pass:normal[xref:#ERC721Enumerable-_increaseBalance-address-uint128-[`++_increaseBalance++`]]
  1182. [.contract]
  1183. [[ERC721Enumerable]]
  1184. === `++ERC721Enumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Enumerable.sol[{github-icon},role=heading-link]
  1185. [.hljs-theme-light.nopadding]
  1186. ```solidity
  1187. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
  1188. ```
  1189. This implements an optional extension of {ERC721} defined in the ERC that adds enumerability
  1190. of all the token ids in the contract as well as all token ids owned by each account.
  1191. CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},
  1192. interfere with enumerability and should not be used together with {ERC721Enumerable}.
  1193. [.contract-index]
  1194. .Functions
  1195. --
  1196. * {xref-ERC721Enumerable-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1197. * {xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-}[`++tokenOfOwnerByIndex(owner, index)++`]
  1198. * {xref-ERC721Enumerable-totalSupply--}[`++totalSupply()++`]
  1199. * {xref-ERC721Enumerable-tokenByIndex-uint256-}[`++tokenByIndex(index)++`]
  1200. * {xref-ERC721Enumerable-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  1201. * {xref-ERC721Enumerable-_increaseBalance-address-uint128-}[`++_increaseBalance(account, amount)++`]
  1202. [.contract-subindex-inherited]
  1203. .IERC721Enumerable
  1204. [.contract-subindex-inherited]
  1205. .ERC721
  1206. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  1207. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  1208. * {xref-ERC721-name--}[`++name()++`]
  1209. * {xref-ERC721-symbol--}[`++symbol()++`]
  1210. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  1211. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  1212. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  1213. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  1214. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1215. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  1216. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  1217. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  1218. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  1219. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  1220. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  1221. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  1222. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  1223. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  1224. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  1225. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  1226. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  1227. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  1228. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  1229. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  1230. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  1231. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  1232. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1233. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  1234. [.contract-subindex-inherited]
  1235. .IERC721Errors
  1236. [.contract-subindex-inherited]
  1237. .IERC721Metadata
  1238. [.contract-subindex-inherited]
  1239. .IERC721
  1240. [.contract-subindex-inherited]
  1241. .ERC165
  1242. [.contract-subindex-inherited]
  1243. .IERC165
  1244. --
  1245. [.contract-index]
  1246. .Events
  1247. --
  1248. [.contract-subindex-inherited]
  1249. .IERC721Enumerable
  1250. [.contract-subindex-inherited]
  1251. .ERC721
  1252. [.contract-subindex-inherited]
  1253. .IERC721Errors
  1254. [.contract-subindex-inherited]
  1255. .IERC721Metadata
  1256. [.contract-subindex-inherited]
  1257. .IERC721
  1258. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  1259. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  1260. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  1261. [.contract-subindex-inherited]
  1262. .ERC165
  1263. [.contract-subindex-inherited]
  1264. .IERC165
  1265. --
  1266. [.contract-index]
  1267. .Errors
  1268. --
  1269. * {xref-ERC721Enumerable-ERC721OutOfBoundsIndex-address-uint256-}[`++ERC721OutOfBoundsIndex(owner, index)++`]
  1270. * {xref-ERC721Enumerable-ERC721EnumerableForbiddenBatchMint--}[`++ERC721EnumerableForbiddenBatchMint()++`]
  1271. [.contract-subindex-inherited]
  1272. .IERC721Enumerable
  1273. [.contract-subindex-inherited]
  1274. .ERC721
  1275. [.contract-subindex-inherited]
  1276. .IERC721Errors
  1277. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  1278. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  1279. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  1280. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  1281. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  1282. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  1283. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  1284. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  1285. [.contract-subindex-inherited]
  1286. .IERC721Metadata
  1287. [.contract-subindex-inherited]
  1288. .IERC721
  1289. [.contract-subindex-inherited]
  1290. .ERC165
  1291. [.contract-subindex-inherited]
  1292. .IERC165
  1293. --
  1294. [.contract-item]
  1295. [[ERC721Enumerable-supportsInterface-bytes4-]]
  1296. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  1297. See {IERC165-supportsInterface}.
  1298. [.contract-item]
  1299. [[ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-]]
  1300. ==== `[.contract-item-name]#++tokenOfOwnerByIndex++#++(address owner, uint256 index) → uint256++` [.item-kind]#public#
  1301. See {IERC721Enumerable-tokenOfOwnerByIndex}.
  1302. [.contract-item]
  1303. [[ERC721Enumerable-totalSupply--]]
  1304. ==== `[.contract-item-name]#++totalSupply++#++() → uint256++` [.item-kind]#public#
  1305. See {IERC721Enumerable-totalSupply}.
  1306. [.contract-item]
  1307. [[ERC721Enumerable-tokenByIndex-uint256-]]
  1308. ==== `[.contract-item-name]#++tokenByIndex++#++(uint256 index) → uint256++` [.item-kind]#public#
  1309. See {IERC721Enumerable-tokenByIndex}.
  1310. [.contract-item]
  1311. [[ERC721Enumerable-_update-address-uint256-address-]]
  1312. ==== `[.contract-item-name]#++_update++#++(address to, uint256 tokenId, address auth) → address++` [.item-kind]#internal#
  1313. See {ERC721-_update}.
  1314. [.contract-item]
  1315. [[ERC721Enumerable-_increaseBalance-address-uint128-]]
  1316. ==== `[.contract-item-name]#++_increaseBalance++#++(address account, uint128 amount)++` [.item-kind]#internal#
  1317. [.contract-item]
  1318. [[ERC721Enumerable-ERC721OutOfBoundsIndex-address-uint256-]]
  1319. ==== `[.contract-item-name]#++ERC721OutOfBoundsIndex++#++(address owner, uint256 index)++` [.item-kind]#error#
  1320. An `owner`'s token query was out of bounds for `index`.
  1321. NOTE: The owner being `address(0)` indicates a global out of bounds index.
  1322. [.contract-item]
  1323. [[ERC721Enumerable-ERC721EnumerableForbiddenBatchMint--]]
  1324. ==== `[.contract-item-name]#++ERC721EnumerableForbiddenBatchMint++#++()++` [.item-kind]#error#
  1325. Batch mint is not allowed.
  1326. :onERC721Received: pass:normal[xref:#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`++onERC721Received++`]]
  1327. [.contract]
  1328. [[IERC721Receiver]]
  1329. === `++IERC721Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/IERC721Receiver.sol[{github-icon},role=heading-link]
  1330. [.hljs-theme-light.nopadding]
  1331. ```solidity
  1332. import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
  1333. ```
  1334. Interface for any contract that wants to support safeTransfers
  1335. from ERC-721 asset contracts.
  1336. [.contract-index]
  1337. .Functions
  1338. --
  1339. * {xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(operator, from, tokenId, data)++`]
  1340. --
  1341. [.contract-item]
  1342. [[IERC721Receiver-onERC721Received-address-address-uint256-bytes-]]
  1343. ==== `[.contract-item-name]#++onERC721Received++#++(address operator, address from, uint256 tokenId, bytes data) → bytes4++` [.item-kind]#external#
  1344. Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
  1345. by `operator` from `from`, this function is called.
  1346. It must return its Solidity selector to confirm the token transfer.
  1347. If any other value is returned or the interface is not implemented by the recipient, the transfer will be
  1348. reverted.
  1349. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
  1350. == Extensions
  1351. :_update: pass:normal[xref:#ERC721Pausable-_update-address-uint256-address-[`++_update++`]]
  1352. [.contract]
  1353. [[ERC721Pausable]]
  1354. === `++ERC721Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Pausable.sol[{github-icon},role=heading-link]
  1355. [.hljs-theme-light.nopadding]
  1356. ```solidity
  1357. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Pausable.sol";
  1358. ```
  1359. ERC-721 token with pausable token transfers, minting and burning.
  1360. Useful for scenarios such as preventing trades until the end of an evaluation
  1361. period, or having an emergency switch for freezing all token transfers in the
  1362. event of a large bug.
  1363. IMPORTANT: This contract does not include public pause and unpause functions. In
  1364. addition to inheriting this contract, you must define both functions, invoking the
  1365. {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate
  1366. access control, e.g. using {AccessControl} or {Ownable}. Not doing so will
  1367. make the contract pause mechanism of the contract unreachable, and thus unusable.
  1368. [.contract-index]
  1369. .Functions
  1370. --
  1371. * {xref-ERC721Pausable-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  1372. [.contract-subindex-inherited]
  1373. .Pausable
  1374. * {xref-Pausable-paused--}[`++paused()++`]
  1375. * {xref-Pausable-_requireNotPaused--}[`++_requireNotPaused()++`]
  1376. * {xref-Pausable-_requirePaused--}[`++_requirePaused()++`]
  1377. * {xref-Pausable-_pause--}[`++_pause()++`]
  1378. * {xref-Pausable-_unpause--}[`++_unpause()++`]
  1379. [.contract-subindex-inherited]
  1380. .ERC721
  1381. * {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1382. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  1383. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  1384. * {xref-ERC721-name--}[`++name()++`]
  1385. * {xref-ERC721-symbol--}[`++symbol()++`]
  1386. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  1387. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  1388. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  1389. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  1390. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1391. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  1392. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  1393. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  1394. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  1395. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  1396. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  1397. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  1398. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  1399. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  1400. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  1401. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  1402. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  1403. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  1404. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  1405. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  1406. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  1407. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  1408. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  1409. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1410. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  1411. [.contract-subindex-inherited]
  1412. .IERC721Errors
  1413. [.contract-subindex-inherited]
  1414. .IERC721Metadata
  1415. [.contract-subindex-inherited]
  1416. .IERC721
  1417. [.contract-subindex-inherited]
  1418. .ERC165
  1419. [.contract-subindex-inherited]
  1420. .IERC165
  1421. --
  1422. [.contract-index]
  1423. .Events
  1424. --
  1425. [.contract-subindex-inherited]
  1426. .Pausable
  1427. * {xref-Pausable-Paused-address-}[`++Paused(account)++`]
  1428. * {xref-Pausable-Unpaused-address-}[`++Unpaused(account)++`]
  1429. [.contract-subindex-inherited]
  1430. .ERC721
  1431. [.contract-subindex-inherited]
  1432. .IERC721Errors
  1433. [.contract-subindex-inherited]
  1434. .IERC721Metadata
  1435. [.contract-subindex-inherited]
  1436. .IERC721
  1437. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  1438. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  1439. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  1440. [.contract-subindex-inherited]
  1441. .ERC165
  1442. [.contract-subindex-inherited]
  1443. .IERC165
  1444. --
  1445. [.contract-index]
  1446. .Errors
  1447. --
  1448. [.contract-subindex-inherited]
  1449. .Pausable
  1450. * {xref-Pausable-EnforcedPause--}[`++EnforcedPause()++`]
  1451. * {xref-Pausable-ExpectedPause--}[`++ExpectedPause()++`]
  1452. [.contract-subindex-inherited]
  1453. .ERC721
  1454. [.contract-subindex-inherited]
  1455. .IERC721Errors
  1456. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  1457. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  1458. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  1459. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  1460. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  1461. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  1462. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  1463. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  1464. [.contract-subindex-inherited]
  1465. .IERC721Metadata
  1466. [.contract-subindex-inherited]
  1467. .IERC721
  1468. [.contract-subindex-inherited]
  1469. .ERC165
  1470. [.contract-subindex-inherited]
  1471. .IERC165
  1472. --
  1473. [.contract-item]
  1474. [[ERC721Pausable-_update-address-uint256-address-]]
  1475. ==== `[.contract-item-name]#++_update++#++(address to, uint256 tokenId, address auth) → address++` [.item-kind]#internal#
  1476. See {ERC721-_update}.
  1477. Requirements:
  1478. - the contract must not be paused.
  1479. :burn: pass:normal[xref:#ERC721Burnable-burn-uint256-[`++burn++`]]
  1480. [.contract]
  1481. [[ERC721Burnable]]
  1482. === `++ERC721Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Burnable.sol[{github-icon},role=heading-link]
  1483. [.hljs-theme-light.nopadding]
  1484. ```solidity
  1485. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol";
  1486. ```
  1487. ERC-721 Token that can be burned (destroyed).
  1488. [.contract-index]
  1489. .Functions
  1490. --
  1491. * {xref-ERC721Burnable-burn-uint256-}[`++burn(tokenId)++`]
  1492. [.contract-subindex-inherited]
  1493. .ERC721
  1494. * {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1495. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  1496. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  1497. * {xref-ERC721-name--}[`++name()++`]
  1498. * {xref-ERC721-symbol--}[`++symbol()++`]
  1499. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  1500. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  1501. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  1502. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  1503. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1504. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  1505. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  1506. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  1507. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  1508. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  1509. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  1510. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  1511. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  1512. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  1513. * {xref-ERC721-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  1514. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  1515. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  1516. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  1517. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  1518. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  1519. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  1520. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  1521. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  1522. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  1523. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1524. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  1525. [.contract-subindex-inherited]
  1526. .IERC721Errors
  1527. [.contract-subindex-inherited]
  1528. .IERC721Metadata
  1529. [.contract-subindex-inherited]
  1530. .IERC721
  1531. [.contract-subindex-inherited]
  1532. .ERC165
  1533. [.contract-subindex-inherited]
  1534. .IERC165
  1535. --
  1536. [.contract-index]
  1537. .Events
  1538. --
  1539. [.contract-subindex-inherited]
  1540. .ERC721
  1541. [.contract-subindex-inherited]
  1542. .IERC721Errors
  1543. [.contract-subindex-inherited]
  1544. .IERC721Metadata
  1545. [.contract-subindex-inherited]
  1546. .IERC721
  1547. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  1548. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  1549. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  1550. [.contract-subindex-inherited]
  1551. .ERC165
  1552. [.contract-subindex-inherited]
  1553. .IERC165
  1554. --
  1555. [.contract-index]
  1556. .Errors
  1557. --
  1558. [.contract-subindex-inherited]
  1559. .ERC721
  1560. [.contract-subindex-inherited]
  1561. .IERC721Errors
  1562. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  1563. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  1564. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  1565. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  1566. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  1567. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  1568. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  1569. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  1570. [.contract-subindex-inherited]
  1571. .IERC721Metadata
  1572. [.contract-subindex-inherited]
  1573. .IERC721
  1574. [.contract-subindex-inherited]
  1575. .ERC165
  1576. [.contract-subindex-inherited]
  1577. .IERC165
  1578. --
  1579. [.contract-item]
  1580. [[ERC721Burnable-burn-uint256-]]
  1581. ==== `[.contract-item-name]#++burn++#++(uint256 tokenId)++` [.item-kind]#public#
  1582. Burns `tokenId`. See {ERC721-_burn}.
  1583. Requirements:
  1584. - The caller must own `tokenId` or be an approved operator.
  1585. :ERC721ForbiddenBatchMint: pass:normal[xref:#ERC721Consecutive-ERC721ForbiddenBatchMint--[`++ERC721ForbiddenBatchMint++`]]
  1586. :ERC721ExceededMaxBatchMint: pass:normal[xref:#ERC721Consecutive-ERC721ExceededMaxBatchMint-uint256-uint256-[`++ERC721ExceededMaxBatchMint++`]]
  1587. :ERC721ForbiddenMint: pass:normal[xref:#ERC721Consecutive-ERC721ForbiddenMint--[`++ERC721ForbiddenMint++`]]
  1588. :ERC721ForbiddenBatchBurn: pass:normal[xref:#ERC721Consecutive-ERC721ForbiddenBatchBurn--[`++ERC721ForbiddenBatchBurn++`]]
  1589. :_maxBatchSize: pass:normal[xref:#ERC721Consecutive-_maxBatchSize--[`++_maxBatchSize++`]]
  1590. :_ownerOf: pass:normal[xref:#ERC721Consecutive-_ownerOf-uint256-[`++_ownerOf++`]]
  1591. :_mintConsecutive: pass:normal[xref:#ERC721Consecutive-_mintConsecutive-address-uint96-[`++_mintConsecutive++`]]
  1592. :_update: pass:normal[xref:#ERC721Consecutive-_update-address-uint256-address-[`++_update++`]]
  1593. :_firstConsecutiveId: pass:normal[xref:#ERC721Consecutive-_firstConsecutiveId--[`++_firstConsecutiveId++`]]
  1594. [.contract]
  1595. [[ERC721Consecutive]]
  1596. === `++ERC721Consecutive++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Consecutive.sol[{github-icon},role=heading-link]
  1597. [.hljs-theme-light.nopadding]
  1598. ```solidity
  1599. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Consecutive.sol";
  1600. ```
  1601. Implementation of the ERC-2309 "Consecutive Transfer Extension" as defined in
  1602. https://eips.ethereum.org/EIPS/eip-2309[ERC-2309].
  1603. This extension allows the minting of large batches of tokens, during contract construction only. For upgradeable
  1604. contracts this implies that batch minting is only available during proxy deployment, and not in subsequent upgrades.
  1605. These batches are limited to 5000 tokens at a time by default to accommodate off-chain indexers.
  1606. Using this extension removes the ability to mint single tokens during contract construction. This ability is
  1607. regained after construction. During construction, only batch minting is allowed.
  1608. IMPORTANT: This extension does not call the {_update} function for tokens minted in batch. Any logic added to this
  1609. function through overrides will not be triggered when token are minted in batch. You may want to also override
  1610. {_increaseBalance} or {_mintConsecutive} to account for these mints.
  1611. IMPORTANT: When overriding {_mintConsecutive}, be careful about call ordering. {ownerOf} may return invalid
  1612. values during the {_mintConsecutive} execution if the super call is not called first. To be safe, execute the
  1613. super call before your custom logic.
  1614. [.contract-index]
  1615. .Functions
  1616. --
  1617. * {xref-ERC721Consecutive-_maxBatchSize--}[`++_maxBatchSize()++`]
  1618. * {xref-ERC721Consecutive-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  1619. * {xref-ERC721Consecutive-_mintConsecutive-address-uint96-}[`++_mintConsecutive(to, batchSize)++`]
  1620. * {xref-ERC721Consecutive-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  1621. * {xref-ERC721Consecutive-_firstConsecutiveId--}[`++_firstConsecutiveId()++`]
  1622. [.contract-subindex-inherited]
  1623. .ERC721
  1624. * {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1625. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  1626. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  1627. * {xref-ERC721-name--}[`++name()++`]
  1628. * {xref-ERC721-symbol--}[`++symbol()++`]
  1629. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  1630. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  1631. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  1632. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  1633. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1634. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  1635. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  1636. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  1637. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  1638. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  1639. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  1640. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  1641. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  1642. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  1643. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  1644. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  1645. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  1646. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  1647. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  1648. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  1649. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  1650. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  1651. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1652. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  1653. [.contract-subindex-inherited]
  1654. .IERC721Errors
  1655. [.contract-subindex-inherited]
  1656. .IERC721Metadata
  1657. [.contract-subindex-inherited]
  1658. .IERC721
  1659. [.contract-subindex-inherited]
  1660. .ERC165
  1661. [.contract-subindex-inherited]
  1662. .IERC165
  1663. [.contract-subindex-inherited]
  1664. .IERC2309
  1665. --
  1666. [.contract-index]
  1667. .Events
  1668. --
  1669. [.contract-subindex-inherited]
  1670. .ERC721
  1671. [.contract-subindex-inherited]
  1672. .IERC721Errors
  1673. [.contract-subindex-inherited]
  1674. .IERC721Metadata
  1675. [.contract-subindex-inherited]
  1676. .IERC721
  1677. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  1678. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  1679. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  1680. [.contract-subindex-inherited]
  1681. .ERC165
  1682. [.contract-subindex-inherited]
  1683. .IERC165
  1684. [.contract-subindex-inherited]
  1685. .IERC2309
  1686. * {xref-IERC2309-ConsecutiveTransfer-uint256-uint256-address-address-}[`++ConsecutiveTransfer(fromTokenId, toTokenId, fromAddress, toAddress)++`]
  1687. --
  1688. [.contract-index]
  1689. .Errors
  1690. --
  1691. * {xref-ERC721Consecutive-ERC721ForbiddenBatchMint--}[`++ERC721ForbiddenBatchMint()++`]
  1692. * {xref-ERC721Consecutive-ERC721ExceededMaxBatchMint-uint256-uint256-}[`++ERC721ExceededMaxBatchMint(batchSize, maxBatch)++`]
  1693. * {xref-ERC721Consecutive-ERC721ForbiddenMint--}[`++ERC721ForbiddenMint()++`]
  1694. * {xref-ERC721Consecutive-ERC721ForbiddenBatchBurn--}[`++ERC721ForbiddenBatchBurn()++`]
  1695. [.contract-subindex-inherited]
  1696. .ERC721
  1697. [.contract-subindex-inherited]
  1698. .IERC721Errors
  1699. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  1700. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  1701. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  1702. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  1703. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  1704. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  1705. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  1706. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  1707. [.contract-subindex-inherited]
  1708. .IERC721Metadata
  1709. [.contract-subindex-inherited]
  1710. .IERC721
  1711. [.contract-subindex-inherited]
  1712. .ERC165
  1713. [.contract-subindex-inherited]
  1714. .IERC165
  1715. [.contract-subindex-inherited]
  1716. .IERC2309
  1717. --
  1718. [.contract-item]
  1719. [[ERC721Consecutive-_maxBatchSize--]]
  1720. ==== `[.contract-item-name]#++_maxBatchSize++#++() → uint96++` [.item-kind]#internal#
  1721. Maximum size of a batch of consecutive tokens. This is designed to limit stress on off-chain indexing
  1722. services that have to record one entry per token, and have protections against "unreasonably large" batches of
  1723. tokens.
  1724. NOTE: Overriding the default value of 5000 will not cause on-chain issues, but may result in the asset not being
  1725. correctly supported by off-chain indexing services (including marketplaces).
  1726. [.contract-item]
  1727. [[ERC721Consecutive-_ownerOf-uint256-]]
  1728. ==== `[.contract-item-name]#++_ownerOf++#++(uint256 tokenId) → address++` [.item-kind]#internal#
  1729. See {ERC721-_ownerOf}. Override that checks the sequential ownership structure for tokens that have
  1730. been minted as part of a batch, and not yet transferred.
  1731. [.contract-item]
  1732. [[ERC721Consecutive-_mintConsecutive-address-uint96-]]
  1733. ==== `[.contract-item-name]#++_mintConsecutive++#++(address to, uint96 batchSize) → uint96++` [.item-kind]#internal#
  1734. Mint a batch of tokens of length `batchSize` for `to`. Returns the token id of the first token minted in the
  1735. batch; if `batchSize` is 0, returns the number of consecutive ids minted so far.
  1736. Requirements:
  1737. - `batchSize` must not be greater than {_maxBatchSize}.
  1738. - The function is called in the constructor of the contract (directly or indirectly).
  1739. CAUTION: Does not emit a `Transfer` event. This is ERC-721 compliant as long as it is done inside of the
  1740. constructor, which is enforced by this function.
  1741. CAUTION: Does not invoke `onERC721Received` on the receiver.
  1742. Emits a {IERC2309-ConsecutiveTransfer} event.
  1743. [.contract-item]
  1744. [[ERC721Consecutive-_update-address-uint256-address-]]
  1745. ==== `[.contract-item-name]#++_update++#++(address to, uint256 tokenId, address auth) → address++` [.item-kind]#internal#
  1746. See {ERC721-_update}. Override version that restricts normal minting to after construction.
  1747. WARNING: Using {ERC721Consecutive} prevents minting during construction in favor of {_mintConsecutive}.
  1748. After construction, {_mintConsecutive} is no longer available and minting through {_update} becomes available.
  1749. [.contract-item]
  1750. [[ERC721Consecutive-_firstConsecutiveId--]]
  1751. ==== `[.contract-item-name]#++_firstConsecutiveId++#++() → uint96++` [.item-kind]#internal#
  1752. Used to offset the first token id in {_nextConsecutiveId}
  1753. [.contract-item]
  1754. [[ERC721Consecutive-ERC721ForbiddenBatchMint--]]
  1755. ==== `[.contract-item-name]#++ERC721ForbiddenBatchMint++#++()++` [.item-kind]#error#
  1756. Batch mint is restricted to the constructor.
  1757. Any batch mint not emitting the {IERC721-Transfer} event outside of the constructor
  1758. is non ERC-721 compliant.
  1759. [.contract-item]
  1760. [[ERC721Consecutive-ERC721ExceededMaxBatchMint-uint256-uint256-]]
  1761. ==== `[.contract-item-name]#++ERC721ExceededMaxBatchMint++#++(uint256 batchSize, uint256 maxBatch)++` [.item-kind]#error#
  1762. Exceeds the max amount of mints per batch.
  1763. [.contract-item]
  1764. [[ERC721Consecutive-ERC721ForbiddenMint--]]
  1765. ==== `[.contract-item-name]#++ERC721ForbiddenMint++#++()++` [.item-kind]#error#
  1766. Individual minting is not allowed.
  1767. [.contract-item]
  1768. [[ERC721Consecutive-ERC721ForbiddenBatchBurn--]]
  1769. ==== `[.contract-item-name]#++ERC721ForbiddenBatchBurn++#++()++` [.item-kind]#error#
  1770. Batch burn is not supported.
  1771. :supportsInterface: pass:normal[xref:#ERC721URIStorage-supportsInterface-bytes4-[`++supportsInterface++`]]
  1772. :tokenURI: pass:normal[xref:#ERC721URIStorage-tokenURI-uint256-[`++tokenURI++`]]
  1773. :_setTokenURI: pass:normal[xref:#ERC721URIStorage-_setTokenURI-uint256-string-[`++_setTokenURI++`]]
  1774. [.contract]
  1775. [[ERC721URIStorage]]
  1776. === `++ERC721URIStorage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721URIStorage.sol[{github-icon},role=heading-link]
  1777. [.hljs-theme-light.nopadding]
  1778. ```solidity
  1779. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
  1780. ```
  1781. ERC-721 token with storage based token URI management.
  1782. [.contract-index]
  1783. .Functions
  1784. --
  1785. * {xref-ERC721URIStorage-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1786. * {xref-ERC721URIStorage-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  1787. * {xref-ERC721URIStorage-_setTokenURI-uint256-string-}[`++_setTokenURI(tokenId, _tokenURI)++`]
  1788. [.contract-subindex-inherited]
  1789. .ERC721
  1790. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  1791. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  1792. * {xref-ERC721-name--}[`++name()++`]
  1793. * {xref-ERC721-symbol--}[`++symbol()++`]
  1794. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  1795. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  1796. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  1797. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1798. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  1799. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  1800. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  1801. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  1802. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  1803. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  1804. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  1805. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  1806. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  1807. * {xref-ERC721-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  1808. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  1809. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  1810. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  1811. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  1812. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  1813. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  1814. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  1815. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  1816. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  1817. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1818. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  1819. [.contract-subindex-inherited]
  1820. .IERC721Errors
  1821. [.contract-subindex-inherited]
  1822. .IERC721Metadata
  1823. [.contract-subindex-inherited]
  1824. .IERC4906
  1825. [.contract-subindex-inherited]
  1826. .IERC721
  1827. [.contract-subindex-inherited]
  1828. .ERC165
  1829. [.contract-subindex-inherited]
  1830. .IERC165
  1831. --
  1832. [.contract-index]
  1833. .Events
  1834. --
  1835. [.contract-subindex-inherited]
  1836. .ERC721
  1837. [.contract-subindex-inherited]
  1838. .IERC721Errors
  1839. [.contract-subindex-inherited]
  1840. .IERC721Metadata
  1841. [.contract-subindex-inherited]
  1842. .IERC4906
  1843. * {xref-IERC4906-MetadataUpdate-uint256-}[`++MetadataUpdate(_tokenId)++`]
  1844. * {xref-IERC4906-BatchMetadataUpdate-uint256-uint256-}[`++BatchMetadataUpdate(_fromTokenId, _toTokenId)++`]
  1845. [.contract-subindex-inherited]
  1846. .IERC721
  1847. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  1848. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  1849. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  1850. [.contract-subindex-inherited]
  1851. .ERC165
  1852. [.contract-subindex-inherited]
  1853. .IERC165
  1854. --
  1855. [.contract-index]
  1856. .Errors
  1857. --
  1858. [.contract-subindex-inherited]
  1859. .ERC721
  1860. [.contract-subindex-inherited]
  1861. .IERC721Errors
  1862. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  1863. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  1864. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  1865. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  1866. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  1867. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  1868. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  1869. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  1870. [.contract-subindex-inherited]
  1871. .IERC721Metadata
  1872. [.contract-subindex-inherited]
  1873. .IERC4906
  1874. [.contract-subindex-inherited]
  1875. .IERC721
  1876. [.contract-subindex-inherited]
  1877. .ERC165
  1878. [.contract-subindex-inherited]
  1879. .IERC165
  1880. --
  1881. [.contract-item]
  1882. [[ERC721URIStorage-supportsInterface-bytes4-]]
  1883. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  1884. See {IERC165-supportsInterface}
  1885. [.contract-item]
  1886. [[ERC721URIStorage-tokenURI-uint256-]]
  1887. ==== `[.contract-item-name]#++tokenURI++#++(uint256 tokenId) → string++` [.item-kind]#public#
  1888. See {IERC721Metadata-tokenURI}.
  1889. [.contract-item]
  1890. [[ERC721URIStorage-_setTokenURI-uint256-string-]]
  1891. ==== `[.contract-item-name]#++_setTokenURI++#++(uint256 tokenId, string _tokenURI)++` [.item-kind]#internal#
  1892. Sets `_tokenURI` as the tokenURI of `tokenId`.
  1893. Emits {MetadataUpdate}.
  1894. :_update: pass:normal[xref:#ERC721Votes-_update-address-uint256-address-[`++_update++`]]
  1895. :_getVotingUnits: pass:normal[xref:#ERC721Votes-_getVotingUnits-address-[`++_getVotingUnits++`]]
  1896. :_increaseBalance: pass:normal[xref:#ERC721Votes-_increaseBalance-address-uint128-[`++_increaseBalance++`]]
  1897. [.contract]
  1898. [[ERC721Votes]]
  1899. === `++ERC721Votes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Votes.sol[{github-icon},role=heading-link]
  1900. [.hljs-theme-light.nopadding]
  1901. ```solidity
  1902. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Votes.sol";
  1903. ```
  1904. Extension of ERC-721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts
  1905. as 1 vote unit.
  1906. Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost
  1907. on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of
  1908. the votes in governance decisions, or they can delegate to themselves to be their own representative.
  1909. [.contract-index]
  1910. .Functions
  1911. --
  1912. * {xref-ERC721Votes-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  1913. * {xref-ERC721Votes-_getVotingUnits-address-}[`++_getVotingUnits(account)++`]
  1914. * {xref-ERC721Votes-_increaseBalance-address-uint128-}[`++_increaseBalance(account, amount)++`]
  1915. [.contract-subindex-inherited]
  1916. .Votes
  1917. * {xref-Votes-clock--}[`++clock()++`]
  1918. * {xref-Votes-CLOCK_MODE--}[`++CLOCK_MODE()++`]
  1919. * {xref-Votes-_validateTimepoint-uint256-}[`++_validateTimepoint(timepoint)++`]
  1920. * {xref-Votes-getVotes-address-}[`++getVotes(account)++`]
  1921. * {xref-Votes-getPastVotes-address-uint256-}[`++getPastVotes(account, timepoint)++`]
  1922. * {xref-Votes-getPastTotalSupply-uint256-}[`++getPastTotalSupply(timepoint)++`]
  1923. * {xref-Votes-_getTotalSupply--}[`++_getTotalSupply()++`]
  1924. * {xref-Votes-delegates-address-}[`++delegates(account)++`]
  1925. * {xref-Votes-delegate-address-}[`++delegate(delegatee)++`]
  1926. * {xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-}[`++delegateBySig(delegatee, nonce, expiry, v, r, s)++`]
  1927. * {xref-Votes-_delegate-address-address-}[`++_delegate(account, delegatee)++`]
  1928. * {xref-Votes-_transferVotingUnits-address-address-uint256-}[`++_transferVotingUnits(from, to, amount)++`]
  1929. * {xref-Votes-_moveDelegateVotes-address-address-uint256-}[`++_moveDelegateVotes(from, to, amount)++`]
  1930. * {xref-Votes-_numCheckpoints-address-}[`++_numCheckpoints(account)++`]
  1931. * {xref-Votes-_checkpoints-address-uint32-}[`++_checkpoints(account, pos)++`]
  1932. [.contract-subindex-inherited]
  1933. .IERC5805
  1934. [.contract-subindex-inherited]
  1935. .IVotes
  1936. [.contract-subindex-inherited]
  1937. .IERC6372
  1938. [.contract-subindex-inherited]
  1939. .Nonces
  1940. * {xref-Nonces-nonces-address-}[`++nonces(owner)++`]
  1941. * {xref-Nonces-_useNonce-address-}[`++_useNonce(owner)++`]
  1942. * {xref-Nonces-_useCheckedNonce-address-uint256-}[`++_useCheckedNonce(owner, nonce)++`]
  1943. [.contract-subindex-inherited]
  1944. .EIP712
  1945. * {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`]
  1946. * {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`]
  1947. * {xref-EIP712-eip712Domain--}[`++eip712Domain()++`]
  1948. * {xref-EIP712-_EIP712Name--}[`++_EIP712Name()++`]
  1949. * {xref-EIP712-_EIP712Version--}[`++_EIP712Version()++`]
  1950. [.contract-subindex-inherited]
  1951. .IERC5267
  1952. [.contract-subindex-inherited]
  1953. .ERC721
  1954. * {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1955. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  1956. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  1957. * {xref-ERC721-name--}[`++name()++`]
  1958. * {xref-ERC721-symbol--}[`++symbol()++`]
  1959. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  1960. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  1961. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  1962. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  1963. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1964. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  1965. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  1966. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  1967. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  1968. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  1969. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  1970. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  1971. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  1972. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  1973. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  1974. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  1975. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  1976. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  1977. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  1978. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  1979. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  1980. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  1981. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1982. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  1983. [.contract-subindex-inherited]
  1984. .IERC721Errors
  1985. [.contract-subindex-inherited]
  1986. .IERC721Metadata
  1987. [.contract-subindex-inherited]
  1988. .IERC721
  1989. [.contract-subindex-inherited]
  1990. .ERC165
  1991. [.contract-subindex-inherited]
  1992. .IERC165
  1993. --
  1994. [.contract-index]
  1995. .Events
  1996. --
  1997. [.contract-subindex-inherited]
  1998. .Votes
  1999. [.contract-subindex-inherited]
  2000. .IERC5805
  2001. [.contract-subindex-inherited]
  2002. .IVotes
  2003. * {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`]
  2004. * {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousVotes, newVotes)++`]
  2005. [.contract-subindex-inherited]
  2006. .IERC6372
  2007. [.contract-subindex-inherited]
  2008. .Nonces
  2009. [.contract-subindex-inherited]
  2010. .EIP712
  2011. [.contract-subindex-inherited]
  2012. .IERC5267
  2013. * {xref-IERC5267-EIP712DomainChanged--}[`++EIP712DomainChanged()++`]
  2014. [.contract-subindex-inherited]
  2015. .ERC721
  2016. [.contract-subindex-inherited]
  2017. .IERC721Errors
  2018. [.contract-subindex-inherited]
  2019. .IERC721Metadata
  2020. [.contract-subindex-inherited]
  2021. .IERC721
  2022. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  2023. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  2024. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  2025. [.contract-subindex-inherited]
  2026. .ERC165
  2027. [.contract-subindex-inherited]
  2028. .IERC165
  2029. --
  2030. [.contract-index]
  2031. .Errors
  2032. --
  2033. [.contract-subindex-inherited]
  2034. .Votes
  2035. * {xref-Votes-ERC6372InconsistentClock--}[`++ERC6372InconsistentClock()++`]
  2036. * {xref-Votes-ERC5805FutureLookup-uint256-uint48-}[`++ERC5805FutureLookup(timepoint, clock)++`]
  2037. [.contract-subindex-inherited]
  2038. .IERC5805
  2039. [.contract-subindex-inherited]
  2040. .IVotes
  2041. * {xref-IVotes-VotesExpiredSignature-uint256-}[`++VotesExpiredSignature(expiry)++`]
  2042. [.contract-subindex-inherited]
  2043. .IERC6372
  2044. [.contract-subindex-inherited]
  2045. .Nonces
  2046. * {xref-Nonces-InvalidAccountNonce-address-uint256-}[`++InvalidAccountNonce(account, currentNonce)++`]
  2047. [.contract-subindex-inherited]
  2048. .EIP712
  2049. [.contract-subindex-inherited]
  2050. .IERC5267
  2051. [.contract-subindex-inherited]
  2052. .ERC721
  2053. [.contract-subindex-inherited]
  2054. .IERC721Errors
  2055. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  2056. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  2057. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  2058. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  2059. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  2060. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  2061. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  2062. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  2063. [.contract-subindex-inherited]
  2064. .IERC721Metadata
  2065. [.contract-subindex-inherited]
  2066. .IERC721
  2067. [.contract-subindex-inherited]
  2068. .ERC165
  2069. [.contract-subindex-inherited]
  2070. .IERC165
  2071. --
  2072. [.contract-item]
  2073. [[ERC721Votes-_update-address-uint256-address-]]
  2074. ==== `[.contract-item-name]#++_update++#++(address to, uint256 tokenId, address auth) → address++` [.item-kind]#internal#
  2075. See {ERC721-_update}. Adjusts votes when tokens are transferred.
  2076. Emits a {IVotes-DelegateVotesChanged} event.
  2077. [.contract-item]
  2078. [[ERC721Votes-_getVotingUnits-address-]]
  2079. ==== `[.contract-item-name]#++_getVotingUnits++#++(address account) → uint256++` [.item-kind]#internal#
  2080. Returns the balance of `account`.
  2081. WARNING: Overriding this function will likely result in incorrect vote tracking.
  2082. [.contract-item]
  2083. [[ERC721Votes-_increaseBalance-address-uint128-]]
  2084. ==== `[.contract-item-name]#++_increaseBalance++#++(address account, uint128 amount)++` [.item-kind]#internal#
  2085. See {ERC721-_increaseBalance}. We need that to account tokens that were minted in batch.
  2086. :supportsInterface: pass:normal[xref:#ERC721Royalty-supportsInterface-bytes4-[`++supportsInterface++`]]
  2087. [.contract]
  2088. [[ERC721Royalty]]
  2089. === `++ERC721Royalty++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Royalty.sol[{github-icon},role=heading-link]
  2090. [.hljs-theme-light.nopadding]
  2091. ```solidity
  2092. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Royalty.sol";
  2093. ```
  2094. Extension of ERC-721 with the ERC-2981 NFT Royalty Standard, a standardized way to retrieve royalty payment
  2095. information.
  2096. Royalty information can be specified globally for all token ids via {ERC2981-_setDefaultRoyalty}, and/or individually
  2097. for specific token ids via {ERC2981-_setTokenRoyalty}. The latter takes precedence over the first.
  2098. IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See
  2099. https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to
  2100. voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.
  2101. [.contract-index]
  2102. .Functions
  2103. --
  2104. * {xref-ERC721Royalty-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  2105. [.contract-subindex-inherited]
  2106. .ERC721
  2107. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  2108. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  2109. * {xref-ERC721-name--}[`++name()++`]
  2110. * {xref-ERC721-symbol--}[`++symbol()++`]
  2111. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  2112. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  2113. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  2114. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  2115. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  2116. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  2117. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  2118. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  2119. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  2120. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  2121. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  2122. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  2123. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  2124. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  2125. * {xref-ERC721-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  2126. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  2127. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  2128. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  2129. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  2130. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  2131. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  2132. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  2133. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  2134. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  2135. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  2136. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  2137. [.contract-subindex-inherited]
  2138. .IERC721Errors
  2139. [.contract-subindex-inherited]
  2140. .IERC721Metadata
  2141. [.contract-subindex-inherited]
  2142. .IERC721
  2143. [.contract-subindex-inherited]
  2144. .ERC2981
  2145. * {xref-ERC2981-royaltyInfo-uint256-uint256-}[`++royaltyInfo(tokenId, salePrice)++`]
  2146. * {xref-ERC2981-_feeDenominator--}[`++_feeDenominator()++`]
  2147. * {xref-ERC2981-_setDefaultRoyalty-address-uint96-}[`++_setDefaultRoyalty(receiver, feeNumerator)++`]
  2148. * {xref-ERC2981-_deleteDefaultRoyalty--}[`++_deleteDefaultRoyalty()++`]
  2149. * {xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-}[`++_setTokenRoyalty(tokenId, receiver, feeNumerator)++`]
  2150. * {xref-ERC2981-_resetTokenRoyalty-uint256-}[`++_resetTokenRoyalty(tokenId)++`]
  2151. [.contract-subindex-inherited]
  2152. .ERC165
  2153. [.contract-subindex-inherited]
  2154. .IERC2981
  2155. [.contract-subindex-inherited]
  2156. .IERC165
  2157. --
  2158. [.contract-index]
  2159. .Events
  2160. --
  2161. [.contract-subindex-inherited]
  2162. .ERC721
  2163. [.contract-subindex-inherited]
  2164. .IERC721Errors
  2165. [.contract-subindex-inherited]
  2166. .IERC721Metadata
  2167. [.contract-subindex-inherited]
  2168. .IERC721
  2169. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  2170. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  2171. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  2172. [.contract-subindex-inherited]
  2173. .ERC2981
  2174. [.contract-subindex-inherited]
  2175. .ERC165
  2176. [.contract-subindex-inherited]
  2177. .IERC2981
  2178. [.contract-subindex-inherited]
  2179. .IERC165
  2180. --
  2181. [.contract-index]
  2182. .Errors
  2183. --
  2184. [.contract-subindex-inherited]
  2185. .ERC721
  2186. [.contract-subindex-inherited]
  2187. .IERC721Errors
  2188. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  2189. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  2190. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  2191. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  2192. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  2193. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  2194. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  2195. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  2196. [.contract-subindex-inherited]
  2197. .IERC721Metadata
  2198. [.contract-subindex-inherited]
  2199. .IERC721
  2200. [.contract-subindex-inherited]
  2201. .ERC2981
  2202. * {xref-ERC2981-ERC2981InvalidDefaultRoyalty-uint256-uint256-}[`++ERC2981InvalidDefaultRoyalty(numerator, denominator)++`]
  2203. * {xref-ERC2981-ERC2981InvalidDefaultRoyaltyReceiver-address-}[`++ERC2981InvalidDefaultRoyaltyReceiver(receiver)++`]
  2204. * {xref-ERC2981-ERC2981InvalidTokenRoyalty-uint256-uint256-uint256-}[`++ERC2981InvalidTokenRoyalty(tokenId, numerator, denominator)++`]
  2205. * {xref-ERC2981-ERC2981InvalidTokenRoyaltyReceiver-uint256-address-}[`++ERC2981InvalidTokenRoyaltyReceiver(tokenId, receiver)++`]
  2206. [.contract-subindex-inherited]
  2207. .ERC165
  2208. [.contract-subindex-inherited]
  2209. .IERC2981
  2210. [.contract-subindex-inherited]
  2211. .IERC165
  2212. --
  2213. [.contract-item]
  2214. [[ERC721Royalty-supportsInterface-bytes4-]]
  2215. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  2216. See {IERC165-supportsInterface}.
  2217. :ERC721UnsupportedToken: pass:normal[xref:#ERC721Wrapper-ERC721UnsupportedToken-address-[`++ERC721UnsupportedToken++`]]
  2218. :constructor: pass:normal[xref:#ERC721Wrapper-constructor-contract-IERC721-[`++constructor++`]]
  2219. :depositFor: pass:normal[xref:#ERC721Wrapper-depositFor-address-uint256---[`++depositFor++`]]
  2220. :withdrawTo: pass:normal[xref:#ERC721Wrapper-withdrawTo-address-uint256---[`++withdrawTo++`]]
  2221. :onERC721Received: pass:normal[xref:#ERC721Wrapper-onERC721Received-address-address-uint256-bytes-[`++onERC721Received++`]]
  2222. :_recover: pass:normal[xref:#ERC721Wrapper-_recover-address-uint256-[`++_recover++`]]
  2223. :underlying: pass:normal[xref:#ERC721Wrapper-underlying--[`++underlying++`]]
  2224. [.contract]
  2225. [[ERC721Wrapper]]
  2226. === `++ERC721Wrapper++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/extensions/ERC721Wrapper.sol[{github-icon},role=heading-link]
  2227. [.hljs-theme-light.nopadding]
  2228. ```solidity
  2229. import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Wrapper.sol";
  2230. ```
  2231. Extension of the ERC-721 token contract to support token wrapping.
  2232. Users can deposit and withdraw an "underlying token" and receive a "wrapped token" with a matching tokenId. This is
  2233. useful in conjunction with other modules. For example, combining this wrapping mechanism with {ERC721Votes} will allow
  2234. the wrapping of an existing "basic" ERC-721 into a governance token.
  2235. [.contract-index]
  2236. .Functions
  2237. --
  2238. * {xref-ERC721Wrapper-constructor-contract-IERC721-}[`++constructor(underlyingToken)++`]
  2239. * {xref-ERC721Wrapper-depositFor-address-uint256---}[`++depositFor(account, tokenIds)++`]
  2240. * {xref-ERC721Wrapper-withdrawTo-address-uint256---}[`++withdrawTo(account, tokenIds)++`]
  2241. * {xref-ERC721Wrapper-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, from, tokenId, )++`]
  2242. * {xref-ERC721Wrapper-_recover-address-uint256-}[`++_recover(account, tokenId)++`]
  2243. * {xref-ERC721Wrapper-underlying--}[`++underlying()++`]
  2244. [.contract-subindex-inherited]
  2245. .IERC721Receiver
  2246. [.contract-subindex-inherited]
  2247. .ERC721
  2248. * {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  2249. * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`]
  2250. * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`]
  2251. * {xref-ERC721-name--}[`++name()++`]
  2252. * {xref-ERC721-symbol--}[`++symbol()++`]
  2253. * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`]
  2254. * {xref-ERC721-_baseURI--}[`++_baseURI()++`]
  2255. * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`]
  2256. * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`]
  2257. * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  2258. * {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`]
  2259. * {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`]
  2260. * {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`]
  2261. * {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, data)++`]
  2262. * {xref-ERC721-_ownerOf-uint256-}[`++_ownerOf(tokenId)++`]
  2263. * {xref-ERC721-_getApproved-uint256-}[`++_getApproved(tokenId)++`]
  2264. * {xref-ERC721-_isAuthorized-address-address-uint256-}[`++_isAuthorized(owner, spender, tokenId)++`]
  2265. * {xref-ERC721-_checkAuthorized-address-address-uint256-}[`++_checkAuthorized(owner, spender, tokenId)++`]
  2266. * {xref-ERC721-_increaseBalance-address-uint128-}[`++_increaseBalance(account, value)++`]
  2267. * {xref-ERC721-_update-address-uint256-address-}[`++_update(to, tokenId, auth)++`]
  2268. * {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`]
  2269. * {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`]
  2270. * {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, data)++`]
  2271. * {xref-ERC721-_burn-uint256-}[`++_burn(tokenId)++`]
  2272. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`]
  2273. * {xref-ERC721-_safeTransfer-address-address-uint256-}[`++_safeTransfer(from, to, tokenId)++`]
  2274. * {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, data)++`]
  2275. * {xref-ERC721-_approve-address-uint256-address-}[`++_approve(to, tokenId, auth)++`]
  2276. * {xref-ERC721-_approve-address-uint256-address-bool-}[`++_approve(to, tokenId, auth, emitEvent)++`]
  2277. * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  2278. * {xref-ERC721-_requireOwned-uint256-}[`++_requireOwned(tokenId)++`]
  2279. [.contract-subindex-inherited]
  2280. .IERC721Errors
  2281. [.contract-subindex-inherited]
  2282. .IERC721Metadata
  2283. [.contract-subindex-inherited]
  2284. .IERC721
  2285. [.contract-subindex-inherited]
  2286. .ERC165
  2287. [.contract-subindex-inherited]
  2288. .IERC165
  2289. --
  2290. [.contract-index]
  2291. .Events
  2292. --
  2293. [.contract-subindex-inherited]
  2294. .IERC721Receiver
  2295. [.contract-subindex-inherited]
  2296. .ERC721
  2297. [.contract-subindex-inherited]
  2298. .IERC721Errors
  2299. [.contract-subindex-inherited]
  2300. .IERC721Metadata
  2301. [.contract-subindex-inherited]
  2302. .IERC721
  2303. * {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`]
  2304. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`]
  2305. * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`]
  2306. [.contract-subindex-inherited]
  2307. .ERC165
  2308. [.contract-subindex-inherited]
  2309. .IERC165
  2310. --
  2311. [.contract-index]
  2312. .Errors
  2313. --
  2314. * {xref-ERC721Wrapper-ERC721UnsupportedToken-address-}[`++ERC721UnsupportedToken(token)++`]
  2315. [.contract-subindex-inherited]
  2316. .IERC721Receiver
  2317. [.contract-subindex-inherited]
  2318. .ERC721
  2319. [.contract-subindex-inherited]
  2320. .IERC721Errors
  2321. * {xref-IERC721Errors-ERC721InvalidOwner-address-}[`++ERC721InvalidOwner(owner)++`]
  2322. * {xref-IERC721Errors-ERC721NonexistentToken-uint256-}[`++ERC721NonexistentToken(tokenId)++`]
  2323. * {xref-IERC721Errors-ERC721IncorrectOwner-address-uint256-address-}[`++ERC721IncorrectOwner(sender, tokenId, owner)++`]
  2324. * {xref-IERC721Errors-ERC721InvalidSender-address-}[`++ERC721InvalidSender(sender)++`]
  2325. * {xref-IERC721Errors-ERC721InvalidReceiver-address-}[`++ERC721InvalidReceiver(receiver)++`]
  2326. * {xref-IERC721Errors-ERC721InsufficientApproval-address-uint256-}[`++ERC721InsufficientApproval(operator, tokenId)++`]
  2327. * {xref-IERC721Errors-ERC721InvalidApprover-address-}[`++ERC721InvalidApprover(approver)++`]
  2328. * {xref-IERC721Errors-ERC721InvalidOperator-address-}[`++ERC721InvalidOperator(operator)++`]
  2329. [.contract-subindex-inherited]
  2330. .IERC721Metadata
  2331. [.contract-subindex-inherited]
  2332. .IERC721
  2333. [.contract-subindex-inherited]
  2334. .ERC165
  2335. [.contract-subindex-inherited]
  2336. .IERC165
  2337. --
  2338. [.contract-item]
  2339. [[ERC721Wrapper-constructor-contract-IERC721-]]
  2340. ==== `[.contract-item-name]#++constructor++#++(contract IERC721 underlyingToken)++` [.item-kind]#internal#
  2341. [.contract-item]
  2342. [[ERC721Wrapper-depositFor-address-uint256---]]
  2343. ==== `[.contract-item-name]#++depositFor++#++(address account, uint256[] tokenIds) → bool++` [.item-kind]#public#
  2344. Allow a user to deposit underlying tokens and mint the corresponding tokenIds.
  2345. [.contract-item]
  2346. [[ERC721Wrapper-withdrawTo-address-uint256---]]
  2347. ==== `[.contract-item-name]#++withdrawTo++#++(address account, uint256[] tokenIds) → bool++` [.item-kind]#public#
  2348. Allow a user to burn wrapped tokens and withdraw the corresponding tokenIds of the underlying tokens.
  2349. [.contract-item]
  2350. [[ERC721Wrapper-onERC721Received-address-address-uint256-bytes-]]
  2351. ==== `[.contract-item-name]#++onERC721Received++#++(address, address from, uint256 tokenId, bytes) → bytes4++` [.item-kind]#public#
  2352. Overrides {IERC721Receiver-onERC721Received} to allow minting on direct ERC-721 transfers to
  2353. this contract.
  2354. In case there's data attached, it validates that the operator is this contract, so only trusted data
  2355. is accepted from {depositFor}.
  2356. WARNING: Doesn't work with unsafe transfers (eg. {IERC721-transferFrom}). Use {ERC721Wrapper-_recover}
  2357. for recovering in that scenario.
  2358. [.contract-item]
  2359. [[ERC721Wrapper-_recover-address-uint256-]]
  2360. ==== `[.contract-item-name]#++_recover++#++(address account, uint256 tokenId) → uint256++` [.item-kind]#internal#
  2361. Mint a wrapped token to cover any underlyingToken that would have been transferred by mistake. Internal
  2362. function that can be exposed with access control if desired.
  2363. [.contract-item]
  2364. [[ERC721Wrapper-underlying--]]
  2365. ==== `[.contract-item-name]#++underlying++#++() → contract IERC721++` [.item-kind]#public#
  2366. Returns the underlying token.
  2367. [.contract-item]
  2368. [[ERC721Wrapper-ERC721UnsupportedToken-address-]]
  2369. ==== `[.contract-item-name]#++ERC721UnsupportedToken++#++(address token)++` [.item-kind]#error#
  2370. The received ERC-721 token couldn't be wrapped.
  2371. == Utilities
  2372. :onERC721Received: pass:normal[xref:#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`++onERC721Received++`]]
  2373. [.contract]
  2374. [[ERC721Holder]]
  2375. === `++ERC721Holder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/utils/ERC721Holder.sol[{github-icon},role=heading-link]
  2376. [.hljs-theme-light.nopadding]
  2377. ```solidity
  2378. import "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol";
  2379. ```
  2380. Implementation of the {IERC721Receiver} interface.
  2381. Accepts all token transfers.
  2382. Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or
  2383. {IERC721-setApprovalForAll}.
  2384. [.contract-index]
  2385. .Functions
  2386. --
  2387. * {xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-}[`++onERC721Received(, , , )++`]
  2388. [.contract-subindex-inherited]
  2389. .IERC721Receiver
  2390. --
  2391. [.contract-item]
  2392. [[ERC721Holder-onERC721Received-address-address-uint256-bytes-]]
  2393. ==== `[.contract-item-name]#++onERC721Received++#++(address, address, uint256, bytes) → bytes4++` [.item-kind]#public#
  2394. See {IERC721Receiver-onERC721Received}.
  2395. Always returns `IERC721Receiver.onERC721Received.selector`.
  2396. :checkOnERC721Received: pass:normal[xref:#ERC721Utils-checkOnERC721Received-address-address-address-uint256-bytes-[`++checkOnERC721Received++`]]
  2397. [.contract]
  2398. [[ERC721Utils]]
  2399. === `++ERC721Utils++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.2.0/contracts/token/ERC721/utils/ERC721Utils.sol[{github-icon},role=heading-link]
  2400. [.hljs-theme-light.nopadding]
  2401. ```solidity
  2402. import "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol";
  2403. ```
  2404. Library that provide common ERC-721 utility functions.
  2405. See https://eips.ethereum.org/EIPS/eip-721[ERC-721].
  2406. _Available since v5.1._
  2407. [.contract-index]
  2408. .Functions
  2409. --
  2410. * {xref-ERC721Utils-checkOnERC721Received-address-address-address-uint256-bytes-}[`++checkOnERC721Received(operator, from, to, tokenId, data)++`]
  2411. --
  2412. [.contract-item]
  2413. [[ERC721Utils-checkOnERC721Received-address-address-address-uint256-bytes-]]
  2414. ==== `[.contract-item-name]#++checkOnERC721Received++#++(address operator, address from, address to, uint256 tokenId, bytes data)++` [.item-kind]#internal#
  2415. Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}
  2416. on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).
  2417. The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).
  2418. Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept
  2419. the transfer.