@metadaoproject/futarchy 0.4.0-alpha.34 → 0.4.0-alpha.36

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 (115) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/v0.3/AmmClient.d.ts +223 -0
  5. package/dist/v0.3/AmmClient.js +186 -0
  6. package/dist/v0.3/AmmClient.js.map +1 -0
  7. package/dist/v0.3/AutocratClient.d.ts +234 -0
  8. package/dist/v0.3/AutocratClient.js +270 -0
  9. package/dist/v0.3/AutocratClient.js.map +1 -0
  10. package/dist/v0.3/ConditionalVaultClient.d.ts +281 -0
  11. package/dist/v0.3/ConditionalVaultClient.js +135 -0
  12. package/dist/v0.3/ConditionalVaultClient.js.map +1 -0
  13. package/dist/v0.3/FutarchyClient.d.ts +26 -0
  14. package/dist/v0.3/FutarchyClient.js +47 -0
  15. package/dist/v0.3/FutarchyClient.js.map +1 -0
  16. package/dist/v0.3/constants.d.ts +9 -0
  17. package/dist/v0.3/constants.js +10 -0
  18. package/dist/v0.3/constants.js.map +1 -0
  19. package/dist/v0.3/index.d.ts +7 -0
  20. package/dist/v0.3/index.js +8 -0
  21. package/dist/v0.3/index.js.map +1 -0
  22. package/dist/v0.3/types/amm.d.ts +542 -0
  23. package/dist/v0.3/types/amm.js +542 -0
  24. package/dist/v0.3/types/amm.js.map +1 -0
  25. package/dist/v0.3/types/autocrat.d.ts +632 -0
  26. package/dist/v0.3/types/autocrat.js +632 -0
  27. package/dist/v0.3/types/autocrat.js.map +1 -0
  28. package/dist/v0.3/types/conditional_vault.d.ts +448 -0
  29. package/dist/v0.3/types/conditional_vault.js +448 -0
  30. package/dist/v0.3/types/conditional_vault.js.map +1 -0
  31. package/dist/v0.3/types/index.d.ts +21 -0
  32. package/dist/v0.3/types/index.js +4 -0
  33. package/dist/v0.3/types/index.js.map +1 -0
  34. package/dist/v0.3/types/utils.d.ts +3 -0
  35. package/dist/v0.3/types/utils.js +2 -0
  36. package/dist/v0.3/types/utils.js.map +1 -0
  37. package/dist/v0.3/utils/ammMath.d.ts +39 -0
  38. package/dist/v0.3/utils/ammMath.js +142 -0
  39. package/dist/v0.3/utils/ammMath.js.map +1 -0
  40. package/dist/v0.3/utils/cu.d.ts +10 -0
  41. package/dist/v0.3/utils/cu.js +11 -0
  42. package/dist/v0.3/utils/cu.js.map +1 -0
  43. package/dist/v0.3/utils/filters.d.ts +3 -0
  44. package/dist/v0.3/utils/filters.js +14 -0
  45. package/dist/v0.3/utils/filters.js.map +1 -0
  46. package/dist/v0.3/utils/index.d.ts +16 -0
  47. package/dist/v0.3/utils/index.js +30 -0
  48. package/dist/v0.3/utils/index.js.map +1 -0
  49. package/dist/v0.3/utils/instruction.d.ts +4 -0
  50. package/dist/v0.3/utils/instruction.js +10 -0
  51. package/dist/v0.3/utils/instruction.js.map +1 -0
  52. package/dist/v0.3/utils/metadata.d.ts +4 -0
  53. package/dist/v0.3/utils/metadata.js +26 -0
  54. package/dist/v0.3/utils/metadata.js.map +1 -0
  55. package/dist/v0.3/utils/pda.d.ts +10 -0
  56. package/dist/v0.3/utils/pda.js +47 -0
  57. package/dist/v0.3/utils/pda.js.map +1 -0
  58. package/dist/v0.4/AmmClient.d.ts +266 -0
  59. package/dist/v0.4/AmmClient.js +186 -0
  60. package/dist/v0.4/AmmClient.js.map +1 -0
  61. package/dist/v0.4/AutocratClient.d.ts +234 -0
  62. package/dist/v0.4/AutocratClient.js +377 -0
  63. package/dist/v0.4/AutocratClient.js.map +1 -0
  64. package/dist/v0.4/ConditionalVaultClient.d.ts +315 -0
  65. package/dist/v0.4/ConditionalVaultClient.js +209 -0
  66. package/dist/v0.4/ConditionalVaultClient.js.map +1 -0
  67. package/dist/v0.4/LaunchpadClient.d.ts +64 -0
  68. package/dist/v0.4/LaunchpadClient.js +45 -0
  69. package/dist/v0.4/LaunchpadClient.js.map +1 -0
  70. package/dist/v0.4/constants.d.ts +10 -0
  71. package/dist/v0.4/constants.js +11 -0
  72. package/dist/v0.4/constants.js.map +1 -0
  73. package/dist/v0.4/index.d.ts +7 -0
  74. package/dist/v0.4/index.js +8 -0
  75. package/dist/v0.4/index.js.map +1 -0
  76. package/dist/v0.4/types/amm.d.ts +813 -0
  77. package/dist/v0.4/types/amm.js +813 -0
  78. package/dist/v0.4/types/amm.js.map +1 -0
  79. package/dist/v0.4/types/autocrat.d.ts +641 -0
  80. package/dist/v0.4/types/autocrat.js +641 -0
  81. package/dist/v0.4/types/autocrat.js.map +1 -0
  82. package/dist/v0.4/types/conditional_vault.d.ts +920 -0
  83. package/dist/v0.4/types/conditional_vault.js +920 -0
  84. package/dist/v0.4/types/conditional_vault.js.map +1 -0
  85. package/dist/v0.4/types/index.d.ts +33 -0
  86. package/dist/v0.4/types/index.js +9 -0
  87. package/dist/v0.4/types/index.js.map +1 -0
  88. package/dist/v0.4/types/launchpad.d.ts +141 -0
  89. package/dist/v0.4/types/launchpad.js +141 -0
  90. package/dist/v0.4/types/launchpad.js.map +1 -0
  91. package/dist/v0.4/types/utils.d.ts +3 -0
  92. package/dist/v0.4/types/utils.js +2 -0
  93. package/dist/v0.4/types/utils.js.map +1 -0
  94. package/dist/v0.4/utils/cu.d.ts +10 -0
  95. package/dist/v0.4/utils/cu.js +11 -0
  96. package/dist/v0.4/utils/cu.js.map +1 -0
  97. package/dist/v0.4/utils/filters.d.ts +3 -0
  98. package/dist/v0.4/utils/filters.js +14 -0
  99. package/dist/v0.4/utils/filters.js.map +1 -0
  100. package/dist/v0.4/utils/index.d.ts +16 -0
  101. package/dist/v0.4/utils/index.js +30 -0
  102. package/dist/v0.4/utils/index.js.map +1 -0
  103. package/dist/v0.4/utils/instruction.d.ts +4 -0
  104. package/dist/v0.4/utils/instruction.js +10 -0
  105. package/dist/v0.4/utils/instruction.js.map +1 -0
  106. package/dist/v0.4/utils/metadata.d.ts +4 -0
  107. package/dist/v0.4/utils/metadata.js +26 -0
  108. package/dist/v0.4/utils/metadata.js.map +1 -0
  109. package/dist/v0.4/utils/pda.d.ts +18 -0
  110. package/dist/v0.4/utils/pda.js +79 -0
  111. package/dist/v0.4/utils/pda.js.map +1 -0
  112. package/dist/v0.4/utils/priceMath.d.ts +54 -0
  113. package/dist/v0.4/utils/priceMath.js +116 -0
  114. package/dist/v0.4/utils/priceMath.js.map +1 -0
  115. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { IDL as AmmIDL } from "./types/amm.js";
3
+ import BN from "bn.js";
4
+ import { AMM_PROGRAM_ID } from "./constants.js";
5
+ import { getAmmLpMintAddr, getAmmAddr } from "./utils/pda.js";
6
+ // import { MethodsBuilder } from "@coral-xyz/anchor/dist/cjs/program/namespace/methods";
7
+ import { unpackMint, getAssociatedTokenAddressSync, createAssociatedTokenAccountIdempotentInstruction, } from "@solana/spl-token";
8
+ import { AmmMath, PriceMath } from "./utils/priceMath.js";
9
+ export class AmmClient {
10
+ provider;
11
+ program;
12
+ luts;
13
+ constructor(provider, ammProgramId, luts) {
14
+ this.provider = provider;
15
+ this.program = new Program(AmmIDL, ammProgramId, provider);
16
+ this.luts = luts;
17
+ }
18
+ static createClient(createAutocratClientParams) {
19
+ let { provider, ammProgramId: programId } = createAutocratClientParams;
20
+ const luts = [];
21
+ return new AmmClient(provider, programId || AMM_PROGRAM_ID, luts);
22
+ }
23
+ getProgramId() {
24
+ return this.program.programId;
25
+ }
26
+ async getAmm(amm) {
27
+ return await this.program.account.amm.fetch(amm);
28
+ }
29
+ async fetchAmm(amm) {
30
+ return await this.program.account.amm.fetchNullable(amm);
31
+ }
32
+ async deserializeAmm(accountInfo) {
33
+ return this.program.coder.accounts.decode("amm", accountInfo.data);
34
+ }
35
+ async createAmm(proposal, baseMint, quoteMint, twapInitialObservation, twapMaxObservationChangePerUpdate) {
36
+ if (!twapMaxObservationChangePerUpdate) {
37
+ twapMaxObservationChangePerUpdate = twapInitialObservation * 0.02;
38
+ }
39
+ let [amm] = getAmmAddr(this.getProgramId(), baseMint, quoteMint);
40
+ let baseDecimals = unpackMint(baseMint, await this.provider.connection.getAccountInfo(baseMint)).decimals;
41
+ let quoteDecimals = unpackMint(quoteMint, await this.provider.connection.getAccountInfo(quoteMint)).decimals;
42
+ let [twapFirstObservationScaled, twapMaxObservationChangePerUpdateScaled] = PriceMath.getAmmPrices(baseDecimals, quoteDecimals, twapInitialObservation, twapMaxObservationChangePerUpdate);
43
+ await this.initializeAmmIx(baseMint, quoteMint, twapFirstObservationScaled, twapMaxObservationChangePerUpdateScaled).rpc();
44
+ return amm;
45
+ }
46
+ // both twap values need to be scaled beforehand
47
+ initializeAmmIx(baseMint, quoteMint, twapInitialObservation, twapMaxObservationChangePerUpdate) {
48
+ let [amm] = getAmmAddr(this.getProgramId(), baseMint, quoteMint);
49
+ let [lpMint] = getAmmLpMintAddr(this.getProgramId(), amm);
50
+ let vaultAtaBase = getAssociatedTokenAddressSync(baseMint, amm, true);
51
+ let vaultAtaQuote = getAssociatedTokenAddressSync(quoteMint, amm, true);
52
+ return this.program.methods
53
+ .createAmm({
54
+ twapInitialObservation,
55
+ twapMaxObservationChangePerUpdate,
56
+ })
57
+ .accounts({
58
+ user: this.provider.publicKey,
59
+ amm,
60
+ lpMint,
61
+ baseMint,
62
+ quoteMint,
63
+ vaultAtaBase,
64
+ vaultAtaQuote,
65
+ });
66
+ }
67
+ async addLiquidity(amm, quoteAmount, baseAmount) {
68
+ let storedAmm = await this.getAmm(amm);
69
+ let lpMintSupply = unpackMint(storedAmm.lpMint, await this.provider.connection.getAccountInfo(storedAmm.lpMint)).supply;
70
+ let quoteAmountCasted;
71
+ let baseAmountCasted;
72
+ if (quoteAmount != undefined) {
73
+ let quoteDecimals = unpackMint(storedAmm.quoteMint, await this.provider.connection.getAccountInfo(storedAmm.quoteMint)).decimals;
74
+ quoteAmountCasted = new BN(quoteAmount).mul(new BN(10).pow(new BN(quoteDecimals)));
75
+ }
76
+ if (baseAmount != undefined) {
77
+ let baseDecimals = unpackMint(storedAmm.baseMint, await this.provider.connection.getAccountInfo(storedAmm.baseMint)).decimals;
78
+ baseAmountCasted = new BN(baseAmount).mul(new BN(10).pow(new BN(baseDecimals)));
79
+ }
80
+ if (lpMintSupply == 0n) {
81
+ if (quoteAmount == undefined || baseAmount == undefined) {
82
+ throw new Error("No pool created yet, you need to specify both base and quote");
83
+ }
84
+ // console.log(quoteAmountCasted?.toString());
85
+ // console.log(baseAmountCasted?.toString())
86
+ return await this.addLiquidityIx(amm, storedAmm.baseMint, storedAmm.quoteMint, quoteAmountCasted, baseAmountCasted, new BN(0)).rpc();
87
+ }
88
+ // quoteAmount == undefined ? undefined : new BN(quoteAmount);
89
+ // let baseAmountCasted: BN | undefined =
90
+ // baseAmount == undefined ? undefined : new BN(baseAmount);
91
+ let sim = AmmMath.simulateAddLiquidity(storedAmm.baseAmount, storedAmm.quoteAmount, Number(lpMintSupply), baseAmountCasted, quoteAmountCasted);
92
+ await this.addLiquidityIx(amm, storedAmm.baseMint, storedAmm.quoteMint, sim.quoteAmount, sim.baseAmount, sim.expectedLpTokens).rpc();
93
+ }
94
+ addLiquidityIx(amm, baseMint, quoteMint, quoteAmount, maxBaseAmount, minLpTokens, user = this.provider.publicKey) {
95
+ const [lpMint] = getAmmLpMintAddr(this.program.programId, amm);
96
+ const userLpAccount = getAssociatedTokenAddressSync(lpMint, user);
97
+ return this.program.methods
98
+ .addLiquidity({
99
+ quoteAmount,
100
+ maxBaseAmount,
101
+ minLpTokens,
102
+ })
103
+ .accounts({
104
+ user,
105
+ amm,
106
+ lpMint,
107
+ userLpAccount,
108
+ userBaseAccount: getAssociatedTokenAddressSync(baseMint, user),
109
+ userQuoteAccount: getAssociatedTokenAddressSync(quoteMint, user),
110
+ vaultAtaBase: getAssociatedTokenAddressSync(baseMint, amm, true),
111
+ vaultAtaQuote: getAssociatedTokenAddressSync(quoteMint, amm, true),
112
+ })
113
+ .preInstructions([
114
+ createAssociatedTokenAccountIdempotentInstruction(this.provider.publicKey, userLpAccount, this.provider.publicKey, lpMint),
115
+ ]);
116
+ }
117
+ removeLiquidityIx(ammAddr, baseMint, quoteMint, lpTokensToBurn, minBaseAmount, minQuoteAmount) {
118
+ const [lpMint] = getAmmLpMintAddr(this.program.programId, ammAddr);
119
+ return this.program.methods
120
+ .removeLiquidity({
121
+ lpTokensToBurn,
122
+ minBaseAmount,
123
+ minQuoteAmount,
124
+ })
125
+ .accounts({
126
+ user: this.provider.publicKey,
127
+ amm: ammAddr,
128
+ lpMint,
129
+ userLpAccount: getAssociatedTokenAddressSync(lpMint, this.provider.publicKey),
130
+ userBaseAccount: getAssociatedTokenAddressSync(baseMint, this.provider.publicKey),
131
+ userQuoteAccount: getAssociatedTokenAddressSync(quoteMint, this.provider.publicKey),
132
+ vaultAtaBase: getAssociatedTokenAddressSync(baseMint, ammAddr, true),
133
+ vaultAtaQuote: getAssociatedTokenAddressSync(quoteMint, ammAddr, true),
134
+ });
135
+ }
136
+ async swap(amm, swapType, inputAmount, outputAmountMin) {
137
+ const storedAmm = await this.getAmm(amm);
138
+ let quoteDecimals = await this.getDecimals(storedAmm.quoteMint);
139
+ let baseDecimals = await this.getDecimals(storedAmm.baseMint);
140
+ let inputAmountScaled;
141
+ let outputAmountMinScaled;
142
+ if (swapType.buy) {
143
+ inputAmountScaled = PriceMath.scale(inputAmount, quoteDecimals);
144
+ outputAmountMinScaled = PriceMath.scale(outputAmountMin, baseDecimals);
145
+ }
146
+ else {
147
+ inputAmountScaled = PriceMath.scale(inputAmount, baseDecimals);
148
+ outputAmountMinScaled = PriceMath.scale(outputAmountMin, quoteDecimals);
149
+ }
150
+ return await this.swapIx(amm, storedAmm.baseMint, storedAmm.quoteMint, swapType, inputAmountScaled, outputAmountMinScaled).rpc();
151
+ }
152
+ swapIx(amm, baseMint, quoteMint, swapType, inputAmount, outputAmountMin, user = this.provider.publicKey) {
153
+ const receivingToken = swapType.buy ? baseMint : quoteMint;
154
+ return this.program.methods
155
+ .swap({
156
+ swapType,
157
+ inputAmount,
158
+ outputAmountMin,
159
+ })
160
+ .accounts({
161
+ user,
162
+ amm,
163
+ userBaseAccount: getAssociatedTokenAddressSync(baseMint, user, true),
164
+ userQuoteAccount: getAssociatedTokenAddressSync(quoteMint, user, true),
165
+ vaultAtaBase: getAssociatedTokenAddressSync(baseMint, amm, true),
166
+ vaultAtaQuote: getAssociatedTokenAddressSync(quoteMint, amm, true),
167
+ })
168
+ .preInstructions([
169
+ // create the receiving token account if it doesn't exist
170
+ createAssociatedTokenAccountIdempotentInstruction(this.provider.publicKey, getAssociatedTokenAddressSync(receivingToken, user), user, receivingToken),
171
+ ]);
172
+ }
173
+ async crankThatTwap(amm) {
174
+ return this.crankThatTwapIx(amm).rpc();
175
+ }
176
+ crankThatTwapIx(amm) {
177
+ return this.program.methods.crankThatTwap().accounts({
178
+ amm,
179
+ });
180
+ }
181
+ async getDecimals(mint) {
182
+ return unpackMint(mint, await this.provider.connection.getAccountInfo(mint))
183
+ .decimals;
184
+ }
185
+ }
186
+ //# sourceMappingURL=AmmClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmmClient.js","sourceRoot":"","sources":["../../src/v0.4/AmmClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { AnchorProvider, Program } from "@coral-xyz/anchor";
3
+ import { AccountInfo, AddressLookupTableAccount, Keypair, PublicKey } from "@solana/web3.js";
4
+ import { ProposalInstruction, InitializeDaoParams } from "./types/index.js";
5
+ import { Autocrat } from "./types/autocrat.js";
6
+ import BN from "bn.js";
7
+ import { ConditionalVaultClient } from "./ConditionalVaultClient.js";
8
+ import { AmmClient } from "./AmmClient.js";
9
+ import { Dao, Proposal } from "./types/index.js";
10
+ export type CreateClientParams = {
11
+ provider: AnchorProvider;
12
+ autocratProgramId?: PublicKey;
13
+ conditionalVaultProgramId?: PublicKey;
14
+ ammProgramId?: PublicKey;
15
+ };
16
+ export type ProposalVaults = {
17
+ baseVault: PublicKey;
18
+ quoteVault: PublicKey;
19
+ };
20
+ export declare class AutocratClient {
21
+ readonly provider: AnchorProvider;
22
+ readonly autocrat: Program<Autocrat>;
23
+ readonly vaultClient: ConditionalVaultClient;
24
+ readonly ammClient: AmmClient;
25
+ readonly luts: AddressLookupTableAccount[];
26
+ constructor(provider: AnchorProvider, autocratProgramId: PublicKey, conditionalVaultProgramId: PublicKey, ammProgramId: PublicKey, luts: AddressLookupTableAccount[]);
27
+ static createClient(createAutocratClientParams: CreateClientParams): AutocratClient;
28
+ getProposal(proposal: PublicKey): Promise<Proposal>;
29
+ getDao(dao: PublicKey): Promise<Dao>;
30
+ fetchProposal(proposal: PublicKey): Promise<Proposal | null>;
31
+ fetchDao(dao: PublicKey): Promise<Dao | null>;
32
+ deserializeProposal(accountInfo: AccountInfo<Buffer>): Promise<Proposal>;
33
+ deserializeDao(accountInfo: AccountInfo<Buffer>): Promise<Dao>;
34
+ getProposalPdas(proposal: PublicKey, baseMint: PublicKey, quoteMint: PublicKey, dao: PublicKey): {
35
+ question: PublicKey;
36
+ baseVault: PublicKey;
37
+ quoteVault: PublicKey;
38
+ passBaseMint: PublicKey;
39
+ passQuoteMint: PublicKey;
40
+ failBaseMint: PublicKey;
41
+ failQuoteMint: PublicKey;
42
+ passAmm: PublicKey;
43
+ failAmm: PublicKey;
44
+ passLp: PublicKey;
45
+ failLp: PublicKey;
46
+ };
47
+ initializeDao(tokenMint: PublicKey, tokenPriceUiAmount: number, minBaseFutarchicLiquidity: number, minQuoteFutarchicLiquidity: number, usdcMint?: PublicKey, daoKeypair?: Keypair): Promise<PublicKey>;
48
+ initializeDaoIx(daoKeypair: Keypair, tokenMint: PublicKey, params: InitializeDaoParams, usdcMint?: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Autocrat, {
49
+ name: "initializeDao";
50
+ accounts: [{
51
+ name: "dao";
52
+ isMut: true;
53
+ isSigner: true;
54
+ }, {
55
+ name: "payer";
56
+ isMut: true;
57
+ isSigner: true;
58
+ }, {
59
+ name: "systemProgram";
60
+ isMut: false;
61
+ isSigner: false;
62
+ }, {
63
+ name: "tokenMint";
64
+ isMut: false;
65
+ isSigner: false;
66
+ }, {
67
+ name: "usdcMint";
68
+ isMut: false;
69
+ isSigner: false;
70
+ }];
71
+ args: [{
72
+ name: "params";
73
+ type: {
74
+ defined: "InitializeDaoParams";
75
+ };
76
+ }];
77
+ } & {
78
+ name: "initializeDao";
79
+ }>;
80
+ initializeProposal(dao: PublicKey, descriptionUrl: string, instruction: ProposalInstruction, baseTokensToLP: BN, quoteTokensToLP: BN): Promise<PublicKey>;
81
+ initializeProposalIx(descriptionUrl: string, instruction: ProposalInstruction, dao: PublicKey, baseMint: PublicKey, quoteMint: PublicKey, passLpTokensToLock: BN, failLpTokensToLock: BN, nonce: BN, question: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Autocrat, {
82
+ name: "initializeProposal";
83
+ accounts: [{
84
+ name: "proposal";
85
+ isMut: true;
86
+ isSigner: false;
87
+ }, {
88
+ name: "dao";
89
+ isMut: true;
90
+ isSigner: false;
91
+ }, {
92
+ name: "question";
93
+ isMut: false;
94
+ isSigner: false;
95
+ }, {
96
+ name: "quoteVault";
97
+ isMut: false;
98
+ isSigner: false;
99
+ }, {
100
+ name: "baseVault";
101
+ isMut: false;
102
+ isSigner: false;
103
+ }, {
104
+ name: "passAmm";
105
+ isMut: false;
106
+ isSigner: false;
107
+ }, {
108
+ name: "passLpMint";
109
+ isMut: false;
110
+ isSigner: false;
111
+ }, {
112
+ name: "failLpMint";
113
+ isMut: false;
114
+ isSigner: false;
115
+ }, {
116
+ name: "failAmm";
117
+ isMut: false;
118
+ isSigner: false;
119
+ }, {
120
+ name: "passLpUserAccount";
121
+ isMut: true;
122
+ isSigner: false;
123
+ }, {
124
+ name: "failLpUserAccount";
125
+ isMut: true;
126
+ isSigner: false;
127
+ }, {
128
+ name: "passLpVaultAccount";
129
+ isMut: true;
130
+ isSigner: false;
131
+ }, {
132
+ name: "failLpVaultAccount";
133
+ isMut: true;
134
+ isSigner: false;
135
+ }, {
136
+ name: "proposer";
137
+ isMut: true;
138
+ isSigner: true;
139
+ }, {
140
+ name: "tokenProgram";
141
+ isMut: false;
142
+ isSigner: false;
143
+ }, {
144
+ name: "systemProgram";
145
+ isMut: false;
146
+ isSigner: false;
147
+ }];
148
+ args: [{
149
+ name: "params";
150
+ type: {
151
+ defined: "InitializeProposalParams";
152
+ };
153
+ }];
154
+ } & {
155
+ name: "initializeProposal";
156
+ }>;
157
+ finalizeProposal(proposal: PublicKey): Promise<string>;
158
+ finalizeProposalIx(proposal: PublicKey, instruction: any, dao: PublicKey, daoToken: PublicKey, usdc: PublicKey, proposer: PublicKey): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Autocrat, {
159
+ name: "finalizeProposal";
160
+ accounts: [{
161
+ name: "proposal";
162
+ isMut: true;
163
+ isSigner: false;
164
+ }, {
165
+ name: "passAmm";
166
+ isMut: false;
167
+ isSigner: false;
168
+ }, {
169
+ name: "failAmm";
170
+ isMut: false;
171
+ isSigner: false;
172
+ }, {
173
+ name: "dao";
174
+ isMut: false;
175
+ isSigner: false;
176
+ }, {
177
+ name: "question";
178
+ isMut: true;
179
+ isSigner: false;
180
+ }, {
181
+ name: "treasury";
182
+ isMut: false;
183
+ isSigner: false;
184
+ }, {
185
+ name: "passLpUserAccount";
186
+ isMut: true;
187
+ isSigner: false;
188
+ }, {
189
+ name: "failLpUserAccount";
190
+ isMut: true;
191
+ isSigner: false;
192
+ }, {
193
+ name: "passLpVaultAccount";
194
+ isMut: true;
195
+ isSigner: false;
196
+ }, {
197
+ name: "failLpVaultAccount";
198
+ isMut: true;
199
+ isSigner: false;
200
+ }, {
201
+ name: "tokenProgram";
202
+ isMut: false;
203
+ isSigner: false;
204
+ }, {
205
+ name: "vaultProgram";
206
+ isMut: false;
207
+ isSigner: false;
208
+ }, {
209
+ name: "vaultEventAuthority";
210
+ isMut: false;
211
+ isSigner: false;
212
+ }];
213
+ args: [];
214
+ } & {
215
+ name: "finalizeProposal";
216
+ }>;
217
+ executeProposal(proposal: PublicKey): Promise<string>;
218
+ executeProposalIx(proposal: PublicKey, dao: PublicKey, instruction: any): import("@coral-xyz/anchor/dist/cjs/program/namespace/methods.js").MethodsBuilder<Autocrat, {
219
+ name: "executeProposal";
220
+ accounts: [{
221
+ name: "proposal";
222
+ isMut: true;
223
+ isSigner: false;
224
+ }, {
225
+ name: "dao";
226
+ isMut: false;
227
+ isSigner: false;
228
+ }];
229
+ args: [];
230
+ } & {
231
+ name: "executeProposal";
232
+ }>;
233
+ crankProposalMarkets(proposals: PublicKey[], priorityFeeMicroLamports: number): Promise<void>;
234
+ }