{"_id":"@cross-nft-marketplace/nft-editions","_rev":"1-c002c6ef82658b46a5bfc106483c6d3e","name":"@cross-nft-marketplace/nft-editions","dist-tags":{"alpha":"1.1.0-alpha.1","latest":"1.1.0-alpha.0"},"versions":{"1.1.0-alpha.0":{"name":"@cross-nft-marketplace/nft-editions","version":"1.1.0-alpha.0","description":"NFT Editions Contracts","author":{"name":"HOFA"},"license":"MIT","private":false,"main":"dist/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/kreation-tech/nft-editions.git"},"bugs":{"url":"https://github.com/kreation-tech/nft-editions/issues"},"homepage":"https://github.com/kreation-tech/nft-editions#readme","scripts":{"compile":"hardhat compile","deploy":"hardhat deploy && hardhat run scripts/deploy.ts","verify":"hardhat run scripts/verify.ts","test":"hardhat test --network hardhat --deploy-fixture","build":"hardhat compile && tsc","postbuild":"npm-prepare-dist && ts-node scripts/postbuild.ts","clean":"rm -rf dist","postversion":"git push && git push --tags"},"devDependencies":{"@nomiclabs/hardhat-ethers":"^2.2.0","@nomiclabs/hardhat-etherscan":"^2.1.8","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts":"^4.4.0","@openzeppelin/contracts-upgradeable":"^4.4.0","@typechain/ethers-v5":"^10.1.0","@typechain/hardhat":"^6.1.3","@types/chai":"^4.3.0","@types/data-urls":"^2.0.1","@types/mocha":"^9.0.0","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","base64-sol":"^1.1.0","chai":"^4.3.4","chai-as-promised":"^7.1.1","data-urls":"^3.0.0","dotenv":"^10.0.0","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.25.3","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.1","eslint-plugin-promise":"^5.2.0","ethereum-waffle":"^3.4.0","hardhat":"^2.12.0","hardhat-deploy":"^0.9.14","hardhat-deploy-ethers":"^0.3.0-beta.11","hardhat-gas-reporter":"^1.0.6","hardhat-packager":"^1.4.2","npm-prepare-dist":"^0.3.3","prettier":"^2.5.1","prettier-plugin-solidity":"^1.0.0-beta.13","recursive-copy":"^2.0.13","solhint":"^3.3.6","solidity-coverage":"^0.7.17","ts-node":"^10.4.0","typescript":"^4.5.3"},"browser":{"child_process":false},"dependencies":{"@ethersproject/abi":"^5.7.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/bignumber":"^5.7.0","@ethersproject/providers":"^5.7.0","ethers":"^5.7.0","typechain":"^8.1.0"},"gitHead":"b492609cb3b601b00875e6a544d61acfbc1a417d","_id":"@cross-nft-marketplace/nft-editions@1.1.0-alpha.0","_nodeVersion":"16.4.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-H3rI/lOvj4HNHV/dMAKIKUYzww4k2rtaNxZNevir1R5A33FN3cgIeBRmHtSgRTFaUXYG/xtSRMrsO/zGY+LCIw==","shasum":"c3d19f20980892ed5704eb89834ed6a51b84f593","tarball":"https://registry.npmjs.org/@cross-nft-marketplace/nft-editions/-/nft-editions-1.1.0-alpha.0.tgz","fileCount":314,"unpackedSize":1149942,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBeAGkhLu8WEMeER3z7fJ3Xhyl3usHP/RN8sCg4s0PtfAiBnUpvKscFxksbGGZuuVb18vxk7RlxghH5dgKP5+zJT2w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjV+wRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpe7g/+NAULFbml1wkFpDbUQ30iI3AV4Vps016TwlOWD7Cdadpfn//A\r\ndQO8HVr5+jSBgiZrwPpajRVLtbdyZ2rBq/5i+EGLE71p9jkznUJCaeXvFZDi\r\nY1oFy/MuCXx5aYF99arl/peHwMQ+0XQhSx3m9KemavzqI0KVK7sFKScOnzNw\r\nw3gFGcT/mDCb0uG+cYujHJBbnNfW7loEaMFxd5qLOGUruHu4AHiFjnq+QzW8\r\ngloMrvQuCCHC+lWD8vyruVnelDA/wvFwBJTfL1yrrrmG1lI809xN3F4BOFyW\r\ntQkYVkCJ0/pShlOHmbMvz3RfRX/KPo9tv4os0ITte73mKGmixQvvFfVvYA2Z\r\npFo8pg42BCkuFuRzGo85qdaltrmleWtT5zNWHTzZDKnNA7GqbFy5G3wGxxH3\r\nmLyU9biG7mzWrVzzVkyTABXi6M1reQ6lIcqqmB/TO/iZjjQEd1Pa7u8+mQXZ\r\n8AjJL2x3RsaAA82l1YWgYk8nEO1wVLktUMwIM08g0Yt6Oh6mdYRDcoFAzTeF\r\n5Dwp5SB/MwVN4tWwjCbMzjcwDJSma2UCe1VZydMWW/mPklkVfMjE6DN9P2f+\r\nFGTnd46pIzGrEufYZkH5whpabRAsNaKCcdeEpYp7c0QoE2XbAgBc90Mm3tGy\r\nUsgSz/n7YYDTxFBwr84yZeEV895Dai6ZSiw=\r\n=an1I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cross-nft-marketplace","email":"tsunchan@protonmail.com"},"directories":{},"maintainers":[{"name":"cross-nft-marketplace","email":"tsunchan@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nft-editions_1.1.0-alpha.0_1666706449067_0.10648629170168533"},"_hasShrinkwrap":false},"1.1.0-alpha.1":{"name":"@cross-nft-marketplace/nft-editions","version":"1.1.0-alpha.1","description":"NFT Editions Contracts","author":{"name":"HOFA"},"license":"MIT","private":false,"main":"dist/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/kreation-tech/nft-editions.git"},"bugs":{"url":"https://github.com/kreation-tech/nft-editions/issues"},"homepage":"https://github.com/kreation-tech/nft-editions#readme","scripts":{"compile":"hardhat compile","deploy":"hardhat deploy && hardhat run scripts/deploy.ts","verify":"hardhat run scripts/verify.ts","test":"hardhat test --network hardhat --deploy-fixture","build":"hardhat compile && tsc","postbuild":"npm-prepare-dist && ts-node scripts/postbuild.ts","clean":"rm -rf dist","postversion":"git push && git push --tags"},"devDependencies":{"@nomiclabs/hardhat-ethers":"^2.2.0","@nomiclabs/hardhat-etherscan":"^2.1.8","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts":"^4.4.0","@openzeppelin/contracts-upgradeable":"^4.4.0","@typechain/ethers-v5":"^10.1.0","@typechain/hardhat":"^6.1.3","@types/chai":"^4.3.0","@types/data-urls":"^2.0.1","@types/mocha":"^9.0.0","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","base64-sol":"^1.1.0","chai":"^4.3.4","chai-as-promised":"^7.1.1","data-urls":"^3.0.0","dotenv":"^10.0.0","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.25.3","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.1","eslint-plugin-promise":"^5.2.0","ethereum-waffle":"^3.4.0","hardhat":"^2.12.0","hardhat-deploy":"^0.9.14","hardhat-deploy-ethers":"^0.3.0-beta.11","hardhat-gas-reporter":"^1.0.6","hardhat-packager":"^1.4.2","npm-prepare-dist":"^0.3.3","prettier":"^2.5.1","prettier-plugin-solidity":"^1.0.0-beta.13","recursive-copy":"^2.0.13","solhint":"^3.3.6","solidity-coverage":"^0.7.17","ts-node":"^10.4.0","typescript":"^4.5.3"},"browser":{"child_process":false},"dependencies":{"@ethersproject/abi":"^5.7.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/bignumber":"^5.7.0","@ethersproject/providers":"^5.7.0","ethers":"^5.7.0","typechain":"^8.1.0"},"readme":"░█▄█░▄▀▄▒█▀▒▄▀▄░░░▒░░░░█▄░█▒█▀░▀█▀░░▒██▀░█▀▄░█░▀█▀░█░▄▀▄░█▄░█░▄▀▀ \r\n▒█▒█░▀▄▀░█▀░█▀█▒░░▀▀▒░░█▒▀█░█▀░▒█▒▒░░█▄▄▒█▄▀░█░▒█▒░█░▀▄▀░█▒▀█▒▄██\r\n\r\n---\r\n\r\nSolidity smart contracts implementing ERC721 with multiple editions. We will call it _Editionable Non Fungible Token_ or `EdNFT`: one `EdNFT` can produce (_mint_) a fixed set of NFTs (its _editions_).\r\n\r\nOnce minted, the editions behave very much like any other NFT implementing the `ERC-721` specifications: they can be transferred, auctioned and burnt as their specific owner decide.\r\n\r\n# Standards\r\n\r\nThe EdNFTs comply with the following EIP standards:\r\n\r\n* [ERC-721](https://eips.ethereum.org/EIPS/eip-721) Non-Fungible Token\r\n* [ERC-2981](https://eips.ethereum.org/EIPS/eip-2981) NFT Royalty\r\n\r\n# Properties\r\n\r\nInstances of this contract are what we call `EdNFT` and. can be obtained by using the `create` operation on the `MintableEditionsFactory` contract, with a substantial saving in gas.\r\n\r\nEach `EdNFT` produced has the following characteristics:\r\n\r\n* `name` (IMMUTABLE) can be considered the title for the editions produced, used by OpenSea as name of the collection\r\n* `symbol` (IMMUTABLE) is the symbol associated with the editions\r\n* `description` (IMMUTABLE) can be used to describe the editions to the public, can contain [markdown](https://www.markdownguide.org/cheat-sheet/)\r\n* `contentUrl` is used to associate some off-chain content (the EdNFT owner can update, direct references to IPFS content are possible)\r\n* `thumbnailUrl` (OPTIONAL) is used to associate a static off-chain content when the main content is an animation (the EdNFT owner can update, direct references to IPFS content are possible)\r\n* `contentHash` (IMMUTABLE) sha256 of the associated off-chain content, ensures content uniqueness within the chain\r\n* `size` (IMMUTABLE) determines how many editions of this EdNFT can be minted: if set to 0 then `uint64.max()` editions can be minted (about _18.5 **quintillions**_)\r\n* `price` determines how much has to be transferred to the contract in order to purchase an edition: if set to 0 then editions cannot be purchased\r\n* `royalties` (IMMUTABLE) perpetual royalties to be paid to the EdNFT owner upon any reselling, in [basis-points](https://www.investopedia.com/terms/b/basispoint.asp) format (eq. `250` corresponding to **2.5%**)\r\n* `shares` (IMMUTABLE) pairs of (shareholder, percentage) describing how the value collected by the sales of this contract will be splitted between the shareholders and the owner (percentages expressed in [basis-points](https://www.investopedia.com/terms/b/basispoint.asp))\r\n* `allowances` pairs of (address, amount) describing who is entitle to mint and for how many editions: giving a non-zero allowance to the _ZeroAddress_ permits to anyone minting as many editions as available\r\n\r\nAlmost all the properties are immutable, with the exclusion of the `contentUrl`, `thumbnailUrl` (allowing the EdNFT owner to move the off-chain content, if necessary), `price` (enbling or disabling sales) and `allowances` (providing others other than the artist to mint editions).\r\n\r\nThe EdNFT guarantees minting is automatically disabled when the last available edition is produced: an EdNFT can never generate more NFTs than `size`, or `18,446,744,073,709,551,614` if the MNFT was created as unbound (`size = 0`).\r\n\r\n# Capabilities\r\n\r\n## Roles\r\n\r\nThe following are the roles available on the contract:\r\n\r\n* the `owner`, also referenced as _the artist_, is the **creator** of the EdNFT, unless ownership is transferrred\r\n* the `minters` are those allowed for minting, in case the zero-address is added among the allowed minters _anyone_ can be considered a _minter_\r\n* the `buyer` is anyone who mints a token through the `purchase()` operation\r\n* the `shareholders` are those receving shares of the contract balance upon withdrawal and it always include the `owner`/`artist`\r\n\r\nAt any time, any shareholder can request to `withdraw()` its part of the shares: the action can be repeated for partial payouts. At any time anyone can `shake()` EdNFT, releasing its balance toward the shareholders.\r\n\r\n## Owner\r\n\r\nThe contract is quite flexible and allows the editions _owner_ to:\r\n\r\n* mint an NFT for himself\r\n* mint and transfer NFTs to a list of addresses (one NFT per address), allowing for partial giveaways (owner pays minting gas)\r\n* permit limited minting (from `1` up to `65,535` NFTs) to a list of third parties, allowing for rewarding (owner pays gas for permission granting, third party pays minting gas)\r\n* permit minting to anyone, allowing for unlimited public giveaways (third party pays minting gas)\r\n* establish a sale price, allowing for public sales (third party pays minting gas plus sale price)\r\n* transfer ownership to someone else along with the royalties on previous and future editions and any sale shares of the previous owner\r\n\r\n# Addresses\r\n\r\nContract addresses on each network, referenced by `chainId`, are published in (this repository)[https://raw.githubusercontent.com/agileware-org/nft-editions/main/addresses.json].\r\n\r\n# Example\r\n\r\nGas required: `652323`\r\n\r\n### Description\r\nA static image EdNFT (stored on IPFS) able to produce 100 editions, each one with 2.5% perpetual royalties on secondary sales.\r\n\r\nOf any revenues this contract might collect, 15% of it will be given to the _curator_ address, the remainder 85% will go to the EdNFT _owner_.\r\n\r\n### Properties\r\n\r\n| field        | value                                                                |\r\n|-------------:|:---------------------------------------------------------------------|\r\n| name         | `Roberto Lo Giacco`                                                  |\r\n| symbol       | `RLG`                                                                |\r\n| description  | `**Me**, _myself_ and I. A gentle reminder to take care of our inner child, avoiding to take ourselves too seriously, no matter the circumstances: we are just _'a blade of grass'_. See [my website](http://www.agileware.org)` |\r\n| contentUrl   | `ipfs://QmYMj2yraaBch5AoBTEjvLFdoT3ULKs4i4Ev7vte72627d`              |\r\n| contentHash  | `0x94DB57416B770A06B3B2123531E68D67E9D96872F453FA77BC413E9E53FC1BFC` |\r\n| thumbnailUrl | empty                                                                |\r\n| size         | `100`                                                                |\r\n| price        | `0`                                                                  |\r\n| royalties    | `250`                                                                |\r\n| shares       | `[[\"0x8c4e43e88ba5cb9a15a9F7F74a4d58aD51024389\",1500]]`              |\r\n| allowances   | `[[\"0x8c4e43e88ba5cb9a15a9F7F74a4d58aD51024389\",15]]`                |\r\n\r\n```\r\n[\"Roberto Lo Giacco\",\"RLG\",\"**Me**, _myself_ and I. A gentle reminder to take care of our inner child, avoiding to take ourselves too seriously, no matter the circumstances: we are just _'a blade of grass'_. See [my website](http://www.agileware.org)\",\"ipfs://QmYMj2yraaBch5AoBTEjvLFdoT3ULKs4i4Ev7vte72627d\",\"0x94DB57416B770A06B3B2123531E68D67E9D96872F453FA77BC413E9E53FC1BFC\"],\"100\",\"0\",\"250\",[[\"0x8c4e43e88ba5cb9a15a9F7F74a4d58aD51024389\",1500]],[[\"0x8c4e43e88ba5cb9a15a9F7F74a4d58aD51024389\",15]]\r\n```\r\n\r\n### Address\r\n\r\nRinkeby: `0x3b09e54450C7dA5B7f0553d47a2Ec3Ec56Aa1056` [OpenSea collection](https://testnets.opensea.io/collection/roberto-lo-giacco)\r\n\r\n## Deploy\r\n\r\n```\r\nnpm run deploy -- --network rinkeby --export networks/rinkeby.json\r\nnpm run verify -- --network rinkeby\r\n```\r\n\r\nor\r\n\r\n```\r\nnpx hardhat deploy --network rinkeby --export networks/rinkeby.json\r\nnpx hardhat run scripts/verify.ts --network rinkeby\r\n```\r\n","readmeFilename":"README.md","gitHead":"4092f02548c412496a7149dcbfda0452ad33fa5c","_id":"@cross-nft-marketplace/nft-editions@1.1.0-alpha.1","_nodeVersion":"16.4.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-nArgiPhNVDd94KCGTFQ+wWCHFl4G2YyrdDi/AnONu3bkuzXJNPenKrPD8zR6gbQSXUyX7wb2fRMYLkC4vqK52A==","shasum":"d291e2ee400ee70d2da7efa35119dfa031a695b1","tarball":"https://registry.npmjs.org/@cross-nft-marketplace/nft-editions/-/nft-editions-1.1.0-alpha.1.tgz","fileCount":382,"unpackedSize":1401253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE2qjTWUm8sIpPbqqqTlFOjpUQwimW9OOFzvzezJfsQbAiAKrCa00h4Xbfi95TTlGYJAMtOOGlpDAG/Yeg0f3Oh1RQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjY8SVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWLA//dSKBZi48AZeZeH2ATdE3hKy5pHBQwOp3SdHq8GieVwtFxbGU\r\nUzO0zslLgaROKdNWJsjyORhznKOxQETPe29mwiPRk4Oypd4EBvEgYioOpUFb\r\nPgSlUTkfmy4+NB4ZBibxH1ZE90+Aub/h3yC+LRJpqNOpQn3urwk8gzNol4vT\r\nssACPvsERVjFt+7769/tJ2j5fGMjz7b0BkeQDS7YDc0+fAlRPITDH07LG0yI\r\n/gaJO4vO8DPT6LQ+0etEMMdrSLgH+v8FWZfu3hs6ajMGxLunxNWnTw3xGX5F\r\nXJNztLLySQ5f0WISpbQ/LOH/4sPH4R4jvMIZ+yjZlmwUpzrO908YnXnBH9ZM\r\nTScDrICmlESViB3lL9J3HkjJTz6EQtYFHiXvVaDIDLL5qAsjt0q/+RDp9Iy9\r\nemZS/TSs+6NRsrNtFY6jhH2R9sqvoqKZx7Naqdj8jQn58K5EWBY90YFaD2mN\r\nE+bVa0vK/SWMUWVQGPYYIMmsdOCv3+UUiqkK8ioP8VxqNmkBDG0cokV3sKlH\r\nBe+YxlXpChlNCsb3aMBqhJbmEhnboKXesMvJ/kbkWxoQNmv2k29ApekqOnbS\r\nsh52b0iAu0h8a6cwhYwsy2MrV3RTLy2x5mdJ7J2NbQIn4cVbXRdEfUqDrfu2\r\nF6Yp0moL+Yip9uJNDhoDRVUEh/bW4EugHQk=\r\n=2J1I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cross-nft-marketplace","email":"tsunchan@protonmail.com"},"directories":{},"maintainers":[{"name":"cross-nft-marketplace","email":"tsunchan@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nft-editions_1.1.0-alpha.1_1667482772769_0.8678854069334905"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-25T14:00:48.983Z","1.1.0-alpha.0":"2022-10-25T14:00:49.273Z","modified":"2022-11-03T13:39:33.097Z","1.1.0-alpha.1":"2022-11-03T13:39:33.018Z"},"maintainers":[{"name":"cross-nft-marketplace","email":"tsunchan@protonmail.com"}],"description":"NFT Editions Contracts","homepage":"https://github.com/kreation-tech/nft-editions#readme","repository":{"type":"git","url":"git+https://github.com/kreation-tech/nft-editions.git"},"author":{"name":"HOFA"},"bugs":{"url":"https://github.com/kreation-tech/nft-editions/issues"},"license":"MIT","readme":"","readmeFilename":""}