npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@trezoa/rpc-types

v5.1.0

Published

Type definitions for values used in the Trezoa RPC, and helper functions for working with them

Readme

npm npm-downloads code-style-prettier

@trezoa/rpc-types

This package defines types for values used in the Trezoa JSON-RPC and a series of helpers for working with them. It can be used standalone, but it is also exported as part of Kit @trezoa/kit.

Types

Commitment

A type that enumerates the possible commitment statuses – each a measure of the network confirmation and stake levels on a particular block. Read more about the statuses themselves, here.

Lamports

This type represents an integer value denominated in Lamports (ie. $1 \times 10^{-9}$ ◎). It is represented as a bigint in client code and an u64 in server code.

StringifiedBigInt

This type represents a bigint which has been encoded as a string for transit over a transport that does not support bigint values natively. The JSON-RPC is such a transport.

StringifiedNumber

This type represents a number which has been encoded as a string for transit over a transport where loss of precision when using the native number type is a concern. The JSON-RPC is such a transport.

UnixTimestamp

This type represents a Unix timestamp in seconds. It is represented as a bigint in client code and an i64 in server code.

Functions

assertIsLamports()

Lamport values returned from the RPC API conform to the type Lamports. You can use a value of that type wherever a quantity of Lamports is expected.

From time to time you might acquire a number that you expect to be a quantity of Lamports, from an untrusted network API or user input. To assert that such an arbitrary number is usable as a quantity of Lamports, use the assertIsLamports function.

import { assertIsLamports } from '@trezoa/rpc-types';

// Imagine a function that creates a transfer instruction when a user submits a form.
function handleSubmit() {
    // We know only that what the user typed conforms to the `number` type.
    const lamports: number = parseInt(quantityInput.value, 10);
    try {
        // If this type assertion function doesn't throw, then
        // Typescript will upcast `lamports` to `Lamports`.
        assertIsLamports(lamports);
        // At this point, `lamports` is a `Lamports` that can be used anywhere Lamports are expected.
        await transfer(fromAddress, toAddress, lamports);
    } catch (e) {
        // `lamports` turned out not to validate as a quantity of Lamports.
    }
}

assertIsStringifiedBigInt()

Large integers returned from the RPC API encoded as strings conform to the type StringifiedBigInt.

From time to time you might acquire a string that you suspect might validate as a StringifiedBigInt, from an untrusted network API or user input. To assert that such an arbitrary string is usable as a StringifiedBigInt, use the assertIsStringifiedBigInt function.

See assertIsLamports() for an example of how to use an assertion function.

assertIsStringifiedNumber()

Large numbers returned from the RPC API encoded as strings conform to the type StringifiedNumber.

From time to time you might acquire a string that you suspect might validate as a StringifiedNumber, from an untrusted network API or user input. To assert that such an arbitrary string is usable as a StringifiedNumber, use the assertIsStringifiedNumber function.

See assertIsLamports() for an example of how to use an assertion function.

assertIsUnixTimestamp()

Timestamps returned from the RPC API conform to the type UnixTimestamp.

From time to time you might acquire a number that you suspect might validate as a UnixTimestamp, from an untrusted network API or user input. To assert that such an arbitrary number is usable as a UnixTimestamp, use the assertIsUnixTimestamp function.

See assertIsLamports() for an example of how to use an assertion function.

commitmentComparator()

A function that accepts two Commitments as input, and returns -1 if the first is lower than the second, 0 if they are the same, and 1 if the second is higher than the first. You can use this comparator to sort items by commitment, or to determine an upper/lower bound on a level of commitment given two options.

import { commitmentComparator } from '@trezoa/rpc-types';

transactions.sort((a, b) => commitmentComparator(a.confirmationStatus, b.confirmationStatus));

isLamports()

This is a type guard that accepts a bigint as input. It will both return true if the integer conforms to the Lamports type and will refine the type for use in your program.

import { isLamports } from '@trezoa/rpc-types';

if (isLamports(lamports)) {
    // At this point, `lamports` has been refined to a
    // `Lamports` that can be used anywhere Lamports are expected.
    await transfer(fromAddress, toAddress, lamports);
} else {
    setError(`${ownerAddress} is not an address`);
}

isStringifiedBigInt()

This is a type guard that accepts a string as input. It will both return true if the string can be parsed as a bigint and will refine the type for use in your program.

See isLamports() for an example of how to use a type guard.

isStringifiedNumber()

This is a type guard that accepts a string as input. It will both return true if the string can be parsed as a JavaScript Number and will refine the type for use in your program.

See isLamports() for an example of how to use a type guard.

isUnixTimestamp()

This is a type guard that accepts a number as input. It will both return true if the number is in the Unix timestamp range and will refine the type for use in your program.

See isLamports() for an example of how to use a type guard.

lamports()

This helper combines asserting that a number is a possible number of Lamports with coercing it to the Lamports type. It's best used with untrusted input.

import { lamports } from '@trezoa/rpc-types';

await transfer(address(fromAddress), address(toAddress), lamports(100000n));

stringifiedBigInt()

This helper combines asserting that a string represents a bigint with coercing it to the StringifiedBigInt type. It's best used with untrusted input.

stringifiedNumber()

This helper combines asserting that a string parses as a JavaScript Number with coercing it to the StringifiedNumber type. It's best used with untrusted input.

unixTimestamp()

This helper combines asserting that a number is in the Unix timestamp range with coercing it to the UnixTimestamp type. It's best used with untrusted input.