@metadaoproject/futarchy 0.3.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.
- package/dist/AmmClient.d.ts +191 -0
- package/dist/AmmClient.js +278 -0
- package/dist/AmmClient.js.map +1 -0
- package/dist/AutocratClient.d.ts +284 -0
- package/dist/AutocratClient.js +229 -0
- package/dist/AutocratClient.js.map +1 -0
- package/dist/ConditionalVaultClient.d.ts +146 -0
- package/dist/ConditionalVaultClient.js +124 -0
- package/dist/ConditionalVaultClient.js.map +1 -0
- package/dist/InstructionHandler.d.ts +27 -0
- package/dist/InstructionHandler.js +95 -0
- package/dist/InstructionHandler.js.map +1 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.js +13 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/types/amm.d.ts +542 -0
- package/dist/types/amm.js +545 -0
- package/dist/types/amm.js.map +1 -0
- package/dist/types/autocrat.d.ts +632 -0
- package/dist/types/autocrat.js +635 -0
- package/dist/types/autocrat.js.map +1 -0
- package/dist/types/conditional_vault.d.ts +448 -0
- package/dist/types/conditional_vault.js +451 -0
- package/dist/types/conditional_vault.js.map +1 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cu.d.ts +8 -0
- package/dist/utils/cu.js +12 -0
- package/dist/utils/cu.js.map +1 -0
- package/dist/utils/filters.d.ts +3 -0
- package/dist/utils/filters.js +19 -0
- package/dist/utils/filters.js.map +1 -0
- package/dist/utils/index.d.ts +17 -0
- package/dist/utils/index.js +51 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/instruction.d.ts +4 -0
- package/dist/utils/instruction.js +14 -0
- package/dist/utils/instruction.js.map +1 -0
- package/dist/utils/metadata.d.ts +4 -0
- package/dist/utils/metadata.js +30 -0
- package/dist/utils/metadata.js.map +1 -0
- package/dist/utils/pda.d.ts +10 -0
- package/dist/utils/pda.js +58 -0
- package/dist/utils/pda.js.map +1 -0
- package/dist/utils/priceMath.d.ts +9 -0
- package/dist/utils/priceMath.js +42 -0
- package/dist/utils/priceMath.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ConditionalVaultClient = void 0;
|
|
7
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
const conditional_vault_1 = require("./types/conditional_vault");
|
|
10
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
14
|
+
class ConditionalVaultClient {
|
|
15
|
+
provider;
|
|
16
|
+
vaultProgram;
|
|
17
|
+
luts;
|
|
18
|
+
constructor(provider, conditionalVaultProgramId, luts) {
|
|
19
|
+
this.provider = provider;
|
|
20
|
+
this.vaultProgram = new anchor_1.Program(conditional_vault_1.IDL, conditionalVaultProgramId, provider);
|
|
21
|
+
this.luts = luts;
|
|
22
|
+
}
|
|
23
|
+
static createClient(createVaultClientParams) {
|
|
24
|
+
let { provider, conditionalVaultProgramId } = createVaultClientParams;
|
|
25
|
+
const luts = [];
|
|
26
|
+
return new ConditionalVaultClient(provider, conditionalVaultProgramId || constants_1.CONDITIONAL_VAULT_PROGRAM_ID, luts);
|
|
27
|
+
}
|
|
28
|
+
async getVault(vault) {
|
|
29
|
+
return this.vaultProgram.account.conditionalVault.fetch(vault);
|
|
30
|
+
}
|
|
31
|
+
async mintConditionalTokens(vault, uiAmount, user) {
|
|
32
|
+
const storedVault = await this.getVault(vault);
|
|
33
|
+
return (this.mintConditionalTokensIx(vault, storedVault.underlyingTokenMint, new bn_js_1.default(uiAmount).mul(new bn_js_1.default(10).pow(new bn_js_1.default(storedVault.decimals))), user)
|
|
34
|
+
// .preInstructions([
|
|
35
|
+
// createAssociatedTokenAccountIdempotentInstruction(this.provider.publicKey, )
|
|
36
|
+
// ])
|
|
37
|
+
.rpc());
|
|
38
|
+
}
|
|
39
|
+
mintConditionalTokensIx(vault, underlyingTokenMint, amount, user) {
|
|
40
|
+
let userPubkey;
|
|
41
|
+
if (!user) {
|
|
42
|
+
userPubkey = this.provider.publicKey;
|
|
43
|
+
}
|
|
44
|
+
else if (user instanceof web3_js_1.Keypair) {
|
|
45
|
+
userPubkey = user.publicKey;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
userPubkey = user;
|
|
49
|
+
}
|
|
50
|
+
const [conditionalOnFinalizeTokenMint] = (0, utils_1.getVaultFinalizeMintAddr)(this.vaultProgram.programId, vault);
|
|
51
|
+
const [conditionalOnRevertTokenMint] = (0, utils_1.getVaultRevertMintAddr)(this.vaultProgram.programId, vault);
|
|
52
|
+
let userConditionalOnFinalizeTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(conditionalOnFinalizeTokenMint, userPubkey);
|
|
53
|
+
let userConditionalOnRevertTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(conditionalOnRevertTokenMint, userPubkey);
|
|
54
|
+
let ix = this.vaultProgram.methods
|
|
55
|
+
.mintConditionalTokens(amount)
|
|
56
|
+
.accounts({
|
|
57
|
+
authority: userPubkey,
|
|
58
|
+
vault,
|
|
59
|
+
vaultUnderlyingTokenAccount: (0, spl_token_1.getAssociatedTokenAddressSync)(underlyingTokenMint, vault, true),
|
|
60
|
+
userUnderlyingTokenAccount: (0, spl_token_1.getAssociatedTokenAddressSync)(underlyingTokenMint, userPubkey, true),
|
|
61
|
+
conditionalOnFinalizeTokenMint,
|
|
62
|
+
userConditionalOnFinalizeTokenAccount,
|
|
63
|
+
conditionalOnRevertTokenMint,
|
|
64
|
+
userConditionalOnRevertTokenAccount,
|
|
65
|
+
})
|
|
66
|
+
.preInstructions([
|
|
67
|
+
(0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(userPubkey, userConditionalOnFinalizeTokenAccount, userPubkey, conditionalOnFinalizeTokenMint),
|
|
68
|
+
(0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(userPubkey, userConditionalOnRevertTokenAccount, userPubkey, conditionalOnRevertTokenMint),
|
|
69
|
+
]);
|
|
70
|
+
if (user instanceof web3_js_1.Keypair) {
|
|
71
|
+
ix = ix.signers([user]);
|
|
72
|
+
}
|
|
73
|
+
return ix;
|
|
74
|
+
}
|
|
75
|
+
initializeVaultIx(settlementAuthority, underlyingTokenMint) {
|
|
76
|
+
const [vault] = (0, utils_1.getVaultAddr)(this.vaultProgram.programId, settlementAuthority, underlyingTokenMint);
|
|
77
|
+
const [conditionalOnFinalizeTokenMint] = (0, utils_1.getVaultFinalizeMintAddr)(this.vaultProgram.programId, vault);
|
|
78
|
+
const [conditionalOnRevertTokenMint] = (0, utils_1.getVaultRevertMintAddr)(this.vaultProgram.programId, vault);
|
|
79
|
+
const vaultUnderlyingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(underlyingTokenMint, vault, true);
|
|
80
|
+
return this.vaultProgram.methods
|
|
81
|
+
.initializeConditionalVault({ settlementAuthority })
|
|
82
|
+
.accounts({
|
|
83
|
+
vault,
|
|
84
|
+
underlyingTokenMint,
|
|
85
|
+
vaultUnderlyingTokenAccount,
|
|
86
|
+
conditionalOnFinalizeTokenMint,
|
|
87
|
+
conditionalOnRevertTokenMint,
|
|
88
|
+
})
|
|
89
|
+
.preInstructions([
|
|
90
|
+
(0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(this.provider.publicKey, vaultUnderlyingTokenAccount, vault, underlyingTokenMint),
|
|
91
|
+
]);
|
|
92
|
+
}
|
|
93
|
+
addMetadataToConditionalTokensIx(vault, underlyingTokenMint, proposalNumber, onFinalizeUri, onRevertUri) {
|
|
94
|
+
const [underlyingTokenMetadata] = (0, utils_1.getMetadataAddr)(underlyingTokenMint);
|
|
95
|
+
const [conditionalOnFinalizeTokenMint] = (0, utils_1.getVaultFinalizeMintAddr)(this.vaultProgram.programId, vault);
|
|
96
|
+
const [conditionalOnRevertTokenMint] = (0, utils_1.getVaultRevertMintAddr)(this.vaultProgram.programId, vault);
|
|
97
|
+
const [conditionalOnFinalizeTokenMetadata] = (0, utils_1.getMetadataAddr)(conditionalOnFinalizeTokenMint);
|
|
98
|
+
const [conditionalOnRevertTokenMetadata] = (0, utils_1.getMetadataAddr)(conditionalOnRevertTokenMint);
|
|
99
|
+
return this.vaultProgram.methods
|
|
100
|
+
.addMetadataToConditionalTokens({
|
|
101
|
+
proposalNumber: new bn_js_1.default(proposalNumber),
|
|
102
|
+
onFinalizeUri,
|
|
103
|
+
onRevertUri,
|
|
104
|
+
})
|
|
105
|
+
.accounts({
|
|
106
|
+
payer: this.provider.publicKey,
|
|
107
|
+
vault,
|
|
108
|
+
underlyingTokenMint,
|
|
109
|
+
underlyingTokenMetadata,
|
|
110
|
+
conditionalOnFinalizeTokenMint,
|
|
111
|
+
conditionalOnRevertTokenMint,
|
|
112
|
+
conditionalOnFinalizeTokenMetadata,
|
|
113
|
+
conditionalOnRevertTokenMetadata,
|
|
114
|
+
tokenMetadataProgram: constants_1.MPL_TOKEN_METADATA_PROGRAM_ID,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async initializeVault(settlementAuthority, underlyingTokenMint) {
|
|
118
|
+
const [vault] = (0, utils_1.getVaultAddr)(this.vaultProgram.programId, settlementAuthority, underlyingTokenMint);
|
|
119
|
+
await this.initializeVaultIx(settlementAuthority, underlyingTokenMint).rpc();
|
|
120
|
+
return vault;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.ConditionalVaultClient = ConditionalVaultClient;
|
|
124
|
+
//# sourceMappingURL=ConditionalVaultClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionalVaultClient.js","sourceRoot":"","sources":["../src/ConditionalVaultClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AddressLookupTableAccount, Blockhash, ConfirmOptions, Keypair, Signer, TransactionInstruction, VersionedTransaction } from "@solana/web3.js";
|
|
2
|
+
import { BanksClient } from "solana-bankrun";
|
|
3
|
+
import { AnchorProvider } from "@coral-xyz/anchor";
|
|
4
|
+
export type SignerOrKeypair = Signer | Keypair;
|
|
5
|
+
interface Client<ProgramType> {
|
|
6
|
+
provider: AnchorProvider;
|
|
7
|
+
program: ProgramType;
|
|
8
|
+
luts: AddressLookupTableAccount[];
|
|
9
|
+
}
|
|
10
|
+
export declare class InstructionHandler<ProgramType, Type extends Client<ProgramType> = Client<ProgramType>> {
|
|
11
|
+
instructions: TransactionInstruction[];
|
|
12
|
+
signers: Set<SignerOrKeypair>;
|
|
13
|
+
client: Type;
|
|
14
|
+
computeUnits: number;
|
|
15
|
+
microLamportsPerComputeUnit: number;
|
|
16
|
+
preInstructions: TransactionInstruction[];
|
|
17
|
+
postInstructions: TransactionInstruction[];
|
|
18
|
+
constructor(instructions: TransactionInstruction[], signers: SignerOrKeypair[], client: Type);
|
|
19
|
+
addPreInstructions(instructions: TransactionInstruction[], signers?: SignerOrKeypair[]): InstructionHandler<ProgramType, Type>;
|
|
20
|
+
addPostInstructions(instructions: TransactionInstruction[], signers?: SignerOrKeypair[]): InstructionHandler<ProgramType, Type>;
|
|
21
|
+
getVersionedTransaction(blockhash: Blockhash): Promise<VersionedTransaction>;
|
|
22
|
+
setComputeUnits(computeUnits: number): InstructionHandler<ProgramType, Type>;
|
|
23
|
+
setPriorityFee(microLamportsPerComputeUnit: number): InstructionHandler<ProgramType, Type>;
|
|
24
|
+
bankrun(banksClient: BanksClient): Promise<import("solana-bankrun").BanksTransactionMeta>;
|
|
25
|
+
rpc(opts?: ConfirmOptions): Promise<string>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InstructionHandler = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
class InstructionHandler {
|
|
7
|
+
instructions;
|
|
8
|
+
signers;
|
|
9
|
+
client;
|
|
10
|
+
computeUnits = 200_000;
|
|
11
|
+
microLamportsPerComputeUnit = 0;
|
|
12
|
+
preInstructions;
|
|
13
|
+
postInstructions;
|
|
14
|
+
constructor(instructions, signers, client) {
|
|
15
|
+
this.instructions = instructions;
|
|
16
|
+
this.signers = new Set();
|
|
17
|
+
signers.forEach((s) => this.signers.add(s));
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.preInstructions = [];
|
|
20
|
+
this.postInstructions = [];
|
|
21
|
+
}
|
|
22
|
+
addPreInstructions(instructions, signers = []) {
|
|
23
|
+
this.preInstructions = [...instructions, ...this.preInstructions];
|
|
24
|
+
signers.forEach((s) => this.signers.add(s));
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
addPostInstructions(instructions, signers = []) {
|
|
28
|
+
this.postInstructions = [...instructions, ...this.postInstructions];
|
|
29
|
+
signers.forEach((s) => this.signers.add(s));
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
async getVersionedTransaction(blockhash) {
|
|
33
|
+
this.instructions = [
|
|
34
|
+
...this.preInstructions,
|
|
35
|
+
...this.instructions,
|
|
36
|
+
...this.postInstructions,
|
|
37
|
+
];
|
|
38
|
+
if (this.microLamportsPerComputeUnit != 0) {
|
|
39
|
+
this.instructions = [
|
|
40
|
+
(0, utils_1.addPriorityFee)(this.microLamportsPerComputeUnit),
|
|
41
|
+
...this.instructions,
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
if (this.computeUnits != 200_000) {
|
|
45
|
+
this.instructions = [
|
|
46
|
+
(0, utils_1.addComputeUnits)(this.computeUnits),
|
|
47
|
+
...this.instructions,
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
const message = new web3_js_1.TransactionMessage({
|
|
51
|
+
payerKey: this.client.provider.wallet.publicKey,
|
|
52
|
+
recentBlockhash: blockhash,
|
|
53
|
+
instructions: this.instructions,
|
|
54
|
+
}).compileToV0Message(this.client.luts);
|
|
55
|
+
let tx = new web3_js_1.VersionedTransaction(message);
|
|
56
|
+
let signersArray = Array.from(this.signers);
|
|
57
|
+
if (this.signers.size) {
|
|
58
|
+
tx.sign(signersArray);
|
|
59
|
+
}
|
|
60
|
+
return tx;
|
|
61
|
+
}
|
|
62
|
+
setComputeUnits(computeUnits) {
|
|
63
|
+
this.computeUnits = computeUnits;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
setPriorityFee(microLamportsPerComputeUnit) {
|
|
67
|
+
this.microLamportsPerComputeUnit = microLamportsPerComputeUnit;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
async bankrun(banksClient) {
|
|
71
|
+
try {
|
|
72
|
+
let [blockhash] = (await banksClient.getLatestBlockhash());
|
|
73
|
+
const tx = await this.getVersionedTransaction(blockhash);
|
|
74
|
+
return await banksClient.processTransaction(tx);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.log(e);
|
|
78
|
+
throw e;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async rpc(opts = { skipPreflight: true }) {
|
|
82
|
+
try {
|
|
83
|
+
let blockhash = (await this.client.provider.connection.getLatestBlockhash()).blockhash;
|
|
84
|
+
let tx = await this.getVersionedTransaction(blockhash);
|
|
85
|
+
tx = await this.client.provider.wallet.signTransaction(tx);
|
|
86
|
+
return await this.client.provider.connection.sendRawTransaction(tx.serialize(), opts);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
console.log(e);
|
|
90
|
+
throw e;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.InstructionHandler = InstructionHandler;
|
|
95
|
+
//# sourceMappingURL=InstructionHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InstructionHandler.js","sourceRoot":"","sources":["../src/InstructionHandler.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,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUTOCRAT_LUTS = exports.USDC_DECIMALS = exports.MAINNET_USDC = exports.META_MINT = exports.MPL_TOKEN_METADATA_PROGRAM_ID = exports.CONDITIONAL_VAULT_PROGRAM_ID = exports.AMM_PROGRAM_ID = exports.AUTOCRAT_PROGRAM_ID = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
exports.AUTOCRAT_PROGRAM_ID = new web3_js_1.PublicKey("autoQP9RmUNkzzKRXsMkWicDVZ3h29vvyMDcAYjCxxg");
|
|
6
|
+
exports.AMM_PROGRAM_ID = new web3_js_1.PublicKey("AMM5G2nxuKUwCLRYTW7qqEwuoqCtNSjtbipwEmm2g8bH");
|
|
7
|
+
exports.CONDITIONAL_VAULT_PROGRAM_ID = new web3_js_1.PublicKey("VAU1T7S5UuEHmMvXtXMVmpEoQtZ2ya7eRb7gcN47wDp");
|
|
8
|
+
exports.MPL_TOKEN_METADATA_PROGRAM_ID = new web3_js_1.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
|
|
9
|
+
exports.META_MINT = new web3_js_1.PublicKey("3gN1WVEJwSHNWjo7hr87DgZp6zkf8kWgAJD29DmfE2Gr");
|
|
10
|
+
exports.MAINNET_USDC = new web3_js_1.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
|
|
11
|
+
exports.USDC_DECIMALS = 6;
|
|
12
|
+
exports.AUTOCRAT_LUTS = [];
|
|
13
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,mBAAmB,GAAG,IAAI,mBAAS,CAC9C,6CAA6C,CAC9C,CAAC;AACW,QAAA,cAAc,GAAG,IAAI,mBAAS,CACzC,8CAA8C,CAC/C,CAAC;AACW,QAAA,4BAA4B,GAAG,IAAI,mBAAS,CACvD,6CAA6C,CAC9C,CAAC;AAEW,QAAA,6BAA6B,GAAG,IAAI,mBAAS,CACxD,6CAA6C,CAC9C,CAAC;AAEW,QAAA,SAAS,GAAG,IAAI,mBAAS,CACpC,8CAA8C,CAC/C,CAAC;AACW,QAAA,YAAY,GAAG,IAAI,mBAAS,CACvC,8CAA8C,CAC/C,CAAC;AAEW,QAAA,aAAa,GAAG,CAAC,CAAC;AAElB,QAAA,aAAa,GAAgB,EAAE,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./utils"), exports);
|
|
19
|
+
__exportStar(require("./constants"), exports);
|
|
20
|
+
__exportStar(require("./AmmClient"), exports);
|
|
21
|
+
__exportStar(require("./AutocratClient"), exports);
|
|
22
|
+
__exportStar(require("./ConditionalVaultClient"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,mDAAiC;AACjC,2DAAyC"}
|