@send-fun/sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/index.cjs +12808 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4406 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +4405 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +12749 -0
- package/dist/index.mjs.map +1 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/package.json +72 -0
- package/src/constants.ts +38 -0
- package/src/dex/generated/accounts/globalConfig.ts +189 -0
- package/src/dex/generated/accounts/index.ts +12 -0
- package/src/dex/generated/accounts/pool.ts +244 -0
- package/src/dex/generated/accounts/rewardAccrual.ts +191 -0
- package/src/dex/generated/accounts/sendDex.accounts.ts +47 -0
- package/src/dex/generated/errors/index.ts +9 -0
- package/src/dex/generated/errors/sendDex.ts +161 -0
- package/src/dex/generated/events/anchorEventCpiDiscriminator.framing.ts +28 -0
- package/src/dex/generated/events/creatorClaimEvent.ts +119 -0
- package/src/dex/generated/events/depositQuoteEvent.ts +115 -0
- package/src/dex/generated/events/index.ts +16 -0
- package/src/dex/generated/events/poolCreateEvent.ts +128 -0
- package/src/dex/generated/events/protocolClaimEvent.ts +111 -0
- package/src/dex/generated/events/sendDex.events.ts +184 -0
- package/src/dex/generated/events/tokenCreateEvent.ts +143 -0
- package/src/dex/generated/events/tradeEvent.ts +143 -0
- package/src/dex/generated/index.ts +16 -0
- package/src/dex/generated/instructions/buyExactIn.ts +815 -0
- package/src/dex/generated/instructions/buyExactOut.ts +815 -0
- package/src/dex/generated/instructions/claimCreatorFees.ts +648 -0
- package/src/dex/generated/instructions/claimProtocolFees.ts +640 -0
- package/src/dex/generated/instructions/index.ts +15 -0
- package/src/dex/generated/instructions/sellExactIn.ts +815 -0
- package/src/dex/generated/instructions/sellExactOut.ts +815 -0
- package/src/dex/generated/instructions/sendDex.instructions.ts +173 -0
- package/src/dex/generated/pdas/eventAuthority.ts +20 -0
- package/src/dex/generated/pdas/globalConfig.ts +20 -0
- package/src/dex/generated/pdas/index.ts +14 -0
- package/src/dex/generated/pdas/lpMint.ts +36 -0
- package/src/dex/generated/pdas/pool.ts +34 -0
- package/src/dex/generated/pdas/rewardAccrual.ts +37 -0
- package/src/dex/generated/pdas/wsolRewardAccrual.ts +20 -0
- package/src/dex/generated/plugins/index.ts +9 -0
- package/src/dex/generated/plugins/sendDex.ts +282 -0
- package/src/dex/generated/programs/index.ts +9 -0
- package/src/dex/generated/programs/sendDex.ts +12 -0
- package/src/dex/generated/types/index.ts +10 -0
- package/src/dex/generated/types/poolStatus.ts +38 -0
- package/src/dex/generated/types/tradeDirection.ts +38 -0
- package/src/dex/index.ts +8 -0
- package/src/dex/trade.ts +215 -0
- package/src/index.ts +8 -0
- package/src/launchpad/create.ts +116 -0
- package/src/launchpad/generated/accounts/bondingCurve.ts +273 -0
- package/src/launchpad/generated/accounts/globalConfig.ts +211 -0
- package/src/launchpad/generated/accounts/index.ts +12 -0
- package/src/launchpad/generated/accounts/rewardAccrual.ts +191 -0
- package/src/launchpad/generated/accounts/sendLaunchpad.accounts.ts +50 -0
- package/src/launchpad/generated/errors/index.ts +9 -0
- package/src/launchpad/generated/errors/sendLaunchpad.ts +175 -0
- package/src/launchpad/generated/events/anchorEventCpiDiscriminator.framing.ts +28 -0
- package/src/launchpad/generated/events/completeEvent.ts +120 -0
- package/src/launchpad/generated/events/creatorClaimEvent.ts +122 -0
- package/src/launchpad/generated/events/index.ts +17 -0
- package/src/launchpad/generated/events/migrateEvent.ts +121 -0
- package/src/launchpad/generated/events/protocolClaimEvent.ts +114 -0
- package/src/launchpad/generated/events/recycleEvent.ts +113 -0
- package/src/launchpad/generated/events/sendLaunchpad.events.ts +207 -0
- package/src/launchpad/generated/events/tokenCreateEvent.ts +156 -0
- package/src/launchpad/generated/events/tradeEvent.ts +148 -0
- package/src/launchpad/generated/index.ts +16 -0
- package/src/launchpad/generated/instructions/buyExactIn.ts +818 -0
- package/src/launchpad/generated/instructions/buyExactOut.ts +818 -0
- package/src/launchpad/generated/instructions/claimCreatorFees.ts +651 -0
- package/src/launchpad/generated/instructions/claimProtocolFees.ts +640 -0
- package/src/launchpad/generated/instructions/createToken.ts +1150 -0
- package/src/launchpad/generated/instructions/index.ts +17 -0
- package/src/launchpad/generated/instructions/migrate.ts +840 -0
- package/src/launchpad/generated/instructions/sellExactIn.ts +818 -0
- package/src/launchpad/generated/instructions/sellExactOut.ts +818 -0
- package/src/launchpad/generated/instructions/sendLaunchpad.instructions.ts +210 -0
- package/src/launchpad/generated/pdas/bondingCurve.ts +39 -0
- package/src/launchpad/generated/pdas/eventAuthority.ts +20 -0
- package/src/launchpad/generated/pdas/globalConfig.ts +20 -0
- package/src/launchpad/generated/pdas/index.ts +14 -0
- package/src/launchpad/generated/pdas/migrationAuthority.ts +20 -0
- package/src/launchpad/generated/pdas/rewardAccrual.ts +37 -0
- package/src/launchpad/generated/pdas/wsolRewardAccrual.ts +20 -0
- package/src/launchpad/generated/plugins/index.ts +9 -0
- package/src/launchpad/generated/plugins/sendLaunchpad.ts +315 -0
- package/src/launchpad/generated/programs/index.ts +9 -0
- package/src/launchpad/generated/programs/sendLaunchpad.ts +12 -0
- package/src/launchpad/generated/types/bondingCurveStatus.ts +43 -0
- package/src/launchpad/generated/types/index.ts +10 -0
- package/src/launchpad/generated/types/tradeDirection.ts +38 -0
- package/src/launchpad/index.ts +10 -0
- package/src/launchpad/migrate.ts +54 -0
- package/src/launchpad/trade.ts +247 -0
- package/src/math/amm.ts +511 -0
- package/src/math/fee-decay.ts +49 -0
- package/src/math/fees.ts +75 -0
- package/src/math/index.ts +3 -0
- package/src/math/internal.ts +16 -0
- package/src/nexus/fee-helpers.ts +49 -0
- package/src/nexus/generated/accounts/altRegistry.ts +177 -0
- package/src/nexus/generated/accounts/creatorFeeConfig.ts +200 -0
- package/src/nexus/generated/accounts/feePreset.ts +196 -0
- package/src/nexus/generated/accounts/globalConfig.ts +188 -0
- package/src/nexus/generated/accounts/index.ts +19 -0
- package/src/nexus/generated/accounts/partnerConfig.ts +209 -0
- package/src/nexus/generated/accounts/partnerMetadata.ts +216 -0
- package/src/nexus/generated/accounts/rewardState.ts +209 -0
- package/src/nexus/generated/accounts/sendNexus.accounts.ts +85 -0
- package/src/nexus/generated/accounts/stakingConfig.ts +197 -0
- package/src/nexus/generated/accounts/userRewardDebt.ts +221 -0
- package/src/nexus/generated/accounts/userStakePosition.ts +218 -0
- package/src/nexus/generated/constants/index.ts +9 -0
- package/src/nexus/generated/constants/sendNexus.ts +13 -0
- package/src/nexus/generated/errors/index.ts +9 -0
- package/src/nexus/generated/errors/sendNexus.ts +229 -0
- package/src/nexus/generated/events/anchorEventCpiDiscriminator.framing.ts +28 -0
- package/src/nexus/generated/events/claimEvent.ts +106 -0
- package/src/nexus/generated/events/index.ts +13 -0
- package/src/nexus/generated/events/sendNexus.events.ts +121 -0
- package/src/nexus/generated/events/stakeEvent.ts +106 -0
- package/src/nexus/generated/events/unstakeEvent.ts +106 -0
- package/src/nexus/generated/index.ts +17 -0
- package/src/nexus/generated/instructions/claim.ts +740 -0
- package/src/nexus/generated/instructions/createUserRewardDebt.ts +498 -0
- package/src/nexus/generated/instructions/index.ts +14 -0
- package/src/nexus/generated/instructions/sendNexus.instructions.ts +146 -0
- package/src/nexus/generated/instructions/settle.ts +517 -0
- package/src/nexus/generated/instructions/stake.ts +615 -0
- package/src/nexus/generated/instructions/unstake.ts +593 -0
- package/src/nexus/generated/pdas/altRegistry.ts +20 -0
- package/src/nexus/generated/pdas/creatorFeeConfig.ts +39 -0
- package/src/nexus/generated/pdas/defaultFeePreset.ts +37 -0
- package/src/nexus/generated/pdas/defaultPartner.ts +40 -0
- package/src/nexus/generated/pdas/defaultPartnerMetadata.ts +42 -0
- package/src/nexus/generated/pdas/eventAuthority.ts +20 -0
- package/src/nexus/generated/pdas/feePreset.ts +39 -0
- package/src/nexus/generated/pdas/globalConfig.ts +20 -0
- package/src/nexus/generated/pdas/index.ts +22 -0
- package/src/nexus/generated/pdas/partnerConfig.ts +36 -0
- package/src/nexus/generated/pdas/partnerMetadata.ts +38 -0
- package/src/nexus/generated/pdas/rewardState.ts +36 -0
- package/src/nexus/generated/pdas/stakingConfig.ts +20 -0
- package/src/nexus/generated/pdas/userRewardDebt.ts +41 -0
- package/src/nexus/generated/pdas/userStakePosition.ts +39 -0
- package/src/nexus/generated/plugins/index.ts +9 -0
- package/src/nexus/generated/plugins/sendNexus.ts +494 -0
- package/src/nexus/generated/programs/index.ts +9 -0
- package/src/nexus/generated/programs/sendNexus.ts +12 -0
- package/src/nexus/generated/types/authPlatformEntry.ts +52 -0
- package/src/nexus/generated/types/callerType.ts +38 -0
- package/src/nexus/generated/types/dexFees.ts +64 -0
- package/src/nexus/generated/types/feeConfig.ts +73 -0
- package/src/nexus/generated/types/index.ts +13 -0
- package/src/nexus/generated/types/launchpadFees.ts +63 -0
- package/src/nexus/index.ts +9 -0
- package/src/nexus/staking.ts +581 -0
- package/src/platform.ts +19 -0
- package/src/transfer-fee.ts +216 -0
- package/src/utils/chunk.ts +21 -0
- package/src/utils/creator-hash.ts +57 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/mint-info.ts +102 -0
- package/src/utils/partner.ts +5 -0
- package/src/utils/pda.ts +24 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
assertAccountExists,
|
|
11
|
+
assertAccountsExist,
|
|
12
|
+
combineCodec,
|
|
13
|
+
containsBytes,
|
|
14
|
+
decodeAccount,
|
|
15
|
+
fetchEncodedAccount,
|
|
16
|
+
fetchEncodedAccounts,
|
|
17
|
+
fixDecoderSize,
|
|
18
|
+
fixEncoderSize,
|
|
19
|
+
getAddressDecoder,
|
|
20
|
+
getAddressEncoder,
|
|
21
|
+
getArrayDecoder,
|
|
22
|
+
getArrayEncoder,
|
|
23
|
+
getBytesDecoder,
|
|
24
|
+
getBytesEncoder,
|
|
25
|
+
getStructDecoder,
|
|
26
|
+
getStructEncoder,
|
|
27
|
+
getU8Decoder,
|
|
28
|
+
getU8Encoder,
|
|
29
|
+
transformEncoder,
|
|
30
|
+
type Account,
|
|
31
|
+
type Address,
|
|
32
|
+
type Codec,
|
|
33
|
+
type Decoder,
|
|
34
|
+
type EncodedAccount,
|
|
35
|
+
type Encoder,
|
|
36
|
+
type FetchAccountConfig,
|
|
37
|
+
type FetchAccountsConfig,
|
|
38
|
+
type MaybeAccount,
|
|
39
|
+
type MaybeEncodedAccount,
|
|
40
|
+
type ReadonlyUint8Array,
|
|
41
|
+
} from '@solana/kit';
|
|
42
|
+
import { SEND_NEXUS_PROGRAM_ADDRESS } from '../programs/index.js';
|
|
43
|
+
import {
|
|
44
|
+
getAuthPlatformEntryDecoder,
|
|
45
|
+
getAuthPlatformEntryEncoder,
|
|
46
|
+
type AuthPlatformEntry,
|
|
47
|
+
type AuthPlatformEntryArgs,
|
|
48
|
+
} from '../types/index.js';
|
|
49
|
+
|
|
50
|
+
export const GLOBAL_CONFIG_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
|
51
|
+
149, 8, 156, 202, 160, 252, 176, 217,
|
|
52
|
+
]);
|
|
53
|
+
|
|
54
|
+
export function getGlobalConfigDiscriminatorBytes(): ReadonlyUint8Array {
|
|
55
|
+
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
|
56
|
+
GLOBAL_CONFIG_DISCRIMINATOR,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type GlobalConfig = {
|
|
61
|
+
discriminator: ReadonlyUint8Array;
|
|
62
|
+
version: number;
|
|
63
|
+
bump: number;
|
|
64
|
+
authority: Address;
|
|
65
|
+
operator: Address;
|
|
66
|
+
authPlatforms: Array<AuthPlatformEntry>;
|
|
67
|
+
reserved: ReadonlyUint8Array;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export type GlobalConfigArgs = {
|
|
71
|
+
version: number;
|
|
72
|
+
bump: number;
|
|
73
|
+
authority: Address;
|
|
74
|
+
operator: Address;
|
|
75
|
+
authPlatforms: Array<AuthPlatformEntryArgs>;
|
|
76
|
+
reserved: ReadonlyUint8Array;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/** Gets the encoder for {@link GlobalConfigArgs} account data. */
|
|
80
|
+
export function getGlobalConfigEncoder(): Encoder<GlobalConfigArgs> {
|
|
81
|
+
return transformEncoder(
|
|
82
|
+
getStructEncoder([
|
|
83
|
+
['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
|
|
84
|
+
['version', getU8Encoder()],
|
|
85
|
+
['bump', getU8Encoder()],
|
|
86
|
+
['authority', getAddressEncoder()],
|
|
87
|
+
['operator', getAddressEncoder()],
|
|
88
|
+
['authPlatforms', getArrayEncoder(getAuthPlatformEntryEncoder())],
|
|
89
|
+
['reserved', fixEncoderSize(getBytesEncoder(), 64)],
|
|
90
|
+
]),
|
|
91
|
+
(value) => ({ ...value, discriminator: GLOBAL_CONFIG_DISCRIMINATOR }),
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Gets the decoder for {@link GlobalConfig} account data. */
|
|
96
|
+
export function getGlobalConfigDecoder(): Decoder<GlobalConfig> {
|
|
97
|
+
return getStructDecoder([
|
|
98
|
+
['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
|
|
99
|
+
['version', getU8Decoder()],
|
|
100
|
+
['bump', getU8Decoder()],
|
|
101
|
+
['authority', getAddressDecoder()],
|
|
102
|
+
['operator', getAddressDecoder()],
|
|
103
|
+
['authPlatforms', getArrayDecoder(getAuthPlatformEntryDecoder())],
|
|
104
|
+
['reserved', fixDecoderSize(getBytesDecoder(), 64)],
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Gets the codec for {@link GlobalConfig} account data. */
|
|
109
|
+
export function getGlobalConfigCodec(): Codec<GlobalConfigArgs, GlobalConfig> {
|
|
110
|
+
return combineCodec(getGlobalConfigEncoder(), getGlobalConfigDecoder());
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function decodeGlobalConfig<TAddress extends string = string>(
|
|
114
|
+
encodedAccount: EncodedAccount<TAddress>,
|
|
115
|
+
): Account<GlobalConfig, TAddress>;
|
|
116
|
+
export function decodeGlobalConfig<TAddress extends string = string>(
|
|
117
|
+
encodedAccount: MaybeEncodedAccount<TAddress>,
|
|
118
|
+
): MaybeAccount<GlobalConfig, TAddress>;
|
|
119
|
+
export function decodeGlobalConfig<TAddress extends string = string>(
|
|
120
|
+
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
|
|
121
|
+
): Account<GlobalConfig, TAddress> | MaybeAccount<GlobalConfig, TAddress> {
|
|
122
|
+
if (!('exists' in encodedAccount) || encodedAccount.exists) {
|
|
123
|
+
if (encodedAccount.programAddress !== SEND_NEXUS_PROGRAM_ADDRESS) {
|
|
124
|
+
const error = new Error(
|
|
125
|
+
`decodeGlobalConfig: account ${encodedAccount.address} is owned by ${encodedAccount.programAddress}, expected ${SEND_NEXUS_PROGRAM_ADDRESS}`,
|
|
126
|
+
);
|
|
127
|
+
error.name = 'AccountOwnerMismatchError';
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
if (
|
|
131
|
+
!containsBytes(encodedAccount.data, GLOBAL_CONFIG_DISCRIMINATOR, 0)
|
|
132
|
+
) {
|
|
133
|
+
const error = new Error(
|
|
134
|
+
`decodeGlobalConfig: account ${encodedAccount.address} does not match the GlobalConfig discriminator`,
|
|
135
|
+
);
|
|
136
|
+
error.name = 'AccountDiscriminatorMismatchError';
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return decodeAccount(
|
|
141
|
+
encodedAccount as MaybeEncodedAccount<TAddress>,
|
|
142
|
+
getGlobalConfigDecoder(),
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export async function fetchGlobalConfig<TAddress extends string = string>(
|
|
147
|
+
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
|
148
|
+
address: Address<TAddress>,
|
|
149
|
+
config?: FetchAccountConfig,
|
|
150
|
+
): Promise<Account<GlobalConfig, TAddress>> {
|
|
151
|
+
const maybeAccount = await fetchMaybeGlobalConfig(rpc, address, config);
|
|
152
|
+
assertAccountExists(maybeAccount);
|
|
153
|
+
return maybeAccount;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export async function fetchMaybeGlobalConfig<TAddress extends string = string>(
|
|
157
|
+
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
|
158
|
+
address: Address<TAddress>,
|
|
159
|
+
config?: FetchAccountConfig,
|
|
160
|
+
): Promise<MaybeAccount<GlobalConfig, TAddress>> {
|
|
161
|
+
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
|
|
162
|
+
return decodeGlobalConfig(maybeAccount);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export async function fetchAllGlobalConfig(
|
|
166
|
+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
|
167
|
+
addresses: Array<Address>,
|
|
168
|
+
config?: FetchAccountsConfig,
|
|
169
|
+
): Promise<Account<GlobalConfig>[]> {
|
|
170
|
+
const maybeAccounts = await fetchAllMaybeGlobalConfig(
|
|
171
|
+
rpc,
|
|
172
|
+
addresses,
|
|
173
|
+
config,
|
|
174
|
+
);
|
|
175
|
+
assertAccountsExist(maybeAccounts);
|
|
176
|
+
return maybeAccounts;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export async function fetchAllMaybeGlobalConfig(
|
|
180
|
+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
|
181
|
+
addresses: Array<Address>,
|
|
182
|
+
config?: FetchAccountsConfig,
|
|
183
|
+
): Promise<MaybeAccount<GlobalConfig>[]> {
|
|
184
|
+
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
|
|
185
|
+
return maybeAccounts.map((maybeAccount) =>
|
|
186
|
+
decodeGlobalConfig(maybeAccount),
|
|
187
|
+
);
|
|
188
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export * from './altRegistry.js';
|
|
10
|
+
export * from './creatorFeeConfig.js';
|
|
11
|
+
export * from './feePreset.js';
|
|
12
|
+
export * from './globalConfig.js';
|
|
13
|
+
export * from './partnerConfig.js';
|
|
14
|
+
export * from './partnerMetadata.js';
|
|
15
|
+
export * from './rewardState.js';
|
|
16
|
+
export * from './sendNexus.accounts.js';
|
|
17
|
+
export * from './stakingConfig.js';
|
|
18
|
+
export * from './userRewardDebt.js';
|
|
19
|
+
export * from './userStakePosition.js';
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
assertAccountExists,
|
|
11
|
+
assertAccountsExist,
|
|
12
|
+
combineCodec,
|
|
13
|
+
containsBytes,
|
|
14
|
+
decodeAccount,
|
|
15
|
+
fetchEncodedAccount,
|
|
16
|
+
fetchEncodedAccounts,
|
|
17
|
+
fixDecoderSize,
|
|
18
|
+
fixEncoderSize,
|
|
19
|
+
getAddressDecoder,
|
|
20
|
+
getAddressEncoder,
|
|
21
|
+
getBytesDecoder,
|
|
22
|
+
getBytesEncoder,
|
|
23
|
+
getStructDecoder,
|
|
24
|
+
getStructEncoder,
|
|
25
|
+
getU8Decoder,
|
|
26
|
+
getU8Encoder,
|
|
27
|
+
transformEncoder,
|
|
28
|
+
type Account,
|
|
29
|
+
type Address,
|
|
30
|
+
type EncodedAccount,
|
|
31
|
+
type FetchAccountConfig,
|
|
32
|
+
type FetchAccountsConfig,
|
|
33
|
+
type FixedSizeCodec,
|
|
34
|
+
type FixedSizeDecoder,
|
|
35
|
+
type FixedSizeEncoder,
|
|
36
|
+
type MaybeAccount,
|
|
37
|
+
type MaybeEncodedAccount,
|
|
38
|
+
type ReadonlyUint8Array,
|
|
39
|
+
} from '@solana/kit';
|
|
40
|
+
import { SEND_NEXUS_PROGRAM_ADDRESS } from '../programs/index.js';
|
|
41
|
+
import {
|
|
42
|
+
getDexFeesDecoder,
|
|
43
|
+
getDexFeesEncoder,
|
|
44
|
+
getLaunchpadFeesDecoder,
|
|
45
|
+
getLaunchpadFeesEncoder,
|
|
46
|
+
type DexFees,
|
|
47
|
+
type DexFeesArgs,
|
|
48
|
+
type LaunchpadFees,
|
|
49
|
+
type LaunchpadFeesArgs,
|
|
50
|
+
} from '../types/index.js';
|
|
51
|
+
|
|
52
|
+
export const PARTNER_CONFIG_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
|
53
|
+
212, 110, 106, 253, 66, 131, 77, 96,
|
|
54
|
+
]);
|
|
55
|
+
|
|
56
|
+
export function getPartnerConfigDiscriminatorBytes(): ReadonlyUint8Array {
|
|
57
|
+
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
|
58
|
+
PARTNER_CONFIG_DISCRIMINATOR,
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export type PartnerConfig = {
|
|
63
|
+
discriminator: ReadonlyUint8Array;
|
|
64
|
+
version: number;
|
|
65
|
+
bump: number;
|
|
66
|
+
authority: Address;
|
|
67
|
+
partner: Address;
|
|
68
|
+
feePreset: number;
|
|
69
|
+
launchpad: LaunchpadFees;
|
|
70
|
+
dex: DexFees;
|
|
71
|
+
platformConfig: Address;
|
|
72
|
+
reserved: ReadonlyUint8Array;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export type PartnerConfigArgs = {
|
|
76
|
+
version: number;
|
|
77
|
+
bump: number;
|
|
78
|
+
authority: Address;
|
|
79
|
+
partner: Address;
|
|
80
|
+
feePreset: number;
|
|
81
|
+
launchpad: LaunchpadFeesArgs;
|
|
82
|
+
dex: DexFeesArgs;
|
|
83
|
+
platformConfig: Address;
|
|
84
|
+
reserved: ReadonlyUint8Array;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/** Gets the encoder for {@link PartnerConfigArgs} account data. */
|
|
88
|
+
export function getPartnerConfigEncoder(): FixedSizeEncoder<PartnerConfigArgs> {
|
|
89
|
+
return transformEncoder(
|
|
90
|
+
getStructEncoder([
|
|
91
|
+
['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
|
|
92
|
+
['version', getU8Encoder()],
|
|
93
|
+
['bump', getU8Encoder()],
|
|
94
|
+
['authority', getAddressEncoder()],
|
|
95
|
+
['partner', getAddressEncoder()],
|
|
96
|
+
['feePreset', getU8Encoder()],
|
|
97
|
+
['launchpad', getLaunchpadFeesEncoder()],
|
|
98
|
+
['dex', getDexFeesEncoder()],
|
|
99
|
+
['platformConfig', getAddressEncoder()],
|
|
100
|
+
['reserved', fixEncoderSize(getBytesEncoder(), 32)],
|
|
101
|
+
]),
|
|
102
|
+
(value) => ({ ...value, discriminator: PARTNER_CONFIG_DISCRIMINATOR }),
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Gets the decoder for {@link PartnerConfig} account data. */
|
|
107
|
+
export function getPartnerConfigDecoder(): FixedSizeDecoder<PartnerConfig> {
|
|
108
|
+
return getStructDecoder([
|
|
109
|
+
['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
|
|
110
|
+
['version', getU8Decoder()],
|
|
111
|
+
['bump', getU8Decoder()],
|
|
112
|
+
['authority', getAddressDecoder()],
|
|
113
|
+
['partner', getAddressDecoder()],
|
|
114
|
+
['feePreset', getU8Decoder()],
|
|
115
|
+
['launchpad', getLaunchpadFeesDecoder()],
|
|
116
|
+
['dex', getDexFeesDecoder()],
|
|
117
|
+
['platformConfig', getAddressDecoder()],
|
|
118
|
+
['reserved', fixDecoderSize(getBytesDecoder(), 32)],
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Gets the codec for {@link PartnerConfig} account data. */
|
|
123
|
+
export function getPartnerConfigCodec(): FixedSizeCodec<
|
|
124
|
+
PartnerConfigArgs,
|
|
125
|
+
PartnerConfig
|
|
126
|
+
> {
|
|
127
|
+
return combineCodec(getPartnerConfigEncoder(), getPartnerConfigDecoder());
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function decodePartnerConfig<TAddress extends string = string>(
|
|
131
|
+
encodedAccount: EncodedAccount<TAddress>,
|
|
132
|
+
): Account<PartnerConfig, TAddress>;
|
|
133
|
+
export function decodePartnerConfig<TAddress extends string = string>(
|
|
134
|
+
encodedAccount: MaybeEncodedAccount<TAddress>,
|
|
135
|
+
): MaybeAccount<PartnerConfig, TAddress>;
|
|
136
|
+
export function decodePartnerConfig<TAddress extends string = string>(
|
|
137
|
+
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
|
|
138
|
+
): Account<PartnerConfig, TAddress> | MaybeAccount<PartnerConfig, TAddress> {
|
|
139
|
+
if (!('exists' in encodedAccount) || encodedAccount.exists) {
|
|
140
|
+
if (encodedAccount.programAddress !== SEND_NEXUS_PROGRAM_ADDRESS) {
|
|
141
|
+
const error = new Error(
|
|
142
|
+
`decodePartnerConfig: account ${encodedAccount.address} is owned by ${encodedAccount.programAddress}, expected ${SEND_NEXUS_PROGRAM_ADDRESS}`,
|
|
143
|
+
);
|
|
144
|
+
error.name = 'AccountOwnerMismatchError';
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
if (
|
|
148
|
+
!containsBytes(encodedAccount.data, PARTNER_CONFIG_DISCRIMINATOR, 0)
|
|
149
|
+
) {
|
|
150
|
+
const error = new Error(
|
|
151
|
+
`decodePartnerConfig: account ${encodedAccount.address} does not match the PartnerConfig discriminator`,
|
|
152
|
+
);
|
|
153
|
+
error.name = 'AccountDiscriminatorMismatchError';
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return decodeAccount(
|
|
158
|
+
encodedAccount as MaybeEncodedAccount<TAddress>,
|
|
159
|
+
getPartnerConfigDecoder(),
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export async function fetchPartnerConfig<TAddress extends string = string>(
|
|
164
|
+
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
|
165
|
+
address: Address<TAddress>,
|
|
166
|
+
config?: FetchAccountConfig,
|
|
167
|
+
): Promise<Account<PartnerConfig, TAddress>> {
|
|
168
|
+
const maybeAccount = await fetchMaybePartnerConfig(rpc, address, config);
|
|
169
|
+
assertAccountExists(maybeAccount);
|
|
170
|
+
return maybeAccount;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export async function fetchMaybePartnerConfig<TAddress extends string = string>(
|
|
174
|
+
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
|
175
|
+
address: Address<TAddress>,
|
|
176
|
+
config?: FetchAccountConfig,
|
|
177
|
+
): Promise<MaybeAccount<PartnerConfig, TAddress>> {
|
|
178
|
+
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
|
|
179
|
+
return decodePartnerConfig(maybeAccount);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export async function fetchAllPartnerConfig(
|
|
183
|
+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
|
184
|
+
addresses: Array<Address>,
|
|
185
|
+
config?: FetchAccountsConfig,
|
|
186
|
+
): Promise<Account<PartnerConfig>[]> {
|
|
187
|
+
const maybeAccounts = await fetchAllMaybePartnerConfig(
|
|
188
|
+
rpc,
|
|
189
|
+
addresses,
|
|
190
|
+
config,
|
|
191
|
+
);
|
|
192
|
+
assertAccountsExist(maybeAccounts);
|
|
193
|
+
return maybeAccounts;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export async function fetchAllMaybePartnerConfig(
|
|
197
|
+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
|
198
|
+
addresses: Array<Address>,
|
|
199
|
+
config?: FetchAccountsConfig,
|
|
200
|
+
): Promise<MaybeAccount<PartnerConfig>[]> {
|
|
201
|
+
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
|
|
202
|
+
return maybeAccounts.map((maybeAccount) =>
|
|
203
|
+
decodePartnerConfig(maybeAccount),
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export function getPartnerConfigSize(): number {
|
|
208
|
+
return 173;
|
|
209
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
addDecoderSizePrefix,
|
|
11
|
+
addEncoderSizePrefix,
|
|
12
|
+
assertAccountExists,
|
|
13
|
+
assertAccountsExist,
|
|
14
|
+
combineCodec,
|
|
15
|
+
containsBytes,
|
|
16
|
+
decodeAccount,
|
|
17
|
+
fetchEncodedAccount,
|
|
18
|
+
fetchEncodedAccounts,
|
|
19
|
+
fixDecoderSize,
|
|
20
|
+
fixEncoderSize,
|
|
21
|
+
getAddressDecoder,
|
|
22
|
+
getAddressEncoder,
|
|
23
|
+
getBytesDecoder,
|
|
24
|
+
getBytesEncoder,
|
|
25
|
+
getI64Decoder,
|
|
26
|
+
getI64Encoder,
|
|
27
|
+
getStructDecoder,
|
|
28
|
+
getStructEncoder,
|
|
29
|
+
getU32Decoder,
|
|
30
|
+
getU32Encoder,
|
|
31
|
+
getU8Decoder,
|
|
32
|
+
getU8Encoder,
|
|
33
|
+
getUtf8Decoder,
|
|
34
|
+
getUtf8Encoder,
|
|
35
|
+
transformEncoder,
|
|
36
|
+
type Account,
|
|
37
|
+
type Address,
|
|
38
|
+
type Codec,
|
|
39
|
+
type Decoder,
|
|
40
|
+
type EncodedAccount,
|
|
41
|
+
type Encoder,
|
|
42
|
+
type FetchAccountConfig,
|
|
43
|
+
type FetchAccountsConfig,
|
|
44
|
+
type MaybeAccount,
|
|
45
|
+
type MaybeEncodedAccount,
|
|
46
|
+
type ReadonlyUint8Array,
|
|
47
|
+
} from '@solana/kit';
|
|
48
|
+
import { SEND_NEXUS_PROGRAM_ADDRESS } from '../programs/index.js';
|
|
49
|
+
|
|
50
|
+
export const PARTNER_METADATA_DISCRIMINATOR: ReadonlyUint8Array =
|
|
51
|
+
new Uint8Array([68, 68, 130, 19, 16, 209, 98, 156]);
|
|
52
|
+
|
|
53
|
+
export function getPartnerMetadataDiscriminatorBytes(): ReadonlyUint8Array {
|
|
54
|
+
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
|
55
|
+
PARTNER_METADATA_DISCRIMINATOR,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type PartnerMetadata = {
|
|
60
|
+
discriminator: ReadonlyUint8Array;
|
|
61
|
+
version: number;
|
|
62
|
+
bump: number;
|
|
63
|
+
partner: Address;
|
|
64
|
+
name: string;
|
|
65
|
+
note: string;
|
|
66
|
+
addedAt: bigint;
|
|
67
|
+
updatedAt: bigint;
|
|
68
|
+
platformConfig: Address;
|
|
69
|
+
reserved: ReadonlyUint8Array;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export type PartnerMetadataArgs = {
|
|
73
|
+
version: number;
|
|
74
|
+
bump: number;
|
|
75
|
+
partner: Address;
|
|
76
|
+
name: string;
|
|
77
|
+
note: string;
|
|
78
|
+
addedAt: number | bigint;
|
|
79
|
+
updatedAt: number | bigint;
|
|
80
|
+
platformConfig: Address;
|
|
81
|
+
reserved: ReadonlyUint8Array;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/** Gets the encoder for {@link PartnerMetadataArgs} account data. */
|
|
85
|
+
export function getPartnerMetadataEncoder(): Encoder<PartnerMetadataArgs> {
|
|
86
|
+
return transformEncoder(
|
|
87
|
+
getStructEncoder([
|
|
88
|
+
['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
|
|
89
|
+
['version', getU8Encoder()],
|
|
90
|
+
['bump', getU8Encoder()],
|
|
91
|
+
['partner', getAddressEncoder()],
|
|
92
|
+
['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
|
93
|
+
['note', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
|
94
|
+
['addedAt', getI64Encoder()],
|
|
95
|
+
['updatedAt', getI64Encoder()],
|
|
96
|
+
['platformConfig', getAddressEncoder()],
|
|
97
|
+
['reserved', fixEncoderSize(getBytesEncoder(), 32)],
|
|
98
|
+
]),
|
|
99
|
+
(value) => ({
|
|
100
|
+
...value,
|
|
101
|
+
discriminator: PARTNER_METADATA_DISCRIMINATOR,
|
|
102
|
+
}),
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Gets the decoder for {@link PartnerMetadata} account data. */
|
|
107
|
+
export function getPartnerMetadataDecoder(): Decoder<PartnerMetadata> {
|
|
108
|
+
return getStructDecoder([
|
|
109
|
+
['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
|
|
110
|
+
['version', getU8Decoder()],
|
|
111
|
+
['bump', getU8Decoder()],
|
|
112
|
+
['partner', getAddressDecoder()],
|
|
113
|
+
['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
|
114
|
+
['note', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
|
115
|
+
['addedAt', getI64Decoder()],
|
|
116
|
+
['updatedAt', getI64Decoder()],
|
|
117
|
+
['platformConfig', getAddressDecoder()],
|
|
118
|
+
['reserved', fixDecoderSize(getBytesDecoder(), 32)],
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Gets the codec for {@link PartnerMetadata} account data. */
|
|
123
|
+
export function getPartnerMetadataCodec(): Codec<
|
|
124
|
+
PartnerMetadataArgs,
|
|
125
|
+
PartnerMetadata
|
|
126
|
+
> {
|
|
127
|
+
return combineCodec(
|
|
128
|
+
getPartnerMetadataEncoder(),
|
|
129
|
+
getPartnerMetadataDecoder(),
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function decodePartnerMetadata<TAddress extends string = string>(
|
|
134
|
+
encodedAccount: EncodedAccount<TAddress>,
|
|
135
|
+
): Account<PartnerMetadata, TAddress>;
|
|
136
|
+
export function decodePartnerMetadata<TAddress extends string = string>(
|
|
137
|
+
encodedAccount: MaybeEncodedAccount<TAddress>,
|
|
138
|
+
): MaybeAccount<PartnerMetadata, TAddress>;
|
|
139
|
+
export function decodePartnerMetadata<TAddress extends string = string>(
|
|
140
|
+
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
|
|
141
|
+
):
|
|
142
|
+
| Account<PartnerMetadata, TAddress>
|
|
143
|
+
| MaybeAccount<PartnerMetadata, TAddress> {
|
|
144
|
+
if (!('exists' in encodedAccount) || encodedAccount.exists) {
|
|
145
|
+
if (encodedAccount.programAddress !== SEND_NEXUS_PROGRAM_ADDRESS) {
|
|
146
|
+
const error = new Error(
|
|
147
|
+
`decodePartnerMetadata: account ${encodedAccount.address} is owned by ${encodedAccount.programAddress}, expected ${SEND_NEXUS_PROGRAM_ADDRESS}`,
|
|
148
|
+
);
|
|
149
|
+
error.name = 'AccountOwnerMismatchError';
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
if (
|
|
153
|
+
!containsBytes(
|
|
154
|
+
encodedAccount.data,
|
|
155
|
+
PARTNER_METADATA_DISCRIMINATOR,
|
|
156
|
+
0,
|
|
157
|
+
)
|
|
158
|
+
) {
|
|
159
|
+
const error = new Error(
|
|
160
|
+
`decodePartnerMetadata: account ${encodedAccount.address} does not match the PartnerMetadata discriminator`,
|
|
161
|
+
);
|
|
162
|
+
error.name = 'AccountDiscriminatorMismatchError';
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return decodeAccount(
|
|
167
|
+
encodedAccount as MaybeEncodedAccount<TAddress>,
|
|
168
|
+
getPartnerMetadataDecoder(),
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export async function fetchPartnerMetadata<TAddress extends string = string>(
|
|
173
|
+
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
|
174
|
+
address: Address<TAddress>,
|
|
175
|
+
config?: FetchAccountConfig,
|
|
176
|
+
): Promise<Account<PartnerMetadata, TAddress>> {
|
|
177
|
+
const maybeAccount = await fetchMaybePartnerMetadata(rpc, address, config);
|
|
178
|
+
assertAccountExists(maybeAccount);
|
|
179
|
+
return maybeAccount;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export async function fetchMaybePartnerMetadata<
|
|
183
|
+
TAddress extends string = string,
|
|
184
|
+
>(
|
|
185
|
+
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
|
186
|
+
address: Address<TAddress>,
|
|
187
|
+
config?: FetchAccountConfig,
|
|
188
|
+
): Promise<MaybeAccount<PartnerMetadata, TAddress>> {
|
|
189
|
+
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
|
|
190
|
+
return decodePartnerMetadata(maybeAccount);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export async function fetchAllPartnerMetadata(
|
|
194
|
+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
|
195
|
+
addresses: Array<Address>,
|
|
196
|
+
config?: FetchAccountsConfig,
|
|
197
|
+
): Promise<Account<PartnerMetadata>[]> {
|
|
198
|
+
const maybeAccounts = await fetchAllMaybePartnerMetadata(
|
|
199
|
+
rpc,
|
|
200
|
+
addresses,
|
|
201
|
+
config,
|
|
202
|
+
);
|
|
203
|
+
assertAccountsExist(maybeAccounts);
|
|
204
|
+
return maybeAccounts;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export async function fetchAllMaybePartnerMetadata(
|
|
208
|
+
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
|
209
|
+
addresses: Array<Address>,
|
|
210
|
+
config?: FetchAccountsConfig,
|
|
211
|
+
): Promise<MaybeAccount<PartnerMetadata>[]> {
|
|
212
|
+
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
|
|
213
|
+
return maybeAccounts.map((maybeAccount) =>
|
|
214
|
+
decodePartnerMetadata(maybeAccount),
|
|
215
|
+
);
|
|
216
|
+
}
|