chore: pull monorepo changes (#119)
* Project import generated by Copybara. GitOrigin-RevId: 8e1fcb690780885a2aa28fb132c00ed984c24f14 * chore: manual cleanup --------- Co-authored-by: Copybara <copybara@example.com>
This commit is contained in:
parent
5e4cde758c
commit
9dc3df8a5a
|
@ -18,9 +18,9 @@
|
||||||
"@project-serum/borsh": "^0.2.5",
|
"@project-serum/borsh": "^0.2.5",
|
||||||
"@solana/spl-token": "^0.3.8",
|
"@solana/spl-token": "^0.3.8",
|
||||||
"@solana/web3.js": "^1.78.3",
|
"@solana/web3.js": "^1.78.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/oracle": "latest",
|
"@switchboard-xyz/oracle": "latest",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4",
|
"@switchboard-xyz/solana.js": "^2.5.6",
|
||||||
"chalk": "^4.1.2",
|
"chalk": "^4.1.2",
|
||||||
"dotenv": "^16.0.1",
|
"dotenv": "^16.0.1",
|
||||||
"yargs": "^17.5.1"
|
"yargs": "^17.5.1"
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@coral-xyz/anchor": "^0.28.0",
|
"@coral-xyz/anchor": "^0.28.0",
|
||||||
"@solana/web3.js": "^1.77.3",
|
"@solana/web3.js": "^1.77.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/oracle": "latest",
|
"@switchboard-xyz/oracle": "latest",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4"
|
"@switchboard-xyz/solana.js": "^2.5.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/chai": "^4.3.0",
|
"@types/chai": "^4.3.0",
|
||||||
|
|
|
@ -19,6 +19,6 @@ cpi = ["no-entrypoint"]
|
||||||
default = []
|
default = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
switchboard-solana = "0.28.4"
|
switchboard-solana = "=0.28.6"
|
||||||
# switchboard-solana = { version = "0.28.4", path = "../../../rust/switchboard-solana" }
|
# switchboard-solana = { version = "0.28.4", path = "../../../rust/switchboard-solana" }
|
||||||
bytemuck = "^1"
|
bytemuck = "^1"
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@coral-xyz/anchor": "^0.28.0",
|
"@coral-xyz/anchor": "^0.28.0",
|
||||||
"@solana/spl-token": "^0.3.8",
|
"@solana/spl-token": "^0.3.6",
|
||||||
"@solana/web3.js": "^1.78.4",
|
"@solana/web3.js": "^1.78.0",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4"
|
"@switchboard-xyz/solana.js": "^2.5.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bn.js": "^5.1.0",
|
"@types/bn.js": "^5.1.0",
|
||||||
|
|
|
@ -16,6 +16,6 @@ futures = "0.3"
|
||||||
serde = "^1"
|
serde = "^1"
|
||||||
serde_json = "^1"
|
serde_json = "^1"
|
||||||
switchboard-utils = "0.8.0"
|
switchboard-utils = "0.8.0"
|
||||||
switchboard-solana = "0.28.4"
|
switchboard-solana = "=0.28.6"
|
||||||
# switchboard-solana = { version = "0.28.4", path = "../../../../rust/switchboard-solana" }
|
# switchboard-solana = { version = "0.28.4", path = "../../../../rust/switchboard-solana" }
|
||||||
# switchboard-utils = { version = "0.8.0", path = "../../../../../../rust/switchboard-utils" }
|
# switchboard-utils = { version = "0.8.0", path = "../../../../../../rust/switchboard-utils" }
|
||||||
|
|
|
@ -9,16 +9,16 @@ DOCKER_BUILD_COMMAND=DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd6
|
||||||
# Default make task
|
# Default make task
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
docker_build:
|
docker_build:
|
||||||
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile -t ${DOCKER_IMAGE_NAME}:latest --load ../
|
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile -t ${DOCKER_IMAGE_NAME}:latest --load ../
|
||||||
|
|
||||||
docker_publish:
|
docker_publish:
|
||||||
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile -t ${DOCKER_IMAGE_NAME}:latest --push ../
|
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile -t ${DOCKER_IMAGE_NAME}:latest --push ../
|
||||||
|
|
||||||
dev_docker_build:
|
dev_docker_build:
|
||||||
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile.dev -t ${DOCKER_IMAGE_NAME}:latest --load ../../../../../../
|
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile.dev -t ${DOCKER_IMAGE_NAME}:latest --load ../../../../../../
|
||||||
|
|
||||||
dev_docker_publish:
|
dev_docker_publish:
|
||||||
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile.dev -t ${DOCKER_IMAGE_NAME}:latest --push ../../../../../../
|
${DOCKER_BUILD_COMMAND} --pull -f Dockerfile.dev -t ${DOCKER_IMAGE_NAME}:latest --push ../../../../../../
|
||||||
|
|
||||||
build: docker_build measurement
|
build: docker_build measurement
|
||||||
|
@ -30,15 +30,16 @@ publish: docker_publish measurement
|
||||||
dev_publish: dev_docker_publish measurement
|
dev_publish: dev_docker_publish measurement
|
||||||
|
|
||||||
measurement:
|
measurement:
|
||||||
@docker run -d --platform=linux/amd64 --pull always -q --name=my-switchboard-function ${DOCKER_IMAGE_NAME}:latest > /dev/null
|
@docker run -d --platform=linux/amd64 -q --name=my-switchboard-function ${DOCKER_IMAGE_NAME}:latest > /dev/null
|
||||||
@docker cp my-switchboard-function:/measurement.txt measurement.txt
|
@docker cp my-switchboard-function:/measurement.txt measurement.txt
|
||||||
|
@echo -n 'MrEnclve: '
|
||||||
|
@cat measurement.txt
|
||||||
@docker stop my-switchboard-function > /dev/null
|
@docker stop my-switchboard-function > /dev/null
|
||||||
@docker rm my-switchboard-function > /dev/null
|
@docker rm my-switchboard-function > /dev/null
|
||||||
@echo MrEnclave: $(shell cat ./measurement.txt)
|
|
||||||
|
|
||||||
simulate: docker_build
|
simulate: docker_build
|
||||||
docker run -it --platform=linux/amd64 --entrypoint=/bin/bash ${DOCKER_IMAGE_NAME}:latest /boot.sh --test
|
docker run -it --platform=linux/amd64 --entrypoint=/bin/bash ${DOCKER_IMAGE_NAME}:latest /boot.sh --test
|
||||||
|
|
||||||
# Task to clean up the compiled rust application
|
# Task to clean up the compiled rust application
|
||||||
clean:
|
clean:
|
||||||
cargo clean
|
cargo clean
|
||||||
|
@ -48,4 +49,4 @@ clean:
|
||||||
# @docker cp latest-my-switchboard-function:/measurement.txt latest-measurement.txt
|
# @docker cp latest-my-switchboard-function:/measurement.txt latest-measurement.txt
|
||||||
# @docker stop latest-my-switchboard-function > /dev/null
|
# @docker stop latest-my-switchboard-function > /dev/null
|
||||||
# @docker rm latest-my-switchboard-function > /dev/null
|
# @docker rm latest-my-switchboard-function > /dev/null
|
||||||
# @echo latest MrEnclave: $(shell rm ./latest-measurement.txt)
|
# @echo latest MrEnclave: $(shell rm ./latest-measurement.txt)
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
"@coral-xyz/anchor": "^0.28.0",
|
"@coral-xyz/anchor": "^0.28.0",
|
||||||
"@solana/spl-token": "^0.3.8",
|
"@solana/spl-token": "^0.3.8",
|
||||||
"@solana/web3.js": "^1.78.3",
|
"@solana/web3.js": "^1.78.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4"
|
"@switchboard-xyz/solana.js": "^2.5.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bn.js": "^5.1.0",
|
"@types/bn.js": "^5.1.0",
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
"@coral-xyz/anchor": "^0.28.0",
|
"@coral-xyz/anchor": "^0.28.0",
|
||||||
"@solana/spl-token": "^0.3.8",
|
"@solana/spl-token": "^0.3.8",
|
||||||
"@solana/web3.js": "^1.78.3",
|
"@solana/web3.js": "^1.78.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4"
|
"@switchboard-xyz/solana.js": "^2.5.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bn.js": "^5.1.0",
|
"@types/bn.js": "^5.1.0",
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
"@coral-xyz/anchor": "^0.27.0",
|
"@coral-xyz/anchor": "^0.27.0",
|
||||||
"@solana/spl-token": "^0.3.8",
|
"@solana/spl-token": "^0.3.8",
|
||||||
"@solana/web3.js": "^1.78.3",
|
"@solana/web3.js": "^1.78.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4",
|
"@switchboard-xyz/solana.js": "^2.5.6",
|
||||||
"dotenv": "^16.3.1"
|
"dotenv": "^16.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@coral-xyz/anchor": "^0.28.0",
|
"@coral-xyz/anchor": "^0.28.0",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4"
|
"@switchboard-xyz/solana.js": "^2.5.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bn.js": "^5.1.0",
|
"@types/bn.js": "^5.1.0",
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
"@project-serum/borsh": "^0.2.5",
|
"@project-serum/borsh": "^0.2.5",
|
||||||
"@solana/spl-token": "^0.3.6",
|
"@solana/spl-token": "^0.3.6",
|
||||||
"@solana/web3.js": "^1.77.3",
|
"@solana/web3.js": "^1.77.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.4",
|
||||||
"@switchboard-xyz/oracle": "latest",
|
"@switchboard-xyz/oracle": "latest",
|
||||||
"@switchboard-xyz/solana.js": "^2.5.4",
|
"@switchboard-xyz/solana.js": "^2.5.6",
|
||||||
"chalk": "^4.1.2",
|
"chalk": "^4.1.2",
|
||||||
"dotenv": "^16.0.1",
|
"dotenv": "^16.0.1",
|
||||||
"yargs": "^17.5.1"
|
"yargs": "^17.5.1"
|
||||||
|
|
|
@ -2,6 +2,11 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"name": "switchboard_attestation_program",
|
"name": "switchboard_attestation_program",
|
||||||
"instructions": [
|
"instructions": [
|
||||||
|
{
|
||||||
|
"name": "viewVersion",
|
||||||
|
"accounts": [],
|
||||||
|
"args": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "stateInit",
|
"name": "stateInit",
|
||||||
"accounts": [
|
"accounts": [
|
||||||
|
|
|
@ -2,6 +2,11 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"name": "switchboard_v2",
|
"name": "switchboard_v2",
|
||||||
"instructions": [
|
"instructions": [
|
||||||
|
{
|
||||||
|
"name": "viewVersion",
|
||||||
|
"accounts": [],
|
||||||
|
"args": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "aggregatorClose",
|
"name": "aggregatorClose",
|
||||||
"accounts": [
|
"accounts": [
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@switchboard-xyz/solana.js",
|
"name": "@switchboard-xyz/solana.js",
|
||||||
"version": "2.5.4",
|
"version": "2.5.6",
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"description": "A Typescript client to interact with Switchboard on Solana.",
|
"description": "A Typescript client to interact with Switchboard on Solana.",
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
"@coral-xyz/borsh": "^0.28.0",
|
"@coral-xyz/borsh": "^0.28.0",
|
||||||
"@solana/spl-token": "^0.3.8",
|
"@solana/spl-token": "^0.3.8",
|
||||||
"@solana/web3.js": "^1.78.3",
|
"@solana/web3.js": "^1.78.3",
|
||||||
"@switchboard-xyz/common": "^2.3.2",
|
"@switchboard-xyz/common": "^2.3.3",
|
||||||
"cron-validator": "^1.3.1",
|
"cron-validator": "^1.3.1",
|
||||||
"dotenv": "^16.3.1",
|
"dotenv": "^16.3.1",
|
||||||
"lodash": "^4.17.21"
|
"lodash": "^4.17.21"
|
||||||
|
|
|
@ -47,11 +47,14 @@ const ignoreFiles = [
|
||||||
`${v2GeneratedPath}/types/Lanes.ts`, // anchor-client-gen struggles with dual exports
|
`${v2GeneratedPath}/types/Lanes.ts`, // anchor-client-gen struggles with dual exports
|
||||||
`${v2GeneratedPath}/types/index.ts`, // TODO: Need a better way to handle this. anchor-client-gen adds multiple, broken exports (for VRF builder)
|
`${v2GeneratedPath}/types/index.ts`, // TODO: Need a better way to handle this. anchor-client-gen adds multiple, broken exports (for VRF builder)
|
||||||
`${v2GeneratedPath}/errors/index.ts`, // need to revert the program ID check,
|
`${v2GeneratedPath}/errors/index.ts`, // need to revert the program ID check,
|
||||||
|
`${v2GeneratedPath}/instructions/viewVersion.ts`,
|
||||||
`${attestationGeneratedPath}/types/VerificationStatus.ts`,
|
`${attestationGeneratedPath}/types/VerificationStatus.ts`,
|
||||||
`${attestationGeneratedPath}/errors/index.ts`,
|
`${attestationGeneratedPath}/errors/index.ts`,
|
||||||
`${attestationGeneratedPath}/types/SwitchboardAttestationPermission.ts`,
|
`${attestationGeneratedPath}/types/SwitchboardAttestationPermission.ts`,
|
||||||
`${attestationGeneratedPath}/instructions/functionDeactivateLookup.ts`,
|
`${attestationGeneratedPath}/instructions/functionDeactivateLookup.ts`,
|
||||||
`${attestationGeneratedPath}/instructions/accountCloseOverride.ts`,
|
`${attestationGeneratedPath}/instructions/accountCloseOverride.ts`,
|
||||||
|
`${attestationGeneratedPath}/instructions/viewVersion.ts`,
|
||||||
|
`${attestationGeneratedPath}/instructions/index.ts`, // make sure to disable this if adding more attestation program instructions. used to avoid name conflict on viewVersion ixn
|
||||||
// `${v2GeneratedPath}/types/VerificationStatus.ts`,
|
// `${v2GeneratedPath}/types/VerificationStatus.ts`,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import {
|
||||||
ProgramStateAccount,
|
ProgramStateAccount,
|
||||||
QueueAccount,
|
QueueAccount,
|
||||||
} from "./accounts/index.js";
|
} from "./accounts/index.js";
|
||||||
|
import { viewVersion as viewAttestationVersion } from "./generated/attestation-program/instructions/viewVersion.js";
|
||||||
import {
|
import {
|
||||||
AggregatorAccountData,
|
AggregatorAccountData,
|
||||||
BufferRelayerAccountData,
|
BufferRelayerAccountData,
|
||||||
|
@ -24,6 +25,7 @@ import {
|
||||||
SlidingResultAccountData,
|
SlidingResultAccountData,
|
||||||
VrfAccountData,
|
VrfAccountData,
|
||||||
} from "./generated/index.js";
|
} from "./generated/index.js";
|
||||||
|
import { viewVersion as viewSbVersion } from "./generated/oracle-program/instructions/viewVersion.js";
|
||||||
import {
|
import {
|
||||||
DEVNET_GENESIS_HASH,
|
DEVNET_GENESIS_HASH,
|
||||||
MAINNET_GENESIS_HASH,
|
MAINNET_GENESIS_HASH,
|
||||||
|
@ -46,6 +48,7 @@ import type { LoadedJobDefinition } from "./types.js";
|
||||||
import type { AccountNamespace, Idl, Wallet } from "@coral-xyz/anchor";
|
import type { AccountNamespace, Idl, Wallet } from "@coral-xyz/anchor";
|
||||||
import {
|
import {
|
||||||
ACCOUNT_DISCRIMINATOR_SIZE,
|
ACCOUNT_DISCRIMINATOR_SIZE,
|
||||||
|
AnchorError,
|
||||||
AnchorProvider,
|
AnchorProvider,
|
||||||
BorshAccountsCoder,
|
BorshAccountsCoder,
|
||||||
Program,
|
Program,
|
||||||
|
@ -60,9 +63,13 @@ import type {
|
||||||
SendOptions,
|
SendOptions,
|
||||||
Transaction,
|
Transaction,
|
||||||
TransactionSignature,
|
TransactionSignature,
|
||||||
|
} from "@solana/web3.js";
|
||||||
|
import {
|
||||||
|
Keypair,
|
||||||
|
PublicKey,
|
||||||
|
TransactionMessage,
|
||||||
VersionedTransaction,
|
VersionedTransaction,
|
||||||
} from "@solana/web3.js";
|
} from "@solana/web3.js";
|
||||||
import { Keypair, PublicKey } from "@solana/web3.js";
|
|
||||||
import { OracleJob } from "@switchboard-xyz/common";
|
import { OracleJob } from "@switchboard-xyz/common";
|
||||||
|
|
||||||
export type SendTransactionOptions = (ConfirmOptions | SendOptions) & {
|
export type SendTransactionOptions = (ConfirmOptions | SendOptions) & {
|
||||||
|
@ -429,6 +436,53 @@ export class SwitchboardProgram {
|
||||||
return program;
|
return program;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public async getGitVersion(): Promise<string> {
|
||||||
|
const messageV0 = new TransactionMessage({
|
||||||
|
payerKey: this.walletPubkey,
|
||||||
|
instructions: [
|
||||||
|
await this._program.methods.viewVersion().accounts({}).instruction(),
|
||||||
|
],
|
||||||
|
recentBlockhash: (await this.connection.getLatestBlockhash()).blockhash,
|
||||||
|
}).compileToLegacyMessage();
|
||||||
|
const simulationResult = await this.connection.simulateTransaction(
|
||||||
|
new VersionedTransaction(messageV0),
|
||||||
|
{ sigVerify: false }
|
||||||
|
);
|
||||||
|
const logs = (simulationResult.value?.logs ?? []).join("\n");
|
||||||
|
const version = extractVersion(logs);
|
||||||
|
if (version) {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`Failed to yield the git version in the view_version simulation result`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async getAttestationGitVersion(): Promise<string> {
|
||||||
|
const messageV0 = new TransactionMessage({
|
||||||
|
payerKey: this.walletPubkey,
|
||||||
|
instructions: [
|
||||||
|
await this._attestationProgram.methods
|
||||||
|
.viewVersion()
|
||||||
|
.accounts({})
|
||||||
|
.instruction(),
|
||||||
|
],
|
||||||
|
recentBlockhash: (await this.connection.getLatestBlockhash()).blockhash,
|
||||||
|
}).compileToLegacyMessage();
|
||||||
|
const simulationResult = await this.connection.simulateTransaction(
|
||||||
|
new VersionedTransaction(messageV0),
|
||||||
|
{ sigVerify: false }
|
||||||
|
);
|
||||||
|
const logs = (simulationResult.value?.logs ?? []).join("\n");
|
||||||
|
const version = extractVersion(logs);
|
||||||
|
if (version) {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`Failed to yield the git version in the view_version simulation result`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the Switchboard V2 Program ID for the currently connected cluster.
|
* Retrieves the Switchboard V2 Program ID for the currently connected cluster.
|
||||||
* @return The PublicKey of the Switchboard V2 Program ID.
|
* @return The PublicKey of the Switchboard V2 Program ID.
|
||||||
|
@ -1040,3 +1094,9 @@ interface AccountInfoResponse {
|
||||||
pubkey: PublicKey;
|
pubkey: PublicKey;
|
||||||
account: AccountInfo<Buffer>;
|
account: AccountInfo<Buffer>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extractVersion(input: string): string | null {
|
||||||
|
const regex = /VERSION: (\S+)/;
|
||||||
|
const match = input.match(regex);
|
||||||
|
return match ? match[1] : null;
|
||||||
|
}
|
||||||
|
|
|
@ -37,7 +37,9 @@ export interface ITransactionObject extends Required<TransactionObjectOptions> {
|
||||||
|
|
||||||
export interface TransactionObjectOptions {
|
export interface TransactionObjectOptions {
|
||||||
enableDurableNonce?: boolean;
|
enableDurableNonce?: boolean;
|
||||||
|
/** The number of lamports to affix to the transaction. */
|
||||||
computeUnitPrice?: number;
|
computeUnitPrice?: number;
|
||||||
|
/** The number of compute units for the transaction. */
|
||||||
computeUnitLimit?: number;
|
computeUnitLimit?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +129,8 @@ export class TransactionObject implements ITransactionObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
const priorityTxn = TransactionObject.getComputeUnitPriceIxn(
|
const priorityTxn = TransactionObject.getComputeUnitPriceIxn(
|
||||||
options?.computeUnitPrice
|
options?.computeUnitPrice,
|
||||||
|
options?.computeUnitLimit
|
||||||
);
|
);
|
||||||
if (
|
if (
|
||||||
priorityTxn !== undefined &&
|
priorityTxn !== undefined &&
|
||||||
|
@ -178,11 +181,18 @@ export class TransactionObject implements ITransactionObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
static getComputeUnitPriceIxn(
|
static getComputeUnitPriceIxn(
|
||||||
computeUnitPrice?: number
|
computeUnitPrice?: number, // lamports
|
||||||
|
_computeUnitLimit?: number
|
||||||
): TransactionInstruction | undefined {
|
): TransactionInstruction | undefined {
|
||||||
|
// calculatePriorityFee = 100 Lamports
|
||||||
|
// computeUnitLimit = 250,000 CUs
|
||||||
|
// lamports / CU = 100 / 250,000 = 0.0004 Lamports / CUs
|
||||||
|
// microLamports = 0.0004 * 10e6 = 4000 microLamports / CU
|
||||||
if (computeUnitPrice && computeUnitPrice > 0) {
|
if (computeUnitPrice && computeUnitPrice > 0) {
|
||||||
return ComputeBudgetProgram.setComputeUnitPrice({
|
return ComputeBudgetProgram.setComputeUnitPrice({
|
||||||
microLamports: computeUnitPrice,
|
microLamports: Math.round(
|
||||||
|
(computeUnitPrice / (_computeUnitLimit ?? 250000)) * 1000000
|
||||||
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ import type {
|
||||||
TransactionPackOptions,
|
TransactionPackOptions,
|
||||||
} from "../TransactionObject.js";
|
} from "../TransactionObject.js";
|
||||||
import { TransactionObject } from "../TransactionObject.js";
|
import { TransactionObject } from "../TransactionObject.js";
|
||||||
|
import { calculatePriorityFee } from "../utils.js";
|
||||||
|
|
||||||
import type { OnAccountChangeCallback } from "./account.js";
|
import type { OnAccountChangeCallback } from "./account.js";
|
||||||
import { Account } from "./account.js";
|
import { Account } from "./account.js";
|
||||||
|
@ -2272,32 +2273,28 @@ export class AggregatorAccount extends Account<AggregatorAccountData> {
|
||||||
timestamp = Math.round(Date.now() / 1000),
|
timestamp = Math.round(Date.now() / 1000),
|
||||||
baseFee = 0 // base compute unit price
|
baseFee = 0 // base compute unit price
|
||||||
): number {
|
): number {
|
||||||
// parse defaults
|
const currentRoundOpenTimestamp =
|
||||||
|
aggregator.currentRound.roundOpenTimestamp.toNumber();
|
||||||
|
const latestConfirmedOpenTimestamp =
|
||||||
|
aggregator.latestConfirmedRound.roundOpenTimestamp.toNumber();
|
||||||
|
|
||||||
const lastUpdateTimestamp =
|
const lastUpdateTimestamp =
|
||||||
aggregator.latestConfirmedRound.roundOpenTimestamp.gt(new BN(0))
|
latestConfirmedOpenTimestamp === 0
|
||||||
? aggregator.latestConfirmedRound.roundOpenTimestamp.toNumber()
|
? timestamp
|
||||||
: timestamp; // on first update this would cause max multiplier
|
: // if we use the latest confirmed timestamp then its a race to confirm first
|
||||||
const priorityFeeBumpPeriod = Math.max(1, aggregator.priorityFeeBumpPeriod); // cant divide by 0
|
// only the first responder will be fully reimbursed for their priority fee
|
||||||
const maxPriorityFeeMultiplier = Math.max(
|
aggregator.resolutionMode.kind === "ModeSlidingResolution"
|
||||||
1,
|
? Math.min(currentRoundOpenTimestamp, latestConfirmedOpenTimestamp)
|
||||||
|
: latestConfirmedOpenTimestamp;
|
||||||
|
|
||||||
|
return calculatePriorityFee(
|
||||||
|
timestamp,
|
||||||
|
lastUpdateTimestamp,
|
||||||
|
aggregator.basePriorityFee + baseFee,
|
||||||
|
aggregator.priorityFeeBump,
|
||||||
|
aggregator.priorityFeeBumpPeriod,
|
||||||
aggregator.maxPriorityFeeMultiplier
|
aggregator.maxPriorityFeeMultiplier
|
||||||
);
|
);
|
||||||
|
|
||||||
// calculate staleness multiplier
|
|
||||||
const multiplier = Math.min(
|
|
||||||
(timestamp - lastUpdateTimestamp) / priorityFeeBumpPeriod,
|
|
||||||
maxPriorityFeeMultiplier
|
|
||||||
);
|
|
||||||
|
|
||||||
const feeBump = aggregator.priorityFeeBump * multiplier;
|
|
||||||
const fee = baseFee + aggregator.basePriorityFee + feeBump;
|
|
||||||
if (Number.isNaN(fee)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Should we enforce some upper limit? Like 1 SOL?
|
|
||||||
// Probably not, gives MEV bots a floor
|
|
||||||
return Math.round(fee);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Fetch the balance of an aggregator's lease */
|
/** Fetch the balance of an aggregator's lease */
|
||||||
|
|
|
@ -609,6 +609,17 @@ export class OracleAccount extends Account<types.OracleAccountData> {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (params.unwrap) {
|
if (params.unwrap) {
|
||||||
|
const withdrawDestination = params.withdrawAccount ?? payer;
|
||||||
|
const withdrawDestinationAccountInfo =
|
||||||
|
await this.program.connection.getAccountInfo(withdrawDestination);
|
||||||
|
if (
|
||||||
|
!withdrawDestinationAccountInfo?.owner.equals(SystemProgram.programId)
|
||||||
|
) {
|
||||||
|
throw new Error(
|
||||||
|
`'withdrawAccount' must be owned by the SystemProgram if 'unwrap' is true`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const ephemeralWallet = Keypair.generate();
|
const ephemeralWallet = Keypair.generate();
|
||||||
|
|
||||||
const ixns = [
|
const ixns = [
|
||||||
|
@ -654,7 +665,7 @@ export class OracleAccount extends Account<types.OracleAccountData> {
|
||||||
),
|
),
|
||||||
spl.createCloseAccountInstruction(
|
spl.createCloseAccountInstruction(
|
||||||
ephemeralWallet.publicKey,
|
ephemeralWallet.publicKey,
|
||||||
oracle.oracleAuthority,
|
withdrawDestination,
|
||||||
payer
|
payer
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
@ -675,6 +686,19 @@ export class OracleAccount extends Account<types.OracleAccountData> {
|
||||||
? params.withdrawAccount
|
? params.withdrawAccount
|
||||||
: this.program.mint.getAssociatedAddress(payer);
|
: this.program.mint.getAssociatedAddress(payer);
|
||||||
|
|
||||||
|
const withdrawAccountInfo = await this.program.mint.getAccount(
|
||||||
|
withdrawAccount
|
||||||
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
!withdrawAccountInfo ||
|
||||||
|
!withdrawAccountInfo.owner.equals(spl.TOKEN_PROGRAM_ID)
|
||||||
|
) {
|
||||||
|
throw new Error(
|
||||||
|
`'withdrawAccount' must be initialized and owned by the TokenProgram if 'unwrap' is false`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const withdrawIxn = types.oracleWithdraw(
|
const withdrawIxn = types.oracleWithdraw(
|
||||||
this.program,
|
this.program,
|
||||||
{
|
{
|
||||||
|
@ -852,6 +876,8 @@ export interface OracleWithdrawBaseParams {
|
||||||
|
|
||||||
export interface OracleWithdrawUnwrapParams extends OracleWithdrawBaseParams {
|
export interface OracleWithdrawUnwrapParams extends OracleWithdrawBaseParams {
|
||||||
unwrap: true;
|
unwrap: true;
|
||||||
|
/** System account where the unwrapped tokens will be sent. Defaults to the payer. */
|
||||||
|
withdrawAccount?: PublicKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OracleWithdrawWalletParams extends OracleWithdrawBaseParams {
|
export interface OracleWithdrawWalletParams extends OracleWithdrawBaseParams {
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import type { SwitchboardProgram } from "../../../SwitchboardProgram.js";
|
||||||
|
import * as types from "../types/index.js"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
|
||||||
|
import * as borsh from "@coral-xyz/borsh"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
import type { AccountMeta, PublicKey } from "@solana/web3.js";
|
||||||
|
import { TransactionInstruction } from "@solana/web3.js"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
import { BN } from "@switchboard-xyz/common"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
|
||||||
|
export function viewVersion(programId: PublicKey) {
|
||||||
|
const keys: Array<AccountMeta> = [];
|
||||||
|
const identifier = Buffer.from([213, 222, 182, 245, 222, 107, 62, 71]);
|
||||||
|
const data = identifier;
|
||||||
|
const ix = new TransactionInstruction({ keys, programId, data });
|
||||||
|
return ix;
|
||||||
|
}
|
|
@ -160,6 +160,7 @@ export type {
|
||||||
VaultTransferArgs,
|
VaultTransferArgs,
|
||||||
} from "./vaultTransfer.js";
|
} from "./vaultTransfer.js";
|
||||||
export { vaultTransfer } from "./vaultTransfer.js";
|
export { vaultTransfer } from "./vaultTransfer.js";
|
||||||
|
export { viewVersion } from "./viewVersion.js";
|
||||||
export type {
|
export type {
|
||||||
VrfCloseActionAccounts,
|
VrfCloseActionAccounts,
|
||||||
VrfCloseActionArgs,
|
VrfCloseActionArgs,
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import type { SwitchboardProgram } from "../../../SwitchboardProgram.js";
|
||||||
|
import * as types from "../types/index.js"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
|
||||||
|
import * as borsh from "@coral-xyz/borsh"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
import type { AccountMeta, PublicKey } from "@solana/web3.js";
|
||||||
|
import { TransactionInstruction } from "@solana/web3.js"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
import { BN } from "@switchboard-xyz/common"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
|
||||||
|
export function viewVersion(programId: PublicKey) {
|
||||||
|
const keys: Array<AccountMeta> = [];
|
||||||
|
const identifier = Buffer.from([213, 222, 182, 245, 222, 107, 62, 71]);
|
||||||
|
const data = identifier;
|
||||||
|
const ix = new TransactionInstruction({ keys, programId, data });
|
||||||
|
return ix;
|
||||||
|
}
|
|
@ -278,3 +278,31 @@ export function numToBN(num?: number | BN, defaultVal = 0): BN {
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function calculatePriorityFee(
|
||||||
|
timestamp: number,
|
||||||
|
roundOpenTimestamp: number,
|
||||||
|
basePriorityFee: number,
|
||||||
|
priorityFeeBump: number,
|
||||||
|
priorityFeeBumpPeriod: number,
|
||||||
|
maxPriorityFeeMultiplier: number
|
||||||
|
): number {
|
||||||
|
if (priorityFeeBumpPeriod <= 0) {
|
||||||
|
return basePriorityFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maxPriorityFeeMultiplier <= 0) {
|
||||||
|
return basePriorityFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
const staleness = Math.round(timestamp - roundOpenTimestamp);
|
||||||
|
if (staleness <= 0) {
|
||||||
|
return basePriorityFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
const feeMultiplier = Math.floor(staleness / priorityFeeBumpPeriod) - 1;
|
||||||
|
const multiplier =
|
||||||
|
feeMultiplier > 0 ? Math.min(feeMultiplier, maxPriorityFeeMultiplier) : 0;
|
||||||
|
|
||||||
|
return Math.floor(priorityFeeBump * multiplier + basePriorityFee);
|
||||||
|
}
|
||||||
|
|
|
@ -1,85 +1,48 @@
|
||||||
/* eslint-disable no-unused-vars */
|
/* eslint-disable no-unused-vars */
|
||||||
import "mocha";
|
import "mocha";
|
||||||
|
|
||||||
import { AggregatorAccount, types } from "../src/index.js";
|
import { calculatePriorityFee } from "../src/index.js";
|
||||||
|
|
||||||
import { BN } from "@switchboard-xyz/common";
|
|
||||||
import assert from "assert";
|
import assert from "assert";
|
||||||
|
|
||||||
describe("Priority Fees Tests", () => {
|
describe("Priority Fees Tests", () => {
|
||||||
const defaultState = AggregatorAccount.default();
|
it("Calculates priority fee with empty values", async () => {
|
||||||
|
const fee = calculatePriorityFee(10000000, 0, 0, 0, 0, 0);
|
||||||
const startingTimestamp = 100;
|
assert(fee === 0, "PriorityFeeMismatch");
|
||||||
const basePriorityFee = 1000; // always bump fee by 1000 lamports
|
|
||||||
const priorityFeeBump = 500; // bump fee by 500 lamports for every period the feed is stale
|
|
||||||
const priorityFeeBumpPeriod = 30; // bump fee by priorityFeeBump every 30s
|
|
||||||
const maxPriorityFeeMultiplier = 10; // the max fee multiplier is 10 * 500 lamports
|
|
||||||
|
|
||||||
const aggregatorFields: types.AggregatorAccountDataFields = {
|
|
||||||
...defaultState,
|
|
||||||
basePriorityFee: basePriorityFee,
|
|
||||||
priorityFeeBump: priorityFeeBump,
|
|
||||||
priorityFeeBumpPeriod: priorityFeeBumpPeriod,
|
|
||||||
maxPriorityFeeMultiplier: maxPriorityFeeMultiplier,
|
|
||||||
latestConfirmedRound: {
|
|
||||||
...defaultState.latestConfirmedRound,
|
|
||||||
roundOpenTimestamp: new BN(startingTimestamp),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const aggregator = new types.AggregatorAccountData(aggregatorFields);
|
|
||||||
|
|
||||||
it("Calculates the priority fee with no staleness", async () => {
|
|
||||||
// no staleness
|
|
||||||
const noStalenessFee = AggregatorAccount.calculatePriorityFee(
|
|
||||||
aggregator,
|
|
||||||
startingTimestamp
|
|
||||||
);
|
|
||||||
const expectedNoStalenessFee = Math.round(basePriorityFee);
|
|
||||||
assert(
|
|
||||||
expectedNoStalenessFee === noStalenessFee,
|
|
||||||
`priorityFee mismatch with no staleness, expected ${expectedNoStalenessFee}, received ${noStalenessFee}`
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Calculates the priority fee with staleness multiplier", async () => {
|
it("Calculates priority fee with empty max multiplier", async () => {
|
||||||
// with staleness
|
const fee = calculatePriorityFee(10_500, 10_000, 100, 10, 60, 0);
|
||||||
const multipliers = [0.5, 1, 1.33333, 1.8323232, 2, 5, 10];
|
assert(fee === 100, "PriorityFeeMismatch");
|
||||||
for (const multiplier of multipliers) {
|
|
||||||
const priorityFee = AggregatorAccount.calculatePriorityFee(
|
|
||||||
aggregator,
|
|
||||||
startingTimestamp + multiplier * priorityFeeBumpPeriod
|
|
||||||
);
|
|
||||||
const expectedPriorityFee = Math.round(
|
|
||||||
basePriorityFee + multiplier * priorityFeeBump
|
|
||||||
);
|
|
||||||
assert(
|
|
||||||
expectedPriorityFee === priorityFee,
|
|
||||||
`priorityFee mismatch for multiplier ${multiplier}, expected ${expectedPriorityFee}, received ${priorityFee}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Calculates the priority fee with max multiplier", async () => {
|
it("Calculates priority fee with empty bump period", async () => {
|
||||||
// with max multiplier
|
const fee = calculatePriorityFee(10_500, 10_000, 100, 10, 0, 10);
|
||||||
const expectedPriorityFee = Math.round(
|
assert(fee === 100, "PriorityFeeMismatch");
|
||||||
basePriorityFee + maxPriorityFeeMultiplier * priorityFeeBump
|
});
|
||||||
); // should never exceed this
|
|
||||||
|
|
||||||
const multipliers = [
|
it("Calculates priority fee when not stale", async () => {
|
||||||
maxPriorityFeeMultiplier + 1,
|
const fee = calculatePriorityFee(10_500, 10_500, 100, 10, 60, 10);
|
||||||
maxPriorityFeeMultiplier * 2,
|
assert(fee === 100, "PriorityFeeMismatch");
|
||||||
maxPriorityFeeMultiplier * 10,
|
});
|
||||||
];
|
|
||||||
|
|
||||||
for (const multiplier of multipliers) {
|
it("Calculates priority fee when barely stale", async () => {
|
||||||
const priorityFee = AggregatorAccount.calculatePriorityFee(
|
const fee = calculatePriorityFee(10_510, 10_500, 100, 10, 60, 10);
|
||||||
aggregator,
|
assert(fee === 100, "PriorityFeeMismatch");
|
||||||
startingTimestamp + multiplier * priorityFeeBumpPeriod
|
});
|
||||||
);
|
|
||||||
assert(
|
it("Calculates priority fee when stale for 1 period", async () => {
|
||||||
expectedPriorityFee === priorityFee,
|
const fee = calculatePriorityFee(10_621, 10_500, 100, 10, 60, 10);
|
||||||
`priorityFee mismatch for max multiplier, expected ${expectedPriorityFee}, received ${priorityFee}`
|
assert(fee === 110, "PriorityFeeMismatch");
|
||||||
);
|
});
|
||||||
}
|
|
||||||
|
it("Calculates priority fee when stale for 5 periods", async () => {
|
||||||
|
const fee = calculatePriorityFee(10_861, 10_500, 100, 10, 60, 10);
|
||||||
|
assert(fee === 150, "PriorityFeeMismatch");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Calculates priority fee when max multiplier exceeded", async () => {
|
||||||
|
const fee = calculatePriorityFee(10_861, 0, 100, 10, 60, 10);
|
||||||
|
assert(fee === 200, "PriorityFeeMismatch");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
import "mocha";
|
||||||
|
|
||||||
|
import type { TestContext } from "./utils.js";
|
||||||
|
import { setupTest } from "./utils.js";
|
||||||
|
|
||||||
|
import assert from "assert";
|
||||||
|
|
||||||
|
describe("Git Version Tests", () => {
|
||||||
|
let ctx: TestContext;
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
ctx = await setupTest();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Gets the oracle program's git version", async () => {
|
||||||
|
const version = await ctx.program.getGitVersion();
|
||||||
|
console.log(`Oracle Version: ${version}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Gets the attestation program's git version", async () => {
|
||||||
|
const version = await ctx.program.getAttestationGitVersion();
|
||||||
|
console.log(`Attestation Version: ${version}`);
|
||||||
|
});
|
||||||
|
});
|
202
pnpm-lock.yaml
202
pnpm-lock.yaml
|
@ -63,13 +63,13 @@ importers:
|
||||||
specifier: ^1.78.3
|
specifier: ^1.78.3
|
||||||
version: 1.78.3
|
version: 1.78.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.78.3)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/oracle':
|
'@switchboard-xyz/oracle':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 2.1.13
|
version: 2.1.13
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
chalk:
|
chalk:
|
||||||
specifier: ^4.1.2
|
specifier: ^4.1.2
|
||||||
|
@ -112,13 +112,13 @@ importers:
|
||||||
specifier: ^1.77.3
|
specifier: ^1.77.3
|
||||||
version: 1.77.3
|
version: 1.77.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.77.3)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/oracle':
|
'@switchboard-xyz/oracle':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 2.1.13
|
version: 2.1.13
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/chai':
|
'@types/chai':
|
||||||
|
@ -143,13 +143,13 @@ importers:
|
||||||
specifier: ^0.28.0
|
specifier: ^0.28.0
|
||||||
version: 0.28.0
|
version: 0.28.0
|
||||||
'@solana/spl-token':
|
'@solana/spl-token':
|
||||||
specifier: ^0.3.8
|
specifier: ^0.3.6
|
||||||
version: 0.3.8(@solana/web3.js@1.78.4)
|
version: 0.3.8(@solana/web3.js@1.78.3)
|
||||||
'@solana/web3.js':
|
'@solana/web3.js':
|
||||||
specifier: ^1.78.4
|
specifier: ^1.78.0
|
||||||
version: 1.78.4
|
version: 1.78.3
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/bn.js':
|
'@types/bn.js':
|
||||||
|
@ -192,10 +192,10 @@ importers:
|
||||||
specifier: ^1.78.3
|
specifier: ^1.78.3
|
||||||
version: 1.78.3
|
version: 1.78.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.78.3)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/bn.js':
|
'@types/bn.js':
|
||||||
|
@ -238,10 +238,10 @@ importers:
|
||||||
specifier: ^1.78.3
|
specifier: ^1.78.3
|
||||||
version: 1.78.3
|
version: 1.78.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.78.3)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/bn.js':
|
'@types/bn.js':
|
||||||
|
@ -284,10 +284,10 @@ importers:
|
||||||
specifier: ^1.78.3
|
specifier: ^1.78.3
|
||||||
version: 1.78.3
|
version: 1.78.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.78.3)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
dotenv:
|
dotenv:
|
||||||
specifier: ^16.3.1
|
specifier: ^16.3.1
|
||||||
|
@ -326,10 +326,10 @@ importers:
|
||||||
specifier: ^0.28.0
|
specifier: ^0.28.0
|
||||||
version: 0.28.0
|
version: 0.28.0
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.78.4)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/bn.js':
|
'@types/bn.js':
|
||||||
|
@ -378,13 +378,13 @@ importers:
|
||||||
specifier: ^1.77.3
|
specifier: ^1.77.3
|
||||||
version: 1.77.3
|
version: 1.77.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.4
|
||||||
version: 2.3.2(@solana/web3.js@1.77.3)
|
version: 2.3.4
|
||||||
'@switchboard-xyz/oracle':
|
'@switchboard-xyz/oracle':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 2.1.13
|
version: 2.1.13
|
||||||
'@switchboard-xyz/solana.js':
|
'@switchboard-xyz/solana.js':
|
||||||
specifier: ^2.5.4
|
specifier: ^2.5.6
|
||||||
version: link:../../../javascript/solana.js
|
version: link:../../../javascript/solana.js
|
||||||
chalk:
|
chalk:
|
||||||
specifier: ^4.1.2
|
specifier: ^4.1.2
|
||||||
|
@ -476,8 +476,8 @@ importers:
|
||||||
specifier: ^1.78.3
|
specifier: ^1.78.3
|
||||||
version: 1.78.3
|
version: 1.78.3
|
||||||
'@switchboard-xyz/common':
|
'@switchboard-xyz/common':
|
||||||
specifier: ^2.3.2
|
specifier: ^2.3.3
|
||||||
version: 2.3.2(@solana/web3.js@1.78.3)
|
version: 2.3.3(@solana/web3.js@1.78.3)
|
||||||
cron-validator:
|
cron-validator:
|
||||||
specifier: ^1.3.1
|
specifier: ^1.3.1
|
||||||
version: 1.3.1
|
version: 1.3.1
|
||||||
|
@ -1023,6 +1023,7 @@ packages:
|
||||||
'@solana/web3.js': 1.78.4
|
'@solana/web3.js': 1.78.4
|
||||||
bn.js: 5.2.1
|
bn.js: 5.2.1
|
||||||
buffer-layout: 1.2.2
|
buffer-layout: 1.2.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@cspotcode/source-map-support@0.8.1:
|
/@cspotcode/source-map-support@0.8.1:
|
||||||
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
||||||
|
@ -1543,22 +1544,6 @@ packages:
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@solana/spl-token@0.3.8(@solana/web3.js@1.78.4):
|
|
||||||
resolution: {integrity: sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
peerDependencies:
|
|
||||||
'@solana/web3.js': ^1.47.4
|
|
||||||
dependencies:
|
|
||||||
'@solana/buffer-layout': 4.0.0
|
|
||||||
'@solana/buffer-layout-utils': 0.2.0
|
|
||||||
'@solana/web3.js': 1.78.4
|
|
||||||
buffer: 6.0.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- encoding
|
|
||||||
- utf-8-validate
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@solana/web3.js@1.77.3:
|
/@solana/web3.js@1.77.3:
|
||||||
resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==}
|
resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -1630,26 +1615,8 @@ packages:
|
||||||
- encoding
|
- encoding
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
/@switchboard-xyz/common@2.3.2(@solana/web3.js@1.77.3):
|
/@switchboard-xyz/common@2.3.3(@solana/web3.js@1.78.3):
|
||||||
resolution: {integrity: sha512-Vv/Som+QmOOpbvCTWO/FwJ9Bz6yYqBbLqo9T5UuO2JHqL/pBcvTrJGK2ERizTv3UEuHF7Z6zl0k/rdN+11hnyw==}
|
resolution: {integrity: sha512-aZK6Wbu1khMn0qRr0viOwCVcDluS3BzvdoQflmmmCMuEpltDgd7vF/Ax4k+z/9EM54jdqwJRPnAKBDni1RpLyA==}
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.77.3)
|
|
||||||
'@types/big.js': 6.1.6
|
|
||||||
'@types/bn.js': 5.1.1
|
|
||||||
big.js: 6.2.1
|
|
||||||
bn.js: 5.2.1
|
|
||||||
bs58: 5.0.0
|
|
||||||
decimal.js: 10.4.3
|
|
||||||
lodash: 4.17.21
|
|
||||||
protobufjs: 7.2.4
|
|
||||||
yaml: 2.2.1
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- '@solana/web3.js'
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@switchboard-xyz/common@2.3.2(@solana/web3.js@1.78.3):
|
|
||||||
resolution: {integrity: sha512-Vv/Som+QmOOpbvCTWO/FwJ9Bz6yYqBbLqo9T5UuO2JHqL/pBcvTrJGK2ERizTv3UEuHF7Z6zl0k/rdN+11hnyw==}
|
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.3)
|
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.3)
|
||||||
|
@ -1666,13 +1633,10 @@ packages:
|
||||||
- '@solana/web3.js'
|
- '@solana/web3.js'
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@switchboard-xyz/common@2.3.2(@solana/web3.js@1.78.4):
|
/@switchboard-xyz/common@2.3.4:
|
||||||
resolution: {integrity: sha512-Vv/Som+QmOOpbvCTWO/FwJ9Bz6yYqBbLqo9T5UuO2JHqL/pBcvTrJGK2ERizTv3UEuHF7Z6zl0k/rdN+11hnyw==}
|
resolution: {integrity: sha512-9ewK3aQxV8P/OgNjCw2fq5SRm+JLK1sf/+vlTozDK4bb9PwaISHZ08QP7IZ7eCZ+Af69X3eFvxeYh3HDfSzlwg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.4)
|
|
||||||
'@types/big.js': 6.1.6
|
|
||||||
'@types/bn.js': 5.1.1
|
|
||||||
big.js: 6.2.1
|
big.js: 6.2.1
|
||||||
bn.js: 5.2.1
|
bn.js: 5.2.1
|
||||||
bs58: 5.0.0
|
bs58: 5.0.0
|
||||||
|
@ -1680,19 +1644,17 @@ packages:
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
protobufjs: 7.2.4
|
protobufjs: 7.2.4
|
||||||
yaml: 2.2.1
|
yaml: 2.2.1
|
||||||
transitivePeerDependencies:
|
|
||||||
- '@solana/web3.js'
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@switchboard-xyz/eslint-config@0.1.9:
|
/@switchboard-xyz/eslint-config@0.1.9:
|
||||||
resolution: {integrity: sha512-ZvCAsXn4NsBCECWvew/GIrkvDGzPhhDzT77jkEKQ7Xd2ftrjFJOeYoREDQIOhD88uN3qBl0cIKHbS4t0amkzGw==}
|
resolution: {integrity: sha512-ZvCAsXn4NsBCECWvew/GIrkvDGzPhhDzT77jkEKQ7Xd2ftrjFJOeYoREDQIOhD88uN3qBl0cIKHbS4t0amkzGw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6)
|
'@typescript-eslint/eslint-plugin': 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.6)
|
||||||
'@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.0.4)
|
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
|
||||||
'@typescript-eslint/type-utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6)
|
'@typescript-eslint/type-utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
eslint-config-prettier: 9.0.0(eslint@8.47.0)
|
eslint-config-prettier: 9.0.0(eslint@8.47.0)
|
||||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)
|
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)
|
||||||
eslint-plugin-node: 11.1.0(eslint@8.47.0)
|
eslint-plugin-node: 11.1.0(eslint@8.47.0)
|
||||||
eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@2.8.8)
|
eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@2.8.8)
|
||||||
eslint-plugin-simple-import-sort: 10.0.0(eslint@8.47.0)
|
eslint-plugin-simple-import-sort: 10.0.0(eslint@8.47.0)
|
||||||
|
@ -1899,8 +1861,8 @@ packages:
|
||||||
'@types/node': 20.4.2
|
'@types/node': 20.4.2
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@typescript-eslint/eslint-plugin@6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6):
|
/@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.6):
|
||||||
resolution: {integrity: sha512-62o2Hmc7Gs3p8SLfbXcipjWAa6qk2wZGChXG2JbBtYpwSRmti/9KHLqfbLs9uDigOexG+3PaQ9G2g3201FWLKg==}
|
resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
|
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
|
||||||
|
@ -1911,11 +1873,11 @@ packages:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.6.2
|
'@eslint-community/regexpp': 4.6.2
|
||||||
'@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.0.4)
|
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
|
||||||
'@typescript-eslint/scope-manager': 6.4.0
|
'@typescript-eslint/scope-manager': 6.4.1
|
||||||
'@typescript-eslint/type-utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6)
|
'@typescript-eslint/type-utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
|
||||||
'@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6)
|
'@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
|
||||||
'@typescript-eslint/visitor-keys': 6.4.0
|
'@typescript-eslint/visitor-keys': 6.4.1
|
||||||
debug: 4.3.4(supports-color@8.1.1)
|
debug: 4.3.4(supports-color@8.1.1)
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
|
@ -1928,8 +1890,8 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/parser@6.4.0(eslint@8.47.0)(typescript@5.0.4):
|
/@typescript-eslint/parser@6.4.1(eslint@8.47.0)(typescript@5.0.4):
|
||||||
resolution: {integrity: sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==}
|
resolution: {integrity: sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
@ -1938,10 +1900,10 @@ packages:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 6.4.0
|
'@typescript-eslint/scope-manager': 6.4.1
|
||||||
'@typescript-eslint/types': 6.4.0
|
'@typescript-eslint/types': 6.4.1
|
||||||
'@typescript-eslint/typescript-estree': 6.4.0(typescript@5.0.4)
|
'@typescript-eslint/typescript-estree': 6.4.1(typescript@5.0.4)
|
||||||
'@typescript-eslint/visitor-keys': 6.4.0
|
'@typescript-eslint/visitor-keys': 6.4.1
|
||||||
debug: 4.3.4(supports-color@8.1.1)
|
debug: 4.3.4(supports-color@8.1.1)
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
typescript: 5.0.4
|
typescript: 5.0.4
|
||||||
|
@ -1949,16 +1911,16 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/scope-manager@6.4.0:
|
/@typescript-eslint/scope-manager@6.4.1:
|
||||||
resolution: {integrity: sha512-TUS7vaKkPWDVvl7GDNHFQMsMruD+zhkd3SdVW0d7b+7Zo+bd/hXJQ8nsiUZMi1jloWo6c9qt3B7Sqo+flC1nig==}
|
resolution: {integrity: sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 6.4.0
|
'@typescript-eslint/types': 6.4.1
|
||||||
'@typescript-eslint/visitor-keys': 6.4.0
|
'@typescript-eslint/visitor-keys': 6.4.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/type-utils@6.4.0(eslint@8.47.0)(typescript@5.1.6):
|
/@typescript-eslint/type-utils@6.4.1(eslint@8.47.0)(typescript@5.1.6):
|
||||||
resolution: {integrity: sha512-TvqrUFFyGY0cX3WgDHcdl2/mMCWCDv/0thTtx/ODMY1QhEiyFtv/OlLaNIiYLwRpAxAtOLOY9SUf1H3Q3dlwAg==}
|
resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
@ -1967,8 +1929,8 @@ packages:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6)
|
'@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.6)
|
||||||
'@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6)
|
'@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
|
||||||
debug: 4.3.4(supports-color@8.1.1)
|
debug: 4.3.4(supports-color@8.1.1)
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
ts-api-utils: 1.0.1(typescript@5.1.6)
|
ts-api-utils: 1.0.1(typescript@5.1.6)
|
||||||
|
@ -1977,13 +1939,13 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/types@6.4.0:
|
/@typescript-eslint/types@6.4.1:
|
||||||
resolution: {integrity: sha512-+FV9kVFrS7w78YtzkIsNSoYsnOtrYVnKWSTVXoL1761CsCRv5wpDOINgsXpxD67YCLZtVQekDDyaxfjVWUJmmg==}
|
resolution: {integrity: sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/typescript-estree@6.4.0(typescript@5.0.4):
|
/@typescript-eslint/typescript-estree@6.4.1(typescript@5.0.4):
|
||||||
resolution: {integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==}
|
resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '*'
|
typescript: '*'
|
||||||
|
@ -1991,8 +1953,8 @@ packages:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 6.4.0
|
'@typescript-eslint/types': 6.4.1
|
||||||
'@typescript-eslint/visitor-keys': 6.4.0
|
'@typescript-eslint/visitor-keys': 6.4.1
|
||||||
debug: 4.3.4(supports-color@8.1.1)
|
debug: 4.3.4(supports-color@8.1.1)
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
|
@ -2003,8 +1965,8 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/typescript-estree@6.4.0(typescript@5.1.6):
|
/@typescript-eslint/typescript-estree@6.4.1(typescript@5.1.6):
|
||||||
resolution: {integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==}
|
resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '*'
|
typescript: '*'
|
||||||
|
@ -2012,8 +1974,8 @@ packages:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 6.4.0
|
'@typescript-eslint/types': 6.4.1
|
||||||
'@typescript-eslint/visitor-keys': 6.4.0
|
'@typescript-eslint/visitor-keys': 6.4.1
|
||||||
debug: 4.3.4(supports-color@8.1.1)
|
debug: 4.3.4(supports-color@8.1.1)
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
|
@ -2024,8 +1986,8 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/utils@6.4.0(eslint@8.47.0)(typescript@5.1.6):
|
/@typescript-eslint/utils@6.4.1(eslint@8.47.0)(typescript@5.1.6):
|
||||||
resolution: {integrity: sha512-BvvwryBQpECPGo8PwF/y/q+yacg8Hn/2XS+DqL/oRsOPK+RPt29h5Ui5dqOKHDlbXrAeHUTnyG3wZA0KTDxRZw==}
|
resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
@ -2033,9 +1995,9 @@ packages:
|
||||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
|
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
|
||||||
'@types/json-schema': 7.0.12
|
'@types/json-schema': 7.0.12
|
||||||
'@types/semver': 7.5.0
|
'@types/semver': 7.5.0
|
||||||
'@typescript-eslint/scope-manager': 6.4.0
|
'@typescript-eslint/scope-manager': 6.4.1
|
||||||
'@typescript-eslint/types': 6.4.0
|
'@typescript-eslint/types': 6.4.1
|
||||||
'@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6)
|
'@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.6)
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -2043,11 +2005,11 @@ packages:
|
||||||
- typescript
|
- typescript
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/visitor-keys@6.4.0:
|
/@typescript-eslint/visitor-keys@6.4.1:
|
||||||
resolution: {integrity: sha512-yJSfyT+uJm+JRDWYRYdCm2i+pmvXJSMtPR9Cq5/XQs4QIgNoLcoRtDdzsLbLsFM/c6um6ohQkg/MLxWvoIndJA==}
|
resolution: {integrity: sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 6.4.0
|
'@typescript-eslint/types': 6.4.1
|
||||||
eslint-visitor-keys: 3.4.3
|
eslint-visitor-keys: 3.4.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
@ -3169,7 +3131,7 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0):
|
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0):
|
||||||
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
|
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -3190,7 +3152,7 @@ packages:
|
||||||
eslint-import-resolver-webpack:
|
eslint-import-resolver-webpack:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.0.4)
|
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
eslint-import-resolver-node: 0.3.7
|
eslint-import-resolver-node: 0.3.7
|
||||||
|
@ -3209,7 +3171,7 @@ packages:
|
||||||
regexpp: 3.2.0
|
regexpp: 3.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.4.0)(eslint@8.47.0):
|
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0):
|
||||||
resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
|
resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -3219,7 +3181,7 @@ packages:
|
||||||
'@typescript-eslint/parser':
|
'@typescript-eslint/parser':
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.0.4)
|
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
|
||||||
array-includes: 3.1.6
|
array-includes: 3.1.6
|
||||||
array.prototype.findlastindex: 1.2.2
|
array.prototype.findlastindex: 1.2.2
|
||||||
array.prototype.flat: 1.3.1
|
array.prototype.flat: 1.3.1
|
||||||
|
@ -3228,7 +3190,7 @@ packages:
|
||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 8.47.0
|
eslint: 8.47.0
|
||||||
eslint-import-resolver-node: 0.3.7
|
eslint-import-resolver-node: 0.3.7
|
||||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0)
|
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0)
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
is-core-module: 2.13.0
|
is-core-module: 2.13.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
|
@ -4837,7 +4799,7 @@ packages:
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dependencies:
|
dependencies:
|
||||||
hosted-git-info: 4.1.0
|
hosted-git-info: 4.1.0
|
||||||
is-core-module: 2.12.1
|
is-core-module: 2.13.0
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
validate-npm-package-license: 3.0.4
|
validate-npm-package-license: 3.0.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
|
@ -4249,7 +4249,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "switchboard-solana"
|
name = "switchboard-solana"
|
||||||
version = "0.28.5"
|
version = "0.28.6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-client",
|
"anchor-client",
|
||||||
"anchor-lang",
|
"anchor-lang",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "switchboard-solana"
|
name = "switchboard-solana"
|
||||||
version = "0.28.5"
|
version = "0.28.6"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "A Rust library to interact with Switchboard accounts."
|
description = "A Rust library to interact with Switchboard accounts."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@ -47,4 +47,4 @@ tokio = "1"
|
||||||
url = "2.4"
|
url = "2.4"
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
rustdoc-args = ["--cfg", "doc_cfg"]
|
rustdoc-args = ["--cfg", "doc_cfg"]
|
||||||
|
|
|
@ -57,7 +57,7 @@ impl FunctionRunner {
|
||||||
let signer = signer_to_pubkey(signer_keypair.clone())?;
|
let signer = signer_to_pubkey(signer_keypair.clone())?;
|
||||||
|
|
||||||
let env = SolanaFunctionEnvironment::parse()?;
|
let env = SolanaFunctionEnvironment::parse()?;
|
||||||
msg!("ENV: {:?}", env);
|
msg!("ENV: {:#?}", env);
|
||||||
|
|
||||||
// required to run
|
// required to run
|
||||||
let function = Pubkey::from_str(&env.function_key).unwrap();
|
let function = Pubkey::from_str(&env.function_key).unwrap();
|
||||||
|
@ -175,8 +175,7 @@ impl FunctionRunner {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_env(commitment: Option<CommitmentConfig>) -> Result<Self, SwitchboardClientError> {
|
pub fn from_env(commitment: Option<CommitmentConfig>) -> Result<Self, SwitchboardClientError> {
|
||||||
let cluster = Cluster::from_str(&std::env::var("CLUSTER").unwrap_or("devnet".to_string()))
|
let cluster = Cluster::from_str(&std::env::var("CLUSTER").unwrap()).unwrap();
|
||||||
.unwrap_or(Cluster::Devnet);
|
|
||||||
Self::new_from_cluster(cluster, commitment)
|
Self::new_from_cluster(cluster, commitment)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -550,4 +549,4 @@ impl ToAccountMetas for FunctionRequestVerifyAccounts {
|
||||||
AccountMeta::new_readonly(anchor_spl::token::ID, false),
|
AccountMeta::new_readonly(anchor_spl::token::ID, false),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue