Skip to content

Commit

Permalink
Merge branch 'master' into ak/signer
Browse files Browse the repository at this point in the history
  • Loading branch information
aoikurokawa committed Nov 21, 2024
2 parents eb50dfe + 4f4db15 commit 11c9a36
Show file tree
Hide file tree
Showing 83 changed files with 8,005 additions and 448 deletions.
5 changes: 5 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[profile.default]
retries = { backoff = "exponential", count = 5, delay = "1s", jitter = true, max-delay = "10s" }
test-threads = "num-cpus"
threads-required = 1
fail-fast = false
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

171 changes: 171 additions & 0 deletions clients/js/jito_tip_router/accounts/ballotBox.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
/**
* This code was AUTOGENERATED using the kinobi library.
* Please DO NOT EDIT THIS FILE, instead use visitors
* to add features, then rerun kinobi to update it.
*
* @see https://github.com/kinobi-so/kinobi
*/

import {
assertAccountExists,
assertAccountsExist,
combineCodec,
decodeAccount,
fetchEncodedAccount,
fetchEncodedAccounts,
getAddressDecoder,
getAddressEncoder,
getArrayDecoder,
getArrayEncoder,
getStructDecoder,
getStructEncoder,
getU64Decoder,
getU64Encoder,
getU8Decoder,
getU8Encoder,
type Account,
type Address,
type Codec,
type Decoder,
type EncodedAccount,
type Encoder,
type FetchAccountConfig,
type FetchAccountsConfig,
type MaybeAccount,
type MaybeEncodedAccount,
} from '@solana/web3.js';
import {
getBallotDecoder,
getBallotEncoder,
getBallotTallyDecoder,
getBallotTallyEncoder,
getOperatorVoteDecoder,
getOperatorVoteEncoder,
type Ballot,
type BallotArgs,
type BallotTally,
type BallotTallyArgs,
type OperatorVote,
type OperatorVoteArgs,
} from '../types';

export type BallotBox = {
discriminator: bigint;
ncn: Address;
ncnEpoch: bigint;
bump: number;
slotCreated: bigint;
slotConsensusReached: bigint;
reserved: Array<number>;
operatorsVoted: bigint;
uniqueBallots: bigint;
winningBallot: Ballot;
operatorVotes: Array<OperatorVote>;
ballotTallies: Array<BallotTally>;
};

export type BallotBoxArgs = {
discriminator: number | bigint;
ncn: Address;
ncnEpoch: number | bigint;
bump: number;
slotCreated: number | bigint;
slotConsensusReached: number | bigint;
reserved: Array<number>;
operatorsVoted: number | bigint;
uniqueBallots: number | bigint;
winningBallot: BallotArgs;
operatorVotes: Array<OperatorVoteArgs>;
ballotTallies: Array<BallotTallyArgs>;
};

export function getBallotBoxEncoder(): Encoder<BallotBoxArgs> {
return getStructEncoder([
['discriminator', getU64Encoder()],
['ncn', getAddressEncoder()],
['ncnEpoch', getU64Encoder()],
['bump', getU8Encoder()],
['slotCreated', getU64Encoder()],
['slotConsensusReached', getU64Encoder()],
['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })],
['operatorsVoted', getU64Encoder()],
['uniqueBallots', getU64Encoder()],
['winningBallot', getBallotEncoder()],
['operatorVotes', getArrayEncoder(getOperatorVoteEncoder(), { size: 32 })],
['ballotTallies', getArrayEncoder(getBallotTallyEncoder(), { size: 32 })],
]);
}

export function getBallotBoxDecoder(): Decoder<BallotBox> {
return getStructDecoder([
['discriminator', getU64Decoder()],
['ncn', getAddressDecoder()],
['ncnEpoch', getU64Decoder()],
['bump', getU8Decoder()],
['slotCreated', getU64Decoder()],
['slotConsensusReached', getU64Decoder()],
['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })],
['operatorsVoted', getU64Decoder()],
['uniqueBallots', getU64Decoder()],
['winningBallot', getBallotDecoder()],
['operatorVotes', getArrayDecoder(getOperatorVoteDecoder(), { size: 32 })],
['ballotTallies', getArrayDecoder(getBallotTallyDecoder(), { size: 32 })],
]);
}

export function getBallotBoxCodec(): Codec<BallotBoxArgs, BallotBox> {
return combineCodec(getBallotBoxEncoder(), getBallotBoxDecoder());
}

export function decodeBallotBox<TAddress extends string = string>(
encodedAccount: EncodedAccount<TAddress>
): Account<BallotBox, TAddress>;
export function decodeBallotBox<TAddress extends string = string>(
encodedAccount: MaybeEncodedAccount<TAddress>
): MaybeAccount<BallotBox, TAddress>;
export function decodeBallotBox<TAddress extends string = string>(
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>
): Account<BallotBox, TAddress> | MaybeAccount<BallotBox, TAddress> {
return decodeAccount(
encodedAccount as MaybeEncodedAccount<TAddress>,
getBallotBoxDecoder()
);
}

export async function fetchBallotBox<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
config?: FetchAccountConfig
): Promise<Account<BallotBox, TAddress>> {
const maybeAccount = await fetchMaybeBallotBox(rpc, address, config);
assertAccountExists(maybeAccount);
return maybeAccount;
}

export async function fetchMaybeBallotBox<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
config?: FetchAccountConfig
): Promise<MaybeAccount<BallotBox, TAddress>> {
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
return decodeBallotBox(maybeAccount);
}

export async function fetchAllBallotBox(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
config?: FetchAccountsConfig
): Promise<Account<BallotBox>[]> {
const maybeAccounts = await fetchAllMaybeBallotBox(rpc, addresses, config);
assertAccountsExist(maybeAccounts);
return maybeAccounts;
}

export async function fetchAllMaybeBallotBox(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
config?: FetchAccountsConfig
): Promise<MaybeAccount<BallotBox>[]> {
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
return maybeAccounts.map((maybeAccount) => decodeBallotBox(maybeAccount));
}
176 changes: 176 additions & 0 deletions clients/js/jito_tip_router/accounts/epochSnapshot.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
/**
* This code was AUTOGENERATED using the kinobi library.
* Please DO NOT EDIT THIS FILE, instead use visitors
* to add features, then rerun kinobi to update it.
*
* @see https://github.com/kinobi-so/kinobi
*/

import {
assertAccountExists,
assertAccountsExist,
combineCodec,
decodeAccount,
fetchEncodedAccount,
fetchEncodedAccounts,
getAddressDecoder,
getAddressEncoder,
getArrayDecoder,
getArrayEncoder,
getStructDecoder,
getStructEncoder,
getU128Decoder,
getU128Encoder,
getU64Decoder,
getU64Encoder,
getU8Decoder,
getU8Encoder,
type Account,
type Address,
type Codec,
type Decoder,
type EncodedAccount,
type Encoder,
type FetchAccountConfig,
type FetchAccountsConfig,
type MaybeAccount,
type MaybeEncodedAccount,
} from '@solana/web3.js';
import {
getFeesDecoder,
getFeesEncoder,
type Fees,
type FeesArgs,
} from '../types';

export type EpochSnapshot = {
discriminator: bigint;
ncn: Address;
ncnEpoch: bigint;
bump: number;
slotCreated: bigint;
slotFinalized: bigint;
ncnFees: Fees;
operatorCount: bigint;
vaultCount: bigint;
operatorsRegistered: bigint;
validOperatorVaultDelegations: bigint;
stakeWeight: bigint;
reserved: Array<number>;
};

export type EpochSnapshotArgs = {
discriminator: number | bigint;
ncn: Address;
ncnEpoch: number | bigint;
bump: number;
slotCreated: number | bigint;
slotFinalized: number | bigint;
ncnFees: FeesArgs;
operatorCount: number | bigint;
vaultCount: number | bigint;
operatorsRegistered: number | bigint;
validOperatorVaultDelegations: number | bigint;
stakeWeight: number | bigint;
reserved: Array<number>;
};

export function getEpochSnapshotEncoder(): Encoder<EpochSnapshotArgs> {
return getStructEncoder([
['discriminator', getU64Encoder()],
['ncn', getAddressEncoder()],
['ncnEpoch', getU64Encoder()],
['bump', getU8Encoder()],
['slotCreated', getU64Encoder()],
['slotFinalized', getU64Encoder()],
['ncnFees', getFeesEncoder()],
['operatorCount', getU64Encoder()],
['vaultCount', getU64Encoder()],
['operatorsRegistered', getU64Encoder()],
['validOperatorVaultDelegations', getU64Encoder()],
['stakeWeight', getU128Encoder()],
['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })],
]);
}

export function getEpochSnapshotDecoder(): Decoder<EpochSnapshot> {
return getStructDecoder([
['discriminator', getU64Decoder()],
['ncn', getAddressDecoder()],
['ncnEpoch', getU64Decoder()],
['bump', getU8Decoder()],
['slotCreated', getU64Decoder()],
['slotFinalized', getU64Decoder()],
['ncnFees', getFeesDecoder()],
['operatorCount', getU64Decoder()],
['vaultCount', getU64Decoder()],
['operatorsRegistered', getU64Decoder()],
['validOperatorVaultDelegations', getU64Decoder()],
['stakeWeight', getU128Decoder()],
['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })],
]);
}

export function getEpochSnapshotCodec(): Codec<
EpochSnapshotArgs,
EpochSnapshot
> {
return combineCodec(getEpochSnapshotEncoder(), getEpochSnapshotDecoder());
}

export function decodeEpochSnapshot<TAddress extends string = string>(
encodedAccount: EncodedAccount<TAddress>
): Account<EpochSnapshot, TAddress>;
export function decodeEpochSnapshot<TAddress extends string = string>(
encodedAccount: MaybeEncodedAccount<TAddress>
): MaybeAccount<EpochSnapshot, TAddress>;
export function decodeEpochSnapshot<TAddress extends string = string>(
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>
): Account<EpochSnapshot, TAddress> | MaybeAccount<EpochSnapshot, TAddress> {
return decodeAccount(
encodedAccount as MaybeEncodedAccount<TAddress>,
getEpochSnapshotDecoder()
);
}

export async function fetchEpochSnapshot<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
config?: FetchAccountConfig
): Promise<Account<EpochSnapshot, TAddress>> {
const maybeAccount = await fetchMaybeEpochSnapshot(rpc, address, config);
assertAccountExists(maybeAccount);
return maybeAccount;
}

export async function fetchMaybeEpochSnapshot<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
config?: FetchAccountConfig
): Promise<MaybeAccount<EpochSnapshot, TAddress>> {
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
return decodeEpochSnapshot(maybeAccount);
}

export async function fetchAllEpochSnapshot(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
config?: FetchAccountsConfig
): Promise<Account<EpochSnapshot>[]> {
const maybeAccounts = await fetchAllMaybeEpochSnapshot(
rpc,
addresses,
config
);
assertAccountsExist(maybeAccounts);
return maybeAccounts;
}

export async function fetchAllMaybeEpochSnapshot(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
config?: FetchAccountsConfig
): Promise<MaybeAccount<EpochSnapshot>[]> {
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
return maybeAccounts.map((maybeAccount) => decodeEpochSnapshot(maybeAccount));
}
3 changes: 3 additions & 0 deletions clients/js/jito_tip_router/accounts/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
* @see https://github.com/kinobi-so/kinobi
*/

export * from './ballotBox';
export * from './epochSnapshot';
export * from './ncnConfig';
export * from './operatorSnapshot';
export * from './trackedMints';
export * from './weightTable';
Loading

0 comments on commit 11c9a36

Please sign in to comment.