@metadaoproject/futarchy 0.4.0-alpha.4 → 0.4.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v0.3/AmmClient.d.ts +223 -0
- package/dist/v0.3/AmmClient.js +186 -0
- package/dist/v0.3/AmmClient.js.map +1 -0
- package/dist/v0.3/AutocratClient.d.ts +234 -0
- package/dist/v0.3/AutocratClient.js +270 -0
- package/dist/v0.3/AutocratClient.js.map +1 -0
- package/dist/v0.3/ConditionalVaultClient.d.ts +281 -0
- package/dist/v0.3/ConditionalVaultClient.js +135 -0
- package/dist/v0.3/ConditionalVaultClient.js.map +1 -0
- package/dist/v0.3/FutarchyClient.d.ts +27 -0
- package/dist/v0.3/FutarchyClient.js +57 -0
- package/dist/v0.3/FutarchyClient.js.map +1 -0
- package/dist/v0.3/constants.d.ts +9 -0
- package/dist/v0.3/constants.js +10 -0
- package/dist/v0.3/constants.js.map +1 -0
- package/dist/v0.3/index.d.ts +7 -0
- package/dist/v0.3/index.js +8 -0
- package/dist/v0.3/index.js.map +1 -0
- package/dist/v0.3/types/amm.d.ts +542 -0
- package/dist/v0.3/types/amm.js +542 -0
- package/dist/v0.3/types/amm.js.map +1 -0
- package/dist/v0.3/types/autocrat.d.ts +632 -0
- package/dist/v0.3/types/autocrat.js +632 -0
- package/dist/v0.3/types/autocrat.js.map +1 -0
- package/dist/v0.3/types/conditional_vault.d.ts +448 -0
- package/dist/v0.3/types/conditional_vault.js +448 -0
- package/dist/v0.3/types/conditional_vault.js.map +1 -0
- package/dist/v0.3/types/index.d.ts +21 -0
- package/dist/v0.3/types/index.js +4 -0
- package/dist/v0.3/types/index.js.map +1 -0
- package/dist/v0.3/types/utils.d.ts +3 -0
- package/dist/v0.3/types/utils.js +2 -0
- package/dist/v0.3/types/utils.js.map +1 -0
- package/dist/v0.3/utils/ammMath.d.ts +39 -0
- package/dist/v0.3/utils/ammMath.js +142 -0
- package/dist/v0.3/utils/ammMath.js.map +1 -0
- package/dist/v0.3/utils/cu.d.ts +10 -0
- package/dist/v0.3/utils/cu.js +11 -0
- package/dist/v0.3/utils/cu.js.map +1 -0
- package/dist/v0.3/utils/filters.d.ts +3 -0
- package/dist/v0.3/utils/filters.js +14 -0
- package/dist/v0.3/utils/filters.js.map +1 -0
- package/dist/v0.3/utils/index.d.ts +16 -0
- package/dist/v0.3/utils/index.js +30 -0
- package/dist/v0.3/utils/index.js.map +1 -0
- package/dist/v0.3/utils/instruction.d.ts +4 -0
- package/dist/v0.3/utils/instruction.js +10 -0
- package/dist/v0.3/utils/instruction.js.map +1 -0
- package/dist/v0.3/utils/metadata.d.ts +4 -0
- package/dist/v0.3/utils/metadata.js +26 -0
- package/dist/v0.3/utils/metadata.js.map +1 -0
- package/dist/v0.3/utils/pda.d.ts +10 -0
- package/dist/v0.3/utils/pda.js +47 -0
- package/dist/v0.3/utils/pda.js.map +1 -0
- package/dist/v0.4/AmmClient.d.ts +45 -25
- package/dist/v0.4/AmmClient.js +11 -97
- package/dist/v0.4/AmmClient.js.map +1 -1
- package/dist/v0.4/AutocratClient.d.ts +11 -1
- package/dist/v0.4/AutocratClient.js +21 -2
- package/dist/v0.4/AutocratClient.js.map +1 -1
- package/dist/v0.4/ConditionalVaultClient.d.ts +70 -11
- package/dist/v0.4/ConditionalVaultClient.js +23 -33
- package/dist/v0.4/ConditionalVaultClient.js.map +1 -1
- package/dist/v0.4/LaunchpadClient.d.ts +324 -0
- package/dist/v0.4/LaunchpadClient.js +152 -0
- package/dist/v0.4/LaunchpadClient.js.map +1 -0
- package/dist/v0.4/constants.d.ts +5 -0
- package/dist/v0.4/constants.js +9 -3
- package/dist/v0.4/constants.js.map +1 -1
- package/dist/v0.4/index.d.ts +1 -0
- package/dist/v0.4/index.js +1 -0
- package/dist/v0.4/index.js.map +1 -1
- package/dist/v0.4/types/amm.d.ts +268 -2
- package/dist/v0.4/types/amm.js +268 -2
- package/dist/v0.4/types/amm.js.map +1 -1
- package/dist/v0.4/types/autocrat.d.ts +6 -1
- package/dist/v0.4/types/autocrat.js +6 -1
- package/dist/v0.4/types/autocrat.js.map +1 -1
- package/dist/v0.4/types/conditional_vault.d.ts +416 -4
- package/dist/v0.4/types/conditional_vault.js +416 -4
- package/dist/v0.4/types/conditional_vault.js.map +1 -1
- package/dist/v0.4/types/index.d.ts +18 -1
- package/dist/v0.4/types/index.js +2 -0
- package/dist/v0.4/types/index.js.map +1 -1
- package/dist/v0.4/types/launchpad.d.ts +728 -0
- package/dist/v0.4/types/launchpad.js +728 -0
- package/dist/v0.4/types/launchpad.js.map +1 -0
- package/dist/v0.4/utils/pda.d.ts +8 -1
- package/dist/v0.4/utils/pda.js +19 -3
- package/dist/v0.4/utils/pda.js.map +1 -1
- package/dist/v0.4/utils/priceMath.d.ts +51 -9
- package/dist/v0.4/utils/priceMath.js +102 -38
- package/dist/v0.4/utils/priceMath.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { IDL as ConditionalVaultIDL, } from "./types/conditional_vault.js";
|
|
3
|
+
import BN from "bn.js";
|
|
4
|
+
import { CONDITIONAL_VAULT_PROGRAM_ID, MPL_TOKEN_METADATA_PROGRAM_ID, } from "./constants.js";
|
|
5
|
+
import { getMetadataAddr, getVaultAddr, getVaultFinalizeMintAddr, getVaultRevertMintAddr, } from "./utils/index.js";
|
|
6
|
+
import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token";
|
|
7
|
+
export class ConditionalVaultClient {
|
|
8
|
+
provider;
|
|
9
|
+
vaultProgram;
|
|
10
|
+
luts;
|
|
11
|
+
constructor(provider, conditionalVaultProgramId, luts) {
|
|
12
|
+
this.provider = provider;
|
|
13
|
+
this.vaultProgram = new Program(ConditionalVaultIDL, conditionalVaultProgramId, provider);
|
|
14
|
+
this.luts = luts;
|
|
15
|
+
}
|
|
16
|
+
static createClient(createVaultClientParams) {
|
|
17
|
+
let { provider, conditionalVaultProgramId } = createVaultClientParams;
|
|
18
|
+
const luts = [];
|
|
19
|
+
return new ConditionalVaultClient(provider, conditionalVaultProgramId || CONDITIONAL_VAULT_PROGRAM_ID, luts);
|
|
20
|
+
}
|
|
21
|
+
async getVault(vault) {
|
|
22
|
+
return this.vaultProgram.account.conditionalVault.fetch(vault);
|
|
23
|
+
}
|
|
24
|
+
async mintConditionalTokens(vault, uiAmount, user = this.provider.publicKey) {
|
|
25
|
+
const storedVault = await this.getVault(vault);
|
|
26
|
+
return (this.mintConditionalTokensIx(vault, storedVault.underlyingTokenMint, new BN(uiAmount).mul(new BN(10).pow(new BN(storedVault.decimals))), user)
|
|
27
|
+
// .preInstructions([
|
|
28
|
+
// createAssociatedTokenAccountIdempotentInstruction(this.provider.publicKey, )
|
|
29
|
+
// ])
|
|
30
|
+
.rpc());
|
|
31
|
+
}
|
|
32
|
+
mintConditionalTokensIx(vault, underlyingTokenMint, amount, user = this.provider.publicKey, payer = this.provider.publicKey) {
|
|
33
|
+
const [conditionalOnFinalizeTokenMint] = getVaultFinalizeMintAddr(this.vaultProgram.programId, vault);
|
|
34
|
+
const [conditionalOnRevertTokenMint] = getVaultRevertMintAddr(this.vaultProgram.programId, vault);
|
|
35
|
+
let userConditionalOnFinalizeTokenAccount = getAssociatedTokenAddressSync(conditionalOnFinalizeTokenMint, user);
|
|
36
|
+
let userConditionalOnRevertTokenAccount = getAssociatedTokenAddressSync(conditionalOnRevertTokenMint, user);
|
|
37
|
+
let ix = this.vaultProgram.methods
|
|
38
|
+
.mintConditionalTokens(amount)
|
|
39
|
+
.accounts({
|
|
40
|
+
authority: user,
|
|
41
|
+
vault,
|
|
42
|
+
vaultUnderlyingTokenAccount: getAssociatedTokenAddressSync(underlyingTokenMint, vault, true),
|
|
43
|
+
userUnderlyingTokenAccount: getAssociatedTokenAddressSync(underlyingTokenMint, user, true),
|
|
44
|
+
conditionalOnFinalizeTokenMint,
|
|
45
|
+
userConditionalOnFinalizeTokenAccount,
|
|
46
|
+
conditionalOnRevertTokenMint,
|
|
47
|
+
userConditionalOnRevertTokenAccount,
|
|
48
|
+
})
|
|
49
|
+
.preInstructions([
|
|
50
|
+
createAssociatedTokenAccountIdempotentInstruction(payer, userConditionalOnFinalizeTokenAccount, user, conditionalOnFinalizeTokenMint),
|
|
51
|
+
createAssociatedTokenAccountIdempotentInstruction(payer, userConditionalOnRevertTokenAccount, user, conditionalOnRevertTokenMint),
|
|
52
|
+
]);
|
|
53
|
+
return ix;
|
|
54
|
+
}
|
|
55
|
+
initializeVaultIx(settlementAuthority, underlyingTokenMint, payer = this.provider.publicKey) {
|
|
56
|
+
const [vault] = getVaultAddr(this.vaultProgram.programId, settlementAuthority, underlyingTokenMint);
|
|
57
|
+
const [conditionalOnFinalizeTokenMint] = getVaultFinalizeMintAddr(this.vaultProgram.programId, vault);
|
|
58
|
+
const [conditionalOnRevertTokenMint] = getVaultRevertMintAddr(this.vaultProgram.programId, vault);
|
|
59
|
+
const vaultUnderlyingTokenAccount = getAssociatedTokenAddressSync(underlyingTokenMint, vault, true);
|
|
60
|
+
return this.vaultProgram.methods
|
|
61
|
+
.initializeConditionalVault({ settlementAuthority })
|
|
62
|
+
.accounts({
|
|
63
|
+
vault,
|
|
64
|
+
underlyingTokenMint,
|
|
65
|
+
vaultUnderlyingTokenAccount,
|
|
66
|
+
conditionalOnFinalizeTokenMint,
|
|
67
|
+
conditionalOnRevertTokenMint,
|
|
68
|
+
})
|
|
69
|
+
.preInstructions([
|
|
70
|
+
createAssociatedTokenAccountIdempotentInstruction(payer, vaultUnderlyingTokenAccount, vault, underlyingTokenMint),
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
addMetadataToConditionalTokensIx(vault, underlyingTokenMint, proposalNumber, onFinalizeUri, onRevertUri, payer = this.provider.publicKey) {
|
|
74
|
+
const [underlyingTokenMetadata] = getMetadataAddr(underlyingTokenMint);
|
|
75
|
+
const [conditionalOnFinalizeTokenMint] = getVaultFinalizeMintAddr(this.vaultProgram.programId, vault);
|
|
76
|
+
const [conditionalOnRevertTokenMint] = getVaultRevertMintAddr(this.vaultProgram.programId, vault);
|
|
77
|
+
const [conditionalOnFinalizeTokenMetadata] = getMetadataAddr(conditionalOnFinalizeTokenMint);
|
|
78
|
+
const [conditionalOnRevertTokenMetadata] = getMetadataAddr(conditionalOnRevertTokenMint);
|
|
79
|
+
return this.vaultProgram.methods
|
|
80
|
+
.addMetadataToConditionalTokens({
|
|
81
|
+
proposalNumber: new BN(proposalNumber),
|
|
82
|
+
onFinalizeUri,
|
|
83
|
+
onRevertUri,
|
|
84
|
+
})
|
|
85
|
+
.accounts({
|
|
86
|
+
payer,
|
|
87
|
+
vault,
|
|
88
|
+
underlyingTokenMint,
|
|
89
|
+
underlyingTokenMetadata,
|
|
90
|
+
conditionalOnFinalizeTokenMint,
|
|
91
|
+
conditionalOnRevertTokenMint,
|
|
92
|
+
conditionalOnFinalizeTokenMetadata,
|
|
93
|
+
conditionalOnRevertTokenMetadata,
|
|
94
|
+
tokenMetadataProgram: MPL_TOKEN_METADATA_PROGRAM_ID,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
redeemConditionalTokensIx(vault, underlyingTokenMint, user = this.provider.publicKey) {
|
|
98
|
+
const [conditionalOnFinalizeTokenMint] = getVaultFinalizeMintAddr(this.vaultProgram.programId, vault);
|
|
99
|
+
const [conditionalOnRevertTokenMint] = getVaultRevertMintAddr(this.vaultProgram.programId, vault);
|
|
100
|
+
return this.vaultProgram.methods
|
|
101
|
+
.redeemConditionalTokensForUnderlyingTokens()
|
|
102
|
+
.accounts({
|
|
103
|
+
authority: user,
|
|
104
|
+
vault,
|
|
105
|
+
vaultUnderlyingTokenAccount: getAssociatedTokenAddressSync(underlyingTokenMint, vault, true),
|
|
106
|
+
userUnderlyingTokenAccount: getAssociatedTokenAddressSync(underlyingTokenMint, user, true),
|
|
107
|
+
conditionalOnFinalizeTokenMint,
|
|
108
|
+
userConditionalOnFinalizeTokenAccount: getAssociatedTokenAddressSync(conditionalOnFinalizeTokenMint, user),
|
|
109
|
+
conditionalOnRevertTokenMint,
|
|
110
|
+
userConditionalOnRevertTokenAccount: getAssociatedTokenAddressSync(conditionalOnRevertTokenMint, user),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
mergeConditionalTokensIx(vault, underlyingTokenMint, amount, user = this.provider.publicKey) {
|
|
114
|
+
const [conditionalOnFinalizeTokenMint] = getVaultFinalizeMintAddr(this.vaultProgram.programId, vault);
|
|
115
|
+
const [conditionalOnRevertTokenMint] = getVaultRevertMintAddr(this.vaultProgram.programId, vault);
|
|
116
|
+
return this.vaultProgram.methods
|
|
117
|
+
.mergeConditionalTokensForUnderlyingTokens(amount)
|
|
118
|
+
.accounts({
|
|
119
|
+
authority: user,
|
|
120
|
+
vault,
|
|
121
|
+
vaultUnderlyingTokenAccount: getAssociatedTokenAddressSync(underlyingTokenMint, vault, true),
|
|
122
|
+
userUnderlyingTokenAccount: getAssociatedTokenAddressSync(underlyingTokenMint, user, true),
|
|
123
|
+
conditionalOnFinalizeTokenMint,
|
|
124
|
+
userConditionalOnFinalizeTokenAccount: getAssociatedTokenAddressSync(conditionalOnFinalizeTokenMint, user),
|
|
125
|
+
conditionalOnRevertTokenMint,
|
|
126
|
+
userConditionalOnRevertTokenAccount: getAssociatedTokenAddressSync(conditionalOnRevertTokenMint, user),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async initializeVault(settlementAuthority, underlyingTokenMint, payer = this.provider.publicKey) {
|
|
130
|
+
const [vault] = getVaultAddr(this.vaultProgram.programId, settlementAuthority, underlyingTokenMint);
|
|
131
|
+
await this.initializeVaultIx(settlementAuthority, underlyingTokenMint, payer).rpc();
|
|
132
|
+
return vault;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=ConditionalVaultClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionalVaultClient.js","sourceRoot":"","sources":["../../src/v0.3/ConditionalVaultClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey, Transaction } from "@solana/web3.js";
|
|
3
|
+
import BN from "bn.js";
|
|
4
|
+
import { AmmClient, SwapType } from "./AmmClient.js";
|
|
5
|
+
import { AutocratClient } from "./AutocratClient.js";
|
|
6
|
+
import { ConditionalVaultClient } from "./ConditionalVaultClient.js";
|
|
7
|
+
export declare class FutarchyClient {
|
|
8
|
+
readonly provider: AnchorProvider;
|
|
9
|
+
readonly ammClient: AmmClient;
|
|
10
|
+
readonly autocratClient: AutocratClient;
|
|
11
|
+
readonly conditionalVaultClient: ConditionalVaultClient;
|
|
12
|
+
constructor(provider: AnchorProvider);
|
|
13
|
+
static createClient({ provider, }: {
|
|
14
|
+
provider: AnchorProvider;
|
|
15
|
+
}): FutarchyClient;
|
|
16
|
+
createMintAndSwapTx({ proposal, inputAmount, quoteMint, baseMint, user, payer, swapType, outcome, conditionalAmount, }: {
|
|
17
|
+
proposal: PublicKey;
|
|
18
|
+
inputAmount: BN;
|
|
19
|
+
quoteMint: PublicKey;
|
|
20
|
+
baseMint: PublicKey;
|
|
21
|
+
user: PublicKey;
|
|
22
|
+
payer: PublicKey;
|
|
23
|
+
swapType: SwapType;
|
|
24
|
+
outcome: "pass" | "fail";
|
|
25
|
+
conditionalAmount?: BN;
|
|
26
|
+
}): Promise<Transaction>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Transaction } from "@solana/web3.js";
|
|
2
|
+
import BN from "bn.js";
|
|
3
|
+
import { AmmClient } from "./AmmClient.js";
|
|
4
|
+
import { AutocratClient } from "./AutocratClient.js";
|
|
5
|
+
import { ConditionalVaultClient } from "./ConditionalVaultClient.js";
|
|
6
|
+
import { getAmmAddr, getVaultAddr, getVaultFinalizeMintAddr, getVaultRevertMintAddr, } from "./utils/pda.js";
|
|
7
|
+
export class FutarchyClient {
|
|
8
|
+
provider;
|
|
9
|
+
ammClient;
|
|
10
|
+
autocratClient;
|
|
11
|
+
conditionalVaultClient;
|
|
12
|
+
constructor(provider) {
|
|
13
|
+
this.provider = provider;
|
|
14
|
+
this.ammClient = AmmClient.createClient({ provider });
|
|
15
|
+
this.autocratClient = AutocratClient.createClient({ provider });
|
|
16
|
+
this.conditionalVaultClient = ConditionalVaultClient.createClient({
|
|
17
|
+
provider,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
static createClient({ provider, }) {
|
|
21
|
+
return new FutarchyClient(provider);
|
|
22
|
+
}
|
|
23
|
+
async createMintAndSwapTx({ proposal, inputAmount, quoteMint, baseMint, user, payer, swapType, outcome, conditionalAmount, }) {
|
|
24
|
+
const [baseVault] = getVaultAddr(this.conditionalVaultClient.vaultProgram.programId, proposal, baseMint);
|
|
25
|
+
const [quoteVault] = getVaultAddr(this.conditionalVaultClient.vaultProgram.programId, proposal, quoteMint);
|
|
26
|
+
const [underlyingVault, underlyingTokenMint] = swapType.buy
|
|
27
|
+
? [quoteVault, quoteMint]
|
|
28
|
+
: [baseVault, baseMint];
|
|
29
|
+
let mintTx;
|
|
30
|
+
// Check to see if we need to mint conditional tokens
|
|
31
|
+
// If conditionalAmount is not passed we will mint all of the input amount
|
|
32
|
+
// If conditionalAmount is passed we will mint the difference between the input amount and the conditional amount
|
|
33
|
+
if (!conditionalAmount ||
|
|
34
|
+
(conditionalAmount && conditionalAmount.lt(inputAmount))) {
|
|
35
|
+
const mintAmount = conditionalAmount
|
|
36
|
+
? inputAmount.sub(conditionalAmount)
|
|
37
|
+
: inputAmount;
|
|
38
|
+
mintTx = await this.conditionalVaultClient
|
|
39
|
+
.mintConditionalTokensIx(underlyingVault, underlyingTokenMint, mintAmount, user, payer)
|
|
40
|
+
.transaction();
|
|
41
|
+
}
|
|
42
|
+
const [pUSDC] = getVaultFinalizeMintAddr(this.conditionalVaultClient.vaultProgram.programId, quoteVault);
|
|
43
|
+
const [pTOKE] = getVaultFinalizeMintAddr(this.conditionalVaultClient.vaultProgram.programId, baseVault);
|
|
44
|
+
const [fUSDC] = getVaultRevertMintAddr(this.conditionalVaultClient.vaultProgram.programId, quoteVault);
|
|
45
|
+
const [fTOKE] = getVaultRevertMintAddr(this.conditionalVaultClient.vaultProgram.programId, baseVault);
|
|
46
|
+
const [passMarket] = getAmmAddr(this.ammClient.program.programId, pTOKE, pUSDC);
|
|
47
|
+
const [failMarket] = getAmmAddr(this.ammClient.program.programId, fTOKE, fUSDC);
|
|
48
|
+
const [market, ammBaseMint, ammQuoteMint] = outcome === "pass"
|
|
49
|
+
? [passMarket, pTOKE, pUSDC]
|
|
50
|
+
: [failMarket, fTOKE, fUSDC];
|
|
51
|
+
const swapTx = await this.ammClient
|
|
52
|
+
.swapIx(market, ammBaseMint, ammQuoteMint, swapType, inputAmount, new BN(0), user, payer)
|
|
53
|
+
.transaction();
|
|
54
|
+
return mintTx ? new Transaction().add(mintTx, swapTx) : swapTx;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=FutarchyClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FutarchyClient.js","sourceRoot":"","sources":["../../src/v0.3/FutarchyClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
export declare const AUTOCRAT_PROGRAM_ID: PublicKey;
|
|
3
|
+
export declare const AMM_PROGRAM_ID: PublicKey;
|
|
4
|
+
export declare const CONDITIONAL_VAULT_PROGRAM_ID: PublicKey;
|
|
5
|
+
export declare const MPL_TOKEN_METADATA_PROGRAM_ID: PublicKey;
|
|
6
|
+
export declare const META_MINT: PublicKey;
|
|
7
|
+
export declare const MAINNET_USDC: PublicKey;
|
|
8
|
+
export declare const USDC_DECIMALS = 6;
|
|
9
|
+
export declare const AUTOCRAT_LUTS: PublicKey[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
export const AUTOCRAT_PROGRAM_ID = new PublicKey("autoQP9RmUNkzzKRXsMkWicDVZ3h29vvyMDcAYjCxxg");
|
|
3
|
+
export const AMM_PROGRAM_ID = new PublicKey("AMM5G2nxuKUwCLRYTW7qqEwuoqCtNSjtbipwEmm2g8bH");
|
|
4
|
+
export const CONDITIONAL_VAULT_PROGRAM_ID = new PublicKey("VAU1T7S5UuEHmMvXtXMVmpEoQtZ2ya7eRb7gcN47wDp");
|
|
5
|
+
export const MPL_TOKEN_METADATA_PROGRAM_ID = new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
|
|
6
|
+
export const META_MINT = new PublicKey("3gN1WVEJwSHNWjo7hr87DgZp6zkf8kWgAJD29DmfE2Gr");
|
|
7
|
+
export const MAINNET_USDC = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
|
|
8
|
+
export const USDC_DECIMALS = 6;
|
|
9
|
+
export const AUTOCRAT_LUTS = [];
|
|
10
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/v0.3/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,SAAS,CAC9C,6CAA6C,CAC9C,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,SAAS,CACzC,8CAA8C,CAC/C,CAAC;AACF,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,SAAS,CACvD,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,SAAS,CACxD,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CACpC,8CAA8C,CAC/C,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,SAAS,CACvC,8CAA8C,CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./types/index.js";
|
|
2
|
+
export * from "./utils/index.js";
|
|
3
|
+
export * from "./constants.js";
|
|
4
|
+
export * from "./AmmClient.js";
|
|
5
|
+
export * from "./AutocratClient.js";
|
|
6
|
+
export * from "./ConditionalVaultClient.js";
|
|
7
|
+
export * from "./FutarchyClient.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v0.3/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC"}
|