open-index/open-npm huggingface dataset:
npm package: @pythnetwork/pyth-lazer-sui-js
Description: TypeScript SDK for the Pyth Lazer Sui contract
Latest version: 0.3.0

# Pyth Lazer Sui JS SDK

This package provides utilities to create a Sui Programmable Transaction to parse & verify a Pyth Lazer price update on-chain.

## Build

From the repository root:

```sh
pnpm turbo build -F @pythnetwork/pyth-lazer-sui-js
```

## Quickstart

A runnable example is provided at `examples/FetchAndVerifyUpdate.ts`. It:

- connects to Lazer via `@pythnetwork/pyth-lazer-sdk`,
- fetches a single `leEcdsa` payload,
- composes a Sui transaction calling `parse_and_verify_le_ecdsa_update`.

### Run the example

```sh
# Your Sui private key in Bech32 format
# SUI_KEY=

# Lazer contract state ID
# STATE_ID=

# Your Lazer API token
# LAZER_TOKEN=

SUI_FULLNODE_URL="https://fullnode.mainnet.sui.io:443"

pnpm run example:fetch-and-verify \
  --fullnode-url "$SUI_FULLNODE_URL" \
  --state-id "$STATE_ID" \
  --lazer-token "$LAZER_TOKEN"
```

The script's core logic is summarized below:

```ts
import { SuiClient } from "@mysten/sui/client";
import { Transaction } from "@mysten/sui/transactions";
import { PythLazerClient } from "@pythnetwork/pyth-lazer-sdk";
import { addParseAndVerifyLeEcdsaUpdateCall } from "@pythnetwork/pyth-lazer-sui-js";

// 1. Fetch the price update from Pyth Lazer in "leEcdsa" format:
const lazer = await PythLazerClient.create({ token: lazerToken });
const latestPrice = await lazer.getLatestPrice({
  priceFeedIds: [1],
  properties: ["price", "bestBidPrice", "bestAskPrice", "exponent"],
  formats: ["leEcdsa"],
  channel: "fixed_rate@200ms",
  jsonBinaryEncoding: "hex",
});
const update = Buffer.from(latestPrice.leEcdsa?.data ?? "", "hex");

// 2. Create a new Sui transaction:
const client = new SuiClient({ url: fullnodeUrl });
const tx = new Transaction();

// 3. Add the parse and verify call:
const verifiedUpdate = await addParseAndVerifyLeEcdsaUpdateCall({
  client,
  tx,
  stateObjectId: stateId,
  update,
});

// 4. Consume `verifiedUpdate` in your own contract with additional calls...

// 5. Sign and execute the transaction:
const result = await client.signAndExecuteTransaction({
  transaction: tx,
  signer,
});
```

## References

- Pyth Lazer Sui contract: `lazer/contracts/sui/`
- Lazer JS SDK (data source): `lazer/sdk/js/`
- Mysten Sui TS SDK docs: https://sdk.mystenlabs.com/typescript/transaction-building/basics
npm package: @pythnetwork/pyth-sdk-js
Description: Pyth Network SDK in JS
Latest version: 1.2.0

# Pyth SDK JS
The Pyth JavaScript SDK provides definitions and utilities for Pyth data structures. 

Please see the [pyth.network documentation](https://docs.pyth.network/) for more information on how to use Pyth prices in various blockchains.

## Releases

We use [Semantic Versioning](https://semver.org/) for our releases. In order to release a new version of this package and publish it to npm, follow these steps: 
1. Run `npm version <new version number> --no-git-tag-version`. This command will update the version of the package. Then push your changes to github.
2. Once your change is merged into `main`, create a release with tag `v<new version number>` like `v1.5.2`, and a github action will automatically publish the new version of this package to npm.