ERC1155.adoc 88 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604
  1. :github-icon: pass:[<svg class="icon"><use href="#github-icon"/></svg>]
  2. :IERC1155: pass:normal[xref:token/ERC1155.adoc#IERC1155[`IERC1155`]]
  3. :IERC1155MetadataURI: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI[`IERC1155MetadataURI`]]
  4. :IERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver[`IERC1155Receiver`]]
  5. :ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]]
  6. :IERC1155: pass:normal[xref:token/ERC1155.adoc#IERC1155[`IERC1155`]]
  7. :IERC1155MetadataURI: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI[`IERC1155MetadataURI`]]
  8. :ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]]
  9. :ERC1155Burnable: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable[`ERC1155Burnable`]]
  10. :ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]]
  11. :xref-IERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-
  12. :xref-IERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---
  13. :xref-IERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-
  14. :xref-IERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-
  15. :xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  16. :xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  17. :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
  18. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  19. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  20. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  21. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  22. :IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]]
  23. :IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]]
  24. :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]]
  25. :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-
  26. :xref-IERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-
  27. :xref-IERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---
  28. :xref-IERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-
  29. :xref-IERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-
  30. :xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  31. :xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  32. :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
  33. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  34. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  35. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  36. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  37. :xref-ERC1155-constructor-string-: xref:token/ERC1155.adoc#ERC1155-constructor-string-
  38. :xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-
  39. :xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256-
  40. :xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-
  41. :xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---
  42. :xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-
  43. :xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-
  44. :xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  45. :xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  46. :xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-
  47. :xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  48. :xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string-
  49. :xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-
  50. :xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-
  51. :xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-
  52. :xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---
  53. :xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-
  54. :xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-
  55. :xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-
  56. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  57. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  58. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  59. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  60. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  61. :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]]
  62. :IERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-[`IERC1155.balanceOf`]]
  63. :IERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---[`IERC1155.balanceOfBatch`]]
  64. :IERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-[`IERC1155.setApprovalForAll`]]
  65. :IERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-[`IERC1155.isApprovedForAll`]]
  66. :IERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`IERC1155.safeTransferFrom`]]
  67. :IERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`IERC1155.safeBatchTransferFrom`]]
  68. :IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]]
  69. :IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]]
  70. :IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]]
  71. :IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]]
  72. :xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-
  73. :xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
  74. :xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4-
  75. :xref-ERC1155Receiver-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4-
  76. :xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-
  77. :xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
  78. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  79. :Pausable-_pause: pass:normal[xref:security.adoc#Pausable-_pause--[`Pausable._pause`]]
  80. :Pausable-_unpause: pass:normal[xref:security.adoc#Pausable-_unpause--[`Pausable._unpause`]]
  81. :AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]]
  82. :Ownable: pass:normal[xref:access.adoc#Ownable[`Ownable`]]
  83. :xref-ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-
  84. :xref-Pausable-paused--: xref:security.adoc#Pausable-paused--
  85. :xref-Pausable-_requireNotPaused--: xref:security.adoc#Pausable-_requireNotPaused--
  86. :xref-Pausable-_requirePaused--: xref:security.adoc#Pausable-_requirePaused--
  87. :xref-Pausable-_pause--: xref:security.adoc#Pausable-_pause--
  88. :xref-Pausable-_unpause--: xref:security.adoc#Pausable-_unpause--
  89. :xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-
  90. :xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256-
  91. :xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-
  92. :xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---
  93. :xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-
  94. :xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-
  95. :xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  96. :xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  97. :xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-
  98. :xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  99. :xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string-
  100. :xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-
  101. :xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-
  102. :xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-
  103. :xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---
  104. :xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-
  105. :xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-
  106. :xref-Pausable-Paused-address-: xref:security.adoc#Pausable-Paused-address-
  107. :xref-Pausable-Unpaused-address-: xref:security.adoc#Pausable-Unpaused-address-
  108. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  109. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  110. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  111. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  112. :ERC1155-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155._beforeTokenTransfer`]]
  113. :ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]]
  114. :xref-ERC1155Burnable-burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256-
  115. :xref-ERC1155Burnable-burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256---
  116. :xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-
  117. :xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256-
  118. :xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-
  119. :xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---
  120. :xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-
  121. :xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-
  122. :xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  123. :xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  124. :xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-
  125. :xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  126. :xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string-
  127. :xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-
  128. :xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-
  129. :xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-
  130. :xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---
  131. :xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-
  132. :xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-
  133. :xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-
  134. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  135. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  136. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  137. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  138. :xref-ERC1155Supply-totalSupply-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256-
  139. :xref-ERC1155Supply-exists-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256-
  140. :xref-ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-
  141. :xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-
  142. :xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256-
  143. :xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-
  144. :xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---
  145. :xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-
  146. :xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-
  147. :xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  148. :xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  149. :xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-
  150. :xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  151. :xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string-
  152. :xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-
  153. :xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-
  154. :xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-
  155. :xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---
  156. :xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-
  157. :xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-
  158. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  159. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  160. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  161. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  162. :ERC1155-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155._beforeTokenTransfer`]]
  163. :xref-ERC1155URIStorage-uri-uint256-: xref:token/ERC1155.adoc#ERC1155URIStorage-uri-uint256-
  164. :xref-ERC1155URIStorage-_setURI-uint256-string-: xref:token/ERC1155.adoc#ERC1155URIStorage-_setURI-uint256-string-
  165. :xref-ERC1155URIStorage-_setBaseURI-string-: xref:token/ERC1155.adoc#ERC1155URIStorage-_setBaseURI-string-
  166. :xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-
  167. :xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-
  168. :xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---
  169. :xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-
  170. :xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-
  171. :xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  172. :xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  173. :xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-
  174. :xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  175. :xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string-
  176. :xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-
  177. :xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-
  178. :xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-
  179. :xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---
  180. :xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-
  181. :xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-
  182. :xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-
  183. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  184. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  185. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  186. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  187. :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]]
  188. :ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]]
  189. :AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]]
  190. :xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-
  191. :xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-
  192. :xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-
  193. :xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--
  194. :xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--
  195. :xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-
  196. :xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-
  197. :xref-Pausable-paused--: xref:security.adoc#Pausable-paused--
  198. :xref-Pausable-_requireNotPaused--: xref:security.adoc#Pausable-_requireNotPaused--
  199. :xref-Pausable-_requirePaused--: xref:security.adoc#Pausable-_requirePaused--
  200. :xref-Pausable-_pause--: xref:security.adoc#Pausable-_pause--
  201. :xref-Pausable-_unpause--: xref:security.adoc#Pausable-_unpause--
  202. :xref-ERC1155Burnable-burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256-
  203. :xref-ERC1155Burnable-burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256---
  204. :xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256-
  205. :xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-
  206. :xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---
  207. :xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-
  208. :xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-
  209. :xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-
  210. :xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  211. :xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-
  212. :xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-
  213. :xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string-
  214. :xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-
  215. :xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-
  216. :xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-
  217. :xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---
  218. :xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-
  219. :xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-
  220. :xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256-
  221. :xref-AccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32-
  222. :xref-AccessControlEnumerable-_grantRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address-
  223. :xref-AccessControlEnumerable-_revokeRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address-
  224. :xref-AccessControl-hasRole-bytes32-address-: xref:access.adoc#AccessControl-hasRole-bytes32-address-
  225. :xref-AccessControl-_checkRole-bytes32-: xref:access.adoc#AccessControl-_checkRole-bytes32-
  226. :xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address-
  227. :xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32-
  228. :xref-AccessControl-grantRole-bytes32-address-: xref:access.adoc#AccessControl-grantRole-bytes32-address-
  229. :xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address-
  230. :xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address-
  231. :xref-AccessControl-_setupRole-bytes32-address-: xref:access.adoc#AccessControl-_setupRole-bytes32-address-
  232. :xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-
  233. :xref-Pausable-Paused-address-: xref:security.adoc#Pausable-Paused-address-
  234. :xref-Pausable-Unpaused-address-: xref:security.adoc#Pausable-Unpaused-address-
  235. :xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-
  236. :xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---
  237. :xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-
  238. :xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-
  239. :xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-
  240. :xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-
  241. :xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-
  242. :ERC1155-_mint: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-[`ERC1155._mint`]]
  243. :ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]]
  244. :Pausable-_pause: pass:normal[xref:security.adoc#Pausable-_pause--[`Pausable._pause`]]
  245. :ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]]
  246. :Pausable-_unpause: pass:normal[xref:security.adoc#Pausable-_unpause--[`Pausable._unpause`]]
  247. :IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
  248. :xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-
  249. :xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
  250. :xref-ERC1155Receiver-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4-
  251. = ERC 1155
  252. [.readme-notice]
  253. NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/token/erc1155
  254. This set of interfaces and contracts are all related to the https://eips.ethereum.org/EIPS/eip-1155[ERC1155 Multi Token Standard].
  255. The EIP consists of three interfaces which fulfill different roles, found here as {IERC1155}, {IERC1155MetadataURI} and {IERC1155Receiver}.
  256. {ERC1155} implements the mandatory {IERC1155} interface, as well as the optional extension {IERC1155MetadataURI}, by relying on the substitution mechanism to use the same URI for all token types, dramatically reducing gas costs.
  257. Additionally there are multiple custom extensions, including:
  258. * designation of addresses that can pause token transfers for all users ({ERC1155Pausable}).
  259. * destruction of own tokens ({ERC1155Burnable}).
  260. NOTE: This core set of contracts is designed to be unopinionated, allowing developers to access the internal functions in ERC1155 (such as <<ERC1155-_mint-address-uint256-uint256-bytes-,`_mint`>>) and expose them as external functions in the way they prefer. On the other hand, xref:ROOT:erc1155.adoc#Presets[ERC1155 Presets] (such as {ERC1155PresetMinterPauser}) are designed using opinionated patterns to provide developers with ready to use, deployable contracts.
  261. == Core
  262. :TransferSingle: pass:normal[xref:#IERC1155-TransferSingle-address-address-address-uint256-uint256-[`++TransferSingle++`]]
  263. :TransferBatch: pass:normal[xref:#IERC1155-TransferBatch-address-address-address-uint256---uint256---[`++TransferBatch++`]]
  264. :ApprovalForAll: pass:normal[xref:#IERC1155-ApprovalForAll-address-address-bool-[`++ApprovalForAll++`]]
  265. :URI: pass:normal[xref:#IERC1155-URI-string-uint256-[`++URI++`]]
  266. :balanceOf: pass:normal[xref:#IERC1155-balanceOf-address-uint256-[`++balanceOf++`]]
  267. :balanceOfBatch: pass:normal[xref:#IERC1155-balanceOfBatch-address---uint256---[`++balanceOfBatch++`]]
  268. :setApprovalForAll: pass:normal[xref:#IERC1155-setApprovalForAll-address-bool-[`++setApprovalForAll++`]]
  269. :isApprovedForAll: pass:normal[xref:#IERC1155-isApprovedForAll-address-address-[`++isApprovedForAll++`]]
  270. :safeTransferFrom: pass:normal[xref:#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`++safeTransferFrom++`]]
  271. :safeBatchTransferFrom: pass:normal[xref:#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`++safeBatchTransferFrom++`]]
  272. [.contract]
  273. [[IERC1155]]
  274. === `++IERC1155++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/IERC1155.sol[{github-icon},role=heading-link]
  275. [.hljs-theme-light.nopadding]
  276. ```solidity
  277. import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
  278. ```
  279. Required interface of an ERC1155 compliant contract, as defined in the
  280. https://eips.ethereum.org/EIPS/eip-1155[EIP].
  281. _Available since v3.1._
  282. [.contract-index]
  283. .Functions
  284. --
  285. * {xref-IERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  286. * {xref-IERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  287. * {xref-IERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  288. * {xref-IERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  289. * {xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  290. * {xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  291. [.contract-subindex-inherited]
  292. .IERC165
  293. * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  294. --
  295. [.contract-index]
  296. .Events
  297. --
  298. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  299. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  300. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  301. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  302. [.contract-subindex-inherited]
  303. .IERC165
  304. --
  305. [.contract-item]
  306. [[IERC1155-balanceOf-address-uint256-]]
  307. ==== `[.contract-item-name]#++balanceOf++#++(address account, uint256 id) → uint256++` [.item-kind]#external#
  308. Returns the amount of tokens of token type `id` owned by `account`.
  309. Requirements:
  310. - `account` cannot be the zero address.
  311. [.contract-item]
  312. [[IERC1155-balanceOfBatch-address---uint256---]]
  313. ==== `[.contract-item-name]#++balanceOfBatch++#++(address[] accounts, uint256[] ids) → uint256[]++` [.item-kind]#external#
  314. xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
  315. Requirements:
  316. - `accounts` and `ids` must have the same length.
  317. [.contract-item]
  318. [[IERC1155-setApprovalForAll-address-bool-]]
  319. ==== `[.contract-item-name]#++setApprovalForAll++#++(address operator, bool approved)++` [.item-kind]#external#
  320. Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
  321. Emits an {ApprovalForAll} event.
  322. Requirements:
  323. - `operator` cannot be the caller.
  324. [.contract-item]
  325. [[IERC1155-isApprovedForAll-address-address-]]
  326. ==== `[.contract-item-name]#++isApprovedForAll++#++(address account, address operator) → bool++` [.item-kind]#external#
  327. Returns true if `operator` is approved to transfer ``account``'s tokens.
  328. See {setApprovalForAll}.
  329. [.contract-item]
  330. [[IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-]]
  331. ==== `[.contract-item-name]#++safeTransferFrom++#++(address from, address to, uint256 id, uint256 amount, bytes data)++` [.item-kind]#external#
  332. Transfers `amount` tokens of token type `id` from `from` to `to`.
  333. Emits a {TransferSingle} event.
  334. Requirements:
  335. - `to` cannot be the zero address.
  336. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
  337. - `from` must have a balance of tokens of type `id` of at least `amount`.
  338. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
  339. acceptance magic value.
  340. [.contract-item]
  341. [[IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-]]
  342. ==== `[.contract-item-name]#++safeBatchTransferFrom++#++(address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#external#
  343. xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
  344. Emits a {TransferBatch} event.
  345. Requirements:
  346. - `ids` and `amounts` must have the same length.
  347. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
  348. acceptance magic value.
  349. [.contract-item]
  350. [[IERC1155-TransferSingle-address-address-address-uint256-uint256-]]
  351. ==== `[.contract-item-name]#++TransferSingle++#++(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)++` [.item-kind]#event#
  352. Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
  353. [.contract-item]
  354. [[IERC1155-TransferBatch-address-address-address-uint256---uint256---]]
  355. ==== `[.contract-item-name]#++TransferBatch++#++(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)++` [.item-kind]#event#
  356. Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
  357. transfers.
  358. [.contract-item]
  359. [[IERC1155-ApprovalForAll-address-address-bool-]]
  360. ==== `[.contract-item-name]#++ApprovalForAll++#++(address indexed account, address indexed operator, bool approved)++` [.item-kind]#event#
  361. Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
  362. `approved`.
  363. [.contract-item]
  364. [[IERC1155-URI-string-uint256-]]
  365. ==== `[.contract-item-name]#++URI++#++(string value, uint256 indexed id)++` [.item-kind]#event#
  366. Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
  367. If an {URI} event was emitted for `id`, the standard
  368. https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
  369. returned by {IERC1155MetadataURI-uri}.
  370. :uri: pass:normal[xref:#IERC1155MetadataURI-uri-uint256-[`++uri++`]]
  371. [.contract]
  372. [[IERC1155MetadataURI]]
  373. === `++IERC1155MetadataURI++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol[{github-icon},role=heading-link]
  374. [.hljs-theme-light.nopadding]
  375. ```solidity
  376. import "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol";
  377. ```
  378. Interface of the optional ERC1155MetadataExtension interface, as defined
  379. in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
  380. _Available since v3.1._
  381. [.contract-index]
  382. .Functions
  383. --
  384. * {xref-IERC1155MetadataURI-uri-uint256-}[`++uri(id)++`]
  385. [.contract-subindex-inherited]
  386. .IERC1155
  387. * {xref-IERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  388. * {xref-IERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  389. * {xref-IERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  390. * {xref-IERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  391. * {xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  392. * {xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  393. [.contract-subindex-inherited]
  394. .IERC165
  395. * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  396. --
  397. [.contract-index]
  398. .Events
  399. --
  400. [.contract-subindex-inherited]
  401. .IERC1155
  402. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  403. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  404. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  405. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  406. [.contract-subindex-inherited]
  407. .IERC165
  408. --
  409. [.contract-item]
  410. [[IERC1155MetadataURI-uri-uint256-]]
  411. ==== `[.contract-item-name]#++uri++#++(uint256 id) → string++` [.item-kind]#external#
  412. Returns the URI for token type `id`.
  413. If the `\{id\}` substring is present in the URI, it must be replaced by
  414. clients with the actual token type ID.
  415. :_balances: pass:normal[xref:#ERC1155-_balances-mapping-uint256----mapping-address----uint256--[`++_balances++`]]
  416. :_operatorApprovals: pass:normal[xref:#ERC1155-_operatorApprovals-mapping-address----mapping-address----bool--[`++_operatorApprovals++`]]
  417. :_uri: pass:normal[xref:#ERC1155-_uri-string[`++_uri++`]]
  418. :constructor: pass:normal[xref:#ERC1155-constructor-string-[`++constructor++`]]
  419. :supportsInterface: pass:normal[xref:#ERC1155-supportsInterface-bytes4-[`++supportsInterface++`]]
  420. :uri: pass:normal[xref:#ERC1155-uri-uint256-[`++uri++`]]
  421. :balanceOf: pass:normal[xref:#ERC1155-balanceOf-address-uint256-[`++balanceOf++`]]
  422. :balanceOfBatch: pass:normal[xref:#ERC1155-balanceOfBatch-address---uint256---[`++balanceOfBatch++`]]
  423. :setApprovalForAll: pass:normal[xref:#ERC1155-setApprovalForAll-address-bool-[`++setApprovalForAll++`]]
  424. :isApprovedForAll: pass:normal[xref:#ERC1155-isApprovedForAll-address-address-[`++isApprovedForAll++`]]
  425. :safeTransferFrom: pass:normal[xref:#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`++safeTransferFrom++`]]
  426. :safeBatchTransferFrom: pass:normal[xref:#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`++safeBatchTransferFrom++`]]
  427. :_safeTransferFrom: pass:normal[xref:#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-[`++_safeTransferFrom++`]]
  428. :_safeBatchTransferFrom: pass:normal[xref:#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`++_safeBatchTransferFrom++`]]
  429. :_setURI: pass:normal[xref:#ERC1155-_setURI-string-[`++_setURI++`]]
  430. :_mint: pass:normal[xref:#ERC1155-_mint-address-uint256-uint256-bytes-[`++_mint++`]]
  431. :_mintBatch: pass:normal[xref:#ERC1155-_mintBatch-address-uint256---uint256---bytes-[`++_mintBatch++`]]
  432. :_burn: pass:normal[xref:#ERC1155-_burn-address-uint256-uint256-[`++_burn++`]]
  433. :_burnBatch: pass:normal[xref:#ERC1155-_burnBatch-address-uint256---uint256---[`++_burnBatch++`]]
  434. :_setApprovalForAll: pass:normal[xref:#ERC1155-_setApprovalForAll-address-address-bool-[`++_setApprovalForAll++`]]
  435. :_beforeTokenTransfer: pass:normal[xref:#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`++_beforeTokenTransfer++`]]
  436. :_afterTokenTransfer: pass:normal[xref:#ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-[`++_afterTokenTransfer++`]]
  437. :_doSafeTransferAcceptanceCheck: pass:normal[xref:#ERC1155-_doSafeTransferAcceptanceCheck-address-address-address-uint256-uint256-bytes-[`++_doSafeTransferAcceptanceCheck++`]]
  438. :_doSafeBatchTransferAcceptanceCheck: pass:normal[xref:#ERC1155-_doSafeBatchTransferAcceptanceCheck-address-address-address-uint256---uint256---bytes-[`++_doSafeBatchTransferAcceptanceCheck++`]]
  439. :_asSingletonArray: pass:normal[xref:#ERC1155-_asSingletonArray-uint256-[`++_asSingletonArray++`]]
  440. [.contract]
  441. [[ERC1155]]
  442. === `++ERC1155++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/ERC1155.sol[{github-icon},role=heading-link]
  443. [.hljs-theme-light.nopadding]
  444. ```solidity
  445. import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
  446. ```
  447. Implementation of the basic standard multi-token.
  448. See https://eips.ethereum.org/EIPS/eip-1155
  449. Originally based on code by Enjin: https://github.com/enjin/erc-1155
  450. _Available since v3.1._
  451. [.contract-index]
  452. .Functions
  453. --
  454. * {xref-ERC1155-constructor-string-}[`++constructor(uri_)++`]
  455. * {xref-ERC1155-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  456. * {xref-ERC1155-uri-uint256-}[`++uri()++`]
  457. * {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  458. * {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  459. * {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  460. * {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  461. * {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  462. * {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  463. * {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`]
  464. * {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  465. * {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`]
  466. * {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`]
  467. * {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`]
  468. * {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`]
  469. * {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`]
  470. * {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  471. * {xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`]
  472. * {xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_afterTokenTransfer(operator, from, to, ids, amounts, data)++`]
  473. [.contract-subindex-inherited]
  474. .IERC1155MetadataURI
  475. [.contract-subindex-inherited]
  476. .IERC1155
  477. [.contract-subindex-inherited]
  478. .ERC165
  479. [.contract-subindex-inherited]
  480. .IERC165
  481. --
  482. [.contract-index]
  483. .Events
  484. --
  485. [.contract-subindex-inherited]
  486. .IERC1155MetadataURI
  487. [.contract-subindex-inherited]
  488. .IERC1155
  489. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  490. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  491. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  492. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  493. [.contract-subindex-inherited]
  494. .ERC165
  495. [.contract-subindex-inherited]
  496. .IERC165
  497. --
  498. [.contract-item]
  499. [[ERC1155-constructor-string-]]
  500. ==== `[.contract-item-name]#++constructor++#++(string uri_)++` [.item-kind]#public#
  501. See {_setURI}.
  502. [.contract-item]
  503. [[ERC1155-supportsInterface-bytes4-]]
  504. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  505. See {IERC165-supportsInterface}.
  506. [.contract-item]
  507. [[ERC1155-uri-uint256-]]
  508. ==== `[.contract-item-name]#++uri++#++(uint256) → string++` [.item-kind]#public#
  509. See {IERC1155MetadataURI-uri}.
  510. This implementation returns the same URI for *all* token types. It relies
  511. on the token type ID substitution mechanism
  512. https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
  513. Clients calling this function must replace the `\{id\}` substring with the
  514. actual token type ID.
  515. [.contract-item]
  516. [[ERC1155-balanceOf-address-uint256-]]
  517. ==== `[.contract-item-name]#++balanceOf++#++(address account, uint256 id) → uint256++` [.item-kind]#public#
  518. See {IERC1155-balanceOf}.
  519. Requirements:
  520. - `account` cannot be the zero address.
  521. [.contract-item]
  522. [[ERC1155-balanceOfBatch-address---uint256---]]
  523. ==== `[.contract-item-name]#++balanceOfBatch++#++(address[] accounts, uint256[] ids) → uint256[]++` [.item-kind]#public#
  524. See {IERC1155-balanceOfBatch}.
  525. Requirements:
  526. - `accounts` and `ids` must have the same length.
  527. [.contract-item]
  528. [[ERC1155-setApprovalForAll-address-bool-]]
  529. ==== `[.contract-item-name]#++setApprovalForAll++#++(address operator, bool approved)++` [.item-kind]#public#
  530. See {IERC1155-setApprovalForAll}.
  531. [.contract-item]
  532. [[ERC1155-isApprovedForAll-address-address-]]
  533. ==== `[.contract-item-name]#++isApprovedForAll++#++(address account, address operator) → bool++` [.item-kind]#public#
  534. See {IERC1155-isApprovedForAll}.
  535. [.contract-item]
  536. [[ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-]]
  537. ==== `[.contract-item-name]#++safeTransferFrom++#++(address from, address to, uint256 id, uint256 amount, bytes data)++` [.item-kind]#public#
  538. See {IERC1155-safeTransferFrom}.
  539. [.contract-item]
  540. [[ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-]]
  541. ==== `[.contract-item-name]#++safeBatchTransferFrom++#++(address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#public#
  542. See {IERC1155-safeBatchTransferFrom}.
  543. [.contract-item]
  544. [[ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-]]
  545. ==== `[.contract-item-name]#++_safeTransferFrom++#++(address from, address to, uint256 id, uint256 amount, bytes data)++` [.item-kind]#internal#
  546. Transfers `amount` tokens of token type `id` from `from` to `to`.
  547. Emits a {TransferSingle} event.
  548. Requirements:
  549. - `to` cannot be the zero address.
  550. - `from` must have a balance of tokens of type `id` of at least `amount`.
  551. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
  552. acceptance magic value.
  553. [.contract-item]
  554. [[ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-]]
  555. ==== `[.contract-item-name]#++_safeBatchTransferFrom++#++(address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  556. xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
  557. Emits a {TransferBatch} event.
  558. Requirements:
  559. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
  560. acceptance magic value.
  561. [.contract-item]
  562. [[ERC1155-_setURI-string-]]
  563. ==== `[.contract-item-name]#++_setURI++#++(string newuri)++` [.item-kind]#internal#
  564. Sets a new URI for all token types, by relying on the token type ID
  565. substitution mechanism
  566. https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
  567. By this mechanism, any occurrence of the `\{id\}` substring in either the
  568. URI or any of the amounts in the JSON file at said URI will be replaced by
  569. clients with the token type ID.
  570. For example, the `https://token-cdn-domain/\{id\}.json` URI would be
  571. interpreted by clients as
  572. `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
  573. for token type ID 0x4cce0.
  574. See {uri}.
  575. Because these URIs cannot be meaningfully represented by the {URI} event,
  576. this function emits no events.
  577. [.contract-item]
  578. [[ERC1155-_mint-address-uint256-uint256-bytes-]]
  579. ==== `[.contract-item-name]#++_mint++#++(address to, uint256 id, uint256 amount, bytes data)++` [.item-kind]#internal#
  580. Creates `amount` tokens of token type `id`, and assigns them to `to`.
  581. Emits a {TransferSingle} event.
  582. Requirements:
  583. - `to` cannot be the zero address.
  584. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
  585. acceptance magic value.
  586. [.contract-item]
  587. [[ERC1155-_mintBatch-address-uint256---uint256---bytes-]]
  588. ==== `[.contract-item-name]#++_mintBatch++#++(address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  589. xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
  590. Emits a {TransferBatch} event.
  591. Requirements:
  592. - `ids` and `amounts` must have the same length.
  593. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
  594. acceptance magic value.
  595. [.contract-item]
  596. [[ERC1155-_burn-address-uint256-uint256-]]
  597. ==== `[.contract-item-name]#++_burn++#++(address from, uint256 id, uint256 amount)++` [.item-kind]#internal#
  598. Destroys `amount` tokens of token type `id` from `from`
  599. Emits a {TransferSingle} event.
  600. Requirements:
  601. - `from` cannot be the zero address.
  602. - `from` must have at least `amount` tokens of token type `id`.
  603. [.contract-item]
  604. [[ERC1155-_burnBatch-address-uint256---uint256---]]
  605. ==== `[.contract-item-name]#++_burnBatch++#++(address from, uint256[] ids, uint256[] amounts)++` [.item-kind]#internal#
  606. xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
  607. Emits a {TransferBatch} event.
  608. Requirements:
  609. - `ids` and `amounts` must have the same length.
  610. [.contract-item]
  611. [[ERC1155-_setApprovalForAll-address-address-bool-]]
  612. ==== `[.contract-item-name]#++_setApprovalForAll++#++(address owner, address operator, bool approved)++` [.item-kind]#internal#
  613. Approve `operator` to operate on all of `owner` tokens
  614. Emits an {ApprovalForAll} event.
  615. [.contract-item]
  616. [[ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-]]
  617. ==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address operator, address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  618. Hook that is called before any token transfer. This includes minting
  619. and burning, as well as batched variants.
  620. The same hook is called on both single and batched variants. For single
  621. transfers, the length of the `ids` and `amounts` arrays will be 1.
  622. Calling conditions (for each `id` and `amount` pair):
  623. - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
  624. of token type `id` will be transferred to `to`.
  625. - When `from` is zero, `amount` tokens of token type `id` will be minted
  626. for `to`.
  627. - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
  628. will be burned.
  629. - `from` and `to` are never both zero.
  630. - `ids` and `amounts` have the same, non-zero length.
  631. To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
  632. [.contract-item]
  633. [[ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-]]
  634. ==== `[.contract-item-name]#++_afterTokenTransfer++#++(address operator, address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  635. Hook that is called after any token transfer. This includes minting
  636. and burning, as well as batched variants.
  637. The same hook is called on both single and batched variants. For single
  638. transfers, the length of the `id` and `amount` arrays will be 1.
  639. Calling conditions (for each `id` and `amount` pair):
  640. - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
  641. of token type `id` will be transferred to `to`.
  642. - When `from` is zero, `amount` tokens of token type `id` will be minted
  643. for `to`.
  644. - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
  645. will be burned.
  646. - `from` and `to` are never both zero.
  647. - `ids` and `amounts` have the same, non-zero length.
  648. To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
  649. :onERC1155Received: pass:normal[xref:#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`++onERC1155Received++`]]
  650. :onERC1155BatchReceived: pass:normal[xref:#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`++onERC1155BatchReceived++`]]
  651. [.contract]
  652. [[IERC1155Receiver]]
  653. === `++IERC1155Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/IERC1155Receiver.sol[{github-icon},role=heading-link]
  654. [.hljs-theme-light.nopadding]
  655. ```solidity
  656. import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
  657. ```
  658. _Available since v3.1._
  659. [.contract-index]
  660. .Functions
  661. --
  662. * {xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(operator, from, id, value, data)++`]
  663. * {xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(operator, from, ids, values, data)++`]
  664. [.contract-subindex-inherited]
  665. .IERC165
  666. * {xref-IERC165-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  667. --
  668. [.contract-item]
  669. [[IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-]]
  670. ==== `[.contract-item-name]#++onERC1155Received++#++(address operator, address from, uint256 id, uint256 value, bytes data) → bytes4++` [.item-kind]#external#
  671. Handles the receipt of a single ERC1155 token type. This function is
  672. called at the end of a `safeTransferFrom` after the balance has been updated.
  673. NOTE: To accept the transfer, this must return
  674. `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
  675. (i.e. 0xf23a6e61, or its own function selector).
  676. [.contract-item]
  677. [[IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-]]
  678. ==== `[.contract-item-name]#++onERC1155BatchReceived++#++(address operator, address from, uint256[] ids, uint256[] values, bytes data) → bytes4++` [.item-kind]#external#
  679. Handles the receipt of a multiple ERC1155 token types. This function
  680. is called at the end of a `safeBatchTransferFrom` after the balances have
  681. been updated.
  682. NOTE: To accept the transfer(s), this must return
  683. `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
  684. (i.e. 0xbc197c81, or its own function selector).
  685. :supportsInterface: pass:normal[xref:#ERC1155Receiver-supportsInterface-bytes4-[`++supportsInterface++`]]
  686. [.contract]
  687. [[ERC1155Receiver]]
  688. === `++ERC1155Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/utils/ERC1155Receiver.sol[{github-icon},role=heading-link]
  689. [.hljs-theme-light.nopadding]
  690. ```solidity
  691. import "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Receiver.sol";
  692. ```
  693. _Available since v3.1._
  694. [.contract-index]
  695. .Functions
  696. --
  697. * {xref-ERC1155Receiver-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  698. [.contract-subindex-inherited]
  699. .IERC1155Receiver
  700. * {xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(operator, from, id, value, data)++`]
  701. * {xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(operator, from, ids, values, data)++`]
  702. [.contract-subindex-inherited]
  703. .ERC165
  704. [.contract-subindex-inherited]
  705. .IERC165
  706. --
  707. [.contract-item]
  708. [[ERC1155Receiver-supportsInterface-bytes4-]]
  709. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  710. See {IERC165-supportsInterface}.
  711. == Extensions
  712. :_beforeTokenTransfer: pass:normal[xref:#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`++_beforeTokenTransfer++`]]
  713. [.contract]
  714. [[ERC1155Pausable]]
  715. === `++ERC1155Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/extensions/ERC1155Pausable.sol[{github-icon},role=heading-link]
  716. [.hljs-theme-light.nopadding]
  717. ```solidity
  718. import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol";
  719. ```
  720. ERC1155 token with pausable token transfers, minting and burning.
  721. Useful for scenarios such as preventing trades until the end of an evaluation
  722. period, or having an emergency switch for freezing all token transfers in the
  723. event of a large bug.
  724. IMPORTANT: This contract does not include public pause and unpause functions. In
  725. addition to inheriting this contract, you must define both functions, invoking the
  726. {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate
  727. access control, e.g. using {AccessControl} or {Ownable}. Not doing so will
  728. make the contract unpausable.
  729. _Available since v3.1._
  730. [.contract-index]
  731. .Functions
  732. --
  733. * {xref-ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`]
  734. [.contract-subindex-inherited]
  735. .Pausable
  736. * {xref-Pausable-paused--}[`++paused()++`]
  737. * {xref-Pausable-_requireNotPaused--}[`++_requireNotPaused()++`]
  738. * {xref-Pausable-_requirePaused--}[`++_requirePaused()++`]
  739. * {xref-Pausable-_pause--}[`++_pause()++`]
  740. * {xref-Pausable-_unpause--}[`++_unpause()++`]
  741. [.contract-subindex-inherited]
  742. .ERC1155
  743. * {xref-ERC1155-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  744. * {xref-ERC1155-uri-uint256-}[`++uri()++`]
  745. * {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  746. * {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  747. * {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  748. * {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  749. * {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  750. * {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  751. * {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`]
  752. * {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  753. * {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`]
  754. * {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`]
  755. * {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`]
  756. * {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`]
  757. * {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`]
  758. * {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  759. * {xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_afterTokenTransfer(operator, from, to, ids, amounts, data)++`]
  760. [.contract-subindex-inherited]
  761. .IERC1155MetadataURI
  762. [.contract-subindex-inherited]
  763. .IERC1155
  764. [.contract-subindex-inherited]
  765. .ERC165
  766. [.contract-subindex-inherited]
  767. .IERC165
  768. --
  769. [.contract-index]
  770. .Events
  771. --
  772. [.contract-subindex-inherited]
  773. .Pausable
  774. * {xref-Pausable-Paused-address-}[`++Paused(account)++`]
  775. * {xref-Pausable-Unpaused-address-}[`++Unpaused(account)++`]
  776. [.contract-subindex-inherited]
  777. .ERC1155
  778. [.contract-subindex-inherited]
  779. .IERC1155MetadataURI
  780. [.contract-subindex-inherited]
  781. .IERC1155
  782. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  783. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  784. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  785. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  786. [.contract-subindex-inherited]
  787. .ERC165
  788. [.contract-subindex-inherited]
  789. .IERC165
  790. --
  791. [.contract-item]
  792. [[ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-]]
  793. ==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address operator, address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  794. See {ERC1155-_beforeTokenTransfer}.
  795. Requirements:
  796. - the contract must not be paused.
  797. :burn: pass:normal[xref:#ERC1155Burnable-burn-address-uint256-uint256-[`++burn++`]]
  798. :burnBatch: pass:normal[xref:#ERC1155Burnable-burnBatch-address-uint256---uint256---[`++burnBatch++`]]
  799. [.contract]
  800. [[ERC1155Burnable]]
  801. === `++ERC1155Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/extensions/ERC1155Burnable.sol[{github-icon},role=heading-link]
  802. [.hljs-theme-light.nopadding]
  803. ```solidity
  804. import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";
  805. ```
  806. Extension of {ERC1155} that allows token holders to destroy both their
  807. own tokens and those that they have been approved to use.
  808. _Available since v3.1._
  809. [.contract-index]
  810. .Functions
  811. --
  812. * {xref-ERC1155Burnable-burn-address-uint256-uint256-}[`++burn(account, id, value)++`]
  813. * {xref-ERC1155Burnable-burnBatch-address-uint256---uint256---}[`++burnBatch(account, ids, values)++`]
  814. [.contract-subindex-inherited]
  815. .ERC1155
  816. * {xref-ERC1155-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  817. * {xref-ERC1155-uri-uint256-}[`++uri()++`]
  818. * {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  819. * {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  820. * {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  821. * {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  822. * {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  823. * {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  824. * {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`]
  825. * {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  826. * {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`]
  827. * {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`]
  828. * {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`]
  829. * {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`]
  830. * {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`]
  831. * {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  832. * {xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`]
  833. * {xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_afterTokenTransfer(operator, from, to, ids, amounts, data)++`]
  834. [.contract-subindex-inherited]
  835. .IERC1155MetadataURI
  836. [.contract-subindex-inherited]
  837. .IERC1155
  838. [.contract-subindex-inherited]
  839. .ERC165
  840. [.contract-subindex-inherited]
  841. .IERC165
  842. --
  843. [.contract-index]
  844. .Events
  845. --
  846. [.contract-subindex-inherited]
  847. .ERC1155
  848. [.contract-subindex-inherited]
  849. .IERC1155MetadataURI
  850. [.contract-subindex-inherited]
  851. .IERC1155
  852. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  853. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  854. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  855. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  856. [.contract-subindex-inherited]
  857. .ERC165
  858. [.contract-subindex-inherited]
  859. .IERC165
  860. --
  861. [.contract-item]
  862. [[ERC1155Burnable-burn-address-uint256-uint256-]]
  863. ==== `[.contract-item-name]#++burn++#++(address account, uint256 id, uint256 value)++` [.item-kind]#public#
  864. [.contract-item]
  865. [[ERC1155Burnable-burnBatch-address-uint256---uint256---]]
  866. ==== `[.contract-item-name]#++burnBatch++#++(address account, uint256[] ids, uint256[] values)++` [.item-kind]#public#
  867. :_totalSupply: pass:normal[xref:#ERC1155Supply-_totalSupply-mapping-uint256----uint256-[`++_totalSupply++`]]
  868. :totalSupply: pass:normal[xref:#ERC1155Supply-totalSupply-uint256-[`++totalSupply++`]]
  869. :exists: pass:normal[xref:#ERC1155Supply-exists-uint256-[`++exists++`]]
  870. :_beforeTokenTransfer: pass:normal[xref:#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`++_beforeTokenTransfer++`]]
  871. [.contract]
  872. [[ERC1155Supply]]
  873. === `++ERC1155Supply++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/extensions/ERC1155Supply.sol[{github-icon},role=heading-link]
  874. [.hljs-theme-light.nopadding]
  875. ```solidity
  876. import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";
  877. ```
  878. Extension of ERC1155 that adds tracking of total supply per id.
  879. Useful for scenarios where Fungible and Non-fungible tokens have to be
  880. clearly identified. Note: While a totalSupply of 1 might mean the
  881. corresponding is an NFT, there is no guarantees that no other token with the
  882. same id are not going to be minted.
  883. [.contract-index]
  884. .Functions
  885. --
  886. * {xref-ERC1155Supply-totalSupply-uint256-}[`++totalSupply(id)++`]
  887. * {xref-ERC1155Supply-exists-uint256-}[`++exists(id)++`]
  888. * {xref-ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`]
  889. [.contract-subindex-inherited]
  890. .ERC1155
  891. * {xref-ERC1155-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  892. * {xref-ERC1155-uri-uint256-}[`++uri()++`]
  893. * {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  894. * {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  895. * {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  896. * {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  897. * {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  898. * {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  899. * {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`]
  900. * {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  901. * {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`]
  902. * {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`]
  903. * {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`]
  904. * {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`]
  905. * {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`]
  906. * {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  907. * {xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_afterTokenTransfer(operator, from, to, ids, amounts, data)++`]
  908. [.contract-subindex-inherited]
  909. .IERC1155MetadataURI
  910. [.contract-subindex-inherited]
  911. .IERC1155
  912. [.contract-subindex-inherited]
  913. .ERC165
  914. [.contract-subindex-inherited]
  915. .IERC165
  916. --
  917. [.contract-index]
  918. .Events
  919. --
  920. [.contract-subindex-inherited]
  921. .ERC1155
  922. [.contract-subindex-inherited]
  923. .IERC1155MetadataURI
  924. [.contract-subindex-inherited]
  925. .IERC1155
  926. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  927. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  928. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  929. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  930. [.contract-subindex-inherited]
  931. .ERC165
  932. [.contract-subindex-inherited]
  933. .IERC165
  934. --
  935. [.contract-item]
  936. [[ERC1155Supply-totalSupply-uint256-]]
  937. ==== `[.contract-item-name]#++totalSupply++#++(uint256 id) → uint256++` [.item-kind]#public#
  938. Total amount of tokens in with a given id.
  939. [.contract-item]
  940. [[ERC1155Supply-exists-uint256-]]
  941. ==== `[.contract-item-name]#++exists++#++(uint256 id) → bool++` [.item-kind]#public#
  942. Indicates whether any token exist with a given id, or not.
  943. [.contract-item]
  944. [[ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-]]
  945. ==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address operator, address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  946. See {ERC1155-_beforeTokenTransfer}.
  947. :_baseURI: pass:normal[xref:#ERC1155URIStorage-_baseURI-string[`++_baseURI++`]]
  948. :_tokenURIs: pass:normal[xref:#ERC1155URIStorage-_tokenURIs-mapping-uint256----string-[`++_tokenURIs++`]]
  949. :uri: pass:normal[xref:#ERC1155URIStorage-uri-uint256-[`++uri++`]]
  950. :_setURI: pass:normal[xref:#ERC1155URIStorage-_setURI-uint256-string-[`++_setURI++`]]
  951. :_setBaseURI: pass:normal[xref:#ERC1155URIStorage-_setBaseURI-string-[`++_setBaseURI++`]]
  952. [.contract]
  953. [[ERC1155URIStorage]]
  954. === `++ERC1155URIStorage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol[{github-icon},role=heading-link]
  955. [.hljs-theme-light.nopadding]
  956. ```solidity
  957. import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol";
  958. ```
  959. ERC1155 token with storage based token URI management.
  960. Inspired by the ERC721URIStorage extension
  961. _Available since v4.6._
  962. [.contract-index]
  963. .Functions
  964. --
  965. * {xref-ERC1155URIStorage-uri-uint256-}[`++uri(tokenId)++`]
  966. * {xref-ERC1155URIStorage-_setURI-uint256-string-}[`++_setURI(tokenId, tokenURI)++`]
  967. * {xref-ERC1155URIStorage-_setBaseURI-string-}[`++_setBaseURI(baseURI)++`]
  968. [.contract-subindex-inherited]
  969. .ERC1155
  970. * {xref-ERC1155-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  971. * {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  972. * {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  973. * {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  974. * {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  975. * {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  976. * {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  977. * {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`]
  978. * {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  979. * {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`]
  980. * {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`]
  981. * {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`]
  982. * {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`]
  983. * {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`]
  984. * {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  985. * {xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`]
  986. * {xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_afterTokenTransfer(operator, from, to, ids, amounts, data)++`]
  987. [.contract-subindex-inherited]
  988. .IERC1155MetadataURI
  989. [.contract-subindex-inherited]
  990. .IERC1155
  991. [.contract-subindex-inherited]
  992. .ERC165
  993. [.contract-subindex-inherited]
  994. .IERC165
  995. --
  996. [.contract-index]
  997. .Events
  998. --
  999. [.contract-subindex-inherited]
  1000. .ERC1155
  1001. [.contract-subindex-inherited]
  1002. .IERC1155MetadataURI
  1003. [.contract-subindex-inherited]
  1004. .IERC1155
  1005. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  1006. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  1007. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  1008. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  1009. [.contract-subindex-inherited]
  1010. .ERC165
  1011. [.contract-subindex-inherited]
  1012. .IERC165
  1013. --
  1014. [.contract-item]
  1015. [[ERC1155URIStorage-uri-uint256-]]
  1016. ==== `[.contract-item-name]#++uri++#++(uint256 tokenId) → string++` [.item-kind]#public#
  1017. See {IERC1155MetadataURI-uri}.
  1018. This implementation returns the concatenation of the `_baseURI`
  1019. and the token-specific uri if the latter is set
  1020. This enables the following behaviors:
  1021. - if `_tokenURIs[tokenId]` is set, then the result is the concatenation
  1022. of `_baseURI` and `_tokenURIs[tokenId]` (keep in mind that `_baseURI`
  1023. is empty per default);
  1024. - if `_tokenURIs[tokenId]` is NOT set then we fallback to `super.uri()`
  1025. which in most cases will contain `ERC1155._uri`;
  1026. - if `_tokenURIs[tokenId]` is NOT set, and if the parents do not have a
  1027. uri value set, then the result is empty.
  1028. [.contract-item]
  1029. [[ERC1155URIStorage-_setURI-uint256-string-]]
  1030. ==== `[.contract-item-name]#++_setURI++#++(uint256 tokenId, string tokenURI)++` [.item-kind]#internal#
  1031. Sets `tokenURI` as the tokenURI of `tokenId`.
  1032. [.contract-item]
  1033. [[ERC1155URIStorage-_setBaseURI-string-]]
  1034. ==== `[.contract-item-name]#++_setBaseURI++#++(string baseURI)++` [.item-kind]#internal#
  1035. Sets `baseURI` as the `_baseURI` for all tokens
  1036. == Presets
  1037. These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code.
  1038. :MINTER_ROLE: pass:normal[xref:#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`++MINTER_ROLE++`]]
  1039. :PAUSER_ROLE: pass:normal[xref:#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`++PAUSER_ROLE++`]]
  1040. :constructor: pass:normal[xref:#ERC1155PresetMinterPauser-constructor-string-[`++constructor++`]]
  1041. :mint: pass:normal[xref:#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`++mint++`]]
  1042. :mintBatch: pass:normal[xref:#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`++mintBatch++`]]
  1043. :pause: pass:normal[xref:#ERC1155PresetMinterPauser-pause--[`++pause++`]]
  1044. :unpause: pass:normal[xref:#ERC1155PresetMinterPauser-unpause--[`++unpause++`]]
  1045. :supportsInterface: pass:normal[xref:#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`++supportsInterface++`]]
  1046. :_beforeTokenTransfer: pass:normal[xref:#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`++_beforeTokenTransfer++`]]
  1047. [.contract]
  1048. [[ERC1155PresetMinterPauser]]
  1049. === `++ERC1155PresetMinterPauser++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol[{github-icon},role=heading-link]
  1050. [.hljs-theme-light.nopadding]
  1051. ```solidity
  1052. import "@openzeppelin/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol";
  1053. ```
  1054. {ERC1155} token, including:
  1055. - ability for holders to burn (destroy) their tokens
  1056. - a minter role that allows for token minting (creation)
  1057. - a pauser role that allows to stop all token transfers
  1058. This contract uses {AccessControl} to lock permissioned functions using the
  1059. different roles - head to its documentation for details.
  1060. The account that deploys the contract will be granted the minter and pauser
  1061. roles, as well as the default admin role, which will let it grant both minter
  1062. and pauser roles to other accounts.
  1063. _Deprecated in favor of https://wizard.openzeppelin.com/[Contracts Wizard]._
  1064. [.contract-index]
  1065. .Functions
  1066. --
  1067. * {xref-ERC1155PresetMinterPauser-constructor-string-}[`++constructor(uri)++`]
  1068. * {xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-}[`++mint(to, id, amount, data)++`]
  1069. * {xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-}[`++mintBatch(to, ids, amounts, data)++`]
  1070. * {xref-ERC1155PresetMinterPauser-pause--}[`++pause()++`]
  1071. * {xref-ERC1155PresetMinterPauser-unpause--}[`++unpause()++`]
  1072. * {xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1073. * {xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`]
  1074. [.contract-subindex-inherited]
  1075. .ERC1155Pausable
  1076. [.contract-subindex-inherited]
  1077. .Pausable
  1078. * {xref-Pausable-paused--}[`++paused()++`]
  1079. * {xref-Pausable-_requireNotPaused--}[`++_requireNotPaused()++`]
  1080. * {xref-Pausable-_requirePaused--}[`++_requirePaused()++`]
  1081. * {xref-Pausable-_pause--}[`++_pause()++`]
  1082. * {xref-Pausable-_unpause--}[`++_unpause()++`]
  1083. [.contract-subindex-inherited]
  1084. .ERC1155Burnable
  1085. * {xref-ERC1155Burnable-burn-address-uint256-uint256-}[`++burn(account, id, value)++`]
  1086. * {xref-ERC1155Burnable-burnBatch-address-uint256---uint256---}[`++burnBatch(account, ids, values)++`]
  1087. [.contract-subindex-inherited]
  1088. .ERC1155
  1089. * {xref-ERC1155-uri-uint256-}[`++uri()++`]
  1090. * {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`]
  1091. * {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`]
  1092. * {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`]
  1093. * {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`]
  1094. * {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`]
  1095. * {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  1096. * {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`]
  1097. * {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`]
  1098. * {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`]
  1099. * {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`]
  1100. * {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`]
  1101. * {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`]
  1102. * {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`]
  1103. * {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`]
  1104. * {xref-ERC1155-_afterTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_afterTokenTransfer(operator, from, to, ids, amounts, data)++`]
  1105. [.contract-subindex-inherited]
  1106. .IERC1155MetadataURI
  1107. [.contract-subindex-inherited]
  1108. .IERC1155
  1109. [.contract-subindex-inherited]
  1110. .AccessControlEnumerable
  1111. * {xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-}[`++getRoleMember(role, index)++`]
  1112. * {xref-AccessControlEnumerable-getRoleMemberCount-bytes32-}[`++getRoleMemberCount(role)++`]
  1113. * {xref-AccessControlEnumerable-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`]
  1114. * {xref-AccessControlEnumerable-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`]
  1115. [.contract-subindex-inherited]
  1116. .AccessControl
  1117. * {xref-AccessControl-hasRole-bytes32-address-}[`++hasRole(role, account)++`]
  1118. * {xref-AccessControl-_checkRole-bytes32-}[`++_checkRole(role)++`]
  1119. * {xref-AccessControl-_checkRole-bytes32-address-}[`++_checkRole(role, account)++`]
  1120. * {xref-AccessControl-getRoleAdmin-bytes32-}[`++getRoleAdmin(role)++`]
  1121. * {xref-AccessControl-grantRole-bytes32-address-}[`++grantRole(role, account)++`]
  1122. * {xref-AccessControl-revokeRole-bytes32-address-}[`++revokeRole(role, account)++`]
  1123. * {xref-AccessControl-renounceRole-bytes32-address-}[`++renounceRole(role, account)++`]
  1124. * {xref-AccessControl-_setupRole-bytes32-address-}[`++_setupRole(role, account)++`]
  1125. * {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`]
  1126. [.contract-subindex-inherited]
  1127. .ERC165
  1128. [.contract-subindex-inherited]
  1129. .IERC165
  1130. [.contract-subindex-inherited]
  1131. .IAccessControlEnumerable
  1132. [.contract-subindex-inherited]
  1133. .IAccessControl
  1134. --
  1135. [.contract-index]
  1136. .Events
  1137. --
  1138. [.contract-subindex-inherited]
  1139. .ERC1155Pausable
  1140. [.contract-subindex-inherited]
  1141. .Pausable
  1142. * {xref-Pausable-Paused-address-}[`++Paused(account)++`]
  1143. * {xref-Pausable-Unpaused-address-}[`++Unpaused(account)++`]
  1144. [.contract-subindex-inherited]
  1145. .ERC1155Burnable
  1146. [.contract-subindex-inherited]
  1147. .ERC1155
  1148. [.contract-subindex-inherited]
  1149. .IERC1155MetadataURI
  1150. [.contract-subindex-inherited]
  1151. .IERC1155
  1152. * {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`]
  1153. * {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`]
  1154. * {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`]
  1155. * {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`]
  1156. [.contract-subindex-inherited]
  1157. .AccessControlEnumerable
  1158. [.contract-subindex-inherited]
  1159. .AccessControl
  1160. [.contract-subindex-inherited]
  1161. .ERC165
  1162. [.contract-subindex-inherited]
  1163. .IERC165
  1164. [.contract-subindex-inherited]
  1165. .IAccessControlEnumerable
  1166. [.contract-subindex-inherited]
  1167. .IAccessControl
  1168. * {xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-}[`++RoleAdminChanged(role, previousAdminRole, newAdminRole)++`]
  1169. * {xref-IAccessControl-RoleGranted-bytes32-address-address-}[`++RoleGranted(role, account, sender)++`]
  1170. * {xref-IAccessControl-RoleRevoked-bytes32-address-address-}[`++RoleRevoked(role, account, sender)++`]
  1171. --
  1172. [.contract-item]
  1173. [[ERC1155PresetMinterPauser-constructor-string-]]
  1174. ==== `[.contract-item-name]#++constructor++#++(string uri)++` [.item-kind]#public#
  1175. Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that
  1176. deploys the contract.
  1177. [.contract-item]
  1178. [[ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-]]
  1179. ==== `[.contract-item-name]#++mint++#++(address to, uint256 id, uint256 amount, bytes data)++` [.item-kind]#public#
  1180. Creates `amount` new tokens for `to`, of token type `id`.
  1181. See {ERC1155-_mint}.
  1182. Requirements:
  1183. - the caller must have the `MINTER_ROLE`.
  1184. [.contract-item]
  1185. [[ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-]]
  1186. ==== `[.contract-item-name]#++mintBatch++#++(address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#public#
  1187. xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}.
  1188. [.contract-item]
  1189. [[ERC1155PresetMinterPauser-pause--]]
  1190. ==== `[.contract-item-name]#++pause++#++()++` [.item-kind]#public#
  1191. Pauses all token transfers.
  1192. See {ERC1155Pausable} and {Pausable-_pause}.
  1193. Requirements:
  1194. - the caller must have the `PAUSER_ROLE`.
  1195. [.contract-item]
  1196. [[ERC1155PresetMinterPauser-unpause--]]
  1197. ==== `[.contract-item-name]#++unpause++#++()++` [.item-kind]#public#
  1198. Unpauses all token transfers.
  1199. See {ERC1155Pausable} and {Pausable-_unpause}.
  1200. Requirements:
  1201. - the caller must have the `PAUSER_ROLE`.
  1202. [.contract-item]
  1203. [[ERC1155PresetMinterPauser-supportsInterface-bytes4-]]
  1204. ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public#
  1205. See {IERC165-supportsInterface}.
  1206. [.contract-item]
  1207. [[ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-]]
  1208. ==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address operator, address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal#
  1209. == Utilities
  1210. :onERC1155Received: pass:normal[xref:#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`++onERC1155Received++`]]
  1211. :onERC1155BatchReceived: pass:normal[xref:#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`++onERC1155BatchReceived++`]]
  1212. [.contract]
  1213. [[ERC1155Holder]]
  1214. === `++ERC1155Holder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC1155/utils/ERC1155Holder.sol[{github-icon},role=heading-link]
  1215. [.hljs-theme-light.nopadding]
  1216. ```solidity
  1217. import "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol";
  1218. ```
  1219. _Available since v3.1._
  1220. [.contract-index]
  1221. .Functions
  1222. --
  1223. * {xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(, , , , )++`]
  1224. * {xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(, , , , )++`]
  1225. [.contract-subindex-inherited]
  1226. .ERC1155Receiver
  1227. * {xref-ERC1155Receiver-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`]
  1228. [.contract-subindex-inherited]
  1229. .IERC1155Receiver
  1230. [.contract-subindex-inherited]
  1231. .ERC165
  1232. [.contract-subindex-inherited]
  1233. .IERC165
  1234. --
  1235. [.contract-item]
  1236. [[ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-]]
  1237. ==== `[.contract-item-name]#++onERC1155Received++#++(address, address, uint256, uint256, bytes) → bytes4++` [.item-kind]#public#
  1238. [.contract-item]
  1239. [[ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-]]
  1240. ==== `[.contract-item-name]#++onERC1155BatchReceived++#++(address, address, uint256[], uint256[], bytes) → bytes4++` [.item-kind]#public#