ERC721.adoc 145 KB

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