ERC1155.adoc 87 KB

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