ERC1155.adoc 93 KB

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