@metadaoproject/futarchy 0.4.0-alpha.5 → 0.4.0-alpha.50

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 (95) hide show
  1. package/dist/v0.3/AmmClient.d.ts +223 -0
  2. package/dist/v0.3/AmmClient.js +186 -0
  3. package/dist/v0.3/AmmClient.js.map +1 -0
  4. package/dist/v0.3/AutocratClient.d.ts +234 -0
  5. package/dist/v0.3/AutocratClient.js +270 -0
  6. package/dist/v0.3/AutocratClient.js.map +1 -0
  7. package/dist/v0.3/ConditionalVaultClient.d.ts +281 -0
  8. package/dist/v0.3/ConditionalVaultClient.js +135 -0
  9. package/dist/v0.3/ConditionalVaultClient.js.map +1 -0
  10. package/dist/v0.3/FutarchyClient.d.ts +27 -0
  11. package/dist/v0.3/FutarchyClient.js +57 -0
  12. package/dist/v0.3/FutarchyClient.js.map +1 -0
  13. package/dist/v0.3/constants.d.ts +9 -0
  14. package/dist/v0.3/constants.js +10 -0
  15. package/dist/v0.3/constants.js.map +1 -0
  16. package/dist/v0.3/index.d.ts +7 -0
  17. package/dist/v0.3/index.js +8 -0
  18. package/dist/v0.3/index.js.map +1 -0
  19. package/dist/v0.3/types/amm.d.ts +542 -0
  20. package/dist/v0.3/types/amm.js +542 -0
  21. package/dist/v0.3/types/amm.js.map +1 -0
  22. package/dist/v0.3/types/autocrat.d.ts +632 -0
  23. package/dist/v0.3/types/autocrat.js +632 -0
  24. package/dist/v0.3/types/autocrat.js.map +1 -0
  25. package/dist/v0.3/types/conditional_vault.d.ts +448 -0
  26. package/dist/v0.3/types/conditional_vault.js +448 -0
  27. package/dist/v0.3/types/conditional_vault.js.map +1 -0
  28. package/dist/v0.3/types/index.d.ts +21 -0
  29. package/dist/v0.3/types/index.js +4 -0
  30. package/dist/v0.3/types/index.js.map +1 -0
  31. package/dist/v0.3/types/utils.d.ts +3 -0
  32. package/dist/v0.3/types/utils.js +2 -0
  33. package/dist/v0.3/types/utils.js.map +1 -0
  34. package/dist/v0.3/utils/ammMath.d.ts +39 -0
  35. package/dist/v0.3/utils/ammMath.js +142 -0
  36. package/dist/v0.3/utils/ammMath.js.map +1 -0
  37. package/dist/v0.3/utils/cu.d.ts +10 -0
  38. package/dist/v0.3/utils/cu.js +11 -0
  39. package/dist/v0.3/utils/cu.js.map +1 -0
  40. package/dist/v0.3/utils/filters.d.ts +3 -0
  41. package/dist/v0.3/utils/filters.js +14 -0
  42. package/dist/v0.3/utils/filters.js.map +1 -0
  43. package/dist/v0.3/utils/index.d.ts +16 -0
  44. package/dist/v0.3/utils/index.js +30 -0
  45. package/dist/v0.3/utils/index.js.map +1 -0
  46. package/dist/v0.3/utils/instruction.d.ts +4 -0
  47. package/dist/v0.3/utils/instruction.js +10 -0
  48. package/dist/v0.3/utils/instruction.js.map +1 -0
  49. package/dist/v0.3/utils/metadata.d.ts +4 -0
  50. package/dist/v0.3/utils/metadata.js +26 -0
  51. package/dist/v0.3/utils/metadata.js.map +1 -0
  52. package/dist/v0.3/utils/pda.d.ts +10 -0
  53. package/dist/v0.3/utils/pda.js +47 -0
  54. package/dist/v0.3/utils/pda.js.map +1 -0
  55. package/dist/v0.4/AmmClient.d.ts +45 -25
  56. package/dist/v0.4/AmmClient.js +11 -97
  57. package/dist/v0.4/AmmClient.js.map +1 -1
  58. package/dist/v0.4/AutocratClient.d.ts +43 -1
  59. package/dist/v0.4/AutocratClient.js +21 -2
  60. package/dist/v0.4/AutocratClient.js.map +1 -1
  61. package/dist/v0.4/ConditionalVaultClient.d.ts +70 -11
  62. package/dist/v0.4/ConditionalVaultClient.js +23 -33
  63. package/dist/v0.4/ConditionalVaultClient.js.map +1 -1
  64. package/dist/v0.4/LaunchpadClient.d.ts +416 -0
  65. package/dist/v0.4/LaunchpadClient.js +197 -0
  66. package/dist/v0.4/LaunchpadClient.js.map +1 -0
  67. package/dist/v0.4/constants.d.ts +10 -0
  68. package/dist/v0.4/constants.js +18 -3
  69. package/dist/v0.4/constants.js.map +1 -1
  70. package/dist/v0.4/index.d.ts +1 -0
  71. package/dist/v0.4/index.js +1 -0
  72. package/dist/v0.4/index.js.map +1 -1
  73. package/dist/v0.4/types/amm.d.ts +268 -2
  74. package/dist/v0.4/types/amm.js +268 -2
  75. package/dist/v0.4/types/amm.js.map +1 -1
  76. package/dist/v0.4/types/autocrat.d.ts +347 -1
  77. package/dist/v0.4/types/autocrat.js +347 -1
  78. package/dist/v0.4/types/autocrat.js.map +1 -1
  79. package/dist/v0.4/types/conditional_vault.d.ts +416 -4
  80. package/dist/v0.4/types/conditional_vault.js +416 -4
  81. package/dist/v0.4/types/conditional_vault.js.map +1 -1
  82. package/dist/v0.4/types/index.d.ts +26 -1
  83. package/dist/v0.4/types/index.js +2 -0
  84. package/dist/v0.4/types/index.js.map +1 -1
  85. package/dist/v0.4/types/launchpad.d.ts +1000 -0
  86. package/dist/v0.4/types/launchpad.js +1000 -0
  87. package/dist/v0.4/types/launchpad.js.map +1 -0
  88. package/dist/v0.4/utils/cu.js +1 -1
  89. package/dist/v0.4/utils/pda.d.ts +12 -1
  90. package/dist/v0.4/utils/pda.js +34 -3
  91. package/dist/v0.4/utils/pda.js.map +1 -1
  92. package/dist/v0.4/utils/priceMath.d.ts +51 -9
  93. package/dist/v0.4/utils/priceMath.js +102 -38
  94. package/dist/v0.4/utils/priceMath.js.map +1 -1
  95. 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,7 @@
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";
@@ -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"}