ERC1155.adoc 84 KB

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