Socket
Socket
Sign inDemoInstall

@solana/rpc-core

Package Overview
Dependencies
Maintainers
14
Versions
456
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@solana/rpc-core - npm Package Compare versions

Comparing version 2.0.0-experimental.9409822 to 2.0.0-experimental.9741939

dist/types/rpc-methods/common-transactions.d.ts

480

dist/index.browser.js

@@ -1,25 +0,1 @@

import bs58 from 'bs58';
// src/blockhash.ts
function assertIsBlockhash(putativeBlockhash) {
try {
if (
// Lowest value (32 bytes of zeroes)
putativeBlockhash.length < 32 || // Highest value (32 bytes of 255)
putativeBlockhash.length > 44
) {
throw new Error("Expected input string to decode to a byte array of length 32.");
}
const bytes = bs58.decode(putativeBlockhash);
const numBytes = bytes.byteLength;
if (numBytes !== 32) {
throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);
}
} catch (e) {
throw new Error(`\`${putativeBlockhash}\` is not a blockhash`, {
cause: e
});
}
}
// src/params-patcher.ts

@@ -56,28 +32,389 @@ function visitNode(value, keyPath, onIntegerOverflow) {

// src/response-patcher-allowed-numeric-values.ts
var ALLOWED_NUMERIC_KEYPATHS = {
getBlockTime: [[]],
getInflationReward: [[KEYPATH_WILDCARD, "commission"]],
getRecentPerformanceSamples: [[KEYPATH_WILDCARD, "samplePeriodSecs"]],
getTransaction: [
["meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "preTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "rewards", KEYPATH_WILDCARD, "commission"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "addressTableLookups", KEYPATH_WILDCARD, "writableIndexes", KEYPATH_WILDCARD],
["transaction", "message", "addressTableLookups", KEYPATH_WILDCARD, "readonlyIndexes", KEYPATH_WILDCARD],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "header", "numReadonlySignedAccounts"],
["transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transaction", "message", "header", "numRequiredSignatures"]
],
getVoteAccounts: [
["current", KEYPATH_WILDCARD, "commission"],
["delinquent", KEYPATH_WILDCARD, "commission"]
]
};
var jsonParsedTokenAccountsConfigs = [
// parsed Token/Token22 token account
["data", "parsed", "info", "tokenAmount", "decimals"],
["data", "parsed", "info", "tokenAmount", "uiAmount"],
["data", "parsed", "info", "rentExemptReserve", "decimals"],
["data", "parsed", "info", "rentExemptReserve", "uiAmount"],
["data", "parsed", "info", "delegatedAmount", "decimals"],
["data", "parsed", "info", "delegatedAmount", "uiAmount"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "olderTransferFee", "transferFeeBasisPoints"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "newerTransferFee", "transferFeeBasisPoints"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "preUpdateAverageRate"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "currentRate"]
];
var jsonParsedAccountsConfigs = [
...jsonParsedTokenAccountsConfigs,
// parsed AddressTableLookup account
["data", "parsed", "info", "lastExtendedSlotStartIndex"],
// parsed Config account
["data", "parsed", "info", "slashPenalty"],
["data", "parsed", "info", "warmupCooldownRate"],
// parsed Token/Token22 mint account
["data", "parsed", "info", "decimals"],
// parsed Token/Token22 multisig account
["data", "parsed", "info", "numRequiredSigners"],
["data", "parsed", "info", "numValidSigners"],
// parsed Stake account
["data", "parsed", "info", "stake", "delegation", "warmupCooldownRate"],
// parsed Sysvar rent account
["data", "parsed", "info", "exemptionThreshold"],
["data", "parsed", "info", "burnPercent"],
// parsed Vote account
["data", "parsed", "info", "commission"],
["data", "parsed", "info", "votes", KEYPATH_WILDCARD, "confirmationCount"]
];
var memoizedNotificationKeypaths;
var memoizedResponseKeypaths;
function getAllowedNumericKeypathsForNotification() {
if (!memoizedNotificationKeypaths) {
memoizedNotificationKeypaths = {
accountNotifications: jsonParsedAccountsConfigs.map((c) => ["value", ...c]),
blockNotifications: [
["value", "block", "blockTime"],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"accountIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"accountIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["value", "block", "transactions", KEYPATH_WILDCARD, "meta", "rewards", KEYPATH_WILDCARD, "commission"],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"index"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numReadonlySignedAccounts"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numReadonlyUnsignedAccounts"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numRequiredSignatures"
],
["value", "block", "rewards", KEYPATH_WILDCARD, "commission"]
],
programNotifications: jsonParsedAccountsConfigs.flatMap((c) => [
["value", KEYPATH_WILDCARD, "account", ...c],
[KEYPATH_WILDCARD, "account", ...c]
])
};
}
return memoizedNotificationKeypaths;
}
function getAllowedNumericKeypathsForResponse() {
if (!memoizedResponseKeypaths) {
memoizedResponseKeypaths = {
getAccountInfo: jsonParsedAccountsConfigs.map((c) => ["value", ...c]),
getBlock: [
["blockTime"],
["transactions", KEYPATH_WILDCARD, "meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["transactions", KEYPATH_WILDCARD, "meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["transactions", KEYPATH_WILDCARD, "meta", "rewards", KEYPATH_WILDCARD, "commission"],
["transactions", KEYPATH_WILDCARD, "meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numReadonlySignedAccounts"],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numRequiredSignatures"],
["rewards", KEYPATH_WILDCARD, "commission"]
],
getBlockTime: [[]],
getClusterNodes: [
[KEYPATH_WILDCARD, "featureSet"],
[KEYPATH_WILDCARD, "shredVersion"]
],
getInflationGovernor: [["initial"], ["foundation"], ["foundationTerm"], ["taper"], ["terminal"]],
getInflationRate: [["foundation"], ["total"], ["validator"]],
getInflationReward: [[KEYPATH_WILDCARD, "commission"]],
getMultipleAccounts: jsonParsedAccountsConfigs.map((c) => ["value", KEYPATH_WILDCARD, ...c]),
getProgramAccounts: jsonParsedAccountsConfigs.flatMap((c) => [
["value", KEYPATH_WILDCARD, "account", ...c],
[KEYPATH_WILDCARD, "account", ...c]
]),
getRecentPerformanceSamples: [[KEYPATH_WILDCARD, "samplePeriodSecs"]],
getTokenAccountBalance: [
["value", "decimals"],
["value", "uiAmount"]
],
getTokenAccountsByDelegate: jsonParsedTokenAccountsConfigs.map((c) => [
"value",
KEYPATH_WILDCARD,
"account",
...c
]),
getTokenAccountsByOwner: jsonParsedTokenAccountsConfigs.map((c) => [
"value",
KEYPATH_WILDCARD,
"account",
...c
]),
getTokenLargestAccounts: [
["value", KEYPATH_WILDCARD, "decimals"],
["value", KEYPATH_WILDCARD, "uiAmount"]
],
getTokenSupply: [
["value", "decimals"],
["value", "uiAmount"]
],
getTransaction: [
["meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "preTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "rewards", KEYPATH_WILDCARD, "commission"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "programIdIndex"],
[
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "header", "numReadonlySignedAccounts"],
["transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transaction", "message", "header", "numRequiredSignatures"]
],
getVersion: [["feature-set"]],
getVoteAccounts: [
["current", KEYPATH_WILDCARD, "commission"],
["delinquent", KEYPATH_WILDCARD, "commission"]
],
simulateTransaction: jsonParsedAccountsConfigs.map((c) => ["value", "accounts", KEYPATH_WILDCARD, ...c])
};
}
return memoizedResponseKeypaths;
}

@@ -103,3 +440,4 @@ // src/response-patcher.ts

// Upcast the value to `bigint` unless an allowed keypath is present.
allowedKeypaths.length === 0) {
allowedKeypaths.length === 0 && // Only try to upcast an Integer to `bigint`
Number.isInteger(value)) {
return BigInt(value);

@@ -111,5 +449,9 @@ } else {

function patchResponseForSolanaLabsRpc(rawResponse, methodName) {
const allowedKeypaths = methodName ? ALLOWED_NUMERIC_KEYPATHS[methodName] : void 0;
const allowedKeypaths = methodName ? getAllowedNumericKeypathsForResponse()[methodName] : void 0;
return visitNode2(rawResponse, allowedKeypaths ?? []);
}
function patchResponseForSolanaLabsRpcSubscriptions(rawResponse, methodName) {
const allowedKeypaths = methodName ? getAllowedNumericKeypathsForNotification()[methodName] : void 0;
return visitNode2(rawResponse, allowedKeypaths ?? []);
}

@@ -144,4 +486,36 @@ // src/rpc-methods/index.ts

export { assertIsBlockhash, createSolanaRpcApi };
// src/rpc-subscriptions/index.ts
function createSolanaRpcSubscriptionsApi(config) {
return new Proxy({}, {
defineProperty() {
return false;
},
deleteProperty() {
return false;
},
get(...args) {
const [_, p] = args;
const notificationName = p.toString();
return function(...rawParams) {
const handleIntegerOverflow = config?.onIntegerOverflow;
const params = patchParamsForSolanaLabsRpc(
rawParams,
handleIntegerOverflow ? (keyPath, value) => handleIntegerOverflow(notificationName, keyPath, value) : void 0
);
return {
params,
responseProcessor: (rawResponse) => patchResponseForSolanaLabsRpcSubscriptions(rawResponse, notificationName),
subscribeMethodName: notificationName.replace(/Notifications$/, "Subscribe"),
unsubscribeMethodName: notificationName.replace(/Notifications$/, "Unsubscribe")
};
};
}
});
}
function createSolanaRpcSubscriptionsApi_UNSTABLE(config) {
return createSolanaRpcSubscriptionsApi(config);
}
export { createSolanaRpcApi, createSolanaRpcSubscriptionsApi, createSolanaRpcSubscriptionsApi_UNSTABLE };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.browser.js.map

@@ -1,25 +0,1 @@

import bs58 from 'bs58';
// src/blockhash.ts
function assertIsBlockhash(putativeBlockhash) {
try {
if (
// Lowest value (32 bytes of zeroes)
putativeBlockhash.length < 32 || // Highest value (32 bytes of 255)
putativeBlockhash.length > 44
) {
throw new Error("Expected input string to decode to a byte array of length 32.");
}
const bytes = bs58.decode(putativeBlockhash);
const numBytes = bytes.byteLength;
if (numBytes !== 32) {
throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);
}
} catch (e) {
throw new Error(`\`${putativeBlockhash}\` is not a blockhash`, {
cause: e
});
}
}
// src/params-patcher.ts

@@ -56,28 +32,389 @@ function visitNode(value, keyPath, onIntegerOverflow) {

// src/response-patcher-allowed-numeric-values.ts
var ALLOWED_NUMERIC_KEYPATHS = {
getBlockTime: [[]],
getInflationReward: [[KEYPATH_WILDCARD, "commission"]],
getRecentPerformanceSamples: [[KEYPATH_WILDCARD, "samplePeriodSecs"]],
getTransaction: [
["meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "preTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "rewards", KEYPATH_WILDCARD, "commission"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "addressTableLookups", KEYPATH_WILDCARD, "writableIndexes", KEYPATH_WILDCARD],
["transaction", "message", "addressTableLookups", KEYPATH_WILDCARD, "readonlyIndexes", KEYPATH_WILDCARD],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "header", "numReadonlySignedAccounts"],
["transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transaction", "message", "header", "numRequiredSignatures"]
],
getVoteAccounts: [
["current", KEYPATH_WILDCARD, "commission"],
["delinquent", KEYPATH_WILDCARD, "commission"]
]
};
var jsonParsedTokenAccountsConfigs = [
// parsed Token/Token22 token account
["data", "parsed", "info", "tokenAmount", "decimals"],
["data", "parsed", "info", "tokenAmount", "uiAmount"],
["data", "parsed", "info", "rentExemptReserve", "decimals"],
["data", "parsed", "info", "rentExemptReserve", "uiAmount"],
["data", "parsed", "info", "delegatedAmount", "decimals"],
["data", "parsed", "info", "delegatedAmount", "uiAmount"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "olderTransferFee", "transferFeeBasisPoints"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "newerTransferFee", "transferFeeBasisPoints"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "preUpdateAverageRate"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "currentRate"]
];
var jsonParsedAccountsConfigs = [
...jsonParsedTokenAccountsConfigs,
// parsed AddressTableLookup account
["data", "parsed", "info", "lastExtendedSlotStartIndex"],
// parsed Config account
["data", "parsed", "info", "slashPenalty"],
["data", "parsed", "info", "warmupCooldownRate"],
// parsed Token/Token22 mint account
["data", "parsed", "info", "decimals"],
// parsed Token/Token22 multisig account
["data", "parsed", "info", "numRequiredSigners"],
["data", "parsed", "info", "numValidSigners"],
// parsed Stake account
["data", "parsed", "info", "stake", "delegation", "warmupCooldownRate"],
// parsed Sysvar rent account
["data", "parsed", "info", "exemptionThreshold"],
["data", "parsed", "info", "burnPercent"],
// parsed Vote account
["data", "parsed", "info", "commission"],
["data", "parsed", "info", "votes", KEYPATH_WILDCARD, "confirmationCount"]
];
var memoizedNotificationKeypaths;
var memoizedResponseKeypaths;
function getAllowedNumericKeypathsForNotification() {
if (!memoizedNotificationKeypaths) {
memoizedNotificationKeypaths = {
accountNotifications: jsonParsedAccountsConfigs.map((c) => ["value", ...c]),
blockNotifications: [
["value", "block", "blockTime"],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"accountIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"accountIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["value", "block", "transactions", KEYPATH_WILDCARD, "meta", "rewards", KEYPATH_WILDCARD, "commission"],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"index"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numReadonlySignedAccounts"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numReadonlyUnsignedAccounts"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numRequiredSignatures"
],
["value", "block", "rewards", KEYPATH_WILDCARD, "commission"]
],
programNotifications: jsonParsedAccountsConfigs.flatMap((c) => [
["value", KEYPATH_WILDCARD, "account", ...c],
[KEYPATH_WILDCARD, "account", ...c]
])
};
}
return memoizedNotificationKeypaths;
}
function getAllowedNumericKeypathsForResponse() {
if (!memoizedResponseKeypaths) {
memoizedResponseKeypaths = {
getAccountInfo: jsonParsedAccountsConfigs.map((c) => ["value", ...c]),
getBlock: [
["blockTime"],
["transactions", KEYPATH_WILDCARD, "meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["transactions", KEYPATH_WILDCARD, "meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["transactions", KEYPATH_WILDCARD, "meta", "rewards", KEYPATH_WILDCARD, "commission"],
["transactions", KEYPATH_WILDCARD, "meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numReadonlySignedAccounts"],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numRequiredSignatures"],
["rewards", KEYPATH_WILDCARD, "commission"]
],
getBlockTime: [[]],
getClusterNodes: [
[KEYPATH_WILDCARD, "featureSet"],
[KEYPATH_WILDCARD, "shredVersion"]
],
getInflationGovernor: [["initial"], ["foundation"], ["foundationTerm"], ["taper"], ["terminal"]],
getInflationRate: [["foundation"], ["total"], ["validator"]],
getInflationReward: [[KEYPATH_WILDCARD, "commission"]],
getMultipleAccounts: jsonParsedAccountsConfigs.map((c) => ["value", KEYPATH_WILDCARD, ...c]),
getProgramAccounts: jsonParsedAccountsConfigs.flatMap((c) => [
["value", KEYPATH_WILDCARD, "account", ...c],
[KEYPATH_WILDCARD, "account", ...c]
]),
getRecentPerformanceSamples: [[KEYPATH_WILDCARD, "samplePeriodSecs"]],
getTokenAccountBalance: [
["value", "decimals"],
["value", "uiAmount"]
],
getTokenAccountsByDelegate: jsonParsedTokenAccountsConfigs.map((c) => [
"value",
KEYPATH_WILDCARD,
"account",
...c
]),
getTokenAccountsByOwner: jsonParsedTokenAccountsConfigs.map((c) => [
"value",
KEYPATH_WILDCARD,
"account",
...c
]),
getTokenLargestAccounts: [
["value", KEYPATH_WILDCARD, "decimals"],
["value", KEYPATH_WILDCARD, "uiAmount"]
],
getTokenSupply: [
["value", "decimals"],
["value", "uiAmount"]
],
getTransaction: [
["meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "preTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "rewards", KEYPATH_WILDCARD, "commission"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "programIdIndex"],
[
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "header", "numReadonlySignedAccounts"],
["transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transaction", "message", "header", "numRequiredSignatures"]
],
getVersion: [["feature-set"]],
getVoteAccounts: [
["current", KEYPATH_WILDCARD, "commission"],
["delinquent", KEYPATH_WILDCARD, "commission"]
],
simulateTransaction: jsonParsedAccountsConfigs.map((c) => ["value", "accounts", KEYPATH_WILDCARD, ...c])
};
}
return memoizedResponseKeypaths;
}

@@ -103,3 +440,4 @@ // src/response-patcher.ts

// Upcast the value to `bigint` unless an allowed keypath is present.
allowedKeypaths.length === 0) {
allowedKeypaths.length === 0 && // Only try to upcast an Integer to `bigint`
Number.isInteger(value)) {
return BigInt(value);

@@ -111,5 +449,9 @@ } else {

function patchResponseForSolanaLabsRpc(rawResponse, methodName) {
const allowedKeypaths = methodName ? ALLOWED_NUMERIC_KEYPATHS[methodName] : void 0;
const allowedKeypaths = methodName ? getAllowedNumericKeypathsForResponse()[methodName] : void 0;
return visitNode2(rawResponse, allowedKeypaths ?? []);
}
function patchResponseForSolanaLabsRpcSubscriptions(rawResponse, methodName) {
const allowedKeypaths = methodName ? getAllowedNumericKeypathsForNotification()[methodName] : void 0;
return visitNode2(rawResponse, allowedKeypaths ?? []);
}

@@ -144,4 +486,36 @@ // src/rpc-methods/index.ts

export { assertIsBlockhash, createSolanaRpcApi };
// src/rpc-subscriptions/index.ts
function createSolanaRpcSubscriptionsApi(config) {
return new Proxy({}, {
defineProperty() {
return false;
},
deleteProperty() {
return false;
},
get(...args) {
const [_, p] = args;
const notificationName = p.toString();
return function(...rawParams) {
const handleIntegerOverflow = config?.onIntegerOverflow;
const params = patchParamsForSolanaLabsRpc(
rawParams,
handleIntegerOverflow ? (keyPath, value) => handleIntegerOverflow(notificationName, keyPath, value) : void 0
);
return {
params,
responseProcessor: (rawResponse) => patchResponseForSolanaLabsRpcSubscriptions(rawResponse, notificationName),
subscribeMethodName: notificationName.replace(/Notifications$/, "Subscribe"),
unsubscribeMethodName: notificationName.replace(/Notifications$/, "Unsubscribe")
};
};
}
});
}
function createSolanaRpcSubscriptionsApi_UNSTABLE(config) {
return createSolanaRpcSubscriptionsApi(config);
}
export { createSolanaRpcApi, createSolanaRpcSubscriptionsApi, createSolanaRpcSubscriptionsApi_UNSTABLE };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.native.js.map

@@ -1,25 +0,1 @@

import bs58 from 'bs58';
// src/blockhash.ts
function assertIsBlockhash(putativeBlockhash) {
try {
if (
// Lowest value (32 bytes of zeroes)
putativeBlockhash.length < 32 || // Highest value (32 bytes of 255)
putativeBlockhash.length > 44
) {
throw new Error("Expected input string to decode to a byte array of length 32.");
}
const bytes = bs58.decode(putativeBlockhash);
const numBytes = bytes.byteLength;
if (numBytes !== 32) {
throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);
}
} catch (e) {
throw new Error(`\`${putativeBlockhash}\` is not a blockhash`, {
cause: e
});
}
}
// src/params-patcher.ts

@@ -56,28 +32,389 @@ function visitNode(value, keyPath, onIntegerOverflow) {

// src/response-patcher-allowed-numeric-values.ts
var ALLOWED_NUMERIC_KEYPATHS = {
getBlockTime: [[]],
getInflationReward: [[KEYPATH_WILDCARD, "commission"]],
getRecentPerformanceSamples: [[KEYPATH_WILDCARD, "samplePeriodSecs"]],
getTransaction: [
["meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "preTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "rewards", KEYPATH_WILDCARD, "commission"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "addressTableLookups", KEYPATH_WILDCARD, "writableIndexes", KEYPATH_WILDCARD],
["transaction", "message", "addressTableLookups", KEYPATH_WILDCARD, "readonlyIndexes", KEYPATH_WILDCARD],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "header", "numReadonlySignedAccounts"],
["transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transaction", "message", "header", "numRequiredSignatures"]
],
getVoteAccounts: [
["current", KEYPATH_WILDCARD, "commission"],
["delinquent", KEYPATH_WILDCARD, "commission"]
]
};
var jsonParsedTokenAccountsConfigs = [
// parsed Token/Token22 token account
["data", "parsed", "info", "tokenAmount", "decimals"],
["data", "parsed", "info", "tokenAmount", "uiAmount"],
["data", "parsed", "info", "rentExemptReserve", "decimals"],
["data", "parsed", "info", "rentExemptReserve", "uiAmount"],
["data", "parsed", "info", "delegatedAmount", "decimals"],
["data", "parsed", "info", "delegatedAmount", "uiAmount"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "olderTransferFee", "transferFeeBasisPoints"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "newerTransferFee", "transferFeeBasisPoints"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "preUpdateAverageRate"],
["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "currentRate"]
];
var jsonParsedAccountsConfigs = [
...jsonParsedTokenAccountsConfigs,
// parsed AddressTableLookup account
["data", "parsed", "info", "lastExtendedSlotStartIndex"],
// parsed Config account
["data", "parsed", "info", "slashPenalty"],
["data", "parsed", "info", "warmupCooldownRate"],
// parsed Token/Token22 mint account
["data", "parsed", "info", "decimals"],
// parsed Token/Token22 multisig account
["data", "parsed", "info", "numRequiredSigners"],
["data", "parsed", "info", "numValidSigners"],
// parsed Stake account
["data", "parsed", "info", "stake", "delegation", "warmupCooldownRate"],
// parsed Sysvar rent account
["data", "parsed", "info", "exemptionThreshold"],
["data", "parsed", "info", "burnPercent"],
// parsed Vote account
["data", "parsed", "info", "commission"],
["data", "parsed", "info", "votes", KEYPATH_WILDCARD, "confirmationCount"]
];
var memoizedNotificationKeypaths;
var memoizedResponseKeypaths;
function getAllowedNumericKeypathsForNotification() {
if (!memoizedNotificationKeypaths) {
memoizedNotificationKeypaths = {
accountNotifications: jsonParsedAccountsConfigs.map((c) => ["value", ...c]),
blockNotifications: [
["value", "block", "blockTime"],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"accountIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"accountIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["value", "block", "transactions", KEYPATH_WILDCARD, "meta", "rewards", KEYPATH_WILDCARD, "commission"],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"index"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numReadonlySignedAccounts"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numReadonlyUnsignedAccounts"
],
[
"value",
"block",
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"header",
"numRequiredSignatures"
],
["value", "block", "rewards", KEYPATH_WILDCARD, "commission"]
],
programNotifications: jsonParsedAccountsConfigs.flatMap((c) => [
["value", KEYPATH_WILDCARD, "account", ...c],
[KEYPATH_WILDCARD, "account", ...c]
])
};
}
return memoizedNotificationKeypaths;
}
function getAllowedNumericKeypathsForResponse() {
if (!memoizedResponseKeypaths) {
memoizedResponseKeypaths = {
getAccountInfo: jsonParsedAccountsConfigs.map((c) => ["value", ...c]),
getBlock: [
["blockTime"],
["transactions", KEYPATH_WILDCARD, "meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"preTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["transactions", KEYPATH_WILDCARD, "meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"postTokenBalances",
KEYPATH_WILDCARD,
"uiTokenAmount",
"decimals"
],
["transactions", KEYPATH_WILDCARD, "meta", "rewards", KEYPATH_WILDCARD, "commission"],
["transactions", KEYPATH_WILDCARD, "meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"transactions",
KEYPATH_WILDCARD,
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"programIdIndex"
],
[
"transactions",
KEYPATH_WILDCARD,
"transaction",
"message",
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numReadonlySignedAccounts"],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transactions", KEYPATH_WILDCARD, "transaction", "message", "header", "numRequiredSignatures"],
["rewards", KEYPATH_WILDCARD, "commission"]
],
getBlockTime: [[]],
getClusterNodes: [
[KEYPATH_WILDCARD, "featureSet"],
[KEYPATH_WILDCARD, "shredVersion"]
],
getInflationGovernor: [["initial"], ["foundation"], ["foundationTerm"], ["taper"], ["terminal"]],
getInflationRate: [["foundation"], ["total"], ["validator"]],
getInflationReward: [[KEYPATH_WILDCARD, "commission"]],
getMultipleAccounts: jsonParsedAccountsConfigs.map((c) => ["value", KEYPATH_WILDCARD, ...c]),
getProgramAccounts: jsonParsedAccountsConfigs.flatMap((c) => [
["value", KEYPATH_WILDCARD, "account", ...c],
[KEYPATH_WILDCARD, "account", ...c]
]),
getRecentPerformanceSamples: [[KEYPATH_WILDCARD, "samplePeriodSecs"]],
getTokenAccountBalance: [
["value", "decimals"],
["value", "uiAmount"]
],
getTokenAccountsByDelegate: jsonParsedTokenAccountsConfigs.map((c) => [
"value",
KEYPATH_WILDCARD,
"account",
...c
]),
getTokenAccountsByOwner: jsonParsedTokenAccountsConfigs.map((c) => [
"value",
KEYPATH_WILDCARD,
"account",
...c
]),
getTokenLargestAccounts: [
["value", KEYPATH_WILDCARD, "decimals"],
["value", KEYPATH_WILDCARD, "uiAmount"]
],
getTokenSupply: [
["value", "decimals"],
["value", "uiAmount"]
],
getTransaction: [
["meta", "preTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "preTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "accountIndex"],
["meta", "postTokenBalances", KEYPATH_WILDCARD, "uiTokenAmount", "decimals"],
["meta", "rewards", KEYPATH_WILDCARD, "commission"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "index"],
["meta", "innerInstructions", KEYPATH_WILDCARD, "instructions", KEYPATH_WILDCARD, "programIdIndex"],
[
"meta",
"innerInstructions",
KEYPATH_WILDCARD,
"instructions",
KEYPATH_WILDCARD,
"accounts",
KEYPATH_WILDCARD
],
[
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"writableIndexes",
KEYPATH_WILDCARD
],
[
"transaction",
"message",
"addressTableLookups",
KEYPATH_WILDCARD,
"readonlyIndexes",
KEYPATH_WILDCARD
],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "programIdIndex"],
["transaction", "message", "instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD],
["transaction", "message", "header", "numReadonlySignedAccounts"],
["transaction", "message", "header", "numReadonlyUnsignedAccounts"],
["transaction", "message", "header", "numRequiredSignatures"]
],
getVersion: [["feature-set"]],
getVoteAccounts: [
["current", KEYPATH_WILDCARD, "commission"],
["delinquent", KEYPATH_WILDCARD, "commission"]
],
simulateTransaction: jsonParsedAccountsConfigs.map((c) => ["value", "accounts", KEYPATH_WILDCARD, ...c])
};
}
return memoizedResponseKeypaths;
}

@@ -103,3 +440,4 @@ // src/response-patcher.ts

// Upcast the value to `bigint` unless an allowed keypath is present.
allowedKeypaths.length === 0) {
allowedKeypaths.length === 0 && // Only try to upcast an Integer to `bigint`
Number.isInteger(value)) {
return BigInt(value);

@@ -111,5 +449,9 @@ } else {

function patchResponseForSolanaLabsRpc(rawResponse, methodName) {
const allowedKeypaths = methodName ? ALLOWED_NUMERIC_KEYPATHS[methodName] : void 0;
const allowedKeypaths = methodName ? getAllowedNumericKeypathsForResponse()[methodName] : void 0;
return visitNode2(rawResponse, allowedKeypaths ?? []);
}
function patchResponseForSolanaLabsRpcSubscriptions(rawResponse, methodName) {
const allowedKeypaths = methodName ? getAllowedNumericKeypathsForNotification()[methodName] : void 0;
return visitNode2(rawResponse, allowedKeypaths ?? []);
}

@@ -144,4 +486,36 @@ // src/rpc-methods/index.ts

export { assertIsBlockhash, createSolanaRpcApi };
// src/rpc-subscriptions/index.ts
function createSolanaRpcSubscriptionsApi(config) {
return new Proxy({}, {
defineProperty() {
return false;
},
deleteProperty() {
return false;
},
get(...args) {
const [_, p] = args;
const notificationName = p.toString();
return function(...rawParams) {
const handleIntegerOverflow = config?.onIntegerOverflow;
const params = patchParamsForSolanaLabsRpc(
rawParams,
handleIntegerOverflow ? (keyPath, value) => handleIntegerOverflow(notificationName, keyPath, value) : void 0
);
return {
params,
responseProcessor: (rawResponse) => patchResponseForSolanaLabsRpcSubscriptions(rawResponse, notificationName),
subscribeMethodName: notificationName.replace(/Notifications$/, "Subscribe"),
unsubscribeMethodName: notificationName.replace(/Notifications$/, "Unsubscribe")
};
};
}
});
}
function createSolanaRpcSubscriptionsApi_UNSTABLE(config) {
return createSolanaRpcSubscriptionsApi(config);
}
export { createSolanaRpcApi, createSolanaRpcSubscriptionsApi, createSolanaRpcSubscriptionsApi_UNSTABLE };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.node.js.map

4

dist/types/index.d.ts

@@ -1,3 +0,3 @@

export * from './blockhash';
export * from './rpc-methods';
export * from './rpc-methods/index.js';
export * from './rpc-subscriptions/index.js';
//# sourceMappingURL=index.d.ts.map

@@ -1,3 +0,6 @@

import { KeyPath } from './response-patcher';
import { createSolanaRpcApi } from './rpc-methods';
import type { IRpcSubscriptionsApi } from '@solana/rpc-transport';
import { KeyPath } from './response-patcher.js';
import { createSolanaRpcApi } from './rpc-methods/index.js';
import { SolanaRpcSubscriptions, SolanaRpcSubscriptionsUnstable } from './rpc-subscriptions/index.js';
type AllowedNumericKeypaths<TApi> = Partial<Record<keyof TApi, readonly KeyPath[]>>;
/**

@@ -7,3 +10,9 @@ * These are keypaths at the end of which you will find a numeric value that should *not* be upcast

*/
export declare const ALLOWED_NUMERIC_KEYPATHS: Partial<Record<keyof ReturnType<typeof createSolanaRpcApi>, readonly KeyPath[]>>;
export declare function getAllowedNumericKeypathsForNotification(): AllowedNumericKeypaths<IRpcSubscriptionsApi<SolanaRpcSubscriptions & SolanaRpcSubscriptionsUnstable>>;
/**
* These are keypaths at the end of which you will find a numeric value that should *not* be upcast
* to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.
*/
export declare function getAllowedNumericKeypathsForResponse(): AllowedNumericKeypaths<ReturnType<typeof createSolanaRpcApi>>;
export {};
//# sourceMappingURL=response-patcher-allowed-numeric-values.d.ts.map
export type KeyPathWildcard = {
readonly __keyPathWildcard: unique symbol;
readonly __brand: unique symbol;
};
export declare const KEYPATH_WILDCARD: KeyPathWildcard;
//# sourceMappingURL=response-patcher-types.d.ts.map

@@ -1,5 +0,7 @@

import { KeyPathWildcard } from './response-patcher-types';
import { createSolanaRpcApi } from './rpc-methods';
import { KeyPathWildcard } from './response-patcher-types.js';
import { createSolanaRpcApi } from './rpc-methods/index.js';
import { createSolanaRpcSubscriptionsApi } from './rpc-subscriptions/index.js';
export type KeyPath = ReadonlyArray<KeyPathWildcard | number | string | KeyPath>;
export declare function patchResponseForSolanaLabsRpc<T>(rawResponse: unknown, methodName?: keyof ReturnType<typeof createSolanaRpcApi>): T;
export declare function patchResponseForSolanaLabsRpcSubscriptions<T>(rawResponse: unknown, methodName?: keyof ReturnType<typeof createSolanaRpcSubscriptionsApi>): T;
//# sourceMappingURL=response-patcher.d.ts.map

@@ -1,2 +0,3 @@

export type Commitment = 'confirmed' | 'finalized' | 'processed';
import { Address } from '@solana/addresses';
import { LamportsUnsafeBeyond2Pow53Minus1, StringifiedBigInt, StringifiedNumber } from '@solana/rpc-types';
export type DataSlice = Readonly<{

@@ -6,7 +7,9 @@ offset: number;

}>;
export type LamportsUnsafeBeyond2Pow53Minus1 = bigint & {
readonly __lamports: unique symbol;
export type MicroLamportsUnsafeBeyond2Pow53Minus1 = bigint & {
readonly __brand: unique symbol;
};
export type Slot = U64UnsafeBeyond2Pow53Minus1;
export type U64UnsafeBeyond2Pow53Minus1 = bigint;
export type SignedLamportsAsI64Unsafe = bigint;
export type F64UnsafeSeeDocumentation = number;
export type RpcResponse<TValue> = Readonly<{

@@ -18,11 +21,10 @@ context: Readonly<{

}>;
export type TransactionVersion = 'legacy' | 0;
export type Base58EncodedBytes = string & {
readonly __base58EncodedBytes: unique symbol;
readonly __brand: unique symbol;
};
export type Base64EncodedBytes = string & {
readonly __base64EncodedBytes: unique symbol;
readonly __brand: unique symbol;
};
export type Base64EncodedZStdCompressedBytes = string & {
readonly __base64EncodedZStdCompressedBytes: unique symbol;
readonly __brand: unique symbol;
};

@@ -32,2 +34,79 @@ export type Base58EncodedDataResponse = [Base58EncodedBytes, 'base58'];

export type Base64EncodedZStdCompressedDataResponse = [Base64EncodedZStdCompressedBytes, 'base64+zstd'];
export type AccountInfoBase = Readonly<{
/** indicates if the account contains a program (and is strictly read-only) */
executable: boolean;
/** number of lamports assigned to this account */
lamports: LamportsUnsafeBeyond2Pow53Minus1;
/** pubkey of the program this account has been assigned to */
owner: Address;
/** the epoch at which this account will next owe rent */
rentEpoch: U64UnsafeBeyond2Pow53Minus1;
}>;
/** @deprecated */
export type AccountInfoWithBase58Bytes = Readonly<{
data: Base58EncodedBytes;
}>;
/** @deprecated */
export type AccountInfoWithBase58EncodedData = Readonly<{
data: Base58EncodedDataResponse;
}>;
export type AccountInfoWithBase64EncodedData = Readonly<{
data: Base64EncodedDataResponse;
}>;
export type AccountInfoWithBase64EncodedZStdCompressedData = Readonly<{
data: Base64EncodedZStdCompressedDataResponse;
}>;
export type AccountInfoWithJsonData = Readonly<{
data: Readonly<{
program: string;
parsed: {
info?: object;
type: string;
};
space: U64UnsafeBeyond2Pow53Minus1;
}> | Base64EncodedDataResponse;
}>;
export type AccountInfoWithPubkey<TAccount extends AccountInfoBase> = Readonly<{
account: TAccount;
pubkey: Address;
}>;
export type TokenAmount = Readonly<{
amount: StringifiedBigInt;
decimals: number;
uiAmount: number | null;
uiAmountString: StringifiedNumber;
}>;
export type TokenBalance = Readonly<{
/** Index of the account in which the token balance is provided for. */
accountIndex: number;
/** Pubkey of the token's mint. */
mint: Address;
/** Pubkey of token balance's owner. */
owner?: Address;
/** Pubkey of the Token program that owns the account. */
programId?: Address;
uiTokenAmount: TokenAmount;
}>;
type TokenAccountState = 'initialized' | 'uninitialized' | 'frozen';
export type TokenAccount = Readonly<{
mint: Address;
owner: Address;
tokenAmount: TokenAmount;
delegate?: Address;
state: TokenAccountState;
isNative: boolean;
rentExemptReserve?: TokenAmount;
delegatedAmount?: TokenAmount;
closeAuthority?: Address;
extensions?: unknown[];
}>;
export type GetProgramAccountsMemcmpFilter = Readonly<{
offset: U64UnsafeBeyond2Pow53Minus1;
bytes: string;
encoding: 'base58' | 'base64';
}>;
export type GetProgramAccountsDatasizeFilter = Readonly<{
dataSize: U64UnsafeBeyond2Pow53Minus1;
}>;
export {};
//# sourceMappingURL=common.d.ts.map

@@ -1,44 +0,8 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Base58EncodedBytes, Base58EncodedDataResponse, Base64EncodedDataResponse, Base64EncodedZStdCompressedDataResponse, Commitment, DataSlice, LamportsUnsafeBeyond2Pow53Minus1, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
type GetAccountInfoApiResponseBase = Readonly<{
context: Readonly<{
slot: Slot;
}>;
value: Readonly<{
executable: boolean;
lamports: LamportsUnsafeBeyond2Pow53Minus1;
owner: Base58EncodedAddress;
rentEpoch: U64UnsafeBeyond2Pow53Minus1;
space: U64UnsafeBeyond2Pow53Minus1;
}> | null;
import { Address } from '@solana/addresses';
import { Commitment } from '@solana/rpc-types';
import { AccountInfoBase, AccountInfoWithBase58Bytes, AccountInfoWithBase58EncodedData, AccountInfoWithBase64EncodedData, AccountInfoWithBase64EncodedZStdCompressedData, AccountInfoWithJsonData, DataSlice, RpcResponse, Slot } from './common.js';
type GetAccountInfoApiResponseBase = RpcResponse<AccountInfoBase | null>;
type NestInRpcResponseOrNull<T> = Readonly<{
value: T | null;
}>;
type GetAccountInfoApiResponseWithDefaultData = Readonly<{
value: Readonly<{
data: Base58EncodedBytes;
}> | null;
}>;
type GetAccountInfoApiResponseWithBase58EncodedData_DEPRECATED = Readonly<{
value: Readonly<{
data: Base58EncodedDataResponse;
}> | null;
}>;
type GetAccountInfoApiResponseWithBase64EncodedData = Readonly<{
value: Readonly<{
data: Base64EncodedDataResponse;
}> | null;
}>;
type GetAccountInfoApiResponseWithBase64EncodedZStdCompressedData = Readonly<{
value: Readonly<{
data: Base64EncodedZStdCompressedDataResponse;
}> | null;
}>;
type GetAccountInfoApiResponseWithJsonData = Readonly<{
value: Readonly<{
data: Readonly<{
program: string;
parsed: unknown;
space: U64UnsafeBeyond2Pow53Minus1;
}> | Base64EncodedDataResponse;
}> | null;
}>;
type GetAccountInfoApiCommonConfig = Readonly<{

@@ -55,17 +19,17 @@ commitment?: Commitment;

*/
getAccountInfo(address: Base58EncodedAddress, config: GetAccountInfoApiCommonConfig & GetAccountInfoApiSliceableCommonConfig & Readonly<{
getAccountInfo(address: Address, config: GetAccountInfoApiCommonConfig & GetAccountInfoApiSliceableCommonConfig & Readonly<{
encoding: 'base64';
}>): GetAccountInfoApiResponseBase & GetAccountInfoApiResponseWithBase64EncodedData;
getAccountInfo(address: Base58EncodedAddress, config: GetAccountInfoApiCommonConfig & GetAccountInfoApiSliceableCommonConfig & Readonly<{
}>): GetAccountInfoApiResponseBase & NestInRpcResponseOrNull<AccountInfoWithBase64EncodedData>;
getAccountInfo(address: Address, config: GetAccountInfoApiCommonConfig & GetAccountInfoApiSliceableCommonConfig & Readonly<{
encoding: 'base64+zstd';
}>): GetAccountInfoApiResponseBase & GetAccountInfoApiResponseWithBase64EncodedZStdCompressedData;
getAccountInfo(address: Base58EncodedAddress, config: GetAccountInfoApiCommonConfig & Readonly<{
}>): GetAccountInfoApiResponseBase & NestInRpcResponseOrNull<AccountInfoWithBase64EncodedZStdCompressedData>;
getAccountInfo(address: Address, config: GetAccountInfoApiCommonConfig & Readonly<{
encoding: 'jsonParsed';
}>): GetAccountInfoApiResponseBase & GetAccountInfoApiResponseWithJsonData;
getAccountInfo(address: Base58EncodedAddress, config: GetAccountInfoApiCommonConfig & GetAccountInfoApiSliceableCommonConfig & Readonly<{
}>): GetAccountInfoApiResponseBase & NestInRpcResponseOrNull<AccountInfoWithJsonData>;
getAccountInfo(address: Address, config: GetAccountInfoApiCommonConfig & GetAccountInfoApiSliceableCommonConfig & Readonly<{
encoding: 'base58';
}>): GetAccountInfoApiResponseBase & GetAccountInfoApiResponseWithBase58EncodedData_DEPRECATED;
getAccountInfo(address: Base58EncodedAddress, config?: GetAccountInfoApiCommonConfig): GetAccountInfoApiResponseBase & GetAccountInfoApiResponseWithDefaultData;
}>): GetAccountInfoApiResponseBase & NestInRpcResponseOrNull<AccountInfoWithBase58EncodedData>;
getAccountInfo(address: Address, config?: GetAccountInfoApiCommonConfig): GetAccountInfoApiResponseBase & NestInRpcResponseOrNull<AccountInfoWithBase58Bytes>;
}
export {};
//# sourceMappingURL=getAccountInfo.d.ts.map

@@ -1,3 +0,4 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1, RpcResponse, Slot } from './common';
import { Address } from '@solana/addresses';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';
import { RpcResponse, Slot } from './common.js';
type GetBalanceApiResponse = RpcResponse<LamportsUnsafeBeyond2Pow53Minus1>;

@@ -8,3 +9,3 @@ export interface GetBalanceApi {

*/
getBalance(address: Base58EncodedAddress, config?: Readonly<{
getBalance(address: Address, config?: Readonly<{
commitment?: Commitment;

@@ -11,0 +12,0 @@ minContextSlot?: Slot;

@@ -1,2 +0,3 @@

import { Commitment, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Commitment } from '@solana/rpc-types';
import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type GetBlockHeightApiResponse = U64UnsafeBeyond2Pow53Minus1;

@@ -3,0 +4,0 @@ export interface GetBlockHeightApi {

@@ -1,8 +0,9 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Commitment, RpcResponse, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Address } from '@solana/addresses';
import { Commitment } from '@solana/rpc-types';
import { RpcResponse, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type NumberOfLeaderSlots = U64UnsafeBeyond2Pow53Minus1;
type NumberOfBlocksProduced = U64UnsafeBeyond2Pow53Minus1;
type SlotRange = Readonly<{
firstSlot: U64UnsafeBeyond2Pow53Minus1;
lastSlot: U64UnsafeBeyond2Pow53Minus1;
firstSlot: Slot;
lastSlot: Slot;
}>;

@@ -18,3 +19,3 @@ type GetBlockProductionApiConfigBase = Readonly<{

value: Readonly<{
byIdentity: Record<Base58EncodedAddress, [NumberOfLeaderSlots, NumberOfBlocksProduced]>;
byIdentity: Record<Address, [NumberOfLeaderSlots, NumberOfBlocksProduced]>;
}>;

@@ -33,3 +34,3 @@ }>;

*/
getBlockProduction<TIdentity extends Base58EncodedAddress>(config: GetBlockProductionApiConfigBase & Readonly<{
getBlockProduction<TIdentity extends Address>(config: GetBlockProductionApiConfigBase & Readonly<{
identity: TIdentity;

@@ -36,0 +37,0 @@ }>): GetBlockProductionApiResponseBase & GetBlockProductionApiResponseWithSingleIdentity<TIdentity>;

@@ -1,2 +0,3 @@

import { Commitment, Slot } from './common';
import { Commitment } from '@solana/rpc-types';
import { Slot } from './common.js';
type GetBlocksApiResponse = Slot[];

@@ -3,0 +4,0 @@ export interface GetBlocksApi {

@@ -1,3 +0,3 @@

import { UnixTimestamp } from '../unix-timestamp';
import { Slot } from './common';
import { UnixTimestamp } from '@solana/rpc-types';
import { Slot } from './common.js';
/** Estimated production time, as Unix timestamp (seconds since the Unix epoch) */

@@ -4,0 +4,0 @@ type GetBlockTimeApiResponse = UnixTimestamp;

@@ -1,2 +0,3 @@

import { Commitment, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Commitment } from '@solana/rpc-types';
import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type GetEpochInfoApiResponse = Readonly<{

@@ -3,0 +4,0 @@ /** the current slot */

@@ -1,2 +0,2 @@

import { Slot } from './common';
import { Slot } from './common.js';
type GetFirstAvailableBlockApiResponse = Slot;

@@ -6,6 +6,7 @@ export interface GetFirstAvailableBlockApi {

* Returns the slot of the lowest confirmed block that has not been purged from the ledger
* Note that the optional NO_CONFIG object is ignored. See https://github.com/solana-labs/solana-web3.js/issues/1389
*/
getFirstAvailableBlock(): GetFirstAvailableBlockApiResponse;
getFirstAvailableBlock(NO_CONFIG?: Record<string, never>): GetFirstAvailableBlockApiResponse;
}
export {};
//# sourceMappingURL=getFirstAvailableBlock.d.ts.map

@@ -1,3 +0,4 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Address } from '@solana/addresses';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';
import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type GetInflationRewardApiResponse = Readonly<{

@@ -14,3 +15,3 @@ amount: LamportsUnsafeBeyond2Pow53Minus1;

*/
getInflationReward(addresses: Base58EncodedAddress[], config?: Readonly<{
getInflationReward(addresses: Address[], config?: Readonly<{
commitment?: Commitment;

@@ -17,0 +18,0 @@ epoch?: U64UnsafeBeyond2Pow53Minus1;

@@ -1,3 +0,4 @@

import { Blockhash } from '../blockhash';
import { Commitment, RpcResponse, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Commitment } from '@solana/rpc-types';
import { Blockhash } from '@solana/transactions';
import { RpcResponse, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type GetLatestBlockhashApiResponse = RpcResponse<{

@@ -4,0 +5,0 @@ /** a Hash as base-58 encoded string */

@@ -1,2 +0,2 @@

import { Slot } from './common';
import { Slot } from './common.js';
type GetMaxRetransmitSlotApiResponse = Slot;

@@ -6,6 +6,7 @@ export interface GetMaxRetransmitSlotApi {

* Get the max slot seen from retransmit stage.
* Note that the optional NO_CONFIG object is ignored. See https://github.com/solana-labs/solana-web3.js/issues/1389
*/
getMaxRetransmitSlot(): GetMaxRetransmitSlotApiResponse;
getMaxRetransmitSlot(NO_CONFIG?: Record<string, never>): GetMaxRetransmitSlotApiResponse;
}
export {};
//# sourceMappingURL=getMaxRetransmitSlot.d.ts.map

@@ -1,2 +0,2 @@

import { Slot } from './common';
import { Slot } from './common.js';
type GetMaxShredInsertSlotApiResponse = Slot;

@@ -6,6 +6,7 @@ export interface GetMaxShredInsertSlotApi {

* Get the max slot seen from after shred insert.
* Note that the optional NO_CONFIG object is ignored. See https://github.com/solana-labs/solana-web3.js/issues/1389
*/
getMaxShredInsertSlot(): GetMaxShredInsertSlotApiResponse;
getMaxShredInsertSlot(NO_CONFIG?: Record<string, never>): GetMaxShredInsertSlotApiResponse;
}
export {};
//# sourceMappingURL=getMaxShredInsertSlot.d.ts.map

@@ -1,2 +0,2 @@

import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type PerformanceSample = Readonly<{

@@ -3,0 +3,0 @@ /** Slot in which sample was taken at */

@@ -1,9 +0,9 @@

import { Base58EncodedAddress } from '@solana/keys';
import { TransactionError } from '../transaction-error';
import { TransactionSignature } from '../transaction-signature';
import { UnixTimestamp } from '../unix-timestamp';
import { Commitment, RpcResponse, Slot } from './common';
type GetSignaturesForAddressTransaction = RpcResponse<{
import { Address } from '@solana/addresses';
import { Signature } from '@solana/keys';
import { Commitment, UnixTimestamp } from '@solana/rpc-types';
import { TransactionError } from '../transaction-error.js';
import { Slot } from './common.js';
type GetSignaturesForAddressTransaction = Readonly<{
/** transaction signature as base-58 encoded string */
signature: TransactionSignature;
signature: Signature;
/** The slot that contains the block with the transaction */

@@ -29,5 +29,5 @@ slot: Slot;

/** start searching backwards from this transaction signature. If not provided the search starts from the top of the highest max confirmed block. */
before?: TransactionSignature;
before?: Signature;
/** search until this transaction signature, if found before limit reached */
until?: TransactionSignature;
until?: Signature;
}>;

@@ -39,5 +39,5 @@ export interface GetSignaturesForAddressApi {

*/
getSignaturesForAddress(address: Base58EncodedAddress, config?: GetSignaturesForAddressConfig): GetSignaturesForAddressApiResponse;
getSignaturesForAddress(address: Address, config?: GetSignaturesForAddressConfig): GetSignaturesForAddressApiResponse;
}
export {};
//# sourceMappingURL=getSignaturesForAddress.d.ts.map

@@ -1,2 +0,3 @@

import { Commitment, Slot } from './common';
import { Commitment } from '@solana/rpc-types';
import { Slot } from './common.js';
type GetSlotApiResponse = Slot;

@@ -3,0 +4,0 @@ export interface GetSlotApi {

@@ -1,2 +0,3 @@

import { Commitment, LamportsUnsafeBeyond2Pow53Minus1, RpcResponse } from './common';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';
import { RpcResponse } from './common.js';
type GetStakeMinimumDelegationApiResponse = RpcResponse<LamportsUnsafeBeyond2Pow53Minus1>;

@@ -3,0 +4,0 @@ export interface GetStakeMinimumDelegationApi {

@@ -1,3 +0,4 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1, RpcResponse } from './common';
import { Address } from '@solana/addresses';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';
import { RpcResponse } from './common.js';
type GetSupplyConfig = Readonly<{

@@ -18,3 +19,3 @@ commitment?: Commitment;

/** an array of account addresses of non-circulating accounts */
nonCirculatingAccounts: [Base58EncodedAddress];
nonCirculatingAccounts: [Address];
}>;

@@ -21,0 +22,0 @@ }>;

@@ -1,58 +0,11 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Blockhash } from '../blockhash';
import { TransactionError } from '../transaction-error';
import { UnixTimestamp } from '../unix-timestamp';
import { Base58EncodedBytes, Base58EncodedDataResponse, Base64EncodedDataResponse, Commitment, LamportsUnsafeBeyond2Pow53Minus1, Slot, TransactionVersion, U64UnsafeBeyond2Pow53Minus1 } from './common';
type TokenBalance = Readonly<{
/** Index of the account in which the token balance is provided for. */
accountIndex: number;
/** Pubkey of the token's mint. */
mint: Base58EncodedAddress;
/** Pubkey of token balance's owner. */
owner?: Base58EncodedAddress;
/** Pubkey of the Token program that owns the account. */
programId?: Base58EncodedAddress;
uiTokenAmount: {
/** Raw amount of tokens as a string, ignoring decimals. */
amount: string;
/** Number of decimals configured for token's mint. */
decimals: number;
/**
* Token amount as a float, accounting for decimals.
* @deprecated
*/
uiAmount: number | null;
/** Token amount as a string, accounting for decimals. */
uiAmountString: string;
};
}>;
type TransactionRewardBase = Readonly<{
/** The public key of the account that received the reward */
pubkey: Base58EncodedAddress;
/** number of reward lamports credited or debited by the account */
lamports: LamportsUnsafeBeyond2Pow53Minus1;
/** account balance in lamports after the reward was applied */
postBalance: LamportsUnsafeBeyond2Pow53Minus1;
}>;
type TransactionRewardWithoutCommission = TransactionRewardBase & Readonly<{
/** type of reward */
rewardType: 'fee' | 'rent';
}>;
/** Commission is present only for voting and staking rewards */
type TransactionRewardWithCommission = TransactionRewardBase & Readonly<{
/** type of reward */
rewardType: 'voting' | 'staking';
/** vote account commission when the reward was credited */
commission: number;
}>;
type TransactionReward = TransactionRewardWithoutCommission | TransactionRewardWithCommission;
/** @deprecated */
type TransactionStatus = {
Ok: null;
} | {
Err: TransactionError;
};
import { Address } from '@solana/addresses';
import { Signature } from '@solana/keys';
import { Commitment, LamportsUnsafeBeyond2Pow53Minus1, UnixTimestamp } from '@solana/rpc-types';
import { Blockhash, TransactionVersion } from '@solana/transactions';
import { TransactionError } from '../transaction-error.js';
import { Base58EncodedBytes, Base58EncodedDataResponse, Base64EncodedDataResponse, Slot, TokenBalance, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
import { Reward, TransactionStatus } from './common-transactions.js';
type ReturnData = {
/** the program that generated the return data */
programId: Base58EncodedAddress;
programId: Address;
/** the return data itself */

@@ -77,3 +30,3 @@ data: Base64EncodedDataResponse;

/** transaction-level rewards */
rewards: readonly TransactionReward[] | null;
rewards: readonly Reward[] | null;
/**

@@ -91,3 +44,3 @@ * Transaction status

/** public key for an address lookup table account. */
accountKey: Base58EncodedAddress;
accountKey: Address;
/** List of indices used to load addresses of writable accounts from a lookup table. */

@@ -111,3 +64,3 @@ writableIndexes: readonly number[];

message: {
accountKeys: readonly Base58EncodedAddress[];
accountKeys: readonly Address[];
header: {

@@ -122,5 +75,5 @@ numReadonlySignedAccounts: number;

type PartiallyDecodedTransactionInstruction = Readonly<{
accounts: readonly Base58EncodedAddress[];
accounts: readonly Address[];
data: Base58EncodedBytes;
programId: Base58EncodedAddress;
programId: Address;
}>;

@@ -133,3 +86,3 @@ type ParsedTransactionInstruction = Readonly<{

program: string;
programId: Base58EncodedAddress;
programId: Address;
}>;

@@ -140,3 +93,3 @@ type TransactionJsonParsed = TransactionBase & Readonly<{

{
pubkey: Base58EncodedAddress;
pubkey: Address;
signer: boolean;

@@ -162,4 +115,4 @@ source: string;

loadedAddresses: {
writable: readonly Base58EncodedAddress[];
readonly: readonly Base58EncodedAddress[];
writable: readonly Address[];
readonly: readonly Address[];
};

@@ -186,3 +139,3 @@ }>;

*/
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(address: Base58EncodedAddress, config: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(signature: Signature, config: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
encoding: 'jsonParsed';

@@ -195,3 +148,3 @@ }>): (GetTransactionApiResponseBase & (TMaxSupportedTransactionVersion extends void ? Record<string, never> : {

}) | null;
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(address: Base58EncodedAddress, config: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(signature: Signature, config: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
encoding: 'base64';

@@ -204,3 +157,3 @@ }>): (GetTransactionApiResponseBase & (TMaxSupportedTransactionVersion extends void ? Record<string, never> : {

}) | null;
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(address: Base58EncodedAddress, config: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(signature: Signature, config: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
encoding: 'base58';

@@ -213,3 +166,3 @@ }>): (GetTransactionApiResponseBase & (TMaxSupportedTransactionVersion extends void ? Record<string, never> : {

}) | null;
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(address: Base58EncodedAddress, config?: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
getTransaction<TMaxSupportedTransactionVersion extends TransactionVersion | void = void>(signature: Signature, config?: GetTransactionCommonConfig<TMaxSupportedTransactionVersion> & Readonly<{
encoding?: 'json';

@@ -216,0 +169,0 @@ }>): (GetTransactionApiResponseBase & (TMaxSupportedTransactionVersion extends void ? Record<string, never> : {

@@ -1,2 +0,3 @@

import { Commitment, Slot, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Commitment } from '@solana/rpc-types';
import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type GetTransactionCountApiResponse = U64UnsafeBeyond2Pow53Minus1;

@@ -3,0 +4,0 @@ export interface GetTransactionCountApi {

@@ -1,3 +0,4 @@

import { Base58EncodedAddress } from '@solana/keys';
import { Commitment, U64UnsafeBeyond2Pow53Minus1 } from './common';
import { Address } from '@solana/addresses';
import { Commitment } from '@solana/rpc-types';
import { Slot, U64UnsafeBeyond2Pow53Minus1 } from './common.js';
type Epoch = U64UnsafeBeyond2Pow53Minus1;

@@ -7,7 +8,7 @@ type Credits = U64UnsafeBeyond2Pow53Minus1;

type EpochCredit = [Epoch, Credits, PreviousCredits];
type VoteAccount<TVotePubkey extends Base58EncodedAddress> = Readonly<{
type VoteAccount<TVotePubkey extends Address> = Readonly<{
/** Vote account address */
votePubkey: TVotePubkey;
/** Validator identity */
nodePubkey: Base58EncodedAddress;
nodePubkey: Address;
/** the stake, in lamports, delegated to this vote account and active in this epoch */

@@ -24,9 +25,9 @@ activatedStake: U64UnsafeBeyond2Pow53Minus1;

/** Current root slot for this vote account */
rootSlot: U64UnsafeBeyond2Pow53Minus1;
rootSlot: Slot;
}>;
type GetVoteAccountsApiResponse<TVotePubkey extends Base58EncodedAddress> = Readonly<{
type GetVoteAccountsApiResponse<TVotePubkey extends Address> = Readonly<{
current: readonly VoteAccount<TVotePubkey>[];
delinquent: readonly VoteAccount<TVotePubkey>[];
}>;
type GetVoteAccountsConfig<TVotePubkey extends Base58EncodedAddress> = Readonly<{
type GetVoteAccountsConfig<TVotePubkey extends Address> = Readonly<{
commitment?: Commitment;

@@ -42,5 +43,5 @@ /** Only return results for this validator vote address */

/** Returns the account info and associated stake for all the voting accounts in the current bank. */
getVoteAccounts<TVoteAccount extends Base58EncodedAddress>(config?: GetVoteAccountsConfig<TVoteAccount>): GetVoteAccountsApiResponse<TVoteAccount>;
getVoteAccounts<TVoteAccount extends Address>(config?: GetVoteAccountsConfig<TVoteAccount>): GetVoteAccountsApiResponse<TVoteAccount>;
}
export {};
//# sourceMappingURL=getVoteAccounts.d.ts.map

@@ -1,29 +0,62 @@

import { IRpcApi } from '@solana/rpc-transport/dist/types/json-rpc-types';
import { GetAccountInfoApi } from './getAccountInfo';
import { GetBalanceApi } from './getBalance';
import { GetBlockHeightApi } from './getBlockHeight';
import { GetBlockProductionApi } from './getBlockProduction';
import { GetBlocksApi } from './getBlocks';
import { GetBlockTimeApi } from './getBlockTime';
import { GetEpochInfoApi } from './getEpochInfo';
import { GetFirstAvailableBlockApi } from './getFirstAvailableBlock';
import { GetInflationRewardApi } from './getInflationReward';
import { GetLatestBlockhashApi } from './getLatestBlockhash';
import { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot';
import { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot';
import { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples';
import { GetSignaturesForAddressApi } from './getSignaturesForAddress';
import { GetSlotApi } from './getSlot';
import { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation';
import { GetSupplyApi } from './getSupply';
import { GetTransactionApi } from './getTransaction';
import { GetTransactionCountApi } from './getTransactionCount';
import { GetVoteAccountsApi } from './getVoteAccounts';
import { MinimumLedgerSlotApi } from './minimumLedgerSlot';
import type { IRpcApi } from '@solana/rpc-transport';
import { GetAccountInfoApi } from './getAccountInfo.js';
import { GetBalanceApi } from './getBalance.js';
import { GetBlockApi } from './getBlock.js';
import { GetBlockCommitmentApi } from './getBlockCommitment.js';
import { GetBlockHeightApi } from './getBlockHeight.js';
import { GetBlockProductionApi } from './getBlockProduction.js';
import { GetBlocksApi } from './getBlocks.js';
import { GetBlocksWithLimitApi } from './getBlocksWithLimit.js';
import { GetBlockTimeApi } from './getBlockTime.js';
import { GetClusterNodesApi } from './getClusterNodes.js';
import { GetEpochInfoApi } from './getEpochInfo.js';
import { GetEpochScheduleApi } from './getEpochSchedule.js';
import { GetFeeForMessageApi } from './getFeeForMessage.js';
import { GetFirstAvailableBlockApi } from './getFirstAvailableBlock.js';
import { GetGenesisHashApi } from './getGenesisHash.js';
import { GetHealthApi } from './getHealth.js';
import { GetHighestSnapshotSlotApi } from './getHighestSnapshotSlot.js';
import { GetIdentityApi } from './getIdentity.js';
import { GetInflationGovernorApi } from './getInflationGovernor.js';
import { GetInflationRateApi } from './getInflationRate.js';
import { GetInflationRewardApi } from './getInflationReward.js';
import { GetLargestAccountsApi } from './getLargestAccounts.js';
import { GetLatestBlockhashApi } from './getLatestBlockhash.js';
import { GetLeaderScheduleApi } from './getLeaderSchedule.js';
import { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot.js';
import { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot.js';
import { GetMinimumBalanceForRentExemptionApi } from './getMinimumBalanceForRentExemption.js';
import { GetMultipleAccountsApi } from './getMultipleAccounts.js';
import { GetProgramAccountsApi } from './getProgramAccounts.js';
import { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples.js';
import { GetRecentPrioritizationFeesApi } from './getRecentPrioritizationFees.js';
import { GetSignaturesForAddressApi } from './getSignaturesForAddress.js';
import { GetSignatureStatusesApi } from './getSignatureStatuses.js';
import { GetSlotApi } from './getSlot.js';
import { GetSlotLeaderApi } from './getSlotLeader.js';
import { GetSlotLeadersApi } from './getSlotLeaders.js';
import { GetStakeActivationApi } from './getStakeActivation.js';
import { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation.js';
import { GetSupplyApi } from './getSupply.js';
import { GetTokenAccountBalanceApi } from './getTokenAccountBalance.js';
import { GetTokenAccountsByDelegateApi } from './getTokenAccountsByDelegate.js';
import { GetTokenAccountsByOwnerApi } from './getTokenAccountsByOwner.js';
import { GetTokenLargestAccountsApi } from './getTokenLargestAccounts.js';
import { GetTokenSupplyApi } from './getTokenSupply.js';
import { GetTransactionApi } from './getTransaction.js';
import { GetTransactionCountApi } from './getTransactionCount.js';
import { GetVersionApi } from './getVersion.js';
import { GetVoteAccountsApi } from './getVoteAccounts.js';
import { IsBlockhashValidApi } from './isBlockhashValid.js';
import { MinimumLedgerSlotApi } from './minimumLedgerSlot.js';
import { RequestAirdropApi } from './requestAirdrop.js';
import { SendTransactionApi } from './sendTransaction.js';
import { SimulateTransactionApi } from './simulateTransaction.js';
type Config = Readonly<{
onIntegerOverflow?: (methodName: string, keyPath: (number | string)[], value: bigint) => void;
}>;
export type SolanaRpcMethods = GetAccountInfoApi & GetBalanceApi & GetBlockHeightApi & GetBlockProductionApi & GetBlocksApi & GetBlockTimeApi & GetEpochInfoApi & GetFirstAvailableBlockApi & GetInflationRewardApi & GetLatestBlockhashApi & GetMaxRetransmitSlotApi & GetMaxShredInsertSlotApi & GetRecentPerformanceSamplesApi & GetSignaturesForAddressApi & GetSlotApi & GetStakeMinimumDelegationApi & GetSupplyApi & GetTransactionApi & GetTransactionCountApi & GetVoteAccountsApi & MinimumLedgerSlotApi;
export type SolanaRpcMethods = GetAccountInfoApi & GetBalanceApi & GetBlockApi & GetBlockCommitmentApi & GetBlockHeightApi & GetBlockProductionApi & GetBlocksApi & GetBlocksWithLimitApi & GetBlockTimeApi & GetClusterNodesApi & GetEpochInfoApi & GetEpochScheduleApi & GetFeeForMessageApi & GetFirstAvailableBlockApi & GetGenesisHashApi & GetHealthApi & GetHighestSnapshotSlotApi & GetIdentityApi & GetInflationGovernorApi & GetInflationRateApi & GetInflationRewardApi & GetLargestAccountsApi & GetLatestBlockhashApi & GetLeaderScheduleApi & GetMaxRetransmitSlotApi & GetMaxShredInsertSlotApi & GetMinimumBalanceForRentExemptionApi & GetMultipleAccountsApi & GetProgramAccountsApi & GetRecentPerformanceSamplesApi & GetRecentPrioritizationFeesApi & GetSignaturesForAddressApi & GetSignatureStatusesApi & GetSlotApi & GetSlotLeaderApi & GetSlotLeadersApi & GetStakeActivationApi & GetStakeMinimumDelegationApi & GetSupplyApi & GetTokenAccountBalanceApi & GetTokenAccountsByDelegateApi & GetTokenAccountsByOwnerApi & GetTokenLargestAccountsApi & GetTokenSupplyApi & GetTransactionApi & GetTransactionCountApi & GetVersionApi & GetVoteAccountsApi & IsBlockhashValidApi & MinimumLedgerSlotApi & RequestAirdropApi & SendTransactionApi & SimulateTransactionApi;
export declare function createSolanaRpcApi(config?: Config): IRpcApi<SolanaRpcMethods>;
export {};
export type { GetAccountInfoApi, GetBlockApi, GetProgramAccountsApi, GetSignatureStatusesApi, GetTransactionApi, RequestAirdropApi, SendTransactionApi, };
export type { Base64EncodedDataResponse, DataSlice, GetProgramAccountsDatasizeFilter, GetProgramAccountsMemcmpFilter, Slot, } from './common.js';
//# sourceMappingURL=index.d.ts.map

@@ -1,2 +0,2 @@

import { Slot } from './common';
import { Slot } from './common.js';
type MinimumLedgerSlotApiResponse = Slot;

@@ -3,0 +3,0 @@ export interface MinimumLedgerSlotApi {

{
"name": "@solana/rpc-core",
"version": "2.0.0-experimental.9409822",
"version": "2.0.0-experimental.9741939",
"description": "A library for making calls to the Solana JSON RPC API",

@@ -48,33 +48,31 @@ "exports": {

],
"dependencies": {
"bs58": "^5.0.0",
"@solana/keys": "2.0.0-experimental.9409822"
},
"devDependencies": {
"@solana/eslint-config-solana": "^1.0.1",
"@swc/core": "^1.3.18",
"@swc/jest": "^0.2.23",
"@types/jest": "^29.5.0",
"@typescript-eslint/eslint-plugin": "^5.57.1",
"@typescript-eslint/parser": "^5.57.1",
"@solana/eslint-config-solana": "^1.0.2",
"@swc/jest": "^0.2.29",
"@types/jest": "^29.5.11",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.3.0",
"agadoo": "^3.0.0",
"eslint": "^8.37.0",
"eslint-plugin-jest": "^27.1.5",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint": "^8.45.0",
"eslint-plugin-jest": "^27.4.2",
"eslint-plugin-sort-keys-fix": "^1.1.2",
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-fetch-mock-fork": "^3.0.4",
"jest-runner-eslint": "^2.0.0",
"jest-runner-eslint": "^2.1.2",
"jest-runner-prettier": "^1.0.0",
"postcss": "^8.4.12",
"prettier": "^2.7.1",
"ts-node": "^10.9.1",
"tsup": "6.7.0",
"typescript": "^5.0.3",
"prettier": "^3.1",
"tsup": "^8.0.1",
"typescript": "^5.2.2",
"version-from-git": "^1.1.1",
"@solana/rpc-transport": "2.0.0-experimental.9409822",
"@solana/addresses": "2.0.0-experimental.9741939",
"@solana/codecs-strings": "2.0.0-experimental.9741939",
"@solana/codecs-core": "2.0.0-experimental.9741939",
"@solana/keys": "2.0.0-experimental.9741939",
"@solana/rpc-transport": "2.0.0-experimental.9741939",
"@solana/rpc-types": "2.0.0-experimental.9741939",
"@solana/transactions": "2.0.0-experimental.9741939",
"build-scripts": "0.0.0",
"test-config": "0.0.0",
"tsconfig": "0.0.0"
"tsconfig": "0.0.0",
"test-config": "0.0.0"
},

@@ -91,10 +89,11 @@ "bundlewatch": {

"compile:js": "tsup --config build-scripts/tsup.config.package.ts",
"compile:typedefs": "tsc -p ./tsconfig.declarations.json",
"compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/build-scripts/add-js-extension-to-types.mjs",
"dev": "jest -c node_modules/test-config/jest-dev.config.ts --globalSetup test-config/test-validator-setup.js --globalTeardown test-config/test-validator-teardown.js --rootDir . --watch",
"publish-packages": "pnpm publish --tag experimental --access public --no-git-checks",
"style:fix": "pnpm eslint --fix src/* && pnpm prettier -w src/* package.json",
"test:lint": "jest -c node_modules/test-config/jest-lint.config.ts --rootDir . --silent",
"test:prettier": "jest -c node_modules/test-config/jest-prettier.config.ts --rootDir . --silent",
"test:treeshakability:browser": "agadoo dist/index.browser.js",
"test:treeshakability:native": "agadoo dist/index.node.js",
"test:treeshakability:node": "agadoo dist/index.native.js",
"test:treeshakability:native": "agadoo dist/index.native.js",
"test:treeshakability:node": "agadoo dist/index.node.js",
"test:typecheck": "tsc --noEmit",

@@ -101,0 +100,0 @@ "test:unit:browser": "jest -c node_modules/test-config/jest-unit.config.browser.ts --globalSetup test-config/test-validator-setup.js --globalTeardown test-config/test-validator-teardown.js --rootDir . --silent",

@@ -18,7 +18,1 @@ [![npm][npm-image]][npm-url]

This package defines a specification of the [Solana JSON-RPC](https://docs.solana.com/api/http). The inputs and outputs of each RPC method are described in terms of Typescript interfaces. You generally will not need to depend on this package directly, but rather use it as part of the RPC creation functions of the Solana JavaScript SDK [`@solana/web3.js@experimental`](https://github.com/solana-labs/solana-web3.js/tree/master/packages/library).
## Contributing
As of this moment, this package does not represent a specification of the full set of Solana JSON-RPC methods. If you find that you have need of a method that has not yet been specified, we would be grateful if you submitted a specification for it.
Read the RPC method specification [contribution guide](https://github.com/solana-labs/solana-web3.js/issues/1278) to get started.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc