{"_id":"@bananapus/fee-project-deployer-v5","name":"@bananapus/fee-project-deployer-v5","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"name":"@bananapus/fee-project-deployer-v5","version":"0.0.2","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bananapus/nana-fee-project-deployer-v5.git"},"engines":{"node":">=20.0.0"},"scripts":{"deploy:mainnets":"source ./.env && export START_TIME=$(date +%s) && npx sphinx propose ./script/Deploy.s.sol --networks mainnets","deploy:testnets":"source ./.env && export START_TIME=$(date +%s) && npx sphinx propose ./script/Deploy.s.sol --networks testnets"},"dependencies":{"@bananapus/buyback-hook-v5":"^0.0.2","@bananapus/core-v5":"^0.0.4","@bananapus/ownable-v5":"^0.0.2","@bananapus/suckers-v5":"^0.0.2","@bananapus/swap-terminal-v5":"^0.0.3","@bananapus/permission-ids-v5":"^0.0.2","@rev-net/core-v5":"^0.0.2","@openzeppelin/contracts":"^5.2.0"},"devDependencies":{"@sphinx-labs/plugins":"^0.33.1"},"_id":"@bananapus/fee-project-deployer-v5@0.0.2","gitHead":"9b7434a02206aa4d7acd3d715d9bd31bbdf10503","description":"Deploys the Bananapus project with project ID #1, which receives Juicebox ecosystem fees.","bugs":{"url":"https://github.com/bananapus/nana-fee-project-deployer-v5/issues"},"homepage":"https://github.com/bananapus/nana-fee-project-deployer-v5#readme","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-InzDr5eJFXgQ+YSW1F5TOkhFgMFjR1EXnQjPEd6DO+mrz0IWt3/RsLEXLDWW7pMPXymKKt4z7/hA7qLYI9sMYA==","shasum":"7255ee20c4c7c57bf8cad5936da09354ea513307","tarball":"https://registry.npmjs.org/@bananapus/fee-project-deployer-v5/-/fee-project-deployer-v5-0.0.2.tgz","fileCount":6,"unpackedSize":44360,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGytSCfF+vP3V7KLawaf0ZRqfGJhpgmOPNpzMfvrEFdRAiEAoQFQx7G3bTXPueGRjTP8seHWtkX7wbBI8BjwdKDbspo="}]},"_npmUser":{"name":"me.jango","email":"me.jango@protonmail.com"},"directories":{},"maintainers":[{"name":"simplemachine","email":"justinpulley92@gmail.com"},{"name":"me.jango","email":"me.jango@protonmail.com"},{"name":"filipviz","email":"f@filip.world"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fee-project-deployer-v5_0.0.2_1757704759897_0.16397702091904454"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-12T19:19:19.807Z","0.0.2":"2025-09-12T19:19:20.087Z","modified":"2025-09-12T19:19:20.383Z"},"maintainers":[{"name":"simplemachine","email":"justinpulley92@gmail.com"},{"name":"me.jango","email":"me.jango@protonmail.com"},{"name":"filipviz","email":"f@filip.world"}],"description":"Deploys the Bananapus project with project ID #1, which receives Juicebox ecosystem fees.","homepage":"https://github.com/bananapus/nana-fee-project-deployer-v5#readme","repository":{"type":"git","url":"git+https://github.com/bananapus/nana-fee-project-deployer-v5.git"},"bugs":{"url":"https://github.com/bananapus/nana-fee-project-deployer-v5/issues"},"license":"MIT","readme":"# Bananapus Fee Project Deployer\n\nDeploys the Bananapus project with project ID #1, which receives Juicebox ecosystem fees.\n\n<details>\n  <summary>Table of Contents</summary>\n  <ol>\n    <li><a href=\"#usage\">Usage</a></li>\n  <ul>\n    <li><a href=\"#install\">Install</a></li>\n    <li><a href=\"#develop\">Develop</a></li>\n    <li><a href=\"#scripts\">Scripts</a></li>\n    <li><a href=\"#deployments\">Deployments</a></li>\n    <ul>\n      <li><a href=\"#with-sphinx\">With Sphinx</a></li>\n      <li><a href=\"#without-sphinx\">Without Sphinx</a></li>\n      </ul>\n    <li><a href=\"#tips\">Tips</a></li>\n    </ul>\n    <li><a href=\"#repository-layout\">Repository Layout</a></li>\n    <li><a href=\"#description\">Description</a></li>\n  <ul>\n    <li><a href=\"#how-fees-work\">How Fees Work</a></li>\n    <li><a href=\"#project-description\">Project Description</a></li>\n    </ul>\n  </ul>\n  </ol>\n</details>\n\n_If you're having trouble understanding this contract, take a look at the [core protocol contracts](https://github.com/Bananapus/nana-core) and the [documentation](https://docs.juicebox.money/) first. If you have questions, reach out on [Discord](https://discord.com/invite/ErQYmth4dS)._\n\n## Usage\n\n### Install\n\nHow to install `nana-fee-project-deployer` in another project.\n\nFor projects using `npm` to manage dependencies (recommended):\n\n```bash\nnpm install @bananapus/fee-project-deployer\n```\n\nFor projects using `forge` to manage dependencies (not recommended):\n\n```bash\nforge install Bananapus/nana-fee-project-deployer\n```\n\nIf you're using `forge` to manage dependencies, add `@bananapus/fee-project-deployer/=lib/nana-fee-project-deployer/` to `remappings.txt`. You'll also need to install `nana-fee-project-deployer`'s dependencies and add similar remappings for them.\n\n### Develop\n\n`nana-fee-project-deployer` uses [npm](https://www.npmjs.com/) (version >=20.0.0) for package management and the [Foundry](https://github.com/foundry-rs/foundry) development toolchain for builds, tests, and deployments. To get set up, [install Node.js](https://nodejs.org/en/download) and install [Foundry](https://github.com/foundry-rs/foundry):\n\n```bash\ncurl -L https://foundry.paradigm.xyz | sh\n```\n\nYou can download and install dependencies with:\n\n```bash\nnpm ci && forge install\n```\n\nIf you run into trouble with `forge install`, try using `git submodule update --init --recursive` to ensure that nested submodules have been properly initialized.\n\nSome useful commands:\n\n| Command               | Description                                         |\n| --------------------- | --------------------------------------------------- |\n| `forge build`         | Compile the contracts and write artifacts to `out`. |\n| `forge fmt`           | Lint.                                               |\n| `forge test`          | Run the tests.                                      |\n| `forge build --sizes` | Get contract sizes.                                 |\n| `forge coverage`      | Generate a test coverage report.                    |\n| `foundryup`           | Update foundry. Run this periodically.              |\n| `forge clean`         | Remove the build artifacts and cache directories.   |\n\nTo learn more, visit the [Foundry Book](https://book.getfoundry.sh/) docs.\n\n### Scripts\n\nFor convenience, several utility commands are available in `package.json`.\n\n| Command             | Description                                             |\n| ------------------- | ------------------------------------------------------- |\n| `npm run artifacts` | Fetch Sphinx artifacts and write them to `deployments/` |\n\n### Deployments\n\n#### With Sphinx\n\n`nana-fee-project-deployer` manages deployments with [Sphinx](https://www.sphinx.dev). To run the deployment scripts, install the npm `devDependencies` with:\n\n```bash\n`npm ci --also=dev`\n```\n\nYou'll also need to set up a `.env` file based on `.example.env`. Then run one of the following commands:\n\n| Command                   | Description                  |\n| ------------------------- | ---------------------------- |\n| `npm run deploy:mainnets` | Propose mainnet deployments. |\n| `npm run deploy:testnets` | Propose testnet deployments. |\n\nYour teammates can review and approve the proposed deployments in the Sphinx UI. Once approved, the deployments will be executed.\n\n#### Without Sphinx\n\nYou can use the Sphinx CLI to run the deployment scripts without paying for Sphinx. First, install the npm `devDependencies` with:\n\n```bash\n`npm ci --also=dev`\n```\n\nYou can deploy the contracts like so:\n\n```bash\nPRIVATE_KEY=\"0x123...\" RPC_ETHEREUM_SEPOLIA=\"https://rpc.ankr.com/eth_sepolia\" npx sphinx deploy script/Deploy.s.sol --network ethereum_sepolia\n```\n\nThis example deploys `nana-fee-project-deployer` to the Sepolia testnet using the specified private key. You can configure new networks in `foundry.toml`.\n\n### Tips\n\nTo view test coverage, run `npm run coverage` to generate an LCOV test report. You can use an extension like [Coverage Gutters](https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters) to view coverage in your editor.\n\nIf you're using Nomic Foundation's [Solidity](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) extension in VSCode, you may run into LSP errors because the extension cannot find dependencies outside of `lib`. You can often fix this by running:\n\n```bash\nforge remappings >> remappings.txt\n```\n\nThis makes the extension aware of default remappings.\n\n## Repository Layout\n\nThe root directory contains this README, an MIT license, and config files. If you're developing, you're probably looking for one of these directories:\n\n```\nfee-project-deployer/\n├── .github/\n│   └── workflows/ - CI/CD workflows\n└── script/\n    └── Deploy.s.sol - Fee project deployment script\n```\n\n## Description\n\n### How Fees Work\n\nProject ID #1 receives Juicebox ecosystem fees. For example, see [`JBMultiTerminal._FEE_BENEFICIARY_PROJECT_ID`](https://github.com/Bananapus/nana-core/blob/main/src/JBMultiTerminal.sol#L86):\n\n```solidity\n/// @notice Project ID #1 receives fees. It should be the first project launched during the deployment process.\nuint256 internal constant _FEE_BENEFICIARY_PROJECT_ID = 1;\n```\n\nThis ID is referenced in [`JBMultiTerminal.executeProcessFee(…)`](https://github.com/Bananapus/nana-core/blob/main/src/JBMultiTerminal.sol#L576). Note that this is done by convention – in theory, someone could launch a terminal which pays fees to a different project, or doesn't pay fees at all.\n\n### Project Description\n\nThe project deployed by `nana-fee-project-deployer` is not a vanilla Juicebox project:\n\n- The fee project is deployed to Ethereum mainnet and Optimism mainnet.\n- The fee project is deployed with two terminals.\n    - A [`JBMultiTerminal`](https://github.com/Bananapus/nana-core/blob/main/src/JBMultiTerminal.sol) which accepts payments in `JBConstants.NATIVE_TOKEN` – the native token on each network.\n    - A [`JBSwapTerminal`](https://github.com/Bananapus/nana-swap-terminal/blob/main/src/JBSwapTerminal.sol) which accepts any other token and swaps it for the `JBConstants.NATIVE_TOKEN`.\n- The fee project is a [Revnet](https://github.com/rev-net/revnet-core).\n    - The initial split operator is the `OPERATOR` address, which is hard-coded to `0x961d4191965C49537c88F764D88318872CE405bE`.\n    - It pre-mints 37,000,000 tokens to the `OPERATOR` address on Optimism.\n    - Its first stage starts 24 hours after the deployment.\n    - It has a 20% split rate (reserved rate in standard Juicebox terminology).\n    - Its initial issuance rate is 1,000 tokens per native token.\n    - Every 7 days, this issuance rate decays by 1%.\n    - The price floor tax intensity is 0.3.\n- The fee project is deployed with a [buyback hook](https://github.com/Bananapus/nana-buyback-hook). It buys from the 1% fee Uniswap v3 pool between $NANA (the project's token) and the (wrapped) native token on each network.\n- The fee project can mint tiered ERC-721 tokens via the [CropTop publisher](https://github.com/rev-net/revnet-core/blob/main/src/REVCroptopDeployer.sol). It launches with 6 pre-configured tiers.\n- The fee project supports cross-chain bridging via [`nana-suckers`](https://github.com/Bananapus/nana-suckers). At launch, it maps between each network's native token to the other.\n    \n","readmeFilename":"README.md","_rev":"1-23a012789cea520c2bdb6a34c30d0826"}