{"_id":"@amuyu/multicall","name":"@amuyu/multicall","dist-tags":{"latest":"3.4.0"},"versions":{"3.4.0":{"name":"@amuyu/multicall","version":"3.4.0","sideEffects":false,"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","dependencies":{"@amuyu/sdk":"^5.7.7","@amuyu/chains":"^0.4.0","viem":"1.19.11"},"devDependencies":{"tsup":"^6.7.0","@pancakeswap/tsconfig":"0.0.0","@pancakeswap/utils":"6.0.1"},"exports":{"./package.json":"./package.json",".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest --run","coverage":"vitest run --coverage","clean":"rm -rf .turbo && rm -rf node_modules && rm -rf dist"},"_id":"@amuyu/multicall@3.4.0","description":"Enhanced multicall sdk to safely make multicalls within the gas limit.","_integrity":"sha512-Cbgnhhs1iEhC4QxfQg471ERUT7wNNOlE4w4atF3yVzAgD1MNPDwAGjSlU0TdOIchTBVR24+VWqIiFQZZqtyknA==","_resolved":"/private/var/folders/_p/6_qpzfwn4m7cdkzm6y6tgnw40000gn/T/89622616ce99481346d7ef3807eb7480/amuyu-multicall-3.4.0.tgz","_from":"file:amuyu-multicall-3.4.0.tgz","_nodeVersion":"18.20.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Cbgnhhs1iEhC4QxfQg471ERUT7wNNOlE4w4atF3yVzAgD1MNPDwAGjSlU0TdOIchTBVR24+VWqIiFQZZqtyknA==","shasum":"c9e2b491552c25bf762c612662817e9e402404fb","tarball":"https://registry.npmjs.org/@amuyu/multicall/-/multicall-3.4.0.tgz","fileCount":31,"unpackedSize":147674,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEPhLnrRleE0xk/awbgCzFdevYpTSKAFwj3dIgKWendLAiEA8q2vuPfKCl7kMmOiY86dHKHQwM/hO/amXn8sBqVVxDE="}]},"_npmUser":{"name":"amuyu","email":"hwajoong.song@gmail.com"},"directories":{},"maintainers":[{"name":"amuyu","email":"hwajoong.song@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/multicall_3.4.0_1731048661163_0.6658771888613915"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-08T06:51:01.069Z","3.4.0":"2024-11-08T06:51:01.331Z","modified":"2024-11-08T06:51:01.703Z"},"maintainers":[{"name":"amuyu","email":"hwajoong.song@gmail.com"}],"description":"Enhanced multicall sdk to safely make multicalls within the gas limit.","readme":"# Pancake Multicall\n\nEnhanced multicall sdk to safely make multicalls within the gas limit.\n\nInspired by the [1inch multicall](https://github.com/1inch/multicall).\n\n## Install\n\n```bash\n$ pnpm add @pancakeswap/multicall @pancakeswap/sdk viem\n```\n\n## Usage\n\n### Basic usage\n\nBy default the calls will be splitted into chunks based on gas limit of each call and the rpc call gas limit of the chain\n\n```typescript\nimport { ChainId } from '@pancakeswap/chains'\nimport { multicallByGasLimit, MulticallRequestWithGas } from '@pancakeswap/multicall'\n\nconst calls: MulticallRequestWithGas[] = [\n  {\n    // Target contract to call\n    target: '0x',\n    // Encoded call data\n    callData: '',\n    // The maximum gas limit set to this single call\n    gasLimit: 1_000_000,\n  },\n]\n\nconst { results, blockNumber } = await multicallByGasLimit(calls, {\n  chainId: ChainId.BSC,\n\n  // Rpc client. Please refer to `PublicClient` from viem\n  client,\n})\n\nfor (const { success, result, gasUsed } of results) {\n  if (success) {\n    // Decode result\n    decodeResult(result)\n  }\n}\n```\n\n### Advanced usage\n\nThe rpc call gas limit can be overriden if provided. Once provided, the multicall sdk won't ask for the gas limit from on chain.\n\n```typescript\nconst { results, blockNumber } = await multicallByGasLimit(calls, {\n  chainId: ChainId.BSC,\n  client,\n  gasLimit: 150_000_000,\n})\n```\n\n## Other utilities\n\n### Get multicall gas limit\n\n```typescript\nimport { ChainId } from '@pancakeswap/chains'\nimport { getGasLimitOnChain } from '@pancakeswap/multicall'\n\n// Get the rpc call gas limit of the specified chain\nconst gasLimit = await getGasLimitOnChain(ChainId.BSC)\n```\n\n## Supported chains\n\nFor supported chains and contract addresses, please refer to [multicall contracts](https://github.com/pancakeswap/pancake-frontend/blob/develop/packages/multicall/src/constants/contracts.ts).\n","readmeFilename":"README.md"}