{"_id":"@crustnetwork/crustbags-sdk","_rev":"1-a50ef45f42a0e91ca34fc9c5ba897523","name":"@crustnetwork/crustbags-sdk","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@crustnetwork/crustbags-sdk","version":"0.0.1","author":"","license":"Apache-2.0","_id":"@crustnetwork/crustbags-sdk@0.0.1","maintainers":[{"name":"eericxu","email":"2681350846@qq.com"},{"name":"crustbuild","email":"gavin@crust.network"}],"dist":{"shasum":"a48097b0bd28dcf038ca4439586598fa8ed8a29a","tarball":"https://registry.npmjs.org/@crustnetwork/crustbags-sdk/-/crustbags-sdk-0.0.1.tgz","fileCount":16,"integrity":"sha512-zRZSPl0zr0Ju6VLHC8uxrmkgmQJKXY3yMHEp7GmNYNvfG3vbb2YchyWuROzswOhIgGkuwmdQUwAP4TLrLrxFIw==","signatures":[{"sig":"MEUCIQDDl16/o8/WuR3B3CxwaUHTuk23t6X7QYi/+cW1mu3L3QIgYhLxDiPV8iGbiXg0CanQJiRIWdzj7P9M1T3BRN/ySN8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33508},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"43c32fae5e9d52afaaedb19759c3fedac4183013","scripts":{"fix":"gts fix","pub":"tsc && copyfiles ./package.json ./README.md ./build && cd build && npm publish --access public","lint":"gts lint","clean":"gts clean","compile":"tsc","build:types":"npx ts-node src/scripts/generate.ts"},"_npmUser":{"name":"eericxu","email":"2681350846@qq.com"},"_npmVersion":"10.2.3","description":"SDK for interacting with TonBags contract","directories":{},"_nodeVersion":"18.19.0","dependencies":{"axios":"^1.7.4","@ton/core":"^0.56.3","js-sha256":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"copyfiles":"latest","typescript":"^4.1.3","@types/node":"^14.14.31"},"_npmOperationalInternal":{"tmp":"tmp/crustbags-sdk_0.0.1_1724035552658_0.24762227472402043","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@crustnetwork/crustbags-sdk","version":"0.0.2","description":"SDK for interacting with CrustBags contract","main":"./src/index.js","scripts":{"build:types":"npx ts-node src/scripts/generate.ts","lint":"gts lint","clean":"gts clean","compile":"tsc","fix":"gts fix","pub":"tsc && copyfiles ./package.json ./README.md ./build && cd build && npm publish --access public"},"devDependencies":{"@types/node":"^14.14.31","copyfiles":"latest","typescript":"^4.1.3"},"author":"","license":"Apache-2.0","dependencies":{"@ton/core":"^0.56.3","axios":"^1.7.4","js-sha256":"^0.11.0"},"_id":"@crustnetwork/crustbags-sdk@0.0.2","gitHead":"0a07b779a01c2ea1ece7f821545b99cb327f1b21","types":"./src/index.d.ts","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Bh8En4MUA7BBVIrL42sAhxNlbZkIBq71CtdaXMmlFHRUwPbkDBj5kOASlUGEPRdGkG7+qAsa1FhjgMpGZ7wDOw==","shasum":"da38b4d4a7dad1c6071b822e74f973c56b5e82ef","tarball":"https://registry.npmjs.org/@crustnetwork/crustbags-sdk/-/crustbags-sdk-0.0.2.tgz","fileCount":18,"unpackedSize":47429,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPQQVOGjVbkGKVT3awcGRPw5I4judkKgbZOaqGggEFjAIhANPhSRJByTNNIBZ8UCiL9E5I/tvKuAccZxhEjUe1AqRT"}]},"_npmUser":{"name":"eericxu","email":"2681350846@qq.com"},"directories":{},"maintainers":[{"name":"eericxu","email":"2681350846@qq.com"},{"name":"crustbuild","email":"gavin@crust.network"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crustbags-sdk_0.0.2_1724047502204_0.5889304863910112"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-19T02:45:52.548Z","modified":"2024-08-19T06:05:02.655Z","0.0.1":"2024-08-19T02:45:52.822Z","0.0.2":"2024-08-19T06:05:02.434Z"},"license":"Apache-2.0","description":"SDK for interacting with CrustBags contract","maintainers":[{"name":"eericxu","email":"2681350846@qq.com"},{"name":"crustbuild","email":"gavin@crust.network"}],"readme":"## CrustBags SDK\nSDK for interacting with CrustBags contract\n\n### Installation\n\n```bash\nnpm install @crustnetwork/crustbags-sdk @ton/ton @ton/core @ton/crypto\n```\n\n### Usage \n\n#### Place Storage Order\n```javascript\nimport CrustBagssdk from '@crustnetwork/crustbags-sdk'\nimport { default_storage_period } from \"@crustnetwork/crustbags-sdk/src/CrustBags\";\nimport { Address, toNano } from \"@ton/core\";\nimport { mnemonicToPrivateKey } from \"@ton/crypto\";\nimport { TonClient, WalletContractV4 } from \"@ton/ton\";\n\nconst tc = new TonClient({\n    endpoint: \"https://testnet.toncenter.com/api/v2/jsonRPC\",\n});\nconst CrustBagsAddress = Address.parse(\n    \"EQBOOMNqG0rvNm6vFGfR4qZl48BTDw_gYefVI4DQ70t9GoPC\"\n);\nconst CrustBags = CrustBagssdk.CrustBags.createFromAddress(CrustBagsAddress);\n\nconst openCrustBags = tc.open(CrustBags);\nconst keyPair = await mnemonicToPrivateKey([\"your\", \"mnemonic\"]);\nconst wallet = tc.open(\n    WalletContractV4.create({ workchain: 0, publicKey: keyPair.publicKey })\n);\nawait openCrustBags.sendPlaceStorageOrder(\n    wallet.sender(keyPair.secretKey),\n    tonrrentHash, // torrentHash or bagId\n    1024n, // fileSize\n    merkleHash, // file merkle tree root hash\n    toNano(\"0.1\"), // storageFee\n    default_storage_period // storage period time\n);\n\n```\n\n### API Reference\n\n#### merkle tree \n```javascript\nimport { merkle } from '@crustnetwork/crustbags-sdk'\n\nconst readAsBlob = async (file: string) => {\n  return new Promise<Blob>((resolve, reject) => {\n    let chunks: Buffer[] = [];\n    fs.createReadStream(file)\n      .on(\"error\", reject)\n      .on(\"data\", (data: Buffer) => {\n        chunks.push(data);\n      })\n      .on(\"end\", () => resolve(new Blob(chunks)));\n  });\n};\n\nconst mt = new merkle.MerkleTree();\nconst blob = await readAsBlob(\"test.txt\");\n// generate merkle tree\nawait mt.genTree(blob);\n// merkle tree root\nconst merkleRoot = mt.tree![0];\n// getMerkle proofs\nconst dataProofs = await mt.getDataAndProofs(blob, 1)\n```\n\n#### Tonutils\nWraped for the [Tonutils-storage](https://github.com/crustio/tonutils-storage) api\nRequire env TON_STORAGE_UTILS_API=http://localhost:7721\n\n```javascript\nimport { tonutils } from '@crustnetwork/crustbags-sdk'\n\n// create bag\nconst bagId = await tonutils.createBag('path', 'description')\n\n```","readmeFilename":"README.md"}