@metadaoproject/futarchy 0.4.0-alpha.41 → 0.4.0-alpha.43

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.
@@ -1,324 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import { AnchorProvider, Program } from "@coral-xyz/anchor";
3
- import { PublicKey, AccountInfo } from "@solana/web3.js";
4
- import { Launchpad } from "./types/launchpad.js";
5
- import { BN } from "@coral-xyz/anchor";
6
- import { Launch } from "./types/index.js";
7
- import { AutocratClient } from "./AutocratClient.js";
8
- export type CreateLaunchpadClientParams = {
9
- provider: AnchorProvider;
10
- launchpadProgramId?: PublicKey;
11
- autocratProgramId?: PublicKey;
12
- conditionalVaultProgramId?: PublicKey;
13
- ammProgramId?: PublicKey;
14
- };
15
- export declare class LaunchpadClient {
16
- launchpad: Program<Launchpad>;
17
- provider: AnchorProvider;
18
- autocratClient: AutocratClient;
19
- private constructor();
20
- static createClient(params: CreateLaunchpadClientParams): LaunchpadClient;
21
- getProgramId(): PublicKey;
22
- getLaunch(launch: PublicKey): Promise<Launch>;
23
- fetchLaunch(launch: PublicKey): Promise<Launch | null>;
24
- deserializeLaunch(accountInfo: AccountInfo<Buffer>): Promise<Launch>;
25
- initializeLaunchIx(dao: PublicKey, minimumRaiseAmount: BN, maximumRaiseAmount: BN, usdcMint: PublicKey, tokenMint: PublicKey, creator?: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Launchpad, {
26
- name: "initializeLaunch";
27
- accounts: [{
28
- name: "launch";
29
- isMut: true;
30
- isSigner: false;
31
- }, {
32
- name: "launchSigner";
33
- isMut: false;
34
- isSigner: false;
35
- }, {
36
- name: "usdcVault";
37
- isMut: false;
38
- isSigner: false;
39
- }, {
40
- name: "tokenVault";
41
- isMut: false;
42
- isSigner: false;
43
- }, {
44
- name: "creator";
45
- isMut: true;
46
- isSigner: true;
47
- }, {
48
- name: "dao";
49
- isMut: false;
50
- isSigner: false;
51
- }, {
52
- name: "daoTreasury";
53
- isMut: false;
54
- isSigner: false;
55
- }, {
56
- name: "treasuryUsdcAccount";
57
- isMut: false;
58
- isSigner: false;
59
- }, {
60
- name: "usdcMint";
61
- isMut: false;
62
- isSigner: false;
63
- }, {
64
- name: "tokenMint";
65
- isMut: false;
66
- isSigner: false;
67
- }, {
68
- name: "tokenProgram";
69
- isMut: false;
70
- isSigner: false;
71
- }, {
72
- name: "associatedTokenProgram";
73
- isMut: false;
74
- isSigner: false;
75
- }, {
76
- name: "systemProgram";
77
- isMut: false;
78
- isSigner: false;
79
- }, {
80
- name: "eventAuthority";
81
- isMut: false;
82
- isSigner: false;
83
- }, {
84
- name: "program";
85
- isMut: false;
86
- isSigner: false;
87
- }];
88
- args: [{
89
- name: "args";
90
- type: {
91
- defined: "InitializeLaunchArgs";
92
- };
93
- }];
94
- } & {
95
- name: "initializeLaunch";
96
- }>;
97
- startLaunchIx(launch: PublicKey, creator?: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Launchpad, {
98
- name: "startLaunch";
99
- accounts: [{
100
- name: "launch";
101
- isMut: true;
102
- isSigner: false;
103
- }, {
104
- name: "creator";
105
- isMut: false;
106
- isSigner: true;
107
- }, {
108
- name: "eventAuthority";
109
- isMut: false;
110
- isSigner: false;
111
- }, {
112
- name: "program";
113
- isMut: false;
114
- isSigner: false;
115
- }];
116
- args: [];
117
- } & {
118
- name: "startLaunch";
119
- }>;
120
- fundIx(launch: PublicKey, amount: BN, usdcMint: PublicKey, tokenMint: PublicKey, funder?: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Launchpad, {
121
- name: "fund";
122
- accounts: [{
123
- name: "launch";
124
- isMut: true;
125
- isSigner: false;
126
- }, {
127
- name: "launchSigner";
128
- isMut: false;
129
- isSigner: false;
130
- }, {
131
- name: "usdcVault";
132
- isMut: true;
133
- isSigner: false;
134
- }, {
135
- name: "tokenMint";
136
- isMut: true;
137
- isSigner: false;
138
- }, {
139
- name: "funder";
140
- isMut: true;
141
- isSigner: true;
142
- }, {
143
- name: "funderUsdcAccount";
144
- isMut: true;
145
- isSigner: false;
146
- }, {
147
- name: "funderTokenAccount";
148
- isMut: true;
149
- isSigner: false;
150
- }, {
151
- name: "tokenProgram";
152
- isMut: false;
153
- isSigner: false;
154
- }, {
155
- name: "eventAuthority";
156
- isMut: false;
157
- isSigner: false;
158
- }, {
159
- name: "program";
160
- isMut: false;
161
- isSigner: false;
162
- }];
163
- args: [{
164
- name: "amount";
165
- type: "u64";
166
- }];
167
- } & {
168
- name: "fund";
169
- }>;
170
- completeLaunchIx(launch: PublicKey, usdcMint: PublicKey, tokenMint: PublicKey, daoTreasury: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Launchpad, {
171
- name: "completeLaunch";
172
- accounts: [{
173
- name: "launch";
174
- isMut: true;
175
- isSigner: false;
176
- }, {
177
- name: "payer";
178
- isMut: true;
179
- isSigner: true;
180
- }, {
181
- name: "launchSigner";
182
- isMut: true;
183
- isSigner: false;
184
- }, {
185
- name: "authority";
186
- isMut: false;
187
- isSigner: false;
188
- }, {
189
- name: "launchUsdcVault";
190
- isMut: true;
191
- isSigner: false;
192
- }, {
193
- name: "launchTokenVault";
194
- isMut: true;
195
- isSigner: false;
196
- }, {
197
- name: "treasuryUsdcAccount";
198
- isMut: true;
199
- isSigner: false;
200
- }, {
201
- name: "ammConfig";
202
- isMut: false;
203
- isSigner: false;
204
- docs: ["Which config the pool belongs to."];
205
- }, {
206
- name: "poolState";
207
- isMut: true;
208
- isSigner: true;
209
- }, {
210
- name: "tokenMint";
211
- isMut: true;
212
- isSigner: false;
213
- docs: ["Token_0 mint, the key must smaller then token_1 mint."];
214
- }, {
215
- name: "usdcMint";
216
- isMut: false;
217
- isSigner: false;
218
- docs: ["Token_1 mint, the key must grater then token_0 mint."];
219
- }, {
220
- name: "lpMint";
221
- isMut: true;
222
- isSigner: false;
223
- }, {
224
- name: "lpVault";
225
- isMut: true;
226
- isSigner: false;
227
- }, {
228
- name: "poolTokenVault";
229
- isMut: true;
230
- isSigner: false;
231
- }, {
232
- name: "poolUsdcVault";
233
- isMut: true;
234
- isSigner: false;
235
- }, {
236
- name: "createPoolFee";
237
- isMut: true;
238
- isSigner: false;
239
- docs: ["create pool fee account"];
240
- }, {
241
- name: "observationState";
242
- isMut: true;
243
- isSigner: false;
244
- }, {
245
- name: "cpSwapProgram";
246
- isMut: false;
247
- isSigner: false;
248
- }, {
249
- name: "associatedTokenProgram";
250
- isMut: false;
251
- isSigner: false;
252
- }, {
253
- name: "tokenProgram";
254
- isMut: false;
255
- isSigner: false;
256
- }, {
257
- name: "systemProgram";
258
- isMut: false;
259
- isSigner: false;
260
- }, {
261
- name: "rent";
262
- isMut: false;
263
- isSigner: false;
264
- }, {
265
- name: "eventAuthority";
266
- isMut: false;
267
- isSigner: false;
268
- }, {
269
- name: "program";
270
- isMut: false;
271
- isSigner: false;
272
- }];
273
- args: [];
274
- } & {
275
- name: "completeLaunch";
276
- }>;
277
- refundIx(launch: PublicKey, usdcMint: PublicKey, tokenMint: PublicKey, funder?: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Launchpad, {
278
- name: "refund";
279
- accounts: [{
280
- name: "launch";
281
- isMut: true;
282
- isSigner: false;
283
- }, {
284
- name: "launchUsdcVault";
285
- isMut: true;
286
- isSigner: false;
287
- }, {
288
- name: "launchSigner";
289
- isMut: true;
290
- isSigner: false;
291
- }, {
292
- name: "funder";
293
- isMut: true;
294
- isSigner: true;
295
- }, {
296
- name: "funderUsdcAccount";
297
- isMut: true;
298
- isSigner: false;
299
- }, {
300
- name: "funderTokenAccount";
301
- isMut: true;
302
- isSigner: false;
303
- }, {
304
- name: "tokenMint";
305
- isMut: true;
306
- isSigner: false;
307
- }, {
308
- name: "tokenProgram";
309
- isMut: false;
310
- isSigner: false;
311
- }, {
312
- name: "eventAuthority";
313
- isMut: false;
314
- isSigner: false;
315
- }, {
316
- name: "program";
317
- isMut: false;
318
- isSigner: false;
319
- }];
320
- args: [];
321
- } & {
322
- name: "refund";
323
- }>;
324
- }
@@ -1,152 +0,0 @@
1
- import { Program } from "@coral-xyz/anchor";
2
- import { PublicKey, Keypair } from "@solana/web3.js";
3
- import { IDL as LaunchpadIDL } from "./types/launchpad.js";
4
- import { LAUNCHPAD_PROGRAM_ID, RAYDIUM_AUTHORITY, RAYDIUM_CONFIG, RAYDIUM_CP_SWAP_PROGRAM_ID, RAYDIUM_CREATE_POOL_FEE_RECEIVE, } from "./constants.js";
5
- import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token";
6
- import { getDaoTreasuryAddr, getLaunchAddr, getLaunchSignerAddr, } from "./utils/pda.js";
7
- import { AutocratClient } from "./AutocratClient.js";
8
- import * as anchor from "@coral-xyz/anchor";
9
- export class LaunchpadClient {
10
- launchpad;
11
- provider;
12
- autocratClient;
13
- constructor(params) {
14
- this.provider = params.provider;
15
- this.launchpad = new Program(LaunchpadIDL, params.launchpadProgramId || LAUNCHPAD_PROGRAM_ID, this.provider);
16
- this.autocratClient = AutocratClient.createClient({
17
- provider: this.provider,
18
- autocratProgramId: params.autocratProgramId,
19
- conditionalVaultProgramId: params.conditionalVaultProgramId,
20
- ammProgramId: params.ammProgramId,
21
- });
22
- }
23
- static createClient(params) {
24
- return new LaunchpadClient(params);
25
- }
26
- getProgramId() {
27
- return this.launchpad.programId;
28
- }
29
- async getLaunch(launch) {
30
- return await this.launchpad.account.launch.fetch(launch);
31
- }
32
- async fetchLaunch(launch) {
33
- return await this.launchpad.account.launch.fetchNullable(launch);
34
- }
35
- async deserializeLaunch(accountInfo) {
36
- return this.launchpad.coder.accounts.decode("launch", accountInfo.data);
37
- }
38
- initializeLaunchIx(dao, minimumRaiseAmount, maximumRaiseAmount, usdcMint, tokenMint, creator = this.provider.publicKey) {
39
- const [launch] = getLaunchAddr(this.launchpad.programId, dao);
40
- const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
41
- const usdcVault = getAssociatedTokenAddressSync(usdcMint, launchSigner, true);
42
- const tokenVault = getAssociatedTokenAddressSync(tokenMint, launchSigner, true);
43
- const [daoTreasury] = getDaoTreasuryAddr(this.autocratClient.getProgramId(), dao);
44
- const treasuryUsdcAccount = getAssociatedTokenAddressSync(usdcMint, daoTreasury, true);
45
- return this.launchpad.methods
46
- .initializeLaunch({
47
- minimumRaiseAmount,
48
- })
49
- .accounts({
50
- launch,
51
- launchSigner,
52
- usdcVault,
53
- tokenVault,
54
- daoTreasury,
55
- treasuryUsdcAccount,
56
- creator,
57
- dao,
58
- usdcMint,
59
- tokenMint,
60
- })
61
- .preInstructions([
62
- createAssociatedTokenAccountIdempotentInstruction(creator, getAssociatedTokenAddressSync(tokenMint, launchSigner, true), launchSigner, tokenMint),
63
- createAssociatedTokenAccountIdempotentInstruction(creator, getAssociatedTokenAddressSync(usdcMint, launchSigner, true), launchSigner, usdcMint),
64
- createAssociatedTokenAccountIdempotentInstruction(creator, getAssociatedTokenAddressSync(usdcMint, daoTreasury, true), daoTreasury, usdcMint),
65
- ]);
66
- }
67
- startLaunchIx(launch, creator = this.provider.publicKey) {
68
- return this.launchpad.methods.startLaunch().accounts({
69
- launch,
70
- creator,
71
- });
72
- }
73
- fundIx(launch, amount, usdcMint, tokenMint, funder = this.provider.publicKey) {
74
- const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
75
- const usdcVault = getAssociatedTokenAddressSync(usdcMint, launchSigner, true);
76
- const funderUsdcAccount = getAssociatedTokenAddressSync(usdcMint, funder);
77
- const funderTokenAccount = getAssociatedTokenAddressSync(tokenMint, funder);
78
- return this.launchpad.methods.fund(amount).accounts({
79
- launch,
80
- usdcVault,
81
- tokenMint,
82
- funder,
83
- funderUsdcAccount,
84
- funderTokenAccount,
85
- launchSigner,
86
- });
87
- }
88
- completeLaunchIx(launch, usdcMint, tokenMint, daoTreasury) {
89
- const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
90
- const launchUsdcVault = getAssociatedTokenAddressSync(usdcMint, launchSigner, true);
91
- const launchTokenVault = getAssociatedTokenAddressSync(tokenMint, launchSigner, true);
92
- const treasuryUsdcAccount = getAssociatedTokenAddressSync(usdcMint, daoTreasury, true);
93
- const poolStateKp = Keypair.generate();
94
- const [lpMint] = PublicKey.findProgramAddressSync([
95
- anchor.utils.bytes.utf8.encode("pool_lp_mint"),
96
- poolStateKp.publicKey.toBuffer(),
97
- ], RAYDIUM_CP_SWAP_PROGRAM_ID);
98
- const lpVault = getAssociatedTokenAddressSync(lpMint, launchSigner, true);
99
- const [poolTokenVault] = PublicKey.findProgramAddressSync([
100
- anchor.utils.bytes.utf8.encode("pool_vault"),
101
- poolStateKp.publicKey.toBuffer(),
102
- tokenMint.toBuffer(),
103
- ], RAYDIUM_CP_SWAP_PROGRAM_ID);
104
- const [poolUsdcVault] = PublicKey.findProgramAddressSync([
105
- anchor.utils.bytes.utf8.encode("pool_vault"),
106
- poolStateKp.publicKey.toBuffer(),
107
- usdcMint.toBuffer(),
108
- ], RAYDIUM_CP_SWAP_PROGRAM_ID);
109
- const [observationState] = PublicKey.findProgramAddressSync([
110
- anchor.utils.bytes.utf8.encode("observation"),
111
- poolStateKp.publicKey.toBuffer(),
112
- ], RAYDIUM_CP_SWAP_PROGRAM_ID);
113
- return this.launchpad.methods
114
- .completeLaunch()
115
- .accounts({
116
- launch,
117
- launchSigner,
118
- launchUsdcVault,
119
- launchTokenVault,
120
- usdcMint,
121
- tokenMint,
122
- lpMint,
123
- lpVault,
124
- poolTokenVault,
125
- poolUsdcVault,
126
- poolState: poolStateKp.publicKey,
127
- observationState,
128
- treasuryUsdcAccount,
129
- cpSwapProgram: RAYDIUM_CP_SWAP_PROGRAM_ID,
130
- authority: RAYDIUM_AUTHORITY,
131
- ammConfig: RAYDIUM_CONFIG,
132
- createPoolFee: RAYDIUM_CREATE_POOL_FEE_RECEIVE,
133
- })
134
- .signers([poolStateKp]);
135
- }
136
- refundIx(launch, usdcMint, tokenMint, funder = this.provider.publicKey) {
137
- const [launchSigner] = getLaunchSignerAddr(this.launchpad.programId, launch);
138
- const launchUsdcVault = getAssociatedTokenAddressSync(usdcMint, launchSigner, true);
139
- const funderUsdcAccount = getAssociatedTokenAddressSync(usdcMint, funder);
140
- const funderTokenAccount = getAssociatedTokenAddressSync(tokenMint, funder);
141
- return this.launchpad.methods.refund().accounts({
142
- launch,
143
- launchSigner,
144
- launchUsdcVault,
145
- funder,
146
- funderUsdcAccount,
147
- funderTokenAccount,
148
- tokenMint,
149
- });
150
- }
151
- }
152
- //# sourceMappingURL=LaunchpadClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LaunchpadClient.js","sourceRoot":"","sources":["../../src/v0.4/LaunchpadClient.ts"],"names":[],"mappings":"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"}