ERC721.adoc 170 KB

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