{"bugs":{"url":"https://github.com/MystenLabs/sui/issues/new"},"dist":{"shasum":"067a076d48954c7c84ebdf3276aea075329b8324","tarball":"https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.35.0.tgz","fileCount":125,"integrity":"sha512-ZGFufufddM+2HvY24XqD0dlIniackjFRa6j/pxQvqyIweHWaJcjckfqRGKayUmT6KnWxxvPloVHVhqq9pMLULg==","signatures":[{"sig":"MEYCIQCmCvoyYyusV8un4lC/RU0KRLR+Zl5xkW7QJ1/hOewJ5gIhAOCX9Aci+R3RT/Ik1wt/8f2kP680aRLK85FPZEkkmEPg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1865742},"main":"./dist/index.js","name":"@mysten/sui.js","_from":"file:mysten-sui.js-0.35.0.tgz","types":"./dist/index.d.ts","author":{"name":"Mysten Labs","email":"build@mystenlabs.com"},"module":"./dist/index.mjs","readme":"# Sui TypeScript SDK\n\nThis is the Sui TypeScript SDK built on the Sui [JSON RPC API](https://github.com/MystenLabs/sui/blob/main/doc/src/build/json-rpc.md). It provides utility classes and functions for applications to sign transactions and interact with the Sui network.\n\nWARNING: Note that we are still iterating on the RPC and SDK API before TestNet, therefore please expect frequent breaking changes in the short-term. We expect the API to stabilize after the upcoming TestNet launch.\n\n## Working with DevNet\n\nThe SDK will be published to [npm registry](https://www.npmjs.com/package/@mysten/sui.js) with the same bi-weekly release cycle as the DevNet validators and [RPC Server](https://github.com/MystenLabs/sui/blob/main/doc/src/build/json-rpc.md). To use the SDK in your project, you can do:\n\n```bash\n$ npm install @mysten/sui.js\n```\n\nYou can also use your preferred npm client, such as yarn or pnpm.\n\n## Working with local network\n\nNote that the `latest` tag for the [published SDK](https://www.npmjs.com/package/@mysten/sui.js) might go out of sync with the RPC server on the `main` branch until the next release. If you're developing against a local network, we recommend using the `experimental`-tagged packages, which contain the latest changes from `main`.\n\n```bash\nnpm install @mysten/sui.js@experimental\n```\n\nRefer to the [JSON RPC](https://github.com/MystenLabs/sui/blob/main/doc/src/build/json-rpc.md) topic for instructions about how to start a local network and local RPC server.\n\n## Building Locally\n\nTo get started you need to install [pnpm](https://pnpm.io/), then run the following command:\n\n```bash\n# Install all dependencies\n$ pnpm install\n# Run the build for the TypeScript SDK\n$ pnpm sdk build\n```\n\n> All `pnpm` commands are intended to be run in the root of the Sui repo. You can also run them within the `sdk/typescript` directory, and remove change `pnpm sdk` to just `pnpm` when running commands.\n\n## Type Doc\n\nYou can view the generated [Type Doc](https://typedoc.org/) for the [current release of the SDK](https://www.npmjs.com/package/@mysten/sui.js) at http://typescript-sdk-docs.s3-website-us-east-1.amazonaws.com/.\n\nFor the latest docs for the `main` branch, run `pnpm doc` and open the [doc/index.html](doc/index.html) in your browser.\n\n## Testing\n\nTo run unit tests\n\n```\npnpm sdk test:unit\n```\n\nTo run E2E tests against local network\n\n```\npnpm sdk prepare:e2e\n\n// This will run all e2e tests\npnpm sdk test:e2e\n\n// Alternatively you can choose to run only one test file\nnpx vitest txn-builder.test.ts\n```\n\nTroubleshooting:\n\nIf you see errors like `ECONNRESET or \"socket hang up\"`, run `node -v` to make sure your node version is `v18.x.x`. Refer to this [guide](https://blog.logrocket.com/how-switch-node-js-versions-nvm/) to switch node version.\n\nSome more follow up here is if you used homebrew to install node, there could be multiple paths to node on your machine. https://stackoverflow.com/questions/52676244/node-version-not-updating-after-nvm-use-on-mac\n\nTo run E2E tests against DevNet\n\n```\nVITE_FAUCET_URL='https://faucet.devnet.sui.io:443/gas' VITE_FULLNODE_URL='https://fullnode.devnet.sui.io' pnpm sdk exec vitest e2e\n```\n\n## Connecting to Sui Network\n\nThe `JsonRpcProvider` class provides a connection to the JSON-RPC Server and should be used for all read-only operations. The default URLs to connect with the RPC server are:\n\n- local: http://127.0.0.1:9000\n- DevNet: https://fullnode.devnet.sui.io\n\n```typescript\nimport { JsonRpcProvider, devnetConnection } from '@mysten/sui.js';\n// connect to Devnet\nconst provider = new JsonRpcProvider(devnetConnection);\n// get tokens from the DevNet faucet server\nawait provider.requestSuiFromFaucet(\n  '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n);\n```\n\nFor local development, you can run `cargo run --bin sui-test-validator` to spin up a local network with a local validator, a fullnode, and a faucet server. Refer to [this guide](https://docs.sui.io/build/sui-local-network) for more information.\n\n```typescript\nimport { JsonRpcProvider, localnetConnection } from '@mysten/sui.js';\n// connect to local RPC server\nconst provider = new JsonRpcProvider(localnetConnection);\n// get tokens from the local faucet server\nawait provider.requestSuiFromFaucet(\n  '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n);\n```\n\nYou can also construct your own in custom connections, with your own URLs to your fullnode and faucet server\n\n```typescript\nimport { JsonRpcProvider, Connection } from '@mysten/sui.js';\n// Construct your connection:\nconst connection = new Connection({\n  fullnode: 'https://fullnode.devnet.sui.io',\n  faucet: 'https://faucet.devnet.sui.io/gas',\n});\n// connect to a custom RPC server\nconst provider = new JsonRpcProvider(connection);\n// get tokens from a custom faucet server\nawait provider.requestSuiFromFaucet(\n  '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n);\n```\n\n## Writing APIs\n\nFor a primer for building transactions, refer to [this guide](https://docs.sui.io/build/prog-trans-ts-sdk).\n\n### Transfer Object\n\n```typescript\nimport {\n  Ed25519Keypair,\n  JsonRpcProvider,\n  RawSigner,\n  TransactionBlock,\n} from '@mysten/sui.js';\n// Generate a new Ed25519 Keypair\nconst keypair = new Ed25519Keypair();\nconst provider = new JsonRpcProvider();\nconst signer = new RawSigner(keypair, provider);\nconst tx = new TransactionBlock();\ntx.transferObjects(\n  [\n    tx.object(\n      '0xe19739da1a701eadc21683c5b127e62b553e833e8a15a4f292f4f48b4afea3f2',\n    ),\n  ],\n  tx.pure('0x1d20dcdb2bca4f508ea9613994683eb4e76e9c4ed371169677c1be02aaf0b12a'),\n);\nconst result = await signer.signAndExecuteTransactionBlock({\n  transactionBlock: tx,\n});\nconsole.log({ result });\n```\n\n### Transfer Sui\n\nTo transfer `1000` MIST to another address:\n\n```typescript\nimport {\n  Ed25519Keypair,\n  JsonRpcProvider,\n  RawSigner,\n  TransactionBlock,\n} from '@mysten/sui.js';\n// Generate a new Keypair\nconst keypair = new Ed25519Keypair();\nconst provider = new JsonRpcProvider();\nconst signer = new RawSigner(keypair, provider);\nconst tx = new TransactionBlock();\nconst [coin] = tx.splitCoins(tx.gas, [tx.pure(1000)]);\ntx.transferObjects([coin], tx.pure(keypair.getPublicKey().toSuiAddress()));\nconst result = await signer.signAndExecuteTransactionBlock({\n  transactionBlock: tx,\n});\nconsole.log({ result });\n```\n\n### Merge coins\n\n```typescript\nimport {\n  Ed25519Keypair,\n  JsonRpcProvider,\n  RawSigner,\n  TransactionBlock,\n} from '@mysten/sui.js';\n// Generate a new Keypair\nconst keypair = new Ed25519Keypair();\nconst provider = new JsonRpcProvider();\nconst signer = new RawSigner(keypair, provider);\nconst tx = new TransactionBlock();\ntx.mergeCoins(\n  tx.object(\n    '0xe19739da1a701eadc21683c5b127e62b553e833e8a15a4f292f4f48b4afea3f2',\n  ),\n  [\n    tx.object(\n      '0x127a8975134a4824d9288722c4ee4fc824cd22502ab4ad9f6617f3ba19229c1b',\n    ),\n  ],\n);\nconst result = await signer.signAndExecuteTransactionBlock({\n  transactionBlock: tx,\n});\nconsole.log({ result });\n```\n\n### Move Call\n\n```typescript\nimport {\n  Ed25519Keypair,\n  JsonRpcProvider,\n  RawSigner,\n  TransactionBlock,\n} from '@mysten/sui.js';\n// Generate a new Keypair\nconst keypair = new Ed25519Keypair();\nconst provider = new JsonRpcProvider();\nconst signer = new RawSigner(keypair, provider);\nconst packageObjectId = '0x...';\nconst tx = new TransactionBlock();\ntx.moveCall({\n  target: `${packageObjectId}::nft::mint`,\n  arguments: [tx.pure('Example NFT')],\n});\nconst result = await signer.signAndExecuteTransactionBlock({\n  transactionBlock: tx,\n});\nconsole.log({ result });\n```\n\n### Publish Modules\n\nTo publish a package:\n\n```typescript\nimport {\n  Ed25519Keypair,\n  JsonRpcProvider,\n  RawSigner,\n  TransactionBlock,\n} from '@mysten/sui.js';\nconst { execSync } = require('child_process');\n// Generate a new Keypair\nconst keypair = new Ed25519Keypair();\nconst provider = new JsonRpcProvider();\nconst signer = new RawSigner(keypair, provider);\nconst { modules, dependencies } = JSON.parse(\n  execSync(\n    `${cliPath} move build --dump-bytecode-as-base64 --path ${packagePath}`,\n    { encoding: 'utf-8' },\n  ),\n);\nconst tx = new TransactionBlock();\nconst [upgradeCap] = tx.publish({\n  modules,\n  dependencies,\n});\ntx.transferObjects([upgradeCap], tx.pure(await signer.getAddress()));\nconst result = await signer.signAndExecuteTransactionBlock({\n  transactionBlock: tx,\n});\nconsole.log({ result });\n```\n\n## Reading APIs\n\n### Get Owned Objects\n\nFetch objects owned by the address `0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231`\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\nconst objects = await provider.getOwnedObjects({\n  owner: '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n});\n```\n\n### Get Object\n\nFetch object details for the object with id `0xe19739da1a701eadc21683c5b127e62b553e833e8a15a4f292f4f48b4afea3f2`\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\nconst txn = await provider.getObject({\n  id: '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n  // fetch the object content field\n  options: { showContent: true },\n});\n// You can also fetch multiple objects in one batch request\nconst txns = await provider.multiGetObjects({\n  ids: [\n    '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n    '0x9ad3de788483877fe348aef7f6ba3e52b9cfee5f52de0694d36b16a6b50c1429',\n  ],\n  // only fetch the object type\n  options: { showType: true },\n});\n```\n\n### Get Transaction\n\nFetch transaction details from transaction digests:\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\nconst txn = await provider.getTransactionBlock({\n  digest: '9XFneskU8tW7UxQf7tE5qFRfcN4FadtC2Z3HAZkgeETd=',\n  // only fetch the effects field\n    options: {\n        showEffects: true,\n        showInput: false,\n        showEvents: false,\n        showObjectChanges: false,\n        showBalanceChanges: false\n    }\n});\n\n// You can also fetch multiple transactions in one batch request\nconst txns = await provider.multiGetTransactionBlocks({\n  digests: [\n    '9XFneskU8tW7UxQf7tE5qFRfcN4FadtC2Z3HAZkgeETd=',\n    '17mn5W1CczLwitHCO9OIUbqirNrQ0cuKdyxaNe16SAME=',\n  ],\n  // fetch both the input transaction data as well as effects\n  options: { showInput: true, showEffects: true },\n});\n```\n\n\n### Get Checkpoints\n\nGet latest 100 Checkpoints in descending order and print Transaction Digests for each one of them.\n```typescript\n\nprovider.getCheckpoints({descendingOrder: true})\n    .then(function (checkpointPage: CheckpointPage) {\n        console.log(checkpointPage);\n\n        checkpointPage.data.forEach(checkpoint => {\n            console.log(\"---------------------------------------------------------------\")\n            console.log(\" -----------   Transactions for Checkpoint:  \", checkpoint.sequenceNumber, \" -------- \")\n            console.log(\"---------------------------------------------------------------\")\n            checkpoint.transactions.forEach(tx => {\n                console.log(tx);\n            })\n            console.log(\"***************************************************************\")\n        })\n    });\n```\n\n\nGet Checkpoint 1994010 and print details.\n```typescript\nprovider.getCheckpoint({id: \"1994010\"})\n    .then(function (checkpoint: Checkpoint) {\n        console.log(\"Checkpoint Sequence Num \", checkpoint.sequenceNumber);\n        console.log(\"Checkpoint timestampMs \", checkpoint.timestampMs);\n        console.log(\"Checkpoint # of Transactions \", checkpoint.transactions.length);\n\n    });\n```\n\n### Get Coins\n\nFetch coins of type `0x65b0553a591d7b13376e03a408e112c706dc0909a79080c810b93b06f922c458::usdc::USDC` owned by an address:\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\n// If coin type is not specified, it defaults to 0x2::sui::SUI\nconst coins = await provider.getCoins({\n  owner: '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n  coinType:\n    '0x65b0553a591d7b13376e03a408e112c706dc0909a79080c810b93b06f922c458::usdc::USDC',\n});\n```\n\nFetch all coin objects owned by an address:\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\nconst allCoins = await provider.getAllCoins({\n  owner: '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n});\n```\n\nFetch the total coin balance for one coin type, owned by an address:\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\n// If coin type is not specified, it defaults to 0x2::sui::SUI\nconst coinBalance = await provider.getBalance({\n  owner: '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n  coinType:\n    '0x65b0553a591d7b13376e03a408e112c706dc0909a79080c810b93b06f922c458::usdc::USDC',\n});\n```\n\n### Events API\n\nQuerying events created by transactions sent by account\n`0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231`\n\n```typescript\nimport { JsonRpcProvider } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\nconst events = provider.queryEvents({\n  query: { Sender: toolbox.address() },\n  limit: 2,\n});\n```\n\nSubscribe to all events created by transactions sent by account `0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231`\n\n```typescript\nimport { JsonRpcProvider, SuiEvent } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\n\n// calls RPC method 'suix_subscribeEvent' with params:\n// [ { Sender: '0xbff6ccc8707aa517b4f1b95750a2a8c666012df3' } ]\nconst unsubscribe = await provider.subscribeEvent({\n  filter: {\n    Sender:\n      '0xcc2bd176a478baea9a0de7a24cd927661cc6e860d5bacecb9a138ef20dbab231',\n  },\n  onMessage(event: SuiEvent) {\n    // handle subscription notification message here. This function is called once per subscription message.\n  },\n});\n\n// later, to unsubscribe:\nawait unsubscribe();\n```\n\nSubscribe to all events created by a package's `nft` module\n\n```typescript\nimport { JsonRpcProvider, SuiEvent } from '@mysten/sui.js';\nconst provider = new JsonRpcProvider();\n\nconst somePackage = '0x...';\nconst devnetNftFilter = {\n    { MoveModule: { somePackage, module: 'nft'} },\n};\nconst devNftSub = await provider.subscribeEvent({\n  filter: devnetNftFilter,\n  onMessage(event: SuiEvent) {\n    // handle subscription notification message here\n  },\n});\n```\n","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"dev":"pnpm build:tsup --watch","doc":"typedoc","lint":"eslint --max-warnings=0 src test","size":"size-limit","test":"pnpm test:typecheck && pnpm test:unit","build":"node genversion.mjs && pnpm build:types && pnpm build:tsup","clean":"rm -rf tsconfig.tsbuildinfo ./dist","vitest":"vitest","analyze":"size-limit --why","test:e2e":"wait-on http://127.0.0.1:9123 -l --timeout 120000 && vitest run e2e","test:unit":"vitest run unit __tests__","build:tsup":"tsup ./src/index.ts --format esm,cjs --sourcemap","build:types":"tsc --build","prepare:e2e":"cargo build --bin sui-test-validator --bin sui --profile dev && cross-env RUST_LOG=info,sui=error,anemo_tower=warn,consensus=off cargo run --bin sui-test-validator","prettier:fix":"prettier --write .","test:typecheck":"tsc -p ./test","codegen:version":"node genversion.mjs","test:e2e:nowait":"vitest run e2e"},"_npmUser":{"name":"ebmifa","email":"eugene@mystenlabs.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"all"},"_resolved":"/tmp/5979ec8ed146d6ea117f92ad3600d5e6/mysten-sui.js-0.35.0.tgz","_integrity":"sha512-ZGFufufddM+2HvY24XqD0dlIniackjFRa6j/pxQvqyIweHWaJcjckfqRGKayUmT6KnWxxvPloVHVhqq9pMLULg==","deprecated":"This package has been renamed to @mysten/sui, please update to use the renamed package.","size-limit":[{"path":"dist/index.js","limit":"100 KB"},{"path":"dist/index.mjs","limit":"100 KB"}],"_npmVersion":"8.19.4","description":"Sui TypeScript API(Work in Progress)","directories":{},"maintainers":[{"name":"jordangens","email":"jordangens@gmail.com"},{"name":"ebmifa","email":"eugene@mystenlabs.com"},{"name":"damirka","email":"damirka.ru@gmail.com"},{"name":"chris-mysten","email":"chris@mystenlabs.com"}],"_nodeVersion":"16.20.0","dependencies":{"tweetnacl":"^1.0.3","@mysten/bcs":"0.7.1","superstruct":"^1.0.3","@scure/bip32":"^1.3.0","@scure/bip39":"^1.2.0","@noble/curves":"^1.0.0","@noble/hashes":"^1.3.0","@suchipi/femver":"^1.0.0","@open-rpc/client-js":"^1.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"msw":"^1.2.1","tmp":"^0.2.1","tsup":"^6.7.0","vite":"^4.2.1","eslint":"^8.38.0","vitest":"^0.30.1","ts-node":"^10.9.1","typedoc":"^0.24.1","wait-on":"^7.0.1","prettier":"^2.8.7","cross-env":"^7.0.3","@types/tmp":"^0.2.3","size-limit":"^8.2.4","typescript":"^5.0.4","@iarna/toml":"^2.2.5","@types/node":"^18.15.11","ts-retry-promise":"^0.7.0","eslint-config-prettier":"^8.8.0","eslint-plugin-prettier":"^4.2.1","eslint-config-react-app":"^7.0.1","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/sui.js_0.35.0_1685458762982_0.8059481767954619","host":"s3://npm-registry-packages"},"_id":"@mysten/sui.js@0.35.0","version":"0.35.0"}