@metadaoproject/futarchy 0.6.0-alpha.9 → 0.7.0-alpha.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 (89) hide show
  1. package/dist/v0.5/SharedLiquidityManagerClient.js.map +1 -1
  2. package/dist/v0.6/FutarchyClient.d.ts +89 -0
  3. package/dist/v0.6/FutarchyClient.js +22 -1
  4. package/dist/v0.6/FutarchyClient.js.map +1 -1
  5. package/dist/v0.6/LaunchpadClient.d.ts +12 -13
  6. package/dist/v0.6/LaunchpadClient.js +18 -12
  7. package/dist/v0.6/LaunchpadClient.js.map +1 -1
  8. package/dist/v0.6/PriceBasedPerformancePackageClient.d.ts +10 -2
  9. package/dist/v0.6/PriceBasedPerformancePackageClient.js +7 -7
  10. package/dist/v0.6/PriceBasedPerformancePackageClient.js.map +1 -1
  11. package/dist/v0.6/constants.d.ts +1 -0
  12. package/dist/v0.6/constants.js +3 -2
  13. package/dist/v0.6/constants.js.map +1 -1
  14. package/dist/v0.6/types/futarchy.d.ts +153 -1
  15. package/dist/v0.6/types/futarchy.js +153 -1
  16. package/dist/v0.6/types/futarchy.js.map +1 -1
  17. package/dist/v0.6/types/index.d.ts +20 -3
  18. package/dist/v0.6/types/index.js +2 -10
  19. package/dist/v0.6/types/index.js.map +1 -1
  20. package/dist/v0.6/types/launchpad.d.ts +67 -29
  21. package/dist/v0.6/types/launchpad.js +67 -29
  22. package/dist/v0.6/types/launchpad.js.map +1 -1
  23. package/dist/v0.6/types/price_based_performance_package.d.ts +34 -9
  24. package/dist/v0.6/types/price_based_performance_package.js +34 -9
  25. package/dist/v0.6/types/price_based_performance_package.js.map +1 -1
  26. package/dist/v0.6/utils/pda.d.ts +7 -0
  27. package/dist/v0.6/utils/pda.js +11 -0
  28. package/dist/v0.6/utils/pda.js.map +1 -1
  29. package/dist/v0.7/ConditionalVaultClient.d.ts +314 -0
  30. package/dist/v0.7/ConditionalVaultClient.js +209 -0
  31. package/dist/v0.7/ConditionalVaultClient.js.map +1 -0
  32. package/dist/v0.7/FutarchyClient.d.ts +982 -0
  33. package/dist/v0.7/FutarchyClient.js +413 -0
  34. package/dist/v0.7/FutarchyClient.js.map +1 -0
  35. package/dist/v0.7/LaunchpadClient.d.ts +647 -0
  36. package/dist/v0.7/LaunchpadClient.js +301 -0
  37. package/dist/v0.7/LaunchpadClient.js.map +1 -0
  38. package/dist/v0.7/PriceBasedPerformancePackageClient.d.ts +353 -0
  39. package/dist/v0.7/PriceBasedPerformancePackageClient.js +116 -0
  40. package/dist/v0.7/PriceBasedPerformancePackageClient.js.map +1 -0
  41. package/dist/v0.7/constants.d.ts +29 -0
  42. package/dist/v0.7/constants.js +40 -0
  43. package/dist/v0.7/constants.js.map +1 -0
  44. package/dist/v0.7/index.d.ts +7 -0
  45. package/dist/v0.7/index.js +8 -0
  46. package/dist/v0.7/index.js.map +1 -0
  47. package/dist/v0.7/types/amm.d.ts +832 -0
  48. package/dist/v0.7/types/amm.js +832 -0
  49. package/dist/v0.7/types/amm.js.map +1 -0
  50. package/dist/v0.7/types/conditional_vault.d.ts +925 -0
  51. package/dist/v0.7/types/conditional_vault.js +925 -0
  52. package/dist/v0.7/types/conditional_vault.js.map +1 -0
  53. package/dist/v0.7/types/futarchy.d.ts +2719 -0
  54. package/dist/v0.7/types/futarchy.js +2719 -0
  55. package/dist/v0.7/types/futarchy.js.map +1 -0
  56. package/dist/v0.7/types/index.d.ts +67 -0
  57. package/dist/v0.7/types/index.js +11 -0
  58. package/dist/v0.7/types/index.js.map +1 -0
  59. package/dist/v0.7/types/launchpad_v7.d.ts +1527 -0
  60. package/dist/v0.7/types/launchpad_v7.js +1527 -0
  61. package/dist/v0.7/types/launchpad_v7.js.map +1 -0
  62. package/dist/v0.7/types/price_based_performance_package.d.ts +896 -0
  63. package/dist/v0.7/types/price_based_performance_package.js +896 -0
  64. package/dist/v0.7/types/price_based_performance_package.js.map +1 -0
  65. package/dist/v0.7/types/utils.d.ts +3 -0
  66. package/dist/v0.7/types/utils.js +2 -0
  67. package/dist/v0.7/types/utils.js.map +1 -0
  68. package/dist/v0.7/utils/cu.d.ts +10 -0
  69. package/dist/v0.7/utils/cu.js +11 -0
  70. package/dist/v0.7/utils/cu.js.map +1 -0
  71. package/dist/v0.7/utils/filters.d.ts +3 -0
  72. package/dist/v0.7/utils/filters.js +14 -0
  73. package/dist/v0.7/utils/filters.js.map +1 -0
  74. package/dist/v0.7/utils/index.d.ts +16 -0
  75. package/dist/v0.7/utils/index.js +30 -0
  76. package/dist/v0.7/utils/index.js.map +1 -0
  77. package/dist/v0.7/utils/instruction.d.ts +4 -0
  78. package/dist/v0.7/utils/instruction.js +10 -0
  79. package/dist/v0.7/utils/instruction.js.map +1 -0
  80. package/dist/v0.7/utils/metadata.d.ts +4 -0
  81. package/dist/v0.7/utils/metadata.js +22 -0
  82. package/dist/v0.7/utils/metadata.js.map +1 -0
  83. package/dist/v0.7/utils/pda.d.ts +43 -0
  84. package/dist/v0.7/utils/pda.js +95 -0
  85. package/dist/v0.7/utils/pda.js.map +1 -0
  86. package/dist/v0.7/utils/priceMath.d.ts +39 -0
  87. package/dist/v0.7/utils/priceMath.js +48 -0
  88. package/dist/v0.7/utils/priceMath.js.map +1 -0
  89. package/package.json +6 -3
@@ -0,0 +1,301 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey, ComputeBudgetProgram, SystemProgram, } from "@solana/web3.js";
3
+ import { IDL as LaunchpadIDL, } from "./types/launchpad_v7.js";
4
+ import { LAUNCHPAD_PROGRAM_ID, MPL_TOKEN_METADATA_PROGRAM_ID, MAINNET_USDC, SQUADS_PROGRAM_ID, SQUADS_PROGRAM_CONFIG, SQUADS_PROGRAM_CONFIG_TREASURY, DAMM_V2_PROGRAM_ID, SQUADS_PROGRAM_CONFIG_TREASURY_DEVNET, MAINNET_METEORA_CONFIG, } from "./constants.js";
5
+ import { ASSOCIATED_TOKEN_PROGRAM_ID, createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, } from "@solana/spl-token";
6
+ import BN from "bn.js";
7
+ import { getDaoAddr, getEventAuthorityAddr, getFundingRecordAddr, getLaunchAddr, getLaunchSignerAddr, getMetadataAddr, getPerformancePackageAddr, } from "./utils/pda.js";
8
+ import { FutarchyClient } from "./FutarchyClient.js";
9
+ import * as multisig from "@sqds/multisig";
10
+ import { PriceBasedPerformancePackageClient } from "./PriceBasedPerformancePackageClient.js";
11
+ export class LaunchpadClient {
12
+ launchpad;
13
+ provider;
14
+ autocratClient;
15
+ priceBasedUnlock;
16
+ constructor(params) {
17
+ this.provider = params.provider;
18
+ this.launchpad = new Program(LaunchpadIDL, params.launchpadProgramId || LAUNCHPAD_PROGRAM_ID, this.provider);
19
+ this.autocratClient = FutarchyClient.createClient({
20
+ provider: this.provider,
21
+ autocratProgramId: params.autocratProgramId,
22
+ conditionalVaultProgramId: params.conditionalVaultProgramId,
23
+ });
24
+ this.priceBasedUnlock = PriceBasedPerformancePackageClient.createClient({
25
+ provider: this.provider,
26
+ priceBasedTokenLockProgramId: params.priceBasedUnlockProgramId,
27
+ });
28
+ }
29
+ static createClient(params) {
30
+ return new LaunchpadClient(params);
31
+ }
32
+ getProgramId() {
33
+ return this.launchpad.programId;
34
+ }
35
+ async getLaunch(launch) {
36
+ return await this.launchpad.account.launch.fetch(launch);
37
+ }
38
+ async fetchLaunch(launch) {
39
+ return await this.launchpad.account.launch.fetchNullable(launch);
40
+ }
41
+ async deserializeLaunch(accountInfo) {
42
+ return this.launchpad.coder.accounts.decode("launch", accountInfo.data);
43
+ }
44
+ async getFundingRecord(fundingRecord) {
45
+ return await this.launchpad.account.fundingRecord.fetch(fundingRecord);
46
+ }
47
+ async fetchFundingRecord(fundingRecord) {
48
+ return await this.launchpad.account.fundingRecord.fetchNullable(fundingRecord);
49
+ }
50
+ async deserializeFundingRecord(accountInfo) {
51
+ return this.launchpad.coder.accounts.decode("fundingRecord", accountInfo.data);
52
+ }
53
+ initializeLaunchIx({ tokenName, tokenSymbol, tokenUri, minimumRaiseAmount, secondsForLaunch = 60 * 60 * 24 * 5, // 5 days
54
+ baseMint, quoteMint = MAINNET_USDC, monthlySpendingLimitAmount, monthlySpendingLimitMembers, performancePackageGrantee, performancePackageTokenAmount, monthsUntilInsidersCanUnlock, teamAddress, launchAuthority, payer = this.provider.publicKey, additionalTokensRecipient, additionalTokensAmount, }) {
55
+ const [launch] = getLaunchAddr(this.launchpad.programId, baseMint);
56
+ const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
57
+ const quoteVault = getAssociatedTokenAddressSync(quoteMint, launchSigner, true);
58
+ const baseVault = getAssociatedTokenAddressSync(baseMint, launchSigner, true);
59
+ const [tokenMetadata] = getMetadataAddr(baseMint);
60
+ return this.launchpad.methods
61
+ .initializeLaunch({
62
+ minimumRaiseAmount,
63
+ secondsForLaunch,
64
+ tokenName,
65
+ tokenSymbol,
66
+ tokenUri,
67
+ monthlySpendingLimitAmount,
68
+ monthlySpendingLimitMembers,
69
+ performancePackageGrantee,
70
+ performancePackageTokenAmount,
71
+ monthsUntilInsidersCanUnlock,
72
+ teamAddress,
73
+ additionalTokensAmount: additionalTokensAmount ?? new BN(0),
74
+ })
75
+ .accounts({
76
+ launch,
77
+ launchSigner,
78
+ quoteVault,
79
+ baseVault,
80
+ launchAuthority,
81
+ quoteMint,
82
+ baseMint,
83
+ tokenMetadata,
84
+ tokenMetadataProgram: MPL_TOKEN_METADATA_PROGRAM_ID,
85
+ payer,
86
+ additionalTokensRecipient: additionalTokensRecipient ?? null,
87
+ })
88
+ .preInstructions([
89
+ createAssociatedTokenAccountIdempotentInstruction(payer, getAssociatedTokenAddressSync(quoteMint, launchSigner, true), launchSigner, quoteMint),
90
+ ]);
91
+ // .signers([tokenMintKp]);
92
+ }
93
+ startLaunchIx({ launch, launchAuthority = this.provider.publicKey, }) {
94
+ return this.launchpad.methods.startLaunch().accounts({
95
+ launch,
96
+ launchAuthority,
97
+ });
98
+ }
99
+ fundIx({ launch, amount, funder = this.provider.publicKey, quoteMint = MAINNET_USDC, }) {
100
+ const launchSigner = this.getLaunchSignerAddress({ launch });
101
+ const launchQuoteVault = getAssociatedTokenAddressSync(quoteMint, launchSigner, true);
102
+ const funderQuoteAccount = getAssociatedTokenAddressSync(quoteMint, funder, true);
103
+ const [fundingRecord] = getFundingRecordAddr(this.launchpad.programId, launch, funder);
104
+ return this.launchpad.methods.fund(amount).accounts({
105
+ launch,
106
+ launchQuoteVault,
107
+ fundingRecord,
108
+ funder,
109
+ funderQuoteAccount,
110
+ launchSigner,
111
+ });
112
+ }
113
+ closeLaunchIx({ launch }) {
114
+ return this.launchpad.methods.closeLaunch().accounts({
115
+ launch,
116
+ });
117
+ }
118
+ completeLaunchIx({ launch, quoteMint = MAINNET_USDC, baseMint, launchAuthority, isDevnet = false, meteoraConfig = MAINNET_METEORA_CONFIG, }) {
119
+ const launchSigner = this.getLaunchSignerAddress({ launch });
120
+ const launchQuoteVault = getAssociatedTokenAddressSync(quoteMint, launchSigner, true);
121
+ const launchBaseVault = getAssociatedTokenAddressSync(baseMint, launchSigner, true);
122
+ // const daoKp = Keypair.generate();
123
+ const [dao] = getDaoAddr({
124
+ nonce: new BN(0),
125
+ daoCreator: launchSigner,
126
+ });
127
+ const [autocratEventAuthority] = getEventAuthorityAddr(this.autocratClient.getProgramId());
128
+ const [tokenMetadata] = getMetadataAddr(baseMint);
129
+ const [multisigPda] = multisig.getMultisigPda({ createKey: dao });
130
+ const [multisigVault] = multisig.getVaultPda({
131
+ multisigPda,
132
+ index: 0,
133
+ });
134
+ const [spendingLimit] = multisig.getSpendingLimitPda({
135
+ multisigPda,
136
+ createKey: dao,
137
+ });
138
+ const treasuryQuoteAccount = getAssociatedTokenAddressSync(quoteMint, multisigVault, true);
139
+ const [ammPosition] = PublicKey.findProgramAddressSync([Buffer.from("amm_position"), dao.toBuffer(), multisigVault.toBuffer()], this.autocratClient.getProgramId());
140
+ const [performancePackage] = getPerformancePackageAddr({
141
+ createKey: launchSigner,
142
+ });
143
+ const performancePackageTokenAccount = getAssociatedTokenAddressSync(baseMint, performancePackage, true);
144
+ const [poolAuthority] = PublicKey.findProgramAddressSync([Buffer.from("pool_authority")], DAMM_V2_PROGRAM_ID);
145
+ const [positionNftMint] = PublicKey.findProgramAddressSync([Buffer.from("position_nft_mint"), baseMint.toBuffer()], LAUNCHPAD_PROGRAM_ID);
146
+ const [positionNftAccount] = PublicKey.findProgramAddressSync([Buffer.from("position_nft_account"), positionNftMint.toBuffer()], DAMM_V2_PROGRAM_ID);
147
+ function getFirstKey(key1, key2) {
148
+ const buf1 = key1.toBuffer();
149
+ const buf2 = key2.toBuffer();
150
+ // Buf1 > buf2
151
+ if (Buffer.compare(buf1, buf2) === 1) {
152
+ return buf1;
153
+ }
154
+ return buf2;
155
+ }
156
+ function getSecondKey(key1, key2) {
157
+ const buf1 = key1.toBuffer();
158
+ const buf2 = key2.toBuffer();
159
+ // Buf1 > buf2
160
+ if (Buffer.compare(buf1, buf2) === 1) {
161
+ return buf2;
162
+ }
163
+ return buf1;
164
+ }
165
+ const [pool] = PublicKey.findProgramAddressSync([
166
+ Buffer.from("pool"),
167
+ meteoraConfig.toBuffer(),
168
+ getFirstKey(baseMint, quoteMint),
169
+ getSecondKey(baseMint, quoteMint),
170
+ ], DAMM_V2_PROGRAM_ID);
171
+ const [position] = PublicKey.findProgramAddressSync([Buffer.from("position"), positionNftMint.toBuffer()], DAMM_V2_PROGRAM_ID);
172
+ const [tokenAVault] = PublicKey.findProgramAddressSync([Buffer.from("token_vault"), baseMint.toBuffer(), pool.toBuffer()], DAMM_V2_PROGRAM_ID);
173
+ const [tokenBVault] = PublicKey.findProgramAddressSync([Buffer.from("token_vault"), quoteMint.toBuffer(), pool.toBuffer()], DAMM_V2_PROGRAM_ID);
174
+ const [poolCreatorAuthority] = PublicKey.findProgramAddressSync([Buffer.from("damm_pool_creator_authority")], LAUNCHPAD_PROGRAM_ID);
175
+ const [dammV2EventAuthority] = getEventAuthorityAddr(DAMM_V2_PROGRAM_ID);
176
+ return this.launchpad.methods
177
+ .completeLaunch()
178
+ .accounts({
179
+ launch,
180
+ launchSigner,
181
+ launchQuoteVault,
182
+ launchBaseVault,
183
+ launchAuthority,
184
+ dao,
185
+ treasuryQuoteAccount,
186
+ quoteMint,
187
+ baseMint,
188
+ tokenMetadata,
189
+ daoOwnedLpPosition: ammPosition,
190
+ futarchyAmmQuoteVault: getAssociatedTokenAddressSync(quoteMint, dao, true),
191
+ futarchyAmmBaseVault: getAssociatedTokenAddressSync(baseMint, dao, true),
192
+ staticAccounts: {
193
+ futarchyProgram: this.autocratClient.getProgramId(),
194
+ tokenMetadataProgram: MPL_TOKEN_METADATA_PROGRAM_ID,
195
+ autocratEventAuthority,
196
+ squadsProgram: SQUADS_PROGRAM_ID,
197
+ squadsProgramConfig: SQUADS_PROGRAM_CONFIG,
198
+ squadsProgramConfigTreasury: isDevnet
199
+ ? SQUADS_PROGRAM_CONFIG_TREASURY_DEVNET
200
+ : SQUADS_PROGRAM_CONFIG_TREASURY,
201
+ priceBasedPerformancePackageProgram: this.priceBasedUnlock.programId,
202
+ priceBasedPerformancePackageEventAuthority: this.priceBasedUnlock.getEventAuthorityAddress(),
203
+ },
204
+ squadsMultisig: multisigPda,
205
+ squadsMultisigVault: multisigVault,
206
+ spendingLimit,
207
+ performancePackage,
208
+ performancePackageTokenAccount,
209
+ meteoraAccounts: {
210
+ dammV2Program: DAMM_V2_PROGRAM_ID,
211
+ positionNftMint,
212
+ baseMint,
213
+ quoteMint,
214
+ config: meteoraConfig,
215
+ token2022Program: TOKEN_2022_PROGRAM_ID,
216
+ positionNftAccount,
217
+ pool,
218
+ // baseMint,
219
+ // quoteMint,
220
+ poolCreatorAuthority,
221
+ position,
222
+ tokenAVault,
223
+ tokenBVault,
224
+ poolAuthority,
225
+ dammV2EventAuthority,
226
+ },
227
+ // poolCreatorAuthority,
228
+ })
229
+ .preInstructions([
230
+ ComputeBudgetProgram.setComputeUnitLimit({ units: 800_000 }),
231
+ ComputeBudgetProgram.requestHeapFrame({ bytes: 255 * 1024 }),
232
+ ]);
233
+ }
234
+ refundIx({ launch, funder = this.provider.publicKey, quoteMint = MAINNET_USDC, }) {
235
+ const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
236
+ const [fundingRecord] = getFundingRecordAddr(this.launchpad.programId, launch, funder);
237
+ const launchQuoteVault = getAssociatedTokenAddressSync(quoteMint, launchSigner, true);
238
+ const funderQuoteAccount = getAssociatedTokenAddressSync(quoteMint, funder, true);
239
+ return this.launchpad.methods.refund().accounts({
240
+ launch,
241
+ launchSigner,
242
+ launchQuoteVault,
243
+ funder,
244
+ funderQuoteAccount,
245
+ fundingRecord,
246
+ });
247
+ }
248
+ claimIx(launch, baseMint, funder = this.provider.publicKey) {
249
+ const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
250
+ const [fundingRecord] = getFundingRecordAddr(this.launchpad.programId, launch, funder);
251
+ return this.launchpad.methods
252
+ .claim()
253
+ .accounts({
254
+ launch,
255
+ fundingRecord,
256
+ launchSigner,
257
+ funder,
258
+ funderTokenAccount: getAssociatedTokenAddressSync(baseMint, funder, true),
259
+ baseMint,
260
+ launchBaseVault: getAssociatedTokenAddressSync(baseMint, launchSigner, true),
261
+ })
262
+ .preInstructions([
263
+ createAssociatedTokenAccountIdempotentInstruction(this.provider.publicKey, getAssociatedTokenAddressSync(baseMint, funder, true), funder, baseMint),
264
+ ]);
265
+ }
266
+ setFundingRecordApprovalIx({ launch, funder, launchAuthority, approvedAmount, }) {
267
+ let fundingRecord = getFundingRecordAddr(this.launchpad.programId, launch, funder)[0];
268
+ return this.launchpad.methods
269
+ .setFundingRecordApproval(approvedAmount)
270
+ .accounts({
271
+ launch,
272
+ fundingRecord,
273
+ launchAuthority,
274
+ });
275
+ }
276
+ claimAdditionalTokenAllocationIx({ launch, baseMint, additionalTokensRecipient, payer = this.provider.publicKey, }) {
277
+ const launchSigner = this.getLaunchSignerAddress({ launch });
278
+ return this.launchpad.methods.claimAdditionalTokenAllocation().accounts({
279
+ launch,
280
+ payer,
281
+ launchSigner,
282
+ launchBaseVault: getAssociatedTokenAddressSync(baseMint, launchSigner, true),
283
+ baseMint,
284
+ additionalTokensRecipient,
285
+ additionalTokensRecipientTokenAccount: getAssociatedTokenAddressSync(baseMint, additionalTokensRecipient, true),
286
+ systemProgram: SystemProgram.programId,
287
+ tokenProgram: TOKEN_PROGRAM_ID,
288
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
289
+ });
290
+ }
291
+ getLaunchAddress({ baseMint }) {
292
+ return getLaunchAddr(this.launchpad.programId, baseMint)[0];
293
+ }
294
+ getLaunchSignerAddress({ launch }) {
295
+ return getLaunchSignerAddr(this.launchpad.programId, launch)[0];
296
+ }
297
+ getFundingRecordAddress({ launch, funder, }) {
298
+ return getFundingRecordAddr(this.launchpad.programId, launch, funder)[0];
299
+ }
300
+ }
301
+ //# sourceMappingURL=LaunchpadClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LaunchpadClient.js","sourceRoot":"","sources":["../../src/v0.7/LaunchpadClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,353 @@
1
+ import { AnchorProvider, Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PriceBasedPerformancePackage } from "./types/price_based_performance_package.js";
4
+ import BN from "bn.js";
5
+ import { InitializePerformancePackageParams } from "./types/index.js";
6
+ export type CreatePriceBasedPerformancePackageClientParams = {
7
+ provider: AnchorProvider;
8
+ priceBasedTokenLockProgramId?: PublicKey;
9
+ };
10
+ export declare class PriceBasedPerformancePackageClient {
11
+ readonly provider: AnchorProvider;
12
+ readonly program: Program<PriceBasedPerformancePackage>;
13
+ readonly programId: PublicKey;
14
+ constructor(provider: AnchorProvider, priceBasedTokenLockProgramId: PublicKey);
15
+ static createClient(createClientParams: CreatePriceBasedPerformancePackageClientParams): PriceBasedPerformancePackageClient;
16
+ initializePerformancePackageIx(params: {
17
+ params: InitializePerformancePackageParams;
18
+ createKey: PublicKey;
19
+ tokenMint: PublicKey;
20
+ grantor: PublicKey;
21
+ grantorTokenAccount?: PublicKey;
22
+ }): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<PriceBasedPerformancePackage, {
23
+ name: "initializePerformancePackage";
24
+ accounts: [{
25
+ name: "performancePackage";
26
+ isMut: true;
27
+ isSigner: false;
28
+ }, {
29
+ name: "createKey";
30
+ isMut: false;
31
+ isSigner: true;
32
+ docs: ["Used to derive the PDA"];
33
+ }, {
34
+ name: "tokenMint";
35
+ isMut: false;
36
+ isSigner: false;
37
+ docs: ["The mint of the tokens to be locked"];
38
+ }, {
39
+ name: "grantorTokenAccount";
40
+ isMut: true;
41
+ isSigner: false;
42
+ docs: ["The token account containing the tokens to be locked"];
43
+ }, {
44
+ name: "grantor";
45
+ isMut: false;
46
+ isSigner: true;
47
+ docs: ["The authority of the token account"];
48
+ }, {
49
+ name: "performancePackageTokenVault";
50
+ isMut: true;
51
+ isSigner: false;
52
+ docs: ["The locker's token account where tokens will be stored"];
53
+ }, {
54
+ name: "payer";
55
+ isMut: true;
56
+ isSigner: true;
57
+ }, {
58
+ name: "systemProgram";
59
+ isMut: false;
60
+ isSigner: false;
61
+ }, {
62
+ name: "tokenProgram";
63
+ isMut: false;
64
+ isSigner: false;
65
+ }, {
66
+ name: "associatedTokenProgram";
67
+ isMut: false;
68
+ isSigner: false;
69
+ }, {
70
+ name: "eventAuthority";
71
+ isMut: false;
72
+ isSigner: false;
73
+ }, {
74
+ name: "program";
75
+ isMut: false;
76
+ isSigner: false;
77
+ }];
78
+ args: [{
79
+ name: "params";
80
+ type: {
81
+ defined: "InitializePerformancePackageParams";
82
+ };
83
+ }];
84
+ } & {
85
+ name: "initializePerformancePackage";
86
+ }>;
87
+ startUnlockIx(params: {
88
+ performancePackage: PublicKey;
89
+ oracleAccount: PublicKey;
90
+ recipient: PublicKey;
91
+ }): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<PriceBasedPerformancePackage, {
92
+ name: "startUnlock";
93
+ accounts: [{
94
+ name: "performancePackage";
95
+ isMut: true;
96
+ isSigner: false;
97
+ }, {
98
+ name: "oracleAccount";
99
+ isMut: false;
100
+ isSigner: false;
101
+ }, {
102
+ name: "recipient";
103
+ isMut: false;
104
+ isSigner: true;
105
+ docs: ["Only the token recipient can start unlock"];
106
+ }, {
107
+ name: "eventAuthority";
108
+ isMut: false;
109
+ isSigner: false;
110
+ }, {
111
+ name: "program";
112
+ isMut: false;
113
+ isSigner: false;
114
+ }];
115
+ args: [];
116
+ } & {
117
+ name: "startUnlock";
118
+ }>;
119
+ completeUnlockIx(params: {
120
+ performancePackage: PublicKey;
121
+ oracleAccount: PublicKey;
122
+ tokenMint: PublicKey;
123
+ tokenRecipient: PublicKey;
124
+ }): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<PriceBasedPerformancePackage, {
125
+ name: "completeUnlock";
126
+ accounts: [{
127
+ name: "performancePackage";
128
+ isMut: true;
129
+ isSigner: false;
130
+ }, {
131
+ name: "oracleAccount";
132
+ isMut: false;
133
+ isSigner: false;
134
+ }, {
135
+ name: "performancePackageTokenVault";
136
+ isMut: true;
137
+ isSigner: false;
138
+ docs: ["The token account where locked tokens are stored"];
139
+ }, {
140
+ name: "tokenMint";
141
+ isMut: false;
142
+ isSigner: false;
143
+ docs: ["The token mint - validated via has_one constraint on locker"];
144
+ }, {
145
+ name: "recipientTokenAccount";
146
+ isMut: true;
147
+ isSigner: false;
148
+ docs: ["The recipient's ATA where tokens will be sent - created if needed"];
149
+ }, {
150
+ name: "tokenRecipient";
151
+ isMut: false;
152
+ isSigner: false;
153
+ }, {
154
+ name: "payer";
155
+ isMut: true;
156
+ isSigner: true;
157
+ docs: ["Payer for creating the ATA if needed"];
158
+ }, {
159
+ name: "systemProgram";
160
+ isMut: false;
161
+ isSigner: false;
162
+ }, {
163
+ name: "tokenProgram";
164
+ isMut: false;
165
+ isSigner: false;
166
+ }, {
167
+ name: "associatedTokenProgram";
168
+ isMut: false;
169
+ isSigner: false;
170
+ }, {
171
+ name: "eventAuthority";
172
+ isMut: false;
173
+ isSigner: false;
174
+ }, {
175
+ name: "program";
176
+ isMut: false;
177
+ isSigner: false;
178
+ }];
179
+ args: [];
180
+ } & {
181
+ name: "completeUnlock";
182
+ }>;
183
+ proposeChangeIx(params: {
184
+ params: {
185
+ changeType: any;
186
+ pdaNonce: number;
187
+ };
188
+ performancePackage: PublicKey;
189
+ proposer: PublicKey;
190
+ }): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<PriceBasedPerformancePackage, {
191
+ name: "proposeChange";
192
+ accounts: [{
193
+ name: "changeRequest";
194
+ isMut: true;
195
+ isSigner: false;
196
+ }, {
197
+ name: "performancePackage";
198
+ isMut: true;
199
+ isSigner: false;
200
+ }, {
201
+ name: "proposer";
202
+ isMut: false;
203
+ isSigner: true;
204
+ }, {
205
+ name: "payer";
206
+ isMut: true;
207
+ isSigner: true;
208
+ }, {
209
+ name: "systemProgram";
210
+ isMut: false;
211
+ isSigner: false;
212
+ }, {
213
+ name: "eventAuthority";
214
+ isMut: false;
215
+ isSigner: false;
216
+ }, {
217
+ name: "program";
218
+ isMut: false;
219
+ isSigner: false;
220
+ }];
221
+ args: [{
222
+ name: "params";
223
+ type: {
224
+ defined: "ProposeChangeParams";
225
+ };
226
+ }];
227
+ } & {
228
+ name: "proposeChange";
229
+ }>;
230
+ executeChangeIx(params: {
231
+ performancePackage: PublicKey;
232
+ changeRequest: PublicKey;
233
+ executor: PublicKey;
234
+ }): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<PriceBasedPerformancePackage, {
235
+ name: "executeChange";
236
+ accounts: [{
237
+ name: "changeRequest";
238
+ isMut: true;
239
+ isSigner: false;
240
+ }, {
241
+ name: "performancePackage";
242
+ isMut: true;
243
+ isSigner: false;
244
+ }, {
245
+ name: "executor";
246
+ isMut: true;
247
+ isSigner: true;
248
+ docs: ["The party executing the change (must be opposite of proposer)"];
249
+ }];
250
+ args: [];
251
+ } & {
252
+ name: "executeChange";
253
+ }>;
254
+ changePerformancePackageAuthorityIx(params: {
255
+ performancePackage: PublicKey;
256
+ currentAuthority: PublicKey;
257
+ newPerformancePackageAuthority: PublicKey;
258
+ }): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<PriceBasedPerformancePackage, {
259
+ name: "changePerformancePackageAuthority";
260
+ accounts: [{
261
+ name: "performancePackage";
262
+ isMut: true;
263
+ isSigner: false;
264
+ }, {
265
+ name: "currentAuthority";
266
+ isMut: false;
267
+ isSigner: true;
268
+ }];
269
+ args: [{
270
+ name: "params";
271
+ type: {
272
+ defined: "ChangePerformancePackageAuthorityParams";
273
+ };
274
+ }];
275
+ } & {
276
+ name: "changePerformancePackageAuthority";
277
+ }>;
278
+ getPerformancePackage(performancePackageAddress: PublicKey): Promise<{
279
+ tranches: {
280
+ priceThreshold: BN;
281
+ tokenAmount: BN;
282
+ isUnlocked: boolean;
283
+ }[];
284
+ totalTokenAmount: BN;
285
+ alreadyUnlockedAmount: BN;
286
+ minUnlockTimestamp: BN;
287
+ oracleConfig: {
288
+ oracleAccount: PublicKey;
289
+ byteOffset: number;
290
+ };
291
+ twapLengthSeconds: number;
292
+ recipient: PublicKey;
293
+ state: ({
294
+ unlocking?: undefined;
295
+ unlocked?: undefined;
296
+ } & {
297
+ locked: Record<string, never>;
298
+ }) | ({
299
+ locked?: undefined;
300
+ unlocked?: undefined;
301
+ } & {
302
+ unlocking: {
303
+ startAggregator: BN;
304
+ startTimestamp: BN;
305
+ };
306
+ }) | ({
307
+ locked?: undefined;
308
+ unlocking?: undefined;
309
+ } & {
310
+ unlocked: Record<string, never>;
311
+ });
312
+ createKey: PublicKey;
313
+ pdaBump: number;
314
+ performancePackageAuthority: PublicKey;
315
+ tokenMint: PublicKey;
316
+ seqNum: BN;
317
+ performancePackageTokenVault: PublicKey;
318
+ }>;
319
+ getChangeRequest(changeRequestAddress: PublicKey): Promise<{
320
+ performancePackage: PublicKey;
321
+ changeType: ({
322
+ recipient?: undefined;
323
+ } & {
324
+ oracle: {
325
+ newOracleConfig: {
326
+ oracleAccount: PublicKey;
327
+ byteOffset: number;
328
+ };
329
+ };
330
+ }) | ({
331
+ oracle?: undefined;
332
+ } & {
333
+ recipient: {
334
+ newRecipient: PublicKey;
335
+ };
336
+ });
337
+ proposedAt: BN;
338
+ proposerType: ({
339
+ recipient?: undefined;
340
+ } & {
341
+ authority: Record<string, never>;
342
+ }) | ({
343
+ authority?: undefined;
344
+ } & {
345
+ recipient: Record<string, never>;
346
+ });
347
+ pdaNonce: number;
348
+ pdaBump: number;
349
+ }>;
350
+ getChangeRequestAddress(performancePackage: PublicKey, proposer: PublicKey, pdaNonce: number): PublicKey;
351
+ getPerformancePackageTokenAccountAddress(performancePackage: PublicKey): PublicKey;
352
+ getEventAuthorityAddress(): PublicKey;
353
+ }