@metadaoproject/futarchy 0.6.0-alpha.1 → 0.6.0-alpha.3
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.6/ConditionalVaultClient.d.ts +314 -0
- package/dist/v0.6/ConditionalVaultClient.js +209 -0
- package/dist/v0.6/ConditionalVaultClient.js.map +1 -0
- package/dist/v0.6/FutarchyClient.d.ts +744 -0
- package/dist/v0.6/FutarchyClient.js +390 -0
- package/dist/v0.6/FutarchyClient.js.map +1 -0
- package/dist/v0.6/LaunchpadClient.d.ts +460 -0
- package/dist/v0.6/LaunchpadClient.js +211 -0
- package/dist/v0.6/LaunchpadClient.js.map +1 -0
- package/dist/v0.6/PriceBasedUnlockClient.d.ts +325 -0
- package/dist/v0.6/PriceBasedUnlockClient.js +100 -0
- package/dist/v0.6/PriceBasedUnlockClient.js.map +1 -0
- package/dist/v0.6/constants.d.ts +26 -0
- package/dist/v0.6/constants.js +37 -0
- package/dist/v0.6/constants.js.map +1 -0
- package/dist/v0.6/index.d.ts +7 -0
- package/dist/v0.6/index.js +8 -0
- package/dist/v0.6/index.js.map +1 -0
- package/dist/v0.6/types/amm.d.ts +832 -0
- package/dist/v0.6/types/amm.js +832 -0
- package/dist/v0.6/types/amm.js.map +1 -0
- package/dist/v0.6/types/conditional_vault.d.ts +925 -0
- package/dist/v0.6/types/conditional_vault.js +925 -0
- package/dist/v0.6/types/conditional_vault.js.map +1 -0
- package/dist/v0.6/types/futarchy.d.ts +2236 -0
- package/dist/v0.6/types/futarchy.js +2236 -0
- package/dist/v0.6/types/futarchy.js.map +1 -0
- package/dist/v0.6/types/index.d.ts +50 -0
- package/dist/v0.6/types/index.js +11 -0
- package/dist/v0.6/types/index.js.map +1 -0
- package/dist/v0.6/types/launchpad.d.ts +1075 -0
- package/dist/v0.6/types/launchpad.js +1075 -0
- package/dist/v0.6/types/launchpad.js.map +1 -0
- package/dist/v0.6/types/price_based_token_lock.d.ts +444 -0
- package/dist/v0.6/types/price_based_token_lock.js +444 -0
- package/dist/v0.6/types/price_based_token_lock.js.map +1 -0
- package/dist/v0.6/types/price_based_unlock.d.ts +665 -0
- package/dist/v0.6/types/price_based_unlock.js +665 -0
- package/dist/v0.6/types/price_based_unlock.js.map +1 -0
- package/dist/v0.6/types/shared_liquidity_manager.d.ts +89 -0
- package/dist/v0.6/types/shared_liquidity_manager.js +89 -0
- package/dist/v0.6/types/shared_liquidity_manager.js.map +1 -0
- package/dist/v0.6/types/utils.d.ts +3 -0
- package/dist/v0.6/types/utils.js +2 -0
- package/dist/v0.6/types/utils.js.map +1 -0
- package/dist/v0.6/utils/cu.d.ts +10 -0
- package/dist/v0.6/utils/cu.js +11 -0
- package/dist/v0.6/utils/cu.js.map +1 -0
- package/dist/v0.6/utils/filters.d.ts +3 -0
- package/dist/v0.6/utils/filters.js +14 -0
- package/dist/v0.6/utils/filters.js.map +1 -0
- package/dist/v0.6/utils/index.d.ts +16 -0
- package/dist/v0.6/utils/index.js +30 -0
- package/dist/v0.6/utils/index.js.map +1 -0
- package/dist/v0.6/utils/instruction.d.ts +4 -0
- package/dist/v0.6/utils/instruction.js +10 -0
- package/dist/v0.6/utils/instruction.js.map +1 -0
- package/dist/v0.6/utils/metadata.d.ts +4 -0
- package/dist/v0.6/utils/metadata.js +22 -0
- package/dist/v0.6/utils/metadata.js.map +1 -0
- package/dist/v0.6/utils/pda.d.ts +25 -0
- package/dist/v0.6/utils/pda.js +75 -0
- package/dist/v0.6/utils/pda.js.map +1 -0
- package/dist/v0.6/utils/priceMath.d.ts +39 -0
- package/dist/v0.6/utils/priceMath.js +48 -0
- package/dist/v0.6/utils/priceMath.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export type SharedLiquidityManager = {
|
|
2
|
+
version: "0.1.0";
|
|
3
|
+
name: "shared_liquidity_manager";
|
|
4
|
+
docs: ["TODO:", "- add unstake", "- add unit tests"];
|
|
5
|
+
instructions: [];
|
|
6
|
+
errors: [
|
|
7
|
+
{
|
|
8
|
+
code: 6000;
|
|
9
|
+
name: "InsufficientStake";
|
|
10
|
+
msg: "Insufficient stake amount";
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
code: 6001;
|
|
14
|
+
name: "ProposalNotFinalized";
|
|
15
|
+
msg: "Proposal is not finalized";
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
code: 6002;
|
|
19
|
+
name: "NoLpTokensToRemove";
|
|
20
|
+
msg: "No LP tokens to remove from AMM";
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
code: 6003;
|
|
24
|
+
name: "NoTokensFromAmm";
|
|
25
|
+
msg: "No tokens received from AMM removal";
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
code: 6004;
|
|
29
|
+
name: "InsufficientReservesReturned";
|
|
30
|
+
msg: "Insufficient reserves returned to spot AMM (less than 99.5%)";
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
code: 6005;
|
|
34
|
+
name: "PoolInUse";
|
|
35
|
+
msg: "Pool is currently being used by an active proposal";
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
code: 6006;
|
|
39
|
+
name: "InsufficientLpShares";
|
|
40
|
+
msg: "User does not have enough LP shares to withdraw";
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
code: 6007;
|
|
44
|
+
name: "SlippageExceeded";
|
|
45
|
+
msg: "Slippage exceeded minimum token amounts";
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
code: 6008;
|
|
49
|
+
name: "NoLpTokensInPool";
|
|
50
|
+
msg: "No LP tokens in pool's LP token account";
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
code: 6009;
|
|
54
|
+
name: "NotEnoughLpTokens";
|
|
55
|
+
msg: "Not enough LP tokens to provide liquidity to proposal";
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
code: 6010;
|
|
59
|
+
name: "InsufficientFunds";
|
|
60
|
+
msg: "Insufficient funds";
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
code: 6011;
|
|
64
|
+
name: "NoActiveProposal";
|
|
65
|
+
msg: "No active proposal";
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
code: 6012;
|
|
69
|
+
name: "ProposalNotInDraftStatus";
|
|
70
|
+
msg: "Proposal is not in draft status";
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
code: 6013;
|
|
74
|
+
name: "ProposalAlreadyActive";
|
|
75
|
+
msg: "Proposal already active";
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
code: 6014;
|
|
79
|
+
name: "AmmAlreadyHasLiquidity";
|
|
80
|
+
msg: "AMM already has liquidity";
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
code: 6015;
|
|
84
|
+
name: "QuestionAlreadyResolved";
|
|
85
|
+
msg: "Question already resolved";
|
|
86
|
+
}
|
|
87
|
+
];
|
|
88
|
+
};
|
|
89
|
+
export declare const IDL: SharedLiquidityManager;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export const IDL = {
|
|
2
|
+
version: "0.1.0",
|
|
3
|
+
name: "shared_liquidity_manager",
|
|
4
|
+
docs: ["TODO:", "- add unstake", "- add unit tests"],
|
|
5
|
+
instructions: [],
|
|
6
|
+
errors: [
|
|
7
|
+
{
|
|
8
|
+
code: 6000,
|
|
9
|
+
name: "InsufficientStake",
|
|
10
|
+
msg: "Insufficient stake amount",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
code: 6001,
|
|
14
|
+
name: "ProposalNotFinalized",
|
|
15
|
+
msg: "Proposal is not finalized",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
code: 6002,
|
|
19
|
+
name: "NoLpTokensToRemove",
|
|
20
|
+
msg: "No LP tokens to remove from AMM",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
code: 6003,
|
|
24
|
+
name: "NoTokensFromAmm",
|
|
25
|
+
msg: "No tokens received from AMM removal",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
code: 6004,
|
|
29
|
+
name: "InsufficientReservesReturned",
|
|
30
|
+
msg: "Insufficient reserves returned to spot AMM (less than 99.5%)",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
code: 6005,
|
|
34
|
+
name: "PoolInUse",
|
|
35
|
+
msg: "Pool is currently being used by an active proposal",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
code: 6006,
|
|
39
|
+
name: "InsufficientLpShares",
|
|
40
|
+
msg: "User does not have enough LP shares to withdraw",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
code: 6007,
|
|
44
|
+
name: "SlippageExceeded",
|
|
45
|
+
msg: "Slippage exceeded minimum token amounts",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
code: 6008,
|
|
49
|
+
name: "NoLpTokensInPool",
|
|
50
|
+
msg: "No LP tokens in pool's LP token account",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
code: 6009,
|
|
54
|
+
name: "NotEnoughLpTokens",
|
|
55
|
+
msg: "Not enough LP tokens to provide liquidity to proposal",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
code: 6010,
|
|
59
|
+
name: "InsufficientFunds",
|
|
60
|
+
msg: "Insufficient funds",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
code: 6011,
|
|
64
|
+
name: "NoActiveProposal",
|
|
65
|
+
msg: "No active proposal",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
code: 6012,
|
|
69
|
+
name: "ProposalNotInDraftStatus",
|
|
70
|
+
msg: "Proposal is not in draft status",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
code: 6013,
|
|
74
|
+
name: "ProposalAlreadyActive",
|
|
75
|
+
msg: "Proposal already active",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
code: 6014,
|
|
79
|
+
name: "AmmAlreadyHasLiquidity",
|
|
80
|
+
msg: "AMM already has liquidity",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
code: 6015,
|
|
84
|
+
name: "QuestionAlreadyResolved",
|
|
85
|
+
msg: "Question already resolved",
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=shared_liquidity_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared_liquidity_manager.js","sourceRoot":"","sources":["../../../src/v0.6/types/shared_liquidity_manager.ts"],"names":[],"mappings":"AAyFA,MAAM,CAAC,MAAM,GAAG,GAA2B;IACzC,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,kBAAkB,CAAC;IACpD,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE;QACN;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,mBAAmB;YACzB,GAAG,EAAE,2BAA2B;SACjC;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,sBAAsB;YAC5B,GAAG,EAAE,2BAA2B;SACjC;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,oBAAoB;YAC1B,GAAG,EAAE,iCAAiC;SACvC;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,iBAAiB;YACvB,GAAG,EAAE,qCAAqC;SAC3C;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,8BAA8B;YACpC,GAAG,EAAE,8DAA8D;SACpE;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,oDAAoD;SAC1D;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,sBAAsB;YAC5B,GAAG,EAAE,iDAAiD;SACvD;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,kBAAkB;YACxB,GAAG,EAAE,yCAAyC;SAC/C;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,kBAAkB;YACxB,GAAG,EAAE,yCAAyC;SAC/C;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,mBAAmB;YACzB,GAAG,EAAE,uDAAuD;SAC7D;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,mBAAmB;YACzB,GAAG,EAAE,oBAAoB;SAC1B;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,kBAAkB;YACxB,GAAG,EAAE,oBAAoB;SAC1B;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,0BAA0B;YAChC,GAAG,EAAE,iCAAiC;SACvC;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,uBAAuB;YAC7B,GAAG,EAAE,yBAAyB;SAC/B;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,2BAA2B;SACjC;QACD;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,yBAAyB;YAC/B,GAAG,EAAE,2BAA2B;SACjC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/v0.6/types/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const MaxCUs: {
|
|
2
|
+
initializeDao: number;
|
|
3
|
+
createIdempotent: number;
|
|
4
|
+
initializeConditionalVault: number;
|
|
5
|
+
mintConditionalTokens: number;
|
|
6
|
+
initializeAmm: number;
|
|
7
|
+
addLiquidity: number;
|
|
8
|
+
initializeProposal: number;
|
|
9
|
+
};
|
|
10
|
+
export declare const DEFAULT_CU_PRICE = 1;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const MaxCUs = {
|
|
2
|
+
initializeDao: 40_000,
|
|
3
|
+
createIdempotent: 25_000,
|
|
4
|
+
initializeConditionalVault: 45_000,
|
|
5
|
+
mintConditionalTokens: 35_000,
|
|
6
|
+
initializeAmm: 120_000,
|
|
7
|
+
addLiquidity: 120_000,
|
|
8
|
+
initializeProposal: 60_000,
|
|
9
|
+
};
|
|
10
|
+
export const DEFAULT_CU_PRICE = 1;
|
|
11
|
+
//# sourceMappingURL=cu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cu.js","sourceRoot":"","sources":["../../../src/v0.6/utils/cu.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,MAAM;IACxB,0BAA0B,EAAE,MAAM;IAClC,qBAAqB,EAAE,MAAM;IAC7B,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,OAAO;IACrB,kBAAkB,EAAE,MAAM;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const filterPositionsByUser = (userAddr) => ({
|
|
2
|
+
memcmp: {
|
|
3
|
+
offset: 8, // discriminator
|
|
4
|
+
bytes: userAddr.toBase58(),
|
|
5
|
+
},
|
|
6
|
+
});
|
|
7
|
+
export const filterPositionsByAmm = (ammAddr) => ({
|
|
8
|
+
memcmp: {
|
|
9
|
+
offset: 8 + // discriminator
|
|
10
|
+
32, // user address
|
|
11
|
+
bytes: ammAddr.toBase58(),
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/v0.6/utils/filters.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAAmB,EACO,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,EAAE,gBAAgB;QAC3B,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;KAC3B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAkB,EACQ,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE;QACN,MAAM,EACJ,CAAC,GAAG,gBAAgB;YACpB,EAAE,EAAE,eAAe;QACrB,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;KAC1B;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./filters.js";
|
|
2
|
+
export * from "./pda.js";
|
|
3
|
+
export * from "./priceMath.js";
|
|
4
|
+
export * from "./metadata.js";
|
|
5
|
+
export * from "./cu.js";
|
|
6
|
+
export * from "./instruction.js";
|
|
7
|
+
import { AccountMeta, PublicKey } from "@solana/web3.js";
|
|
8
|
+
export declare enum PriorityFeeTier {
|
|
9
|
+
NORMAL = 35,
|
|
10
|
+
HIGH = 3571,
|
|
11
|
+
TURBO = 357142
|
|
12
|
+
}
|
|
13
|
+
export declare const addComputeUnits: (num_units?: number) => import("@solana/web3.js").TransactionInstruction;
|
|
14
|
+
export declare const addPriorityFee: (pf: number) => import("@solana/web3.js").TransactionInstruction;
|
|
15
|
+
export declare const pubkeyToAccountInfo: (pubkey: PublicKey, isWritable: boolean, isSigner?: boolean) => AccountMeta;
|
|
16
|
+
export declare function sleep(ms: number): Promise<unknown>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export * from "./filters.js";
|
|
2
|
+
export * from "./pda.js";
|
|
3
|
+
export * from "./priceMath.js";
|
|
4
|
+
export * from "./metadata.js";
|
|
5
|
+
export * from "./cu.js";
|
|
6
|
+
export * from "./instruction.js";
|
|
7
|
+
import { ComputeBudgetProgram } from "@solana/web3.js";
|
|
8
|
+
export var PriorityFeeTier;
|
|
9
|
+
(function (PriorityFeeTier) {
|
|
10
|
+
PriorityFeeTier[PriorityFeeTier["NORMAL"] = 35] = "NORMAL";
|
|
11
|
+
PriorityFeeTier[PriorityFeeTier["HIGH"] = 3571] = "HIGH";
|
|
12
|
+
PriorityFeeTier[PriorityFeeTier["TURBO"] = 357142] = "TURBO";
|
|
13
|
+
})(PriorityFeeTier || (PriorityFeeTier = {}));
|
|
14
|
+
export const addComputeUnits = (num_units = 1_400_000) => ComputeBudgetProgram.setComputeUnitLimit({
|
|
15
|
+
units: num_units,
|
|
16
|
+
});
|
|
17
|
+
export const addPriorityFee = (pf) => ComputeBudgetProgram.setComputeUnitPrice({
|
|
18
|
+
microLamports: pf,
|
|
19
|
+
});
|
|
20
|
+
export const pubkeyToAccountInfo = (pubkey, isWritable, isSigner = false) => {
|
|
21
|
+
return {
|
|
22
|
+
pubkey: pubkey,
|
|
23
|
+
isSigner: isSigner,
|
|
24
|
+
isWritable: isWritable,
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export async function sleep(ms) {
|
|
28
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v0.6/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAe,oBAAoB,EAAa,MAAM,iBAAiB,CAAC;AAE/E,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,0DAAW,CAAA;IACX,wDAAW,CAAA;IACX,4DAAc,CAAA;AAChB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,YAAoB,SAAS,EAAE,EAAE,CAC/D,oBAAoB,CAAC,mBAAmB,CAAC;IACvC,KAAK,EAAE,SAAS;CACjB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE,CAC3C,oBAAoB,CAAC,mBAAmB,CAAC;IACvC,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAiB,EACjB,UAAmB,EACnB,QAAQ,GAAG,KAAK,EACH,EAAE;IACf,OAAO;QACL,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class InstructionUtils {
|
|
2
|
+
static async getInstructions(...methodBuilders) {
|
|
3
|
+
let instructions = [];
|
|
4
|
+
for (const methodBuilder of methodBuilders) {
|
|
5
|
+
instructions.push(...(await methodBuilder.transaction()).instructions);
|
|
6
|
+
}
|
|
7
|
+
return instructions;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=instruction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../../src/v0.6/utils/instruction.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,KAAK,CAAC,eAAe,CACjC,GAAG,cAAqB;QAExB,IAAI,YAAY,GAA6B,EAAE,CAAC;QAEhD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Connection } from "@solana/web3.js";
|
|
2
|
+
import { UmiPlugin } from "@metaplex-foundation/umi";
|
|
3
|
+
export declare const assetImageMap: Record<string, string>;
|
|
4
|
+
export declare const uploadConditionalTokenMetadataJson: (connection: Connection, identityPlugin: UmiPlugin, proposalNumber: number, symbol: string) => Promise<string>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
|
|
2
|
+
import { bundlrUploader } from "@metaplex-foundation/umi-uploader-bundlr";
|
|
3
|
+
export const assetImageMap = {
|
|
4
|
+
fMETA: "https://arweave.net/tGxvOjMZw7B0qHsdCcIMO57oH5g5OaItOZdXo3BXKz8",
|
|
5
|
+
fUSDC: "https://arweave.net/DpvxeAyVbaoivhIVCLjdf566k2SwVn0YVBL0sTOezWk",
|
|
6
|
+
pMETA: "https://arweave.net/iuqi7PRRESdDxj1oRyk2WzR90_zdFcmZsuWicv3XGfs",
|
|
7
|
+
pUSDC: "https://arweave.net/e4IO7F59F_RKCiuB--_ABPot7Qh1yFsGkWzVhcXuKDU",
|
|
8
|
+
};
|
|
9
|
+
// Upload some JSON, returning its URL
|
|
10
|
+
export const uploadConditionalTokenMetadataJson = async (connection, identityPlugin, proposalNumber, symbol) => {
|
|
11
|
+
// use bundlr, targeting arweave
|
|
12
|
+
const umi = createUmi(connection);
|
|
13
|
+
umi.use(bundlrUploader());
|
|
14
|
+
umi.use(identityPlugin);
|
|
15
|
+
return umi.uploader.uploadJson({
|
|
16
|
+
name: `Proposal ${proposalNumber}: ${symbol}`,
|
|
17
|
+
image: assetImageMap[symbol],
|
|
18
|
+
symbol,
|
|
19
|
+
description: "A conditional token for use in futarchy.",
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/v0.6/utils/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAG1E,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,KAAK,EAAE,iEAAiE;IACxE,KAAK,EAAE,iEAAiE;IACxE,KAAK,EAAE,iEAAiE;IACxE,KAAK,EAAE,iEAAiE;CACzE,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,EACrD,UAAsB,EACtB,cAAyB,EACzB,cAAsB,EACtB,MAAc,EAIG,EAAE;IACnB,gCAAgC;IAChC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAClC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAExB,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,YAAY,cAAc,KAAK,MAAM,EAAE;QAC7C,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;QAC5B,MAAM;QACN,WAAW,EAAE,0CAA0C;KACxD,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import BN from "bn.js";
|
|
3
|
+
export declare const getEventAuthorityAddr: (programId: PublicKey) => [PublicKey, number];
|
|
4
|
+
export declare const getQuestionAddr: (programId: PublicKey, questionId: Uint8Array, oracle: PublicKey, numOutcomes: number) => [PublicKey, number];
|
|
5
|
+
export declare const getVaultAddr: (programId: PublicKey, question: PublicKey, underlyingTokenMint: PublicKey) => [PublicKey, number];
|
|
6
|
+
export declare const getConditionalTokenMintAddr: (programId: PublicKey, vault: PublicKey, index: number) => [PublicKey, number];
|
|
7
|
+
export declare const getDownAndUpMintAddrs: (programId: PublicKey, vault: PublicKey) => {
|
|
8
|
+
down: PublicKey;
|
|
9
|
+
up: PublicKey;
|
|
10
|
+
};
|
|
11
|
+
export declare const getFailAndPassMintAddrs: (programId: PublicKey, vault: PublicKey) => {
|
|
12
|
+
fail: PublicKey;
|
|
13
|
+
pass: PublicKey;
|
|
14
|
+
};
|
|
15
|
+
export declare const getMetadataAddr: (mint: PublicKey) => [PublicKey, number];
|
|
16
|
+
export declare const getDaoAddr: ({ nonce, daoCreator, programId, }: {
|
|
17
|
+
nonce: BN;
|
|
18
|
+
daoCreator: PublicKey;
|
|
19
|
+
programId?: PublicKey;
|
|
20
|
+
}) => [PublicKey, number];
|
|
21
|
+
export declare const getProposalAddr: (programId: PublicKey, squadsProposal: PublicKey) => [PublicKey, number];
|
|
22
|
+
export declare function getLaunchAddr(programId: PublicKey | undefined, tokenMint: PublicKey): [PublicKey, number];
|
|
23
|
+
export declare const getLaunchSignerAddr: (programId: PublicKey | undefined, launch: PublicKey) => [PublicKey, number];
|
|
24
|
+
export declare const getFundingRecordAddr: (programId: PublicKey | undefined, launch: PublicKey, funder: PublicKey) => [PublicKey, number];
|
|
25
|
+
export declare const getStakeRecordAddr: (programId: PublicKey | undefined, draftProposal: PublicKey, staker: PublicKey) => [PublicKey, number];
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { utils } from "@coral-xyz/anchor";
|
|
3
|
+
import BN from "bn.js";
|
|
4
|
+
import { MPL_TOKEN_METADATA_PROGRAM_ID, SHARED_LIQUIDITY_MANAGER_PROGRAM_ID, } from "../constants.js";
|
|
5
|
+
import { LAUNCHPAD_PROGRAM_ID, AUTOCRAT_PROGRAM_ID } from "../constants.js";
|
|
6
|
+
export const getEventAuthorityAddr = (programId) => {
|
|
7
|
+
return PublicKey.findProgramAddressSync([Buffer.from("__event_authority")], programId);
|
|
8
|
+
};
|
|
9
|
+
export const getQuestionAddr = (programId, questionId, oracle, numOutcomes) => {
|
|
10
|
+
if (questionId.length != 32) {
|
|
11
|
+
throw new Error("questionId must be 32 bytes");
|
|
12
|
+
}
|
|
13
|
+
return PublicKey.findProgramAddressSync([
|
|
14
|
+
utils.bytes.utf8.encode("question"),
|
|
15
|
+
Buffer.from(questionId),
|
|
16
|
+
oracle.toBuffer(),
|
|
17
|
+
new BN(numOutcomes).toArrayLike(Buffer, "le", 1),
|
|
18
|
+
], programId);
|
|
19
|
+
};
|
|
20
|
+
export const getVaultAddr = (programId, question, underlyingTokenMint) => {
|
|
21
|
+
return PublicKey.findProgramAddressSync([
|
|
22
|
+
utils.bytes.utf8.encode("conditional_vault"),
|
|
23
|
+
question.toBuffer(),
|
|
24
|
+
underlyingTokenMint.toBuffer(),
|
|
25
|
+
], programId);
|
|
26
|
+
};
|
|
27
|
+
export const getConditionalTokenMintAddr = (programId, vault, index) => {
|
|
28
|
+
return PublicKey.findProgramAddressSync([
|
|
29
|
+
utils.bytes.utf8.encode("conditional_token"),
|
|
30
|
+
vault.toBuffer(),
|
|
31
|
+
new BN(index).toArrayLike(Buffer, "le", 1),
|
|
32
|
+
], programId);
|
|
33
|
+
};
|
|
34
|
+
export const getDownAndUpMintAddrs = (programId, vault) => {
|
|
35
|
+
return {
|
|
36
|
+
down: getConditionalTokenMintAddr(programId, vault, 0)[0],
|
|
37
|
+
up: getConditionalTokenMintAddr(programId, vault, 1)[0],
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export const getFailAndPassMintAddrs = (programId, vault) => {
|
|
41
|
+
return {
|
|
42
|
+
fail: getConditionalTokenMintAddr(programId, vault, 0)[0],
|
|
43
|
+
pass: getConditionalTokenMintAddr(programId, vault, 1)[0],
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export const getMetadataAddr = (mint) => {
|
|
47
|
+
return PublicKey.findProgramAddressSync([
|
|
48
|
+
utils.bytes.utf8.encode("metadata"),
|
|
49
|
+
MPL_TOKEN_METADATA_PROGRAM_ID.toBuffer(),
|
|
50
|
+
mint.toBuffer(),
|
|
51
|
+
], MPL_TOKEN_METADATA_PROGRAM_ID);
|
|
52
|
+
};
|
|
53
|
+
export const getDaoAddr = ({ nonce, daoCreator, programId = AUTOCRAT_PROGRAM_ID, }) => {
|
|
54
|
+
return PublicKey.findProgramAddressSync([
|
|
55
|
+
Buffer.from("dao"),
|
|
56
|
+
daoCreator.toBuffer(),
|
|
57
|
+
nonce.toArrayLike(Buffer, "le", 8),
|
|
58
|
+
], programId);
|
|
59
|
+
};
|
|
60
|
+
export const getProposalAddr = (programId, squadsProposal) => {
|
|
61
|
+
return PublicKey.findProgramAddressSync([utils.bytes.utf8.encode("proposal"), squadsProposal.toBuffer()], programId);
|
|
62
|
+
};
|
|
63
|
+
export function getLaunchAddr(programId = LAUNCHPAD_PROGRAM_ID, tokenMint) {
|
|
64
|
+
return PublicKey.findProgramAddressSync([Buffer.from("launch"), tokenMint.toBuffer()], programId);
|
|
65
|
+
}
|
|
66
|
+
export const getLaunchSignerAddr = (programId = LAUNCHPAD_PROGRAM_ID, launch) => {
|
|
67
|
+
return PublicKey.findProgramAddressSync([Buffer.from("launch_signer"), launch.toBuffer()], programId);
|
|
68
|
+
};
|
|
69
|
+
export const getFundingRecordAddr = (programId = LAUNCHPAD_PROGRAM_ID, launch, funder) => {
|
|
70
|
+
return PublicKey.findProgramAddressSync([Buffer.from("funding_record"), launch.toBuffer(), funder.toBuffer()], programId);
|
|
71
|
+
};
|
|
72
|
+
export const getStakeRecordAddr = (programId = SHARED_LIQUIDITY_MANAGER_PROGRAM_ID, draftProposal, staker) => {
|
|
73
|
+
return PublicKey.findProgramAddressSync([Buffer.from("stake_record"), draftProposal.toBuffer(), staker.toBuffer()], programId);
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=pda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../../../src/v0.6/utils/pda.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
import { Amm } from "../types/index.js";
|
|
3
|
+
import { AmmMath as V3AmmMath } from "../../v0.3/utils/ammMath.js";
|
|
4
|
+
export type AddLiquiditySimulation = {
|
|
5
|
+
baseAmount: BN;
|
|
6
|
+
quoteAmount: BN;
|
|
7
|
+
expectedLpTokens: BN;
|
|
8
|
+
minLpTokens?: BN;
|
|
9
|
+
maxBaseAmount?: BN;
|
|
10
|
+
};
|
|
11
|
+
export type SwapSimulation = {
|
|
12
|
+
expectedOut: BN;
|
|
13
|
+
newBaseReserves: BN;
|
|
14
|
+
newQuoteReserves: BN;
|
|
15
|
+
minExpectedOut?: BN;
|
|
16
|
+
};
|
|
17
|
+
export type RemoveLiquiditySimulation = {
|
|
18
|
+
expectedBaseOut: BN;
|
|
19
|
+
expectedQuoteOut: BN;
|
|
20
|
+
minBaseOut?: BN;
|
|
21
|
+
minQuoteOut?: BN;
|
|
22
|
+
};
|
|
23
|
+
export declare class AmmMath {
|
|
24
|
+
static getHumanPriceFromReserves: typeof V3AmmMath.getHumanPriceFromReserves;
|
|
25
|
+
static getAmmPriceFromReserves: typeof V3AmmMath.getAmmPriceFromReserves;
|
|
26
|
+
static getChainAmount: typeof V3AmmMath.getChainAmount;
|
|
27
|
+
static getHumanAmount: typeof V3AmmMath.getHumanAmount;
|
|
28
|
+
static getAmmPrice: typeof V3AmmMath.getAmmPrice;
|
|
29
|
+
static getAmmPrices: typeof V3AmmMath.getAmmPrices;
|
|
30
|
+
static scale: typeof V3AmmMath.scale;
|
|
31
|
+
static addSlippage: typeof V3AmmMath.addSlippage;
|
|
32
|
+
static subtractSlippage: typeof V3AmmMath.subtractSlippage;
|
|
33
|
+
static simulateAddLiquidity: typeof V3AmmMath.simulateAddLiquidity;
|
|
34
|
+
static simulateRemoveLiquidity: typeof V3AmmMath.simulateRemoveLiquidity;
|
|
35
|
+
static getHumanPrice(ammPrice: BN, baseDecimals: number, quoteDecimals: number): number;
|
|
36
|
+
static getTwap(amm: Amm): BN;
|
|
37
|
+
static simulateSwapInner(inputAmount: BN, inputReserves: BN, outputReserves: BN): BN;
|
|
38
|
+
}
|
|
39
|
+
export { AmmMath as PriceMath };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
import { AmmMath as V3AmmMath } from "../../v0.3/utils/ammMath.js";
|
|
3
|
+
const BN_TEN = new BN(10);
|
|
4
|
+
const PRICE_SCALE = BN_TEN.pow(new BN(12));
|
|
5
|
+
const PRICE_SCALE_NUMBER = 1e12;
|
|
6
|
+
export class AmmMath {
|
|
7
|
+
// Re-export common methods from v0.3
|
|
8
|
+
static getHumanPriceFromReserves = V3AmmMath.getHumanPriceFromReserves;
|
|
9
|
+
static getAmmPriceFromReserves = V3AmmMath.getAmmPriceFromReserves;
|
|
10
|
+
static getChainAmount = V3AmmMath.getChainAmount;
|
|
11
|
+
static getHumanAmount = V3AmmMath.getHumanAmount;
|
|
12
|
+
static getAmmPrice = V3AmmMath.getAmmPrice;
|
|
13
|
+
static getAmmPrices = V3AmmMath.getAmmPrices;
|
|
14
|
+
static scale = V3AmmMath.scale;
|
|
15
|
+
static addSlippage = V3AmmMath.addSlippage;
|
|
16
|
+
static subtractSlippage = V3AmmMath.subtractSlippage;
|
|
17
|
+
static simulateAddLiquidity = V3AmmMath.simulateAddLiquidity;
|
|
18
|
+
static simulateRemoveLiquidity = V3AmmMath.simulateRemoveLiquidity;
|
|
19
|
+
static getHumanPrice(ammPrice, baseDecimals, quoteDecimals) {
|
|
20
|
+
const decimalScalar = BN_TEN.pow(new BN(quoteDecimals - baseDecimals).abs());
|
|
21
|
+
const price1e12 = quoteDecimals > baseDecimals
|
|
22
|
+
? ammPrice.div(decimalScalar)
|
|
23
|
+
: ammPrice.mul(decimalScalar);
|
|
24
|
+
// in case the BN is too large to cast to number, we try
|
|
25
|
+
try {
|
|
26
|
+
return price1e12.toNumber() / 1e12;
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
// BN tried to cast into number larger than 53 bits so we we do division via BN methods first, then cast to number(so it is smaller before the cast)
|
|
30
|
+
return price1e12.div(new BN(1e12)).toNumber();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
static getTwap(amm) {
|
|
34
|
+
return amm.oracle.aggregator.div(amm.oracle.lastUpdatedSlot.sub(amm.createdAtSlot));
|
|
35
|
+
}
|
|
36
|
+
static simulateSwapInner(inputAmount, inputReserves, outputReserves) {
|
|
37
|
+
if (inputReserves.eqn(0) || outputReserves.eqn(0)) {
|
|
38
|
+
throw new Error("reserves must be non-zero");
|
|
39
|
+
}
|
|
40
|
+
let inputAmountWithFee = inputAmount.muln(990);
|
|
41
|
+
let numerator = inputAmountWithFee.mul(outputReserves);
|
|
42
|
+
let denominator = inputReserves.muln(1000).add(inputAmountWithFee);
|
|
43
|
+
return numerator.div(denominator);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Add backwards compatibility alias
|
|
47
|
+
export { AmmMath as PriceMath };
|
|
48
|
+
//# sourceMappingURL=priceMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priceMath.js","sourceRoot":"","sources":["../../../src/v0.6/utils/priceMath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAwBhC,MAAM,OAAO,OAAO;IAClB,qCAAqC;IAC9B,MAAM,CAAC,yBAAyB,GAAG,SAAS,CAAC,yBAAyB,CAAC;IACvE,MAAM,CAAC,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC;IACnE,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;IACjD,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;IACjD,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC3C,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IAC7C,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC/B,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC3C,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;IACrD,MAAM,CAAC,oBAAoB,GAAG,SAAS,CAAC,oBAAoB,CAAC;IAC7D,MAAM,CAAC,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC;IAEnE,MAAM,CAAC,aAAa,CACzB,QAAY,EACZ,YAAoB,EACpB,aAAqB;QAErB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAC9B,IAAI,EAAE,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,CAC3C,CAAC;QACF,MAAM,SAAS,GACb,aAAa,GAAG,YAAY;YAC1B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElC,wDAAwD;QACxD,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,oJAAoJ;YACpJ,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,GAAQ;QAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAC9B,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAClD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAC7B,WAAe,EACf,aAAiB,EACjB,cAAkB;QAElB,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,kBAAkB,GAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,SAAS,GAAO,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,WAAW,GAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEvE,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;;AA4GH,oCAAoC;AACpC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metadaoproject/futarchy",
|
|
3
|
-
"version": "0.6.0-alpha.
|
|
3
|
+
"version": "0.6.0-alpha.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -13,12 +13,13 @@
|
|
|
13
13
|
".": "./dist/index.js",
|
|
14
14
|
"./v0.3": "./dist/v0.3/index.js",
|
|
15
15
|
"./v0.4": "./dist/v0.4/index.js",
|
|
16
|
-
"./v0.5": "./dist/v0.5/index.js"
|
|
16
|
+
"./v0.5": "./dist/v0.5/index.js",
|
|
17
|
+
"./v0.6": "./dist/v0.6/index.js"
|
|
17
18
|
},
|
|
18
19
|
"scripts": {
|
|
19
20
|
"lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w",
|
|
20
21
|
"lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check",
|
|
21
|
-
"build": "rm -rf ./dist && cp ../target/types/* ./src/v0.
|
|
22
|
+
"build": "rm -rf ./dist && cp ../target/types/* ./src/v0.6/types && yarn lint:fix && yarn tsc"
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
25
|
"@coral-xyz/anchor": "^0.29.0",
|