@send-fun/sdk 1.2.0 → 2.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.
Files changed (51) hide show
  1. package/dist/index.cjs +281 -365
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +125 -166
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +125 -166
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +281 -365
  8. package/dist/index.mjs.map +1 -1
  9. package/package.json +7 -7
  10. package/src/dex/generated/accounts/pool.ts +19 -7
  11. package/src/dex/generated/errors/sendDex.ts +16 -8
  12. package/src/dex/generated/events/creatorClaimEvent.ts +3 -2
  13. package/src/dex/generated/events/poolCreateEvent.ts +8 -2
  14. package/src/dex/generated/events/tokenCreateEvent.ts +8 -9
  15. package/src/dex/generated/events/tradeEvent.ts +9 -2
  16. package/src/dex/generated/instructions/claimCreatorFees.ts +21 -5
  17. package/src/{nexus → dex}/generated/pdas/creatorFeeConfig.ts +6 -6
  18. package/src/dex/generated/pdas/index.ts +1 -0
  19. package/src/dex/generated/plugins/sendDex.ts +3 -0
  20. package/src/launchpad/create.ts +9 -34
  21. package/src/launchpad/generated/accounts/bondingCurve.ts +23 -7
  22. package/src/launchpad/generated/errors/sendLaunchpad.ts +12 -4
  23. package/src/launchpad/generated/events/completeEvent.ts +3 -2
  24. package/src/launchpad/generated/events/creatorClaimEvent.ts +3 -2
  25. package/src/launchpad/generated/events/migrateEvent.ts +3 -2
  26. package/src/launchpad/generated/events/tokenCreateEvent.ts +10 -9
  27. package/src/launchpad/generated/events/tradeEvent.ts +9 -2
  28. package/src/launchpad/generated/instructions/claimCreatorFees.ts +17 -4
  29. package/src/launchpad/generated/instructions/createToken.ts +32 -50
  30. package/src/launchpad/generated/instructions/migrate.ts +79 -12
  31. package/src/launchpad/generated/pdas/creatorFeeConfig.ts +39 -0
  32. package/src/launchpad/generated/pdas/index.ts +1 -0
  33. package/src/launchpad/generated/plugins/sendLaunchpad.ts +3 -0
  34. package/src/launchpad/migrate.ts +7 -4
  35. package/src/nexus/fee-helpers.ts +8 -5
  36. package/src/nexus/generated/accounts/feePreset.ts +2 -2
  37. package/src/nexus/generated/accounts/index.ts +0 -1
  38. package/src/nexus/generated/accounts/partnerConfig.ts +9 -3
  39. package/src/nexus/generated/accounts/sendNexus.accounts.ts +0 -5
  40. package/src/nexus/generated/accounts/userRewardDebt.ts +3 -3
  41. package/src/nexus/generated/accounts/userStakePosition.ts +3 -3
  42. package/src/nexus/generated/errors/sendNexus.ts +12 -4
  43. package/src/nexus/generated/pdas/index.ts +0 -1
  44. package/src/nexus/generated/plugins/sendNexus.ts +0 -35
  45. package/src/nexus/generated/types/dexFees.ts +4 -4
  46. package/src/nexus/generated/types/index.ts +0 -1
  47. package/src/nexus/generated/types/launchpadFees.ts +4 -4
  48. package/src/utils/index.ts +0 -5
  49. package/src/nexus/generated/accounts/creatorFeeConfig.ts +0 -237
  50. package/src/nexus/generated/types/callerType.ts +0 -38
  51. package/src/utils/creator-hash.ts +0 -60
@@ -18,12 +18,16 @@ import {
18
18
  fixEncoderSize,
19
19
  getAddressDecoder,
20
20
  getAddressEncoder,
21
+ getArrayDecoder,
22
+ getArrayEncoder,
21
23
  getBytesDecoder,
22
24
  getBytesEncoder,
23
25
  getI64Decoder,
24
26
  getI64Encoder,
25
27
  getStructDecoder,
26
28
  getStructEncoder,
29
+ getU16Decoder,
30
+ getU16Encoder,
27
31
  getU64Decoder,
28
32
  getU64Encoder,
29
33
  getU8Decoder,
@@ -74,7 +78,7 @@ export type BondingCurve = {
74
78
  quoteMint: Address;
75
79
  quoteDecimals: number;
76
80
  coinCreator: Address;
77
- creatorFeeConfig: Address;
81
+ padding0: Array<bigint>;
78
82
  partner: Address;
79
83
  baseVault: Address;
80
84
  quoteVault: Address;
@@ -86,6 +90,9 @@ export type BondingCurve = {
86
90
  protocolOwed: bigint;
87
91
  creatorOwed: bigint;
88
92
  platformConfig: Address;
93
+ creatorFeeMode: number;
94
+ creatorFeeBps: number;
95
+ dexCreatorFeeBps: number;
89
96
  reserved: ReadonlyUint8Array;
90
97
  };
91
98
 
@@ -102,7 +109,7 @@ export type BondingCurveArgs = {
102
109
  quoteMint: Address;
103
110
  quoteDecimals: number;
104
111
  coinCreator: Address;
105
- creatorFeeConfig: Address;
112
+ padding0: Array<number | bigint>;
106
113
  partner: Address;
107
114
  baseVault: Address;
108
115
  quoteVault: Address;
@@ -114,6 +121,9 @@ export type BondingCurveArgs = {
114
121
  protocolOwed: number | bigint;
115
122
  creatorOwed: number | bigint;
116
123
  platformConfig: Address;
124
+ creatorFeeMode: number;
125
+ creatorFeeBps: number;
126
+ dexCreatorFeeBps: number;
117
127
  reserved: ReadonlyUint8Array;
118
128
  };
119
129
 
@@ -134,7 +144,7 @@ export function getBondingCurveEncoder(): FixedSizeEncoder<BondingCurveArgs> {
134
144
  ['quoteMint', getAddressEncoder()],
135
145
  ['quoteDecimals', getU8Encoder()],
136
146
  ['coinCreator', getAddressEncoder()],
137
- ['creatorFeeConfig', getAddressEncoder()],
147
+ ['padding0', getArrayEncoder(getU64Encoder(), { size: 4 })],
138
148
  ['partner', getAddressEncoder()],
139
149
  ['baseVault', getAddressEncoder()],
140
150
  ['quoteVault', getAddressEncoder()],
@@ -146,7 +156,10 @@ export function getBondingCurveEncoder(): FixedSizeEncoder<BondingCurveArgs> {
146
156
  ['protocolOwed', getU64Encoder()],
147
157
  ['creatorOwed', getU64Encoder()],
148
158
  ['platformConfig', getAddressEncoder()],
149
- ['reserved', fixEncoderSize(getBytesEncoder(), 64)],
159
+ ['creatorFeeMode', getU8Encoder()],
160
+ ['creatorFeeBps', getU16Encoder()],
161
+ ['dexCreatorFeeBps', getU16Encoder()],
162
+ ['reserved', fixEncoderSize(getBytesEncoder(), 256)],
150
163
  ]),
151
164
  (value) => ({ ...value, discriminator: BONDING_CURVE_DISCRIMINATOR }),
152
165
  );
@@ -168,7 +181,7 @@ export function getBondingCurveDecoder(): FixedSizeDecoder<BondingCurve> {
168
181
  ['quoteMint', getAddressDecoder()],
169
182
  ['quoteDecimals', getU8Decoder()],
170
183
  ['coinCreator', getAddressDecoder()],
171
- ['creatorFeeConfig', getAddressDecoder()],
184
+ ['padding0', getArrayDecoder(getU64Decoder(), { size: 4 })],
172
185
  ['partner', getAddressDecoder()],
173
186
  ['baseVault', getAddressDecoder()],
174
187
  ['quoteVault', getAddressDecoder()],
@@ -180,7 +193,10 @@ export function getBondingCurveDecoder(): FixedSizeDecoder<BondingCurve> {
180
193
  ['protocolOwed', getU64Decoder()],
181
194
  ['creatorOwed', getU64Decoder()],
182
195
  ['platformConfig', getAddressDecoder()],
183
- ['reserved', fixDecoderSize(getBytesDecoder(), 64)],
196
+ ['creatorFeeMode', getU8Decoder()],
197
+ ['creatorFeeBps', getU16Decoder()],
198
+ ['dexCreatorFeeBps', getU16Decoder()],
199
+ ['reserved', fixDecoderSize(getBytesDecoder(), 256)],
184
200
  ]);
185
201
  }
186
202
 
@@ -306,5 +322,5 @@ export async function fetchAllMaybeBondingCurve(
306
322
  }
307
323
 
308
324
  export function getBondingCurveSize(): number {
309
- return 421;
325
+ return 618;
310
326
  }
@@ -70,12 +70,16 @@ export const SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_WRONG_MINT = 0x1b61; // 70
70
70
  export const SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_WRONG_AUTHORITY = 0x1b62; // 7010
71
71
  /** NothingToClaim: Nothing to claim */
72
72
  export const SEND_LAUNCHPAD_ERROR__NOTHING_TO_CLAIM = 0x1b63; // 7011
73
- /** InvalidCreatorId: Creator identity is not a decodable wallet address */
74
- export const SEND_LAUNCHPAD_ERROR__INVALID_CREATOR_ID = 0x1b64; // 7012
73
+ /** Unused7012: Unused */
74
+ export const SEND_LAUNCHPAD_ERROR__UNUSED7012 = 0x1b64; // 7012
75
75
  /** QuoteMintPriceUnset: Quote mint has no USDC price on its nexus reward state */
76
76
  export const SEND_LAUNCHPAD_ERROR__QUOTE_MINT_PRICE_UNSET = 0x1b65; // 7013
77
77
  /** TransferFeeNotSettleable: Token-2022 transfer fee schedule cannot settle the exact amount */
78
78
  export const SEND_LAUNCHPAD_ERROR__TRANSFER_FEE_NOT_SETTLEABLE = 0x1b66; // 7014
79
+ /** CreatorFeeTooHigh: Creator fee exceeds the partner's maximum */
80
+ export const SEND_LAUNCHPAD_ERROR__CREATOR_FEE_TOO_HIGH = 0x1b67; // 7015
81
+ /** CreatorFeeModeNotAllowed: Creator fee mode is not allowed by the partner config */
82
+ export const SEND_LAUNCHPAD_ERROR__CREATOR_FEE_MODE_NOT_ALLOWED = 0x1b68; // 7016
79
83
  /** InsufficientLiquidity: Insufficient liquidity */
80
84
  export const SEND_LAUNCHPAD_ERROR__INSUFFICIENT_LIQUIDITY = 0x1bbc; // 7100
81
85
  /** InvalidAmount: Invalid amount */
@@ -86,6 +90,8 @@ export type SendLaunchpadError =
86
90
  | typeof SEND_LAUNCHPAD_ERROR__ARITHMETIC_OVERFLOW
87
91
  | typeof SEND_LAUNCHPAD_ERROR__BASE_MINT_NOT_FOUND
88
92
  | typeof SEND_LAUNCHPAD_ERROR__BLOCKED_BY_HELD_SUPPLY
93
+ | typeof SEND_LAUNCHPAD_ERROR__CREATOR_FEE_MODE_NOT_ALLOWED
94
+ | typeof SEND_LAUNCHPAD_ERROR__CREATOR_FEE_TOO_HIGH
89
95
  | typeof SEND_LAUNCHPAD_ERROR__CURVE_IS_LIVE
90
96
  | typeof SEND_LAUNCHPAD_ERROR__INSUFFICIENT_BALANCE
91
97
  | typeof SEND_LAUNCHPAD_ERROR__INSUFFICIENT_LIQUIDITY
@@ -93,7 +99,6 @@ export type SendLaunchpadError =
93
99
  | typeof SEND_LAUNCHPAD_ERROR__INVALID_AUTHORITY
94
100
  | typeof SEND_LAUNCHPAD_ERROR__INVALID_BASE_MINT
95
101
  | typeof SEND_LAUNCHPAD_ERROR__INVALID_COIN_CREATOR
96
- | typeof SEND_LAUNCHPAD_ERROR__INVALID_CREATOR_ID
97
102
  | typeof SEND_LAUNCHPAD_ERROR__INVALID_PYTH_ACCOUNT
98
103
  | typeof SEND_LAUNCHPAD_ERROR__INVALID_PYTH_FEED
99
104
  | typeof SEND_LAUNCHPAD_ERROR__INVALID_QUOTE_MINT
@@ -111,6 +116,7 @@ export type SendLaunchpadError =
111
116
  | typeof SEND_LAUNCHPAD_ERROR__TOKEN_CREATION_DISABLED
112
117
  | typeof SEND_LAUNCHPAD_ERROR__TRANSFER_FEE_NOT_SETTLEABLE
113
118
  | typeof SEND_LAUNCHPAD_ERROR__UNAUTHORIZED
119
+ | typeof SEND_LAUNCHPAD_ERROR__UNUSED7012
114
120
  | typeof SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_INVALID
115
121
  | typeof SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_WRONG_AUTHORITY
116
122
  | typeof SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_WRONG_MINT
@@ -121,6 +127,8 @@ export const sendLaunchpadErrorMessages: Record<SendLaunchpadError, string> = {
121
127
  [SEND_LAUNCHPAD_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow`,
122
128
  [SEND_LAUNCHPAD_ERROR__BASE_MINT_NOT_FOUND]: `Base mint not found`,
123
129
  [SEND_LAUNCHPAD_ERROR__BLOCKED_BY_HELD_SUPPLY]: `Blocked by held supply`,
130
+ [SEND_LAUNCHPAD_ERROR__CREATOR_FEE_MODE_NOT_ALLOWED]: `Creator fee mode is not allowed by the partner config`,
131
+ [SEND_LAUNCHPAD_ERROR__CREATOR_FEE_TOO_HIGH]: `Creator fee exceeds the partner's maximum`,
124
132
  [SEND_LAUNCHPAD_ERROR__CURVE_IS_LIVE]: `Curve is live`,
125
133
  [SEND_LAUNCHPAD_ERROR__INSUFFICIENT_BALANCE]: `Insufficient balance in source account`,
126
134
  [SEND_LAUNCHPAD_ERROR__INSUFFICIENT_LIQUIDITY]: `Insufficient liquidity`,
@@ -128,7 +136,6 @@ export const sendLaunchpadErrorMessages: Record<SendLaunchpadError, string> = {
128
136
  [SEND_LAUNCHPAD_ERROR__INVALID_AUTHORITY]: `Invalid authority`,
129
137
  [SEND_LAUNCHPAD_ERROR__INVALID_BASE_MINT]: `Invalid base mint`,
130
138
  [SEND_LAUNCHPAD_ERROR__INVALID_COIN_CREATOR]: `Invalid coin creator`,
131
- [SEND_LAUNCHPAD_ERROR__INVALID_CREATOR_ID]: `Creator identity is not a decodable wallet address`,
132
139
  [SEND_LAUNCHPAD_ERROR__INVALID_PYTH_ACCOUNT]: `Invalid Pyth price account`,
133
140
  [SEND_LAUNCHPAD_ERROR__INVALID_PYTH_FEED]: `Invalid Pyth feed ID`,
134
141
  [SEND_LAUNCHPAD_ERROR__INVALID_QUOTE_MINT]: `Invalid quote mint`,
@@ -146,6 +153,7 @@ export const sendLaunchpadErrorMessages: Record<SendLaunchpadError, string> = {
146
153
  [SEND_LAUNCHPAD_ERROR__TOKEN_CREATION_DISABLED]: `Token creation is disabled`,
147
154
  [SEND_LAUNCHPAD_ERROR__TRANSFER_FEE_NOT_SETTLEABLE]: `Token-2022 transfer fee schedule cannot settle the exact amount`,
148
155
  [SEND_LAUNCHPAD_ERROR__UNAUTHORIZED]: `Unauthorized`,
156
+ [SEND_LAUNCHPAD_ERROR__UNUSED7012]: `Unused`,
149
157
  [SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_INVALID]: `User token account is not an initialized token account`,
150
158
  [SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_WRONG_AUTHORITY]: `User token account is not owned by the trading user`,
151
159
  [SEND_LAUNCHPAD_ERROR__USER_TOKEN_ACCOUNT_WRONG_MINT]: `User token account mint does not match the trade`,
@@ -10,6 +10,7 @@ import {
10
10
  containsBytes,
11
11
  fixEncoderSize,
12
12
  getAddressDecoder,
13
+ getArrayDecoder,
13
14
  getBooleanDecoder,
14
15
  getBytesEncoder,
15
16
  getI64Decoder,
@@ -37,7 +38,7 @@ export type CompleteEvent = {
37
38
  baseMint: Address;
38
39
  quoteMint: Address;
39
40
  coinCreator: Address;
40
- creatorFeeConfig: Address;
41
+ padding0: Array<bigint>;
41
42
  platformConfig: Address;
42
43
  curvePartner: Address;
43
44
  isPartner: boolean;
@@ -53,7 +54,7 @@ export function getCompleteEventDecoder(): FixedSizeDecoder<CompleteEvent> {
53
54
  ['baseMint', getAddressDecoder()],
54
55
  ['quoteMint', getAddressDecoder()],
55
56
  ['coinCreator', getAddressDecoder()],
56
- ['creatorFeeConfig', getAddressDecoder()],
57
+ ['padding0', getArrayDecoder(getU64Decoder(), { size: 4 })],
57
58
  ['platformConfig', getAddressDecoder()],
58
59
  ['curvePartner', getAddressDecoder()],
59
60
  ['isPartner', getBooleanDecoder()],
@@ -10,6 +10,7 @@ import {
10
10
  containsBytes,
11
11
  fixEncoderSize,
12
12
  getAddressDecoder,
13
+ getArrayDecoder,
13
14
  getBytesEncoder,
14
15
  getI64Decoder,
15
16
  getStructDecoder,
@@ -36,7 +37,7 @@ export type CreatorClaimEvent = {
36
37
  quoteMint: Address;
37
38
  platformConfig: Address;
38
39
  coinCreator: Address;
39
- creatorFeeConfig: Address;
40
+ padding0: Array<bigint>;
40
41
  claimer: Address;
41
42
  destinationOwner: Address;
42
43
  amount: bigint;
@@ -55,7 +56,7 @@ export function getCreatorClaimEventDecoder(): FixedSizeDecoder<CreatorClaimEven
55
56
  ['quoteMint', getAddressDecoder()],
56
57
  ['platformConfig', getAddressDecoder()],
57
58
  ['coinCreator', getAddressDecoder()],
58
- ['creatorFeeConfig', getAddressDecoder()],
59
+ ['padding0', getArrayDecoder(getU64Decoder(), { size: 4 })],
59
60
  ['claimer', getAddressDecoder()],
60
61
  ['destinationOwner', getAddressDecoder()],
61
62
  ['amount', getU64Decoder()],
@@ -10,6 +10,7 @@ import {
10
10
  containsBytes,
11
11
  fixEncoderSize,
12
12
  getAddressDecoder,
13
+ getArrayDecoder,
13
14
  getBytesEncoder,
14
15
  getI64Decoder,
15
16
  getStructDecoder,
@@ -37,7 +38,7 @@ export type MigrateEvent = {
37
38
  quoteMint: Address;
38
39
  pool: Address;
39
40
  coinCreator: Address;
40
- creatorFeeConfig: Address;
41
+ padding0: Array<bigint>;
41
42
  platformConfig: Address;
42
43
  baseAmount: bigint;
43
44
  quoteAmount: bigint;
@@ -54,7 +55,7 @@ export function getMigrateEventDecoder(): FixedSizeDecoder<MigrateEvent> {
54
55
  ['quoteMint', getAddressDecoder()],
55
56
  ['pool', getAddressDecoder()],
56
57
  ['coinCreator', getAddressDecoder()],
57
- ['creatorFeeConfig', getAddressDecoder()],
58
+ ['padding0', getArrayDecoder(getU64Decoder(), { size: 4 })],
58
59
  ['platformConfig', getAddressDecoder()],
59
60
  ['baseAmount', getU64Decoder()],
60
61
  ['quoteAmount', getU64Decoder()],
@@ -11,10 +11,12 @@ import {
11
11
  containsBytes,
12
12
  fixEncoderSize,
13
13
  getAddressDecoder,
14
+ getArrayDecoder,
14
15
  getBooleanDecoder,
15
16
  getBytesEncoder,
16
17
  getI64Decoder,
17
18
  getStructDecoder,
19
+ getU16Decoder,
18
20
  getU32Decoder,
19
21
  getU64Decoder,
20
22
  getU8Decoder,
@@ -46,9 +48,7 @@ export type TokenCreateEvent = {
46
48
  quoteMint: Address;
47
49
  quoteDecimals: number;
48
50
  coinCreator: Address;
49
- creatorPlatform: string;
50
- creatorId: string;
51
- creatorFeeConfig: Address;
51
+ padding0: Array<bigint>;
52
52
  platformConfig: Address;
53
53
  name: string;
54
54
  symbol: string;
@@ -61,6 +61,9 @@ export type TokenCreateEvent = {
61
61
  realBaseReserves: bigint;
62
62
  realQuoteReserves: bigint;
63
63
  timestamp: bigint;
64
+ creatorFeeMode: number;
65
+ creatorFeeBps: number;
66
+ dexCreatorFeeBps: number;
64
67
  };
65
68
 
66
69
  let getTokenCreateEventDecoderCache: Decoder<TokenCreateEvent> | undefined;
@@ -77,12 +80,7 @@ export function getTokenCreateEventDecoder(): Decoder<TokenCreateEvent> {
77
80
  ['quoteMint', getAddressDecoder()],
78
81
  ['quoteDecimals', getU8Decoder()],
79
82
  ['coinCreator', getAddressDecoder()],
80
- [
81
- 'creatorPlatform',
82
- addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),
83
- ],
84
- ['creatorId', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
85
- ['creatorFeeConfig', getAddressDecoder()],
83
+ ['padding0', getArrayDecoder(getU64Decoder(), { size: 5 })],
86
84
  ['platformConfig', getAddressDecoder()],
87
85
  ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
88
86
  ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
@@ -95,6 +93,9 @@ export function getTokenCreateEventDecoder(): Decoder<TokenCreateEvent> {
95
93
  ['realBaseReserves', getU64Decoder()],
96
94
  ['realQuoteReserves', getU64Decoder()],
97
95
  ['timestamp', getI64Decoder()],
96
+ ['creatorFeeMode', getU8Decoder()],
97
+ ['creatorFeeBps', getU16Decoder()],
98
+ ['dexCreatorFeeBps', getU16Decoder()],
98
99
  ]));
99
100
  }
100
101
 
@@ -10,11 +10,14 @@ import {
10
10
  containsBytes,
11
11
  fixEncoderSize,
12
12
  getAddressDecoder,
13
+ getArrayDecoder,
13
14
  getBooleanDecoder,
14
15
  getBytesEncoder,
15
16
  getI64Decoder,
16
17
  getStructDecoder,
18
+ getU16Decoder,
17
19
  getU64Decoder,
20
+ getU8Decoder,
18
21
  type Address,
19
22
  type FixedSizeDecoder,
20
23
  type ReadonlyUint8Array,
@@ -42,7 +45,7 @@ export type TradeEvent = {
42
45
  quoteMint: Address;
43
46
  user: Address;
44
47
  coinCreator: Address;
45
- creatorFeeConfig: Address;
48
+ padding0: Array<bigint>;
46
49
  platformConfig: Address;
47
50
  baseAmount: bigint;
48
51
  quoteAmountGross: bigint;
@@ -59,6 +62,8 @@ export type TradeEvent = {
59
62
  realBaseReserves: bigint;
60
63
  realQuoteReserves: bigint;
61
64
  timestamp: bigint;
65
+ creatorFeeMode: number;
66
+ creatorFeeBps: number;
62
67
  };
63
68
 
64
69
  let getTradeEventDecoderCache: FixedSizeDecoder<TradeEvent> | undefined;
@@ -70,7 +75,7 @@ export function getTradeEventDecoder(): FixedSizeDecoder<TradeEvent> {
70
75
  ['quoteMint', getAddressDecoder()],
71
76
  ['user', getAddressDecoder()],
72
77
  ['coinCreator', getAddressDecoder()],
73
- ['creatorFeeConfig', getAddressDecoder()],
78
+ ['padding0', getArrayDecoder(getU64Decoder(), { size: 4 })],
74
79
  ['platformConfig', getAddressDecoder()],
75
80
  ['baseAmount', getU64Decoder()],
76
81
  ['quoteAmountGross', getU64Decoder()],
@@ -87,6 +92,8 @@ export function getTradeEventDecoder(): FixedSizeDecoder<TradeEvent> {
87
92
  ['realBaseReserves', getU64Decoder()],
88
93
  ['realQuoteReserves', getU64Decoder()],
89
94
  ['timestamp', getI64Decoder()],
95
+ ['creatorFeeMode', getU8Decoder()],
96
+ ['creatorFeeBps', getU16Decoder()],
90
97
  ]));
91
98
  }
92
99
 
@@ -45,6 +45,7 @@ import {
45
45
  import {
46
46
  EVENT_AUTHORITY_PDA_ADDRESS,
47
47
  findBondingCurvePda,
48
+ findCreatorFeeConfigPda,
48
49
  } from '../pdas/index.js';
49
50
  import { SEND_LAUNCHPAD_PROGRAM_ADDRESS } from '../programs/index.js';
50
51
 
@@ -96,7 +97,7 @@ export type ClaimCreatorFeesInstruction<
96
97
  ? WritableAccount<TAccountBondingCurve>
97
98
  : TAccountBondingCurve,
98
99
  TAccountCreatorFeeConfig extends string
99
- ? ReadonlyAccount<TAccountCreatorFeeConfig>
100
+ ? WritableAccount<TAccountCreatorFeeConfig>
100
101
  : TAccountCreatorFeeConfig,
101
102
  TAccountNexusGlobalConfig extends string
102
103
  ? ReadonlyAccount<TAccountNexusGlobalConfig>
@@ -184,7 +185,7 @@ export type ClaimCreatorFeesAsyncInput<
184
185
  claimer: TransactionSigner<TAccountClaimer>;
185
186
  payer: TransactionSigner<TAccountPayer>;
186
187
  bondingCurve?: Address<TAccountBondingCurve>;
187
- creatorFeeConfig: Address<TAccountCreatorFeeConfig>;
188
+ creatorFeeConfig?: Address<TAccountCreatorFeeConfig>;
188
189
  baseMint: Address<TAccountBaseMint>;
189
190
  quoteMint: Address<TAccountQuoteMint>;
190
191
  quoteVault?: Address<TAccountQuoteVault>;
@@ -247,7 +248,7 @@ export async function getClaimCreatorFeesInstructionAsync<
247
248
  bondingCurve: { value: input.bondingCurve ?? null, isWritable: true },
248
249
  creatorFeeConfig: {
249
250
  value: input.creatorFeeConfig ?? null,
250
- isWritable: false,
251
+ isWritable: true,
251
252
  },
252
253
  nexusGlobalConfig: { value: null, isWritable: false },
253
254
  baseMint: { value: input.baseMint ?? null, isWritable: false },
@@ -285,6 +286,18 @@ export async function getClaimCreatorFeesInstructionAsync<
285
286
  ),
286
287
  });
287
288
  }
289
+ if (!accounts.creatorFeeConfig.value) {
290
+ accounts.creatorFeeConfig.value = await findCreatorFeeConfigPda({
291
+ baseMint: getAddressFromResolvedInstructionAccount(
292
+ 'baseMint',
293
+ accounts.baseMint.value,
294
+ ),
295
+ quoteMint: getAddressFromResolvedInstructionAccount(
296
+ 'quoteMint',
297
+ accounts.quoteMint.value,
298
+ ),
299
+ });
300
+ }
288
301
  if (!accounts.nexusGlobalConfig.value) {
289
302
  accounts.nexusGlobalConfig.value =
290
303
  '3bycfBeRULfXYqcg3DmiYFBjv6mMVidMuqKdFZJTGdNr' as Address<'3bycfBeRULfXYqcg3DmiYFBjv6mMVidMuqKdFZJTGdNr'>;
@@ -477,7 +490,7 @@ export function getClaimCreatorFeesInstruction<
477
490
  bondingCurve: { value: input.bondingCurve ?? null, isWritable: true },
478
491
  creatorFeeConfig: {
479
492
  value: input.creatorFeeConfig ?? null,
480
- isWritable: false,
493
+ isWritable: true,
481
494
  },
482
495
  nexusGlobalConfig: { value: null, isWritable: false },
483
496
  baseMint: { value: input.baseMint ?? null, isWritable: false },
@@ -22,8 +22,12 @@ import {
22
22
  getProgramDerivedAddress,
23
23
  getStructDecoder,
24
24
  getStructEncoder,
25
+ getU16Decoder,
26
+ getU16Encoder,
25
27
  getU32Decoder,
26
28
  getU32Encoder,
29
+ getU8Decoder,
30
+ getU8Encoder,
27
31
  getUtf8Decoder,
28
32
  getUtf8Encoder,
29
33
  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
@@ -54,6 +58,7 @@ import {
54
58
  import {
55
59
  EVENT_AUTHORITY_PDA_ADDRESS,
56
60
  findBondingCurvePda,
61
+ findCreatorFeeConfigPda,
57
62
  findRewardAccrualPda,
58
63
  GLOBAL_CONFIG_PDA_ADDRESS,
59
64
  WSOL_REWARD_ACCRUAL_PDA_ADDRESS,
@@ -212,22 +217,22 @@ export type CreateTokenInstruction<
212
217
  export type CreateTokenInstructionData = {
213
218
  discriminator: ReadonlyUint8Array;
214
219
  platformConfig: Address;
215
- creatorPlatform: string;
216
- creatorId: string;
217
- creatorHash: Address;
218
220
  name: string;
219
221
  symbol: string;
220
222
  uri: string;
223
+ creatorFeeMode: number;
224
+ creatorFeeBps: number;
225
+ dexCreatorFeeBps: number;
221
226
  };
222
227
 
223
228
  export type CreateTokenInstructionDataArgs = {
224
229
  platformConfig: Address;
225
- creatorPlatform: string;
226
- creatorId: string;
227
- creatorHash: Address;
228
230
  name: string;
229
231
  symbol: string;
230
232
  uri: string;
233
+ creatorFeeMode: number;
234
+ creatorFeeBps: number;
235
+ dexCreatorFeeBps: number;
231
236
  };
232
237
 
233
238
  export function getCreateTokenInstructionDataEncoder(): Encoder<CreateTokenInstructionDataArgs> {
@@ -235,18 +240,12 @@ export function getCreateTokenInstructionDataEncoder(): Encoder<CreateTokenInstr
235
240
  getStructEncoder([
236
241
  ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
237
242
  ['platformConfig', getAddressEncoder()],
238
- [
239
- 'creatorPlatform',
240
- addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),
241
- ],
242
- [
243
- 'creatorId',
244
- addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),
245
- ],
246
- ['creatorHash', getAddressEncoder()],
247
243
  ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
248
244
  ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
249
245
  ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
246
+ ['creatorFeeMode', getU8Encoder()],
247
+ ['creatorFeeBps', getU16Encoder()],
248
+ ['dexCreatorFeeBps', getU16Encoder()],
250
249
  ]),
251
250
  (value) => ({ ...value, discriminator: CREATE_TOKEN_DISCRIMINATOR }),
252
251
  );
@@ -256,15 +255,12 @@ export function getCreateTokenInstructionDataDecoder(): Decoder<CreateTokenInstr
256
255
  return getStructDecoder([
257
256
  ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
258
257
  ['platformConfig', getAddressDecoder()],
259
- [
260
- 'creatorPlatform',
261
- addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),
262
- ],
263
- ['creatorId', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
264
- ['creatorHash', getAddressDecoder()],
265
258
  ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
266
259
  ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
267
260
  ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
261
+ ['creatorFeeMode', getU8Decoder()],
262
+ ['creatorFeeBps', getU16Decoder()],
263
+ ['dexCreatorFeeBps', getU16Decoder()],
268
264
  ]);
269
265
  }
270
266
 
@@ -314,12 +310,12 @@ export type CreateTokenAsyncInput<
314
310
  stakingVault?: Address<TAccountStakingVault>;
315
311
  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;
316
312
  platformConfig: CreateTokenInstructionDataArgs['platformConfig'];
317
- creatorPlatform: CreateTokenInstructionDataArgs['creatorPlatform'];
318
- creatorId: CreateTokenInstructionDataArgs['creatorId'];
319
- creatorHash: CreateTokenInstructionDataArgs['creatorHash'];
320
313
  name: CreateTokenInstructionDataArgs['name'];
321
314
  symbol: CreateTokenInstructionDataArgs['symbol'];
322
315
  uri: CreateTokenInstructionDataArgs['uri'];
316
+ creatorFeeMode: CreateTokenInstructionDataArgs['creatorFeeMode'];
317
+ creatorFeeBps: CreateTokenInstructionDataArgs['creatorFeeBps'];
318
+ dexCreatorFeeBps: CreateTokenInstructionDataArgs['dexCreatorFeeBps'];
323
319
  };
324
320
 
325
321
  export async function getCreateTokenInstructionAsync<
@@ -517,29 +513,15 @@ export async function getCreateTokenInstructionAsync<
517
513
  });
518
514
  }
519
515
  if (!accounts.creatorFeeConfig.value) {
520
- accounts.creatorFeeConfig.value = await getProgramDerivedAddress({
521
- programAddress:
522
- '7rrCurqdWFesbzwtYPo95fM8waTtVXgXwCom45x1sfNX' as Address<'7rrCurqdWFesbzwtYPo95fM8waTtVXgXwCom45x1sfNX'>,
523
- seeds: [
524
- getBytesEncoder().encode(
525
- new Uint8Array([
526
- 99, 114, 101, 97, 116, 111, 114, 95, 102, 101, 101, 95,
527
- 98, 97, 108, 97, 110, 99, 101,
528
- ]),
529
- ),
530
- getAddressEncoder().encode(
531
- getNonNullResolvedInstructionInput(
532
- 'creatorHash',
533
- args.creatorHash,
534
- ),
535
- ),
536
- getAddressEncoder().encode(
537
- getAddressFromResolvedInstructionAccount(
538
- 'quoteMint',
539
- accounts.quoteMint.value,
540
- ),
541
- ),
542
- ],
516
+ accounts.creatorFeeConfig.value = await findCreatorFeeConfigPda({
517
+ baseMint: getAddressFromResolvedInstructionAccount(
518
+ 'baseMint',
519
+ accounts.baseMint.value,
520
+ ),
521
+ quoteMint: getAddressFromResolvedInstructionAccount(
522
+ 'quoteMint',
523
+ accounts.quoteMint.value,
524
+ ),
543
525
  });
544
526
  }
545
527
  if (!accounts.nexusProgram.value) {
@@ -780,12 +762,12 @@ export type CreateTokenInput<
780
762
  stakingVault: Address<TAccountStakingVault>;
781
763
  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;
782
764
  platformConfig: CreateTokenInstructionDataArgs['platformConfig'];
783
- creatorPlatform: CreateTokenInstructionDataArgs['creatorPlatform'];
784
- creatorId: CreateTokenInstructionDataArgs['creatorId'];
785
- creatorHash: CreateTokenInstructionDataArgs['creatorHash'];
786
765
  name: CreateTokenInstructionDataArgs['name'];
787
766
  symbol: CreateTokenInstructionDataArgs['symbol'];
788
767
  uri: CreateTokenInstructionDataArgs['uri'];
768
+ creatorFeeMode: CreateTokenInstructionDataArgs['creatorFeeMode'];
769
+ creatorFeeBps: CreateTokenInstructionDataArgs['creatorFeeBps'];
770
+ dexCreatorFeeBps: CreateTokenInstructionDataArgs['dexCreatorFeeBps'];
789
771
  };
790
772
 
791
773
  export function getCreateTokenInstruction<