solana_kit_rpc_types 0.9.3
solana_kit_rpc_types: ^0.9.3 copied to clipboard
Shared RPC types for the Solana Kit Dart SDK.
solana_kit_rpc_types #
Shared types used across the Solana Kit RPC stack. Defines commitment levels, lamports, blockhashes, transaction errors, token amounts, account info variants, and the SolanaRpcResponse<T> wrapper. Both solana_kit_rpc_api and solana_kit_rpc depend on this package for their parameter and response shapes.
Installation #
Install the package directly:
dependencies:
"solana_kit_rpc_types": ^0.9.3
If your app uses several Solana Kit packages together, you can also depend on the umbrella package instead:
dart pub add solana_kit
Inside this monorepo, Dart workspace resolution uses the local package automatically.
Documentation #
- Package page: https://pub.dev/packages/solana_kit_rpc_types
- API reference: https://pub.dev/documentation/solana_kit_rpc_types/latest/
- Workspace docs: https://openbudgetfun.github.io/solana_kit/
- Package catalog entry: https://openbudgetfun.github.io/solana_kit/reference/package-catalog#solana_kit_rpc_types
- Source code: https://github.com/openbudgetfun/solana_kit/tree/main/packages/solana_kit_rpc_types
For architecture notes, getting-started guides, and cross-package examples, start with the workspace docs site and then drill down into the package README and API reference.
Usage #
Commitment levels #
Commitment is an enum with three finality levels. commitmentComparator orders them by finality.
import 'package:solana_kit_rpc_types/solana_kit_rpc_types.dart';
void main() {
const c1 = Commitment.processed;
const c2 = Commitment.confirmed;
const c3 = Commitment.finalized;
print(commitmentComparator(c1, c3)); // -1
print(commitmentComparator(c3, c3)); // 0
print(c2);
final list = [Commitment.finalized, Commitment.processed, Commitment.confirmed];
list.sort(commitmentComparator);
print(list); // [processed, confirmed, finalized]
}
Lamports #
Lamports wraps BigInt for values denominated in the smallest unit of SOL (1 SOL = 10^9 lamports).
import 'package:solana_kit_rpc_types/solana_kit_rpc_types.dart';
void main() {
final oneSol = Lamports(BigInt.from(1000000000)); // 1 SOL
final validated = lamports(BigInt.from(500000)); // validates range
print(isLamports(BigInt.from(100))); // true
print(isLamports(BigInt.from(-1))); // false
// u64 little-endian codec.
final encoder = getDefaultLamportsEncoder();
final decoder = getDefaultLamportsDecoder();
print(oneSol.value);
print(validated.value);
print(encoder.encode(oneSol).length);
print(decoder.fixedSize);
}
Blockhash #
Blockhash wraps a validated base58-encoded string (32 bytes).
import 'package:solana_kit_rpc_types/solana_kit_rpc_types.dart';
void main() {
const bh = Blockhash('4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY');
final validated = blockhash('4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY');
print(isBlockhash('too-short')); // false
print(bh.value);
print(validated.value);
}
Transaction and instruction errors #
Sealed class hierarchies represent Solana runtime errors.
import 'package:solana_kit_rpc_types/solana_kit_rpc_types.dart';
void main() {
const simple = TransactionErrorSimple('BlockhashNotFound');
const instrError = TransactionErrorInstructionError(
0,
InstructionErrorCustom(42),
);
print(simple.label); // 'BlockhashNotFound'
print(instrError.instructionIndex); // 0
print(instrError.instructionError.label); // 'Custom'
}
Token amounts and account info #
import 'package:solana_kit_addresses/solana_kit_addresses.dart';
import 'package:solana_kit_rpc_types/solana_kit_rpc_types.dart';
void main() {
final tokenAmount = TokenAmount(
amount: StringifiedBigInt('1000000'),
decimals: 6,
uiAmountString: StringifiedNumber('1'),
);
print(tokenAmount.amount); // '1000000'
final accountInfo = AccountInfoBase(
executable: false,
lamports: Lamports(BigInt.from(1000000)),
owner: Address('11111111111111111111111111111111'),
space: BigInt.from(165),
);
print(accountInfo.lamports); // Lamports(1000000)
}
Cluster URLs, slots, and timestamps #
import 'package:solana_kit_rpc_types/solana_kit_rpc_types.dart';
void main() {
// Branded cluster URL types for compile-time safety.
final mainnetUrl = mainnet('https://api.mainnet-beta.solana.com');
print(mainnetUrl);
// Slot and Epoch are BigInt aliases.
Slot currentSlot = BigInt.from(250000000);
Epoch currentEpoch = BigInt.from(580);
// UnixTimestamp wraps BigInt.
final ts = UnixTimestamp(BigInt.from(1700000000));
final validated = unixTimestamp(BigInt.from(1700000000));
print(currentSlot);
print(currentEpoch);
print(ts.value);
print(validated.value);
}
Key APIs #
Commitmentenum:processed,confirmed,finalized.Lamports(BigInt)/Blockhash(String)/UnixTimestamp(BigInt): validated extension types.MicroLamports(BigInt)/StringifiedBigInt(String)/StringifiedNumber(String): string-encoded numeric types.MainnetUrl/DevnetUrl/TestnetUrl: branded URL types viamainnet(),devnet(),testnet().TokenAmount: amount, decimals, uiAmountString.AccountInfoBaseand encoding variants (AccountInfoWithBase64EncodedData, etc.).TransactionError/InstructionError: sealed error hierarchies.SolanaRpcResponse<T>: context + value wrapper for RPC responses.Slot/Epoch/SignedLamports: BigInt type aliases.
Example #
Use example/main.dart as a runnable starting point for solana_kit_rpc_types.
- Import path:
package:solana_kit_rpc_types/solana_kit_rpc_types.dart - This section is centrally maintained with
mdtto keep package guidance aligned. - After updating shared docs templates, run
docs:updatefrom the repo root.
Maintenance #
- Validate docs in CI and locally with
docs:check. - Keep examples focused on one workflow and reference package README sections for deeper API details.