Skip to content

Commit ef3d216

Browse files
committed
NCN Config Setup
1 parent fe60486 commit ef3d216

35 files changed

+2695
-261
lines changed

clients/js/jito_tip_router/accounts/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
* @see https://github.com/kinobi-so/kinobi
77
*/
88

9+
export * from './ncnConfig';
910
export * from './weightTable';
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
/**
2+
* This code was AUTOGENERATED using the kinobi library.
3+
* Please DO NOT EDIT THIS FILE, instead use visitors
4+
* to add features, then rerun kinobi to update it.
5+
*
6+
* @see https://github.com/kinobi-so/kinobi
7+
*/
8+
9+
import {
10+
assertAccountExists,
11+
assertAccountsExist,
12+
combineCodec,
13+
decodeAccount,
14+
fetchEncodedAccount,
15+
fetchEncodedAccounts,
16+
getAddressDecoder,
17+
getAddressEncoder,
18+
getArrayDecoder,
19+
getArrayEncoder,
20+
getStructDecoder,
21+
getStructEncoder,
22+
getU64Decoder,
23+
getU64Encoder,
24+
getU8Decoder,
25+
getU8Encoder,
26+
type Account,
27+
type Address,
28+
type Codec,
29+
type Decoder,
30+
type EncodedAccount,
31+
type Encoder,
32+
type FetchAccountConfig,
33+
type FetchAccountsConfig,
34+
type MaybeAccount,
35+
type MaybeEncodedAccount,
36+
} from '@solana/web3.js';
37+
import {
38+
getFeesDecoder,
39+
getFeesEncoder,
40+
type Fees,
41+
type FeesArgs,
42+
} from '../types';
43+
44+
export type NcnConfig = {
45+
discriminator: bigint;
46+
ncn: Address;
47+
tieBreakerAdmin: Address;
48+
fees: Fees;
49+
bump: number;
50+
reserved: Array<number>;
51+
};
52+
53+
export type NcnConfigArgs = {
54+
discriminator: number | bigint;
55+
ncn: Address;
56+
tieBreakerAdmin: Address;
57+
fees: FeesArgs;
58+
bump: number;
59+
reserved: Array<number>;
60+
};
61+
62+
export function getNcnConfigEncoder(): Encoder<NcnConfigArgs> {
63+
return getStructEncoder([
64+
['discriminator', getU64Encoder()],
65+
['ncn', getAddressEncoder()],
66+
['tieBreakerAdmin', getAddressEncoder()],
67+
['fees', getFeesEncoder()],
68+
['bump', getU8Encoder()],
69+
['reserved', getArrayEncoder(getU8Encoder(), { size: 127 })],
70+
]);
71+
}
72+
73+
export function getNcnConfigDecoder(): Decoder<NcnConfig> {
74+
return getStructDecoder([
75+
['discriminator', getU64Decoder()],
76+
['ncn', getAddressDecoder()],
77+
['tieBreakerAdmin', getAddressDecoder()],
78+
['fees', getFeesDecoder()],
79+
['bump', getU8Decoder()],
80+
['reserved', getArrayDecoder(getU8Decoder(), { size: 127 })],
81+
]);
82+
}
83+
84+
export function getNcnConfigCodec(): Codec<NcnConfigArgs, NcnConfig> {
85+
return combineCodec(getNcnConfigEncoder(), getNcnConfigDecoder());
86+
}
87+
88+
export function decodeNcnConfig<TAddress extends string = string>(
89+
encodedAccount: EncodedAccount<TAddress>
90+
): Account<NcnConfig, TAddress>;
91+
export function decodeNcnConfig<TAddress extends string = string>(
92+
encodedAccount: MaybeEncodedAccount<TAddress>
93+
): MaybeAccount<NcnConfig, TAddress>;
94+
export function decodeNcnConfig<TAddress extends string = string>(
95+
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>
96+
): Account<NcnConfig, TAddress> | MaybeAccount<NcnConfig, TAddress> {
97+
return decodeAccount(
98+
encodedAccount as MaybeEncodedAccount<TAddress>,
99+
getNcnConfigDecoder()
100+
);
101+
}
102+
103+
export async function fetchNcnConfig<TAddress extends string = string>(
104+
rpc: Parameters<typeof fetchEncodedAccount>[0],
105+
address: Address<TAddress>,
106+
config?: FetchAccountConfig
107+
): Promise<Account<NcnConfig, TAddress>> {
108+
const maybeAccount = await fetchMaybeNcnConfig(rpc, address, config);
109+
assertAccountExists(maybeAccount);
110+
return maybeAccount;
111+
}
112+
113+
export async function fetchMaybeNcnConfig<TAddress extends string = string>(
114+
rpc: Parameters<typeof fetchEncodedAccount>[0],
115+
address: Address<TAddress>,
116+
config?: FetchAccountConfig
117+
): Promise<MaybeAccount<NcnConfig, TAddress>> {
118+
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
119+
return decodeNcnConfig(maybeAccount);
120+
}
121+
122+
export async function fetchAllNcnConfig(
123+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
124+
addresses: Array<Address>,
125+
config?: FetchAccountsConfig
126+
): Promise<Account<NcnConfig>[]> {
127+
const maybeAccounts = await fetchAllMaybeNcnConfig(rpc, addresses, config);
128+
assertAccountsExist(maybeAccounts);
129+
return maybeAccounts;
130+
}
131+
132+
export async function fetchAllMaybeNcnConfig(
133+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
134+
addresses: Array<Address>,
135+
config?: FetchAccountsConfig
136+
): Promise<MaybeAccount<NcnConfig>[]> {
137+
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
138+
return maybeAccounts.map((maybeAccount) => decodeNcnConfig(maybeAccount));
139+
}
140+
141+
export function getNcnConfigSize(): number {
142+
return 320;
143+
}

clients/js/jito_tip_router/errors/jitoTipRouter.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@ export const JITO_TIP_ROUTER_ERROR__MODULO_OVERFLOW = 0x2102; // 8450
2626
export const JITO_TIP_ROUTER_ERROR__INCORRECT_WEIGHT_TABLE_ADMIN = 0x2200; // 8704
2727
/** CannotCreateFutureWeightTables: Cannnot create future weight tables */
2828
export const JITO_TIP_ROUTER_ERROR__CANNOT_CREATE_FUTURE_WEIGHT_TABLES = 0x2201; // 8705
29+
/** FeeCapExceeded: Fee cap exceeded */
30+
export const JITO_TIP_ROUTER_ERROR__FEE_CAP_EXCEEDED = 0x2300; // 8960
2931

3032
export type JitoTipRouterError =
3133
| typeof JITO_TIP_ROUTER_ERROR__ARITHMETIC_OVERFLOW
3234
| typeof JITO_TIP_ROUTER_ERROR__CANNOT_CREATE_FUTURE_WEIGHT_TABLES
3335
| typeof JITO_TIP_ROUTER_ERROR__DENOMINATOR_IS_ZERO
36+
| typeof JITO_TIP_ROUTER_ERROR__FEE_CAP_EXCEEDED
3437
| typeof JITO_TIP_ROUTER_ERROR__INCORRECT_WEIGHT_TABLE_ADMIN
3538
| typeof JITO_TIP_ROUTER_ERROR__MODULO_OVERFLOW
3639
| typeof JITO_TIP_ROUTER_ERROR__NO_MORE_TABLE_SLOTS;
@@ -41,6 +44,7 @@ if (process.env.NODE_ENV !== 'production') {
4144
[JITO_TIP_ROUTER_ERROR__ARITHMETIC_OVERFLOW]: `Overflow`,
4245
[JITO_TIP_ROUTER_ERROR__CANNOT_CREATE_FUTURE_WEIGHT_TABLES]: `Cannnot create future weight tables`,
4346
[JITO_TIP_ROUTER_ERROR__DENOMINATOR_IS_ZERO]: `Zero in the denominator`,
47+
[JITO_TIP_ROUTER_ERROR__FEE_CAP_EXCEEDED]: `Fee cap exceeded`,
4448
[JITO_TIP_ROUTER_ERROR__INCORRECT_WEIGHT_TABLE_ADMIN]: `Incorrect weight table admin`,
4549
[JITO_TIP_ROUTER_ERROR__MODULO_OVERFLOW]: `Modulo Overflow`,
4650
[JITO_TIP_ROUTER_ERROR__NO_MORE_TABLE_SLOTS]: `No more table slots available`,

clients/js/jito_tip_router/instructions/finalizeWeightTable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {
3232
import { JITO_TIP_ROUTER_PROGRAM_ADDRESS } from '../programs';
3333
import { getAccountMetaFactory, type ResolvedAccount } from '../shared';
3434

35-
export const FINALIZE_WEIGHT_TABLE_DISCRIMINATOR = 2;
35+
export const FINALIZE_WEIGHT_TABLE_DISCRIMINATOR = 3;
3636

3737
export function getFinalizeWeightTableDiscriminatorBytes() {
3838
return getU8Encoder().encode(FINALIZE_WEIGHT_TABLE_DISCRIMINATOR);

clients/js/jito_tip_router/instructions/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,7 @@
77
*/
88

99
export * from './finalizeWeightTable';
10+
export * from './initializeConfig';
1011
export * from './initializeWeightTable';
12+
export * from './setConfigFees';
1113
export * from './updateWeightTable';

0 commit comments

Comments
 (0)