{"_id":"@akamellc/tributary","_rev":"6-d6f9aefe7aaf76ace959f1e017b970f8","name":"@akamellc/tributary","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.1":{"name":"@akamellc/tributary","version":"0.1.1","keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"author":{"name":"akameGusya"},"license":"MIT","_id":"@akamellc/tributary@0.1.1","maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"homepage":"https://github.com/akameGusya/tributary#readme","bugs":{"url":"https://github.com/akameGusya/tributary/issues"},"bin":{"tributary":"dist/cli.js"},"dist":{"shasum":"10bfba8b70c54a35a8c533f5d6506be7f91afd42","tarball":"https://registry.npmjs.org/@akamellc/tributary/-/tributary-0.1.1.tgz","fileCount":65,"integrity":"sha512-OOiO7m3IrXQxUZN0DlJpsMpzX31JpTaLZcPMnvHEMUhq64RrrRdpO76Jsuy9fSi4bL8Nic/QgsgHhTVWRpmjOA==","signatures":[{"sig":"MEUCIEBBNN04S5YANs8VFHPcZk1SAmMblZE6pF4oArzxCKwVAiEAuyuHdFnAldjyghSct0DHfM1uWAN0tGqOtB1WkCWiF64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213944},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"ebdc04dc10e03c633c735776256f64087ae57faf","scripts":{"dev":"ts-node src/cli.ts","lint":"eslint src/","test":"jest","build":"tsc","start":"node dist/cli.js","format":"prettier --write src/**/*.ts","prepare":"husky","release":"npm run version:patch && npm publish","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check src/**/*.ts","release:major":"npm run version:major && npm publish","release:minor":"npm run version:minor && npm publish","test:coverage":"jest --coverage","version:major":"npm version major && git push origin main --tags","version:minor":"npm version minor && git push origin main --tags","version:patch":"npm version patch && git push origin main --tags","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"d.akame","email":"d.akame@akame.email"},"repository":{"url":"git+https://github.com/akameGusya/tributary.git","type":"git"},"_npmVersion":"11.5.2","description":"Solana token distribution system","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.23.8","toml":"^3.0.0","chalk":"^4.1.2","dotenv":"^16.4.5","winston":"^3.14.2","inquirer":"^8.2.6","commander":"^12.1.0","cli-progress":"^3.12.0","@solana/web3.js":"^1.95.0","@solana/spl-token":"^0.4.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.10.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.6.2","@types/jest":"^29.5.12","@types/node":"^22.5.4","@commitlint/cli":"^19.8.1","@types/inquirer":"^9.0.7","@types/cli-progress":"^3.11.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.5.0","@commitlint/config-conventional":"^19.8.1","@typescript-eslint/eslint-plugin":"^8.5.0"},"_npmOperationalInternal":{"tmp":"tmp/tributary_0.1.1_1758193975004_0.1706480659301426","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@akamellc/tributary","version":"0.1.2","keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"author":{"name":"akameGusya"},"license":"MIT","_id":"@akamellc/tributary@0.1.2","maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"homepage":"https://github.com/akameGusya/tributary#readme","bugs":{"url":"https://github.com/akameGusya/tributary/issues"},"bin":{"tributary":"dist/cli.js"},"dist":{"shasum":"9850c8b6d004f710aab08a2fdfcb71a2af8c62d6","tarball":"https://registry.npmjs.org/@akamellc/tributary/-/tributary-0.1.2.tgz","fileCount":65,"integrity":"sha512-CBBm9AKyoBp13NhZ8fvdEsHbYNb3zP1MyAfMvroz5ZePLF/1iTFOq/P3ISkqtFBiVTa4I8gekSfWoJnKES3nBQ==","signatures":[{"sig":"MEUCIQDUfGu6IUXcsL4DZB398Ocmz2njkDqC/W9y5+1Pc14AkAIgJQXVfFApYBOA5D2Y/5udQsi6ptguWwx+z4noH2B8BrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213636},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"ebdc04dc10e03c633c735776256f64087ae57faf","scripts":{"dev":"ts-node src/cli.ts","lint":"eslint src/","test":"jest","build":"tsc","start":"node dist/cli.js","format":"prettier --write src/**/*.ts","prepare":"husky","release":"npm run version:patch && npm publish","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check src/**/*.ts","release:major":"npm run version:major && npm publish","release:minor":"npm run version:minor && npm publish","test:coverage":"jest --coverage","version:major":"npm version major && git push origin main --tags","version:minor":"npm version minor && git push origin main --tags","version:patch":"npm version patch && git push origin main --tags","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build"},"_npmUser":{"name":"d.akame","email":"d.akame@akame.email"},"repository":{"url":"git+https://github.com/akameGusya/tributary.git","type":"git"},"_npmVersion":"11.5.2","description":"Solana token distribution system","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.23.8","toml":"^3.0.0","chalk":"^4.1.2","dotenv":"^16.4.5","winston":"^3.14.2","inquirer":"^8.2.6","commander":"^12.1.0","cli-progress":"^3.12.0","@solana/web3.js":"^1.95.0","@solana/spl-token":"^0.4.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.10.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.6.2","@types/jest":"^29.5.12","@types/node":"^22.5.4","@commitlint/cli":"^19.8.1","@types/inquirer":"^9.0.7","@types/cli-progress":"^3.11.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.5.0","@commitlint/config-conventional":"^19.8.1","@typescript-eslint/eslint-plugin":"^8.5.0"},"_npmOperationalInternal":{"tmp":"tmp/tributary_0.1.2_1758195199508_0.9811154909006357","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@akamellc/tributary","version":"0.1.3","keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"author":{"name":"akameGusya"},"license":"MIT","_id":"@akamellc/tributary@0.1.3","maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"homepage":"https://github.com/akameGusya/tributary#readme","bugs":{"url":"https://github.com/akameGusya/tributary/issues"},"bin":{"tributary":"dist/cli.js"},"dist":{"shasum":"021f484ae5d081c7e5d3e8597d2b84894bc34e6c","tarball":"https://registry.npmjs.org/@akamellc/tributary/-/tributary-0.1.3.tgz","fileCount":66,"integrity":"sha512-LdH9bWghv0EBeyuzWygEhQOqN4lp+/U/yH2K6f36RhsVj4HAaY8MDF8FALTmPhuev1Tw5DtVI0WlYjaa7IIKVQ==","signatures":[{"sig":"MEQCID44SXsANtY0O+F8ejrYm61s89hqUMJdw9e033McgTDBAiAZrLBZ4mYSXTHZxdJ2H7J409Fcd29qfWMSt7PTfV89ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233554},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"ebdc04dc10e03c633c735776256f64087ae57faf","scripts":{"dev":"ts-node src/cli.ts","lint":"eslint src/","test":"jest","build":"tsc","start":"node dist/cli.js","format":"prettier --write src/**/*.ts","prepare":"husky","release":"npm run version:patch && npm publish","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check src/**/*.ts","release:major":"npm run version:major && npm publish","release:minor":"npm run version:minor && npm publish","test:coverage":"jest --coverage","version:major":"npm version major && git push origin main --tags","version:minor":"npm version minor && git push origin main --tags","version:patch":"npm version patch && git push origin main --tags","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build"},"_npmUser":{"name":"d.akame","email":"d.akame@akame.email"},"repository":{"url":"git+https://github.com/akameGusya/tributary.git","type":"git"},"_npmVersion":"11.5.2","description":"Solana token distribution system","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.23.8","toml":"^3.0.0","chalk":"^4.1.2","dotenv":"^16.4.5","winston":"^3.14.2","inquirer":"^8.2.6","commander":"^12.1.0","cli-progress":"^3.12.0","@solana/web3.js":"^1.95.0","@solana/spl-token":"^0.4.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.10.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.6.2","@types/jest":"^29.5.12","@types/node":"^22.5.4","@commitlint/cli":"^19.8.1","@types/inquirer":"^9.0.7","@types/cli-progress":"^3.11.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.5.0","@commitlint/config-conventional":"^19.8.1","@typescript-eslint/eslint-plugin":"^8.5.0"},"_npmOperationalInternal":{"tmp":"tmp/tributary_0.1.3_1758195266572_0.707680374961398","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@akamellc/tributary","version":"0.2.0","keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"author":{"name":"akameGusya"},"license":"MIT","_id":"@akamellc/tributary@0.2.0","maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"homepage":"https://github.com/akameGusya/tributary#readme","bugs":{"url":"https://github.com/akameGusya/tributary/issues"},"bin":{"tributary":"dist/cli.js"},"dist":{"shasum":"07d7349f3dc9507d16d9d04c5087642e6226aff6","tarball":"https://registry.npmjs.org/@akamellc/tributary/-/tributary-0.2.0.tgz","fileCount":66,"integrity":"sha512-3m8iQaGwfpXImHu0P2hPOWQK9l0lgzU2Mi1dQCnPk3xW/1JFS+HNLU57W+jxrYvT+fFxJvEQxbKd0Fv+yDXQbw==","signatures":[{"sig":"MEYCIQCFl6cqjuWHCFsJbpQwC35EyyacnGoR8zU/rdrdKd0GHwIhAKu2ESUk60Cl/IpFmCQdmV9Ya85Ff/+iduvYURofd3U9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237599},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b88476828503c567d872b48862182f1d120fe519","scripts":{"dev":"ts-node src/cli.ts","lint":"eslint src/","test":"jest","build":"tsc","start":"node dist/cli.js","format":"prettier --write src/**/*.ts","prepare":"husky","release":"npm run version:patch && npm publish","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check src/**/*.ts","release:major":"npm run version:major && npm publish","release:minor":"npm run version:minor && npm publish","test:coverage":"jest --coverage","version:major":"npm version major && git push origin main --tags","version:minor":"npm version minor && git push origin main --tags","version:patch":"npm version patch && git push origin main --tags","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build"},"_npmUser":{"name":"d.akame","email":"d.akame@akame.email"},"repository":{"url":"git+https://github.com/akameGusya/tributary.git","type":"git"},"_npmVersion":"11.5.2","description":"Solana token distribution system","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.23.8","toml":"^3.0.0","chalk":"^4.1.2","dotenv":"^16.4.5","winston":"^3.14.2","inquirer":"^8.2.6","commander":"^12.1.0","cli-progress":"^3.12.0","@solana/web3.js":"^1.95.0","@solana/spl-token":"^0.4.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.10.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.6.2","@types/jest":"^29.5.12","@types/node":"^22.5.4","@commitlint/cli":"^19.8.1","@types/inquirer":"^9.0.7","@types/cli-progress":"^3.11.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.5.0","@commitlint/config-conventional":"^19.8.1","@typescript-eslint/eslint-plugin":"^8.5.0"},"_npmOperationalInternal":{"tmp":"tmp/tributary_0.2.0_1758203469685_0.5199101658318757","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@akamellc/tributary","version":"0.3.0","keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"author":{"name":"akameGusya"},"license":"MIT","_id":"@akamellc/tributary@0.3.0","maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"homepage":"https://github.com/akameGusya/tributary#readme","bugs":{"url":"https://github.com/akameGusya/tributary/issues"},"bin":{"tributary":"dist/cli.js"},"dist":{"shasum":"87273196d51145a6800e530c28f1b44bbc776037","tarball":"https://registry.npmjs.org/@akamellc/tributary/-/tributary-0.3.0.tgz","fileCount":76,"integrity":"sha512-F/kH0k6EvbkWAz0yn2O4M0X8+Y+MyOLkMdmzi/n/10SYjF3s3+j3ggQ1aWv/4RI9OswJ45fPUumbDWjcqa00bA==","signatures":[{"sig":"MEUCIBaWdlL87xlVPEglRVAJWUvFlm91kJEZfoM5qwpM1NXkAiEAybGEdjjmck90tO0IWIrpmCWM4apwL+ovr+nLxiLOtwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":396023},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"e70ba04bf73dafc31d8de1d63f6d6a6146052bac","scripts":{"dev":"ts-node src/cli.ts","lint":"eslint src/","test":"jest","build":"tsc","start":"node dist/cli.js","format":"prettier --write src/**/*.ts","prepare":"husky","release":"npm run version:patch && npm publish","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check src/**/*.ts","release:major":"npm run version:major && npm publish","release:minor":"npm run version:minor && npm publish","test:coverage":"jest --coverage","version:major":"npm version major && git push origin main --tags","version:minor":"npm version minor && git push origin main --tags","version:patch":"npm version patch && git push origin main --tags","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build"},"_npmUser":{"name":"d.akame","email":"d.akame@akame.email"},"repository":{"url":"git+https://github.com/akameGusya/tributary.git","type":"git"},"_npmVersion":"11.5.2","description":"Solana token distribution system","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.23.8","toml":"^3.0.0","chalk":"^4.1.2","dotenv":"^16.4.5","js-yaml":"^4.1.0","winston":"^3.14.2","inquirer":"^8.2.6","commander":"^12.1.0","cli-progress":"^3.12.0","@types/js-yaml":"^4.0.9","@solana/web3.js":"^1.95.0","@solana/spl-token":"^0.4.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.10.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.6.2","@types/jest":"^29.5.12","@types/node":"^22.5.4","@commitlint/cli":"^19.8.1","@types/inquirer":"^9.0.7","@types/cli-progress":"^3.11.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.5.0","@commitlint/config-conventional":"^19.8.1","@typescript-eslint/eslint-plugin":"^8.5.0"},"_npmOperationalInternal":{"tmp":"tmp/tributary_0.3.0_1758459761645_0.07112065878677876","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@akamellc/tributary","version":"0.3.1","description":"Solana token distribution system","main":"dist/index.js","bin":{"tributary":"dist/cli.js"},"scripts":{"build":"tsc","dev":"ts-node src/cli.ts","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src/","lint:fix":"eslint src/ --fix","format":"prettier --write src/**/*.ts","format:check":"prettier --check src/**/*.ts","typecheck":"tsc --noEmit","start":"node dist/cli.js","prepare":"husky","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build","version:patch":"npm version patch && git push origin main --tags","version:minor":"npm version minor && git push origin main --tags","version:major":"npm version major && git push origin main --tags","release":"npm run version:patch && npm publish","release:minor":"npm run version:minor && npm publish","release:major":"npm run version:major && npm publish"},"keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"author":{"name":"akameGusya"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AkameLLC-Tributary/Tributary.git"},"bugs":{"url":"https://github.com/AkameLLC-Tributary/Tributary/issues"},"dependencies":{"@solana/spl-token":"^0.4.8","@solana/web3.js":"^1.95.0","@types/js-yaml":"^4.0.9","chalk":"^4.1.2","cli-progress":"^3.12.0","commander":"^12.1.0","dotenv":"^16.4.5","inquirer":"^8.2.6","js-yaml":"^4.1.0","toml":"^3.0.0","winston":"^3.14.2","zod":"^3.23.8"},"devDependencies":{"@commitlint/cli":"^19.8.1","@commitlint/config-conventional":"^19.8.1","@types/cli-progress":"^3.11.6","@types/inquirer":"^9.0.7","@types/jest":"^29.5.12","@types/node":"^22.5.4","@typescript-eslint/eslint-plugin":"^8.5.0","@typescript-eslint/parser":"^8.5.0","eslint":"^9.10.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","husky":"^9.1.7","jest":"^29.7.0","prettier":"^3.3.3","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.6.2"},"engines":{"node":">=18.0.0","npm":">=8.0.0"},"publishConfig":{"access":"public"},"_id":"@akamellc/tributary@0.3.1","gitHead":"af6c591d4f8fd584002ab22f5c68cb1f27686099","types":"./dist/index.d.ts","homepage":"https://github.com/AkameLLC-Tributary/Tributary#readme","_nodeVersion":"22.18.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-TsxvwOPLD2VHsTcczjd253nA9J9lZjIkPMRgl1kmyWvriD5lOu3QXAxgr4Dhe2Ek5Yet/f9aehvh+IAOAJetUA==","shasum":"be4334de2862c02a05cb098617d1044bb16aba84","tarball":"https://registry.npmjs.org/@akamellc/tributary/-/tributary-0.3.1.tgz","fileCount":76,"unpackedSize":395979,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDSFxIxri8bOb4ap8tkmyRzMsvQwrXi+tBQp1TL9GExIgIgfja8JR75htz21B7k5dOb6ttipfpdUDArpTmE/I3SAwc="}]},"_npmUser":{"name":"d.akame","email":"d.akame@akame.email"},"directories":{},"maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tributary_0.3.1_1758462679366_0.16343914031889795"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-18T11:12:54.889Z","modified":"2025-09-21T13:51:19.795Z","0.1.1":"2025-09-18T11:12:55.173Z","0.1.2":"2025-09-18T11:33:19.676Z","0.1.3":"2025-09-18T11:34:26.755Z","0.2.0":"2025-09-18T13:51:09.853Z","0.3.0":"2025-09-21T13:02:41.839Z","0.3.1":"2025-09-21T13:51:19.595Z"},"bugs":{"url":"https://github.com/AkameLLC-Tributary/Tributary/issues"},"author":{"name":"akameGusya"},"license":"MIT","homepage":"https://github.com/AkameLLC-Tributary/Tributary#readme","keywords":["solana","token","distribution","cli","blockchain","spl-token","cryptocurrency"],"repository":{"type":"git","url":"git+https://github.com/AkameLLC-Tributary/Tributary.git"},"description":"Solana token distribution system","maintainers":[{"name":"d.akame","email":"d.akame@akame.email"}],"readme":"# Tributary\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.6+-blue.svg)](https://www.typescriptlang.org/)\n[![Node.js](https://img.shields.io/badge/Node.js-18.0+-green.svg)](https://nodejs.org/)\n\n## ⚠️ Important Notice\n\n**Testnet Testing Only**: This software has been tested primarily on Solana Testnet. When using on Mainnet, please proceed with caution and thoroughly test your configurations in non-production environments first.\n\n**Bug Reporting**: If you encounter any issues or bugs, please report them through our [GitHub Issues](https://github.com/akameGusya/tributary/issues). Your feedback helps improve the reliability and security of Tributary.\n\n---\n\nA powerful and user-friendly Solana token distribution system that enables proportional token distribution to holders based on their current balance ratios.\n\n## Overview\n\nTributary allows you to:\n- **Collect token holders** based on a specific SPL token (base token)\n- **Calculate distribution ratios** proportional to their holdings\n- **Distribute any SPL token** to those holders based on the calculated ratios\n- **Execute distributions** with comprehensive validation and error handling\n\n### Key Concept\n\n1. **Base Token**: Determines who gets the distribution (e.g., SOL holders)\n2. **Distribution Token**: What token to distribute (e.g., USDC, custom tokens)\n3. **Proportional Logic**: Distribution amount = Total × (Holder's base token balance / Total base token supply)\n\n## Features\n\n🔥 **Core Features**\n- **Token Holder Collection**: Automatically discover all holders of a specific SPL token\n- **Proportional Distribution**: Distribute tokens proportionally based on current holding ratios\n- **Multi-Network Support**: Works on Devnet, Testnet, and Mainnet-beta\n- **Batch Processing**: Efficient batch processing for large-scale distributions\n- **Progress Tracking**: Real-time progress indicators with colored output\n\n⚡ **Advanced Capabilities**\n- **Caching System**: Intelligent caching to reduce RPC calls and improve performance\n- **Distribution Simulation**: Dry-run capabilities to preview distribution results\n- **Interactive CLI**: User-friendly command-line interface with progress bars\n- **Comprehensive Logging**: Detailed logging with configurable levels and file rotation\n- **Error Recovery**: Robust error handling with automatic retry mechanisms\n\n🛡️ **Security & Reliability**\n- **Input Validation**: Comprehensive validation using Zod schema validation\n- **Secure Key Management**: Safe handling of private keys and sensitive data\n- **Audit Logging**: Complete audit trail of all operations\n- **Type Safety**: Full TypeScript implementation with strict type checking\n- **Configuration Validation**: TOML configuration with schema validation\n\n## Installation\n\n### From NPM (Recommended)\n```bash\nnpm install -g @akamellc/tributary\n```\n\n### From Source\n```bash\ngit clone https://github.com/akameGusya/tributary.git\ncd tributary/200_src\nnpm install\nnpm run build\nnpm link\n```\n\n## Quick Start\n\n### 1. Initialize a New Project\n```bash\n# Basic initialization\ntributary init --name \"MyProject\" \\\n  --token \"So11111111111111111111111111111111111111112\" \\\n  --admin \"YourAdminWalletAddress\" \\\n  --network devnet\n\n# Interactive mode with guided setup\ntributary init --interactive\n```\n\n### 2. Collect Token Holders\n```bash\n# Collect all SOL holders with minimum 1.0 SOL\ntributary collect --token \"So11111111111111111111111111111111111111112\" --threshold 1.0\n\n# Exclude large holders and save to file\ntributary collect --threshold 0.1 \\\n  --exclude \"LargeHolder1,LargeHolder2\" \\\n  --output-file holders.json\n\n# Disable cache for fresh data collection\ntributary collect --cache false --threshold 0.1\n```\n\n### 3. Simulate Distribution (Recommended)\n```bash\n# Preview distribution of 1000 USDC\ntributary distribute simulate --amount 1000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n```\n\n### 4. Execute Distribution\n```bash\n# Execute actual distribution\ntributary distribute execute --amount 1000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" \\\n  --wallet-file ./admin-keypair.json\n\n# Dry run first (safe testing)\ntributary distribute execute --amount 1000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" \\\n  --wallet-file ./admin-keypair.json \\\n  --dry-run\n```\n\n## Commands Reference\n\n### Global Options\nAll commands support these global options:\n```bash\n--config <path>      Configuration file path (default: ./tributary.toml)\n--output <format>    Output format: table, json, yaml (default: table)\n--log-level <level>  Log level: debug, info, warn, error (default: info)\n--network <network>  Network override: devnet, testnet, mainnet-beta\n--help, -h          Show help for command\n```\n\n### Project Management\n\n#### `init` - Initialize Project\n```bash\ntributary init [options]\n```\n\n**Required:**\n- `--name <name>` - Project name (1-100 characters, alphanumeric + hyphens/underscores)\n- `--token <address>` - Base token address (Solana Base58 format)\n- `--admin <address>` - Admin wallet address\n\n**Options:**\n- `--network <network>` - Target network (default: devnet)\n- `--force, -f` - Overwrite existing configuration\n- `--interactive, -i` - Interactive setup mode with guided prompts\n\n**Examples:**\n```bash\n# Basic project setup\ntributary init --name \"SOLRewards\" \\\n  --token \"So11111111111111111111111111111111111111112\" \\\n  --admin \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"\n\n# Mainnet project (use with caution)\ntributary init --name \"MainnetProject\" \\\n  --token \"TokenAddress\" \\\n  --admin \"AdminAddress\" \\\n  --network mainnet-beta\n\n# Interactive mode\ntributary init --interactive\n```\n\n### Token Holder Management\n\n#### `collect` - Collect Token Holders\n```bash\ntributary collect [options]\n```\n\n**Options:**\n- `--token <address>` - Token address to collect holders for (uses base_token from config if omitted)\n- `--threshold <amount>` - Minimum balance threshold (default: 0)\n- `--max-holders <number>` - Maximum number of holders to collect\n- `--output-file <path>` - Save results to file (auto-detects format from extension: .json, .csv, .yaml)\n- `--cache, -c` - Use cache (default: true)\n- `--cache-ttl <seconds>` - Cache TTL in seconds (default: 3600)\n- `--exclude <addresses>` - Exclude specific addresses (comma-separated)\n\n**Examples:**\n```bash\n# Collect all holders with minimum 10 tokens\ntributary collect --threshold 10\n\n# Collect and save to file\ntributary collect --threshold 1 --output-file holders.csv\n\n# Save in different formats\ntributary collect --threshold 1 --output-file holders.json  # JSON format\ntributary collect --threshold 1 --output-file holders.yaml  # YAML format\n\n# Disable cache for real-time data\ntributary collect --cache false --threshold 1\n\n# Exclude large holders from collection\ntributary collect --exclude \"Whale1Address,Whale2Address\" --threshold 0.1\n\n# Disable cache for fresh data\ntributary collect --cache false --threshold 1\n```\n\n### Token Distribution\n\n#### `distribute execute` - Execute Distribution\n```bash\ntributary distribute execute [options]\n```\n\n**Required:**\n- `--amount <amount>` - Total distribution amount\n- `--wallet-file <path>` - Private key file path (JSON format)\n\n**Options:**\n- `--token <address>` - Distribution token address (can differ from base token)\n- `--dry-run` - Simulation mode (no actual transactions)\n- `--batch-size <number>` - Batch size for processing (default: 10)\n- `--confirm, -y` - Skip confirmation prompt\n\n**Examples:**\n```bash\n# Distribute 1000 USDC to SOL holders\ntributary distribute execute --amount 1000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" \\\n  --wallet-file admin-keypair.json\n\n# Dry run first (recommended)\ntributary distribute execute --amount 1000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" \\\n  --wallet-file admin-keypair.json \\\n  --dry-run\n\n# Large distribution with bigger batches\ntributary distribute execute --amount 50000 \\\n  --token \"CustomTokenAddress\" \\\n  --wallet-file admin-keypair.json \\\n  --batch-size 20 \\\n  --confirm\n```\n\n#### `distribute simulate` - Simulate Distribution\n```bash\ntributary distribute simulate [options]\n```\n\n**Options:**\n- `--amount <amount>` - Distribution amount for simulation\n- `--token <address>` - Token address\n- `--detail` - Show detailed breakdown\n\n**Examples:**\n```bash\n# Quick simulation\ntributary distribute simulate --amount 1000\n\n# Detailed simulation with custom token\ntributary distribute simulate --amount 5000 \\\n  --token \"CustomTokenAddress\" \\\n  --detail\n```\n\n#### `distribute history` - View Distribution History\n```bash\ntributary distribute history [options]\n```\n\n**Options:**\n- `--limit <number>` - Limit results (default: 50)\n- `--from <date>` - Start date (YYYY-MM-DD)\n- `--to <date>` - End date (YYYY-MM-DD)\n- `--format <format>` - Output format: table, json, csv (default: table)\n\n### Configuration Management\n\n#### `config show` - Display Configuration\n```bash\ntributary config show [options]\n```\n\n**Options:**\n- `--section <section>` - Show specific section (project, token, distribution, etc.)\n- `--format <format>` - Output format: table, json, yaml (default: table)\n- `--show-secrets` - Show sensitive information (admin wallet, etc.)\n\n#### `config validate` - Validate Configuration\n```bash\ntributary config validate [options]\n```\n\n**Options:**\n- `--strict` - Strict validation mode\n- `--check-network` - Check network connectivity\n\n#### `config export` - Export Configuration\n```bash\ntributary config export [options]\n```\n\n**Options:**\n- `--output <path>` - Output file path\n- `--format <format>` - Export format: toml, json, yaml (default: toml)\n- `--exclude-secrets` - Exclude sensitive information\n\n## Cache System\n\nTributary includes an intelligent caching system to improve performance and reduce RPC calls.\n\n### Cache Functionality\n\n**Default Behavior:**\n- Cache is **enabled by default** for all operations\n- Cached data improves response speed significantly\n- Cache automatically expires based on TTL settings\n\n**Cache Control:**\n```bash\n# Enable cache (default behavior)\ntributary collect --cache true\n\n# Disable cache for real-time data\ntributary collect --cache false\n\n# Custom cache TTL (time-to-live)\ntributary collect --cache-ttl 7200  # 2 hours\n```\n\n**When to Disable Cache:**\n- Need real-time, up-to-date holder information\n- Testing with frequently changing data\n- Debugging distribution calculations\n- First-time setup verification\n\n**Performance Impact:**\n- Cache enabled: Fast response for repeated operations\n- Cache disabled: Slower but always current data\n\n### Cache Location\nCache files are stored locally and automatically managed by the system.\n\n## Output File Formats\n\nTributary supports multiple output formats for token holder data collection.\n\n### Supported Formats\n\n**JSON Format (.json)**:\n- Structured data with full metadata\n- Machine-readable format\n- Preserves data types and precision\n- Ideal for programmatic processing\n\n```json\n[\n  {\n    \"address\": \"D8zGvbM3w6bcAsnfWcZnWEz2GLeK7LPVftqwsMDCkcHk\",\n    \"balance\": \"10999999990.000002\",\n    \"percentage\": 100.0000\n  },\n  {\n    \"address\": \"22XkWSj5b7MTgaJr5eSs6Wd1dPzHEaZrQNjW3BeQnGv4\",\n    \"balance\": \"100.0000\",\n    \"percentage\": 0.0009\n  }\n]\n```\n\n**CSV Format (.csv)**:\n- Spreadsheet-compatible format\n- Header row included automatically\n- Easy to import into Excel/Google Sheets\n- Human-readable tabular data\n\n```csv\nAddress,Balance,Percentage\nD8zGvbM3w6bcAsnfWcZnWEz2GLeK7LPVftqwsMDCkcHk,10999999990.000002,100.0000\n22XkWSj5b7MTgaJr5eSs6Wd1dPzHEaZrQNjW3BeQnGv4,100.0000,0.0009\n```\n\n**YAML Format (.yaml/.yml)**:\n- Human-readable structured format\n- Configuration-friendly\n- Preserves data hierarchy\n\n### Format Detection\nFile format is automatically detected from the file extension:\n\n```bash\n# Automatic format detection\ntributary collect --output-file holders.json   # → JSON format\ntributary collect --output-file holders.csv    # → CSV format\ntributary collect --output-file holders.yaml   # → YAML format\ntributary collect --output-file data.txt       # → JSON format (default)\n```\n\n### Use Cases\n\n- **JSON**: API integration, data processing, backup storage\n- **CSV**: Spreadsheet analysis, reporting, data visualization\n- **YAML**: Configuration files, human-readable documentation\n\n## Configuration\n\nTributary uses TOML configuration files with comprehensive validation.\n\n### Configuration Structure\n\n```toml\n[project]\nname = \"MyProject\"                           # Project name\ncreated = \"2025-09-18T10:30:15Z\"            # Creation timestamp\nnetwork = \"devnet\"                          # Network: devnet/testnet/mainnet-beta\n\n[token]\nbase_token = \"So11111111111111111111111111111111111111112\"     # Base token for holder selection\nadmin_wallet = \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"  # Admin wallet address\n\n[distribution]\nauto_distribute = false                      # Auto distribution (future feature)\nminimum_balance = 1.0                       # Minimum balance threshold\nbatch_size = 10                             # Batch processing size\nreward_token = \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"  # Default distribution token\n\n[security]\nkey_encryption = true                        # Enable key encryption\nbackup_enabled = true                        # Enable backups\naudit_log = true                            # Enable audit logging\n\n[network]\ntimeout = 30000                             # RPC timeout (milliseconds)\nmax_retries = 3                             # Maximum retry attempts\nretry_delay = 1000                          # Retry delay (milliseconds)\n\n[logging]\nlevel = \"info\"                              # Log level: debug/info/warn/error\nlog_dir = \"./logs\"                          # Log directory\nenable_console = true                       # Console logging\nenable_file = true                          # File logging\nmax_files = 14                              # Maximum log files\nmax_size = \"20m\"                            # Maximum file size\n```\n\n### Configuration Validation\n\nAll configuration parameters are validated using Zod schemas:\n- **Solana addresses** validated for Base58 format\n- **Network values** restricted to valid options\n- **Numeric values** validated for acceptable ranges\n- **Required fields** enforced when auto_distribute is enabled\n\n## Token Distribution Flow\n\n### Understanding the Process\n\n1. **Base Token Selection**: Choose which token holders to target (e.g., SOL holders)\n2. **Holder Collection**: Gather all addresses holding the base token above threshold\n3. **Ratio Calculation**: Calculate each holder's percentage of total supply\n4. **Distribution Token**: Choose what token to distribute (can be different from base token)\n5. **Proportional Distribution**: Distribute based on base token ratios\n\n### Example Scenario\n\n**Goal**: Distribute 10,000 USDC to SOL holders proportionally\n\n```bash\n# 1. Initialize project for SOL holders\ntributary init --name \"SOLRewards\" \\\n  --token \"So11111111111111111111111111111111111111112\" \\\n  --admin \"YourAdminWallet\"\n\n# 2. Collect SOL holders (minimum 1 SOL)\ntributary collect --threshold 1.0\n\n# 3. Simulate USDC distribution\ntributary distribute simulate --amount 10000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n\n# 4. Execute actual distribution\ntributary distribute execute --amount 10000 \\\n  --token \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" \\\n  --wallet-file admin-keypair.json\n```\n\n**Result**: Each SOL holder receives USDC proportional to their SOL holdings\n- Holder with 100 SOL (10% of supply) → 1,000 USDC\n- Holder with 50 SOL (5% of supply) → 500 USDC\n- etc.\n\n## API Usage (Programmatic)\n\nTributary can be used as a TypeScript/JavaScript library:\n\n```typescript\nimport {\n  WalletCollectorService,\n  DistributionService,\n  ConfigManager\n} from 'tributary';\nimport { PublicKey, Keypair } from '@solana/web3.js';\n\n// Initialize configuration\nconst configManager = new ConfigManager('./tributary.toml');\nawait configManager.loadConfig();\n\n// Initialize services\nconst collectorService = new WalletCollectorService('devnet');\nconst distributionService = new DistributionService('devnet', adminKeypair);\n\n// Collect token holders\nconst holders = await collectorService.collectWallets({\n  tokenAddress: new PublicKey('So11111111111111111111111111111111111111112'),\n  threshold: 1.0,\n  useCache: true,\n  excludeAddresses: [new PublicKey('ExcludeThisAddress')]\n});\n\nconsole.log(`Found ${holders.length} eligible holders`);\n\n// Simulate distribution\nconst simulationResult = await distributionService.simulateDistribution({\n  amount: 1000,\n  tokenAddress: new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),\n  holders: holders\n});\n\nconsole.log(`Estimated gas cost: ${simulationResult.estimatedGasCost} SOL`);\n\n// Execute distribution with progress tracking\nconst distribution = await distributionService.executeDistribution({\n  amount: 1000,\n  tokenAddress: new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),\n  holders: holders\n}, (progress) => {\n  console.log(`Progress: ${progress.completed}/${progress.total} (${progress.rate.toFixed(1)} tx/sec)`);\n});\n\nconsole.log(`Distribution completed: ${distribution.getSuccessfulCount()} successful transfers`);\n```\n\n## Error Handling\n\nTributary provides comprehensive error handling with specific exit codes:\n\n| Code | Type | Description |\n|------|------|-------------|\n| **0** | Success | Operation completed successfully |\n| **1** | General Error | Unexpected error occurred |\n| **2** | Validation Error | Invalid command-line arguments |\n| **3** | Configuration Error | Invalid or missing configuration |\n| **4** | Network Error | RPC connection or blockchain issues |\n| **5** | Authentication Error | Invalid wallet or permission issues |\n| **6** | Data Integrity Error | Corrupted data or validation failure |\n| **7** | Resource Error | Insufficient funds or resources |\n| **8** | Timeout Error | Operation timed out |\n\n### Error Examples\n\n```bash\n# Configuration error\n❌ ConfigurationError: Configuration file not found: ./tributary.toml\n💡 Solution: Run 'tributary init' to create a new project\n\n# Validation error\n❌ ValidationError: Invalid token address format\n💡 Expected: Base58-encoded Solana token address (32-44 characters)\n\n# Resource error\n❌ ResourceError: Insufficient token balance. Required: 10,000.00 USDC, Available: 8,756.43 USDC\n💡 Solution: Add more USDC to admin wallet or reduce distribution amount\n```\n\n## Security Considerations\n\n### Private Key Management\n- **Never commit** private keys to version control\n- **Use secure storage** for keypair files\n- **Set proper file permissions** (600) on keypair files\n- **Consider hardware wallets** for production use\n\n### Network Safety\n- **Always test on devnet** before mainnet deployment\n- **Use dry-run mode** before actual distribution\n- **Double-check token addresses** before execution\n- **Verify recipient lists** in simulation mode\n\n### Mainnet Precautions\n```bash\n# Always simulate first on mainnet\ntributary distribute simulate --amount 1000 --token \"TokenAddress\"\n\n# Use dry-run for final verification\ntributary distribute execute --amount 1000 --token \"TokenAddress\" \\\n  --wallet-file keypair.json --dry-run\n\n# Execute with confirmation\ntributary distribute execute --amount 1000 --token \"TokenAddress\" \\\n  --wallet-file keypair.json\n```\n\n## Development\n\n### Prerequisites\n- Node.js 18.0.0 or higher\n- npm 8.0.0 or higher\n- TypeScript 5.6 or higher\n\n### Building from Source\n```bash\ngit clone https://github.com/akameGusya/tributary.git\ncd tributary/200_src\nnpm install\nnpm run build\n```\n\n### Development Scripts\n```bash\nnpm run dev          # Run in development mode\nnpm run build        # Build for production\nnpm run typecheck    # Type checking only\nnpm test             # Run test suite\nnpm run test:watch   # Watch mode testing\nnpm run test:coverage # Generate coverage report\nnpm run lint         # Run ESLint\nnpm run lint:fix     # Fix ESLint issues\nnpm run format       # Format with Prettier\nnpm run format:check # Check Prettier formatting\n```\n\n### Testing\n```bash\n# Run all tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Watch mode for development\nnpm run test:watch\n```\n\n### Code Quality\nThe project maintains high code quality standards:\n- **ESLint** with TypeScript rules\n- **Prettier** for consistent formatting\n- **Jest** for comprehensive testing (80% coverage target)\n- **Strict TypeScript** configuration\n- **Zod** for runtime validation\n\n## Current Status & Roadmap\n\n### ✅ Current Features (v0.1.0)\n- ✅ Project initialization and configuration\n- ✅ Token holder collection with caching\n- ✅ Manual distribution execution\n- ✅ Distribution simulation and validation\n- ✅ Comprehensive CLI with progress tracking\n- ✅ TOML configuration with validation\n- ✅ Structured logging and error handling\n- ✅ Batch processing and retry mechanisms\n- ✅ TypeScript API for programmatic use\n\n### 🚧 Future Features\n- [ ] **Auto Distribution**: Scheduled/triggered distributions\n- [ ] **Web Dashboard**: Browser-based interface\n- [ ] **Advanced Filtering**: Complex holder selection rules\n- [ ] **Multi-token Support**: Distribute multiple tokens simultaneously\n- [ ] **Webhook Integration**: External event triggers\n- [ ] **Mobile App**: Mobile interface for monitoring\n- [ ] **Analytics Dashboard**: Distribution analytics and reporting\n\n### 🔄 Known Limitations\n- **Manual execution only**: Automatic distribution not yet implemented\n- **Single token distribution**: One token per distribution run\n- **Basic filtering**: Limited holder exclusion options\n- **CLI only**: No web interface available\n\n## Contributing\n\nWe welcome contributions! Please follow our project guidelines:\n\n### Getting Started\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes with tests\n4. Ensure all quality checks pass (`npm run prepublishOnly`)\n5. Commit changes following [Conventional Commits](https://www.conventionalcommits.org/)\n6. Push to branch (`git push origin feature/amazing-feature`)\n7. Open a Pull Request\n\n### Development Guidelines\n- **Follow project rules**: See [`PROJECT_RULES.md`](PROJECT_RULES.md) for comprehensive guidelines\n- **Quality standards**: All code must pass TypeScript, ESLint, and test checks\n- **Semantic versioning**: Follow [Semantic Versioning 2.0.0](https://semver.org/)\n- **Documentation**: Update relevant documentation for new features\n- **Testing**: Maintain comprehensive test coverage\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support & Community\n\n- **GitHub Issues**: [Report bugs or request features](https://github.com/akameGusya/tributary/issues)\n- **Documentation**: [Additional docs in `/100_doc`](100_doc/) and [`PROJECT_RULES.md`](PROJECT_RULES.md)\n- **NPM Package**: [`@akamellc/tributary`](https://www.npmjs.com/package/@akamellc/tributary)\n\n---\n\n## ⚠️ Important Testing & Mainnet Disclaimer\n\n**Testing Status**: This software has been comprehensively tested on **Testnet only**. While extensive security testing has been performed (T210-T220 security tests with excellent results), **mainnet usage requires additional verification**.\n\n**Before Mainnet Use**:\n- ✅ **Always test thoroughly on devnet/testnet first**\n- ⚠️ **Verify all parameters in simulation mode**\n- 🔍 **Double-check token addresses and amounts**\n- 💰 **Start with small amounts for initial mainnet testing**\n- 🛡️ **Consider the risks of large-scale distributions**\n\n**Bug Reporting**: If you encounter any issues, bugs, or unexpected behavior, please report them through [GitHub Issues](https://github.com/akameGusya/tributary/issues). Your feedback helps improve the security and reliability of this tool for the entire community.\n\n**Disclaimer**: This software is provided as-is for educational and development purposes. The authors are not responsible for any loss of funds. Use at your own risk and ensure you understand the implications of token distributions before execution.","readmeFilename":"README.md"}