ERC1155.adoc 80 KB

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