@coffer_so/sdk 1.0.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/LICENSE +21 -0
- package/README.md +283 -0
- package/dist/clients/AdminClient.d.ts +194 -0
- package/dist/clients/AdminClient.d.ts.map +1 -0
- package/dist/clients/AdminClient.js +482 -0
- package/dist/clients/AdminClient.js.map +1 -0
- package/dist/clients/CofferBackendClient.d.ts +877 -0
- package/dist/clients/CofferBackendClient.d.ts.map +1 -0
- package/dist/clients/CofferBackendClient.js +536 -0
- package/dist/clients/CofferBackendClient.js.map +1 -0
- package/dist/clients/CubeBackendClient.d.ts +877 -0
- package/dist/clients/CubeBackendClient.d.ts.map +1 -0
- package/dist/clients/CubeBackendClient.js +536 -0
- package/dist/clients/CubeBackendClient.js.map +1 -0
- package/dist/clients/CubicPoolClient.d.ts +120 -0
- package/dist/clients/CubicPoolClient.d.ts.map +1 -0
- package/dist/clients/CubicPoolClient.js +687 -0
- package/dist/clients/CubicPoolClient.js.map +1 -0
- package/dist/clients/PoolFactoryClient.d.ts +53 -0
- package/dist/clients/PoolFactoryClient.d.ts.map +1 -0
- package/dist/clients/PoolFactoryClient.js +91 -0
- package/dist/clients/PoolFactoryClient.js.map +1 -0
- package/dist/clients/RpcClient.d.ts +49 -0
- package/dist/clients/RpcClient.d.ts.map +1 -0
- package/dist/clients/RpcClient.js +135 -0
- package/dist/clients/RpcClient.js.map +1 -0
- package/dist/clients/SingleTokenDepositClient.d.ts +67 -0
- package/dist/clients/SingleTokenDepositClient.d.ts.map +1 -0
- package/dist/clients/SingleTokenDepositClient.js +105 -0
- package/dist/clients/SingleTokenDepositClient.js.map +1 -0
- package/dist/clients/contract-instructions.d.ts +24 -0
- package/dist/clients/contract-instructions.d.ts.map +1 -0
- package/dist/clients/contract-instructions.js +130 -0
- package/dist/clients/contract-instructions.js.map +1 -0
- package/dist/clients/index.d.ts +10 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +26 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/quote-math.d.ts +15 -0
- package/dist/clients/quote-math.d.ts.map +1 -0
- package/dist/clients/quote-math.js +98 -0
- package/dist/clients/quote-math.js.map +1 -0
- package/dist/clients/tx-builders.d.ts +231 -0
- package/dist/clients/tx-builders.d.ts.map +1 -0
- package/dist/clients/tx-builders.js +861 -0
- package/dist/clients/tx-builders.js.map +1 -0
- package/dist/clients/versioned.d.ts +34 -0
- package/dist/clients/versioned.d.ts.map +1 -0
- package/dist/clients/versioned.js +55 -0
- package/dist/clients/versioned.js.map +1 -0
- package/dist/config/index.d.ts +65 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +75 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/networks.d.ts +12 -0
- package/dist/config/networks.d.ts.map +1 -0
- package/dist/config/networks.js +51 -0
- package/dist/config/networks.js.map +1 -0
- package/dist/config/tokens.d.ts +19 -0
- package/dist/config/tokens.d.ts.map +1 -0
- package/dist/config/tokens.js +43 -0
- package/dist/config/tokens.js.map +1 -0
- package/dist/idl/cubic_pool.json +4203 -0
- package/dist/idl/index.d.ts +1769 -0
- package/dist/idl/index.d.ts.map +1 -0
- package/dist/idl/index.js +18 -0
- package/dist/idl/index.js.map +1 -0
- package/dist/idl/protocol_admin.json +2615 -0
- package/dist/idl/single_token_liquidity.json +1121 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/math/cubicMath.d.ts +40 -0
- package/dist/math/cubicMath.d.ts.map +1 -0
- package/dist/math/cubicMath.js +82 -0
- package/dist/math/cubicMath.js.map +1 -0
- package/dist/math/fixedPoint.d.ts +19 -0
- package/dist/math/fixedPoint.d.ts.map +1 -0
- package/dist/math/fixedPoint.js +86 -0
- package/dist/math/fixedPoint.js.map +1 -0
- package/dist/math/index.d.ts +9 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/math/index.js +30 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/logExp.d.ts +6 -0
- package/dist/math/logExp.d.ts.map +1 -0
- package/dist/math/logExp.js +68 -0
- package/dist/math/logExp.js.map +1 -0
- package/dist/math/lpLoss.d.ts +44 -0
- package/dist/math/lpLoss.d.ts.map +1 -0
- package/dist/math/lpLoss.js +103 -0
- package/dist/math/lpLoss.js.map +1 -0
- package/dist/math/maxSelloff.d.ts +164 -0
- package/dist/math/maxSelloff.d.ts.map +1 -0
- package/dist/math/maxSelloff.js +397 -0
- package/dist/math/maxSelloff.js.map +1 -0
- package/dist/math/singleToken.d.ts +54 -0
- package/dist/math/singleToken.d.ts.map +1 -0
- package/dist/math/singleToken.js +188 -0
- package/dist/math/singleToken.js.map +1 -0
- package/dist/math/slippage.d.ts +13 -0
- package/dist/math/slippage.d.ts.map +1 -0
- package/dist/math/slippage.js +44 -0
- package/dist/math/slippage.js.map +1 -0
- package/dist/math/surgeFee.d.ts +24 -0
- package/dist/math/surgeFee.d.ts.map +1 -0
- package/dist/math/surgeFee.js +85 -0
- package/dist/math/surgeFee.js.map +1 -0
- package/dist/math/weightedMath.d.ts +20 -0
- package/dist/math/weightedMath.d.ts.map +1 -0
- package/dist/math/weightedMath.js +66 -0
- package/dist/math/weightedMath.js.map +1 -0
- package/dist/parsers/borsh.d.ts +28 -0
- package/dist/parsers/borsh.d.ts.map +1 -0
- package/dist/parsers/borsh.js +104 -0
- package/dist/parsers/borsh.js.map +1 -0
- package/dist/parsers/contracts.d.ts +26 -0
- package/dist/parsers/contracts.d.ts.map +1 -0
- package/dist/parsers/contracts.js +62 -0
- package/dist/parsers/contracts.js.map +1 -0
- package/dist/parsers/events.d.ts +3 -0
- package/dist/parsers/events.d.ts.map +1 -0
- package/dist/parsers/events.js +281 -0
- package/dist/parsers/events.js.map +1 -0
- package/dist/parsers/index.d.ts +6 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +22 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/mintAccount.d.ts +24 -0
- package/dist/parsers/mintAccount.d.ts.map +1 -0
- package/dist/parsers/mintAccount.js +27 -0
- package/dist/parsers/mintAccount.js.map +1 -0
- package/dist/parsers/poolAccount.d.ts +141 -0
- package/dist/parsers/poolAccount.d.ts.map +1 -0
- package/dist/parsers/poolAccount.js +224 -0
- package/dist/parsers/poolAccount.js.map +1 -0
- package/dist/types/contracts.d.ts +1340 -0
- package/dist/types/contracts.d.ts.map +1 -0
- package/dist/types/contracts.js +3 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/events.d.ts +172 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +3 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +22 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pool.d.ts +149 -0
- package/dist/types/pool.d.ts.map +1 -0
- package/dist/types/pool.js +3 -0
- package/dist/types/pool.js.map +1 -0
- package/dist/types/result.d.ts +24 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +11 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/tx.d.ts +261 -0
- package/dist/types/tx.d.ts.map +1 -0
- package/dist/types/tx.js +3 -0
- package/dist/types/tx.js.map +1 -0
- package/dist/utils/errors.d.ts +44 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +192 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/extensions.d.ts +98 -0
- package/dist/utils/extensions.d.ts.map +1 -0
- package/dist/utils/extensions.js +187 -0
- package/dist/utils/extensions.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/pda.d.ts +8 -0
- package/dist/utils/pda.d.ts.map +1 -0
- package/dist/utils/pda.js +27 -0
- package/dist/utils/pda.js.map +1 -0
- package/dist/utils/retry.d.ts +22 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +62 -0
- package/dist/utils/retry.js.map +1 -0
- package/package.json +54 -0
- package/src/clients/AdminClient.ts +608 -0
- package/src/clients/CofferBackendClient.ts +1413 -0
- package/src/clients/CubicPoolClient.ts +719 -0
- package/src/clients/PoolFactoryClient.ts +110 -0
- package/src/clients/RpcClient.ts +195 -0
- package/src/clients/SingleTokenDepositClient.ts +143 -0
- package/src/clients/contract-instructions.ts +115 -0
- package/src/clients/index.ts +9 -0
- package/src/clients/quote-math.ts +81 -0
- package/src/clients/tx-builders.ts +1096 -0
- package/src/clients/versioned.ts +80 -0
- package/src/config/index.ts +111 -0
- package/src/config/networks.ts +71 -0
- package/src/config/tokens.ts +52 -0
- package/src/idl/cubic_pool.json +4203 -0
- package/src/idl/index.ts +13 -0
- package/src/idl/protocol_admin.json +2615 -0
- package/src/idl/single_token_liquidity.json +1121 -0
- package/src/index.ts +262 -0
- package/src/math/cubicMath.ts +92 -0
- package/src/math/fixedPoint.ts +71 -0
- package/src/math/index.ts +13 -0
- package/src/math/logExp.ts +61 -0
- package/src/math/lpLoss.ts +160 -0
- package/src/math/maxSelloff.ts +564 -0
- package/src/math/singleToken.ts +251 -0
- package/src/math/slippage.ts +38 -0
- package/src/math/surgeFee.ts +101 -0
- package/src/math/weightedMath.ts +64 -0
- package/src/parsers/borsh.ts +106 -0
- package/src/parsers/contracts.ts +64 -0
- package/src/parsers/events.ts +275 -0
- package/src/parsers/index.ts +5 -0
- package/src/parsers/mintAccount.ts +44 -0
- package/src/parsers/poolAccount.ts +372 -0
- package/src/types/contracts.ts +238 -0
- package/src/types/events.ts +198 -0
- package/src/types/index.ts +5 -0
- package/src/types/pool.ts +147 -0
- package/src/types/result.ts +51 -0
- package/src/types/tx.ts +278 -0
- package/src/utils/errors.ts +210 -0
- package/src/utils/extensions.ts +196 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/pda.ts +58 -0
- package/src/utils/retry.ts +85 -0
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminClient = exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID = void 0;
|
|
4
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
7
|
+
const idl_1 = require("../idl");
|
|
8
|
+
const contract_instructions_1 = require("./contract-instructions");
|
|
9
|
+
const tx_builders_1 = require("./tx-builders");
|
|
10
|
+
const pda_1 = require("../utils/pda");
|
|
11
|
+
/** Upstream BPF upgradeable loader; ProgramData PDA = findPda([programId]). */
|
|
12
|
+
exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID = new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");
|
|
13
|
+
/**
|
|
14
|
+
* AdminClient — wraps `protocol_admin` with treasury-routed admin
|
|
15
|
+
* operations.
|
|
16
|
+
*
|
|
17
|
+
* The cubic_pool program enforces that every admin instruction must be
|
|
18
|
+
* signed by the Treasury PDA (`seeds = [b"treasury"]`, owned by
|
|
19
|
+
* protocol_admin). This client builds the canonical flow:
|
|
20
|
+
*
|
|
21
|
+
* admin wallet
|
|
22
|
+
* → protocol_admin.<wrapper> (treasury.admin == signer)
|
|
23
|
+
* → CPI cubic_pool.<admin_ix> (signer == TREASURY_PDA)
|
|
24
|
+
*
|
|
25
|
+
* Direct calls into cubic_pool admin instructions will fail on-chain.
|
|
26
|
+
*
|
|
27
|
+
* Instruction methods return a `TransactionInstruction` (or a Promise of it). Compose into a tx
|
|
28
|
+
* with `@solana/web3.js` and sign with the admin wallet.
|
|
29
|
+
*
|
|
30
|
+
* The deployed audit-fixes-excluded-SF contract allows the supervisor to
|
|
31
|
+
* freeze AND unfreeze pools and to deactivate AND reactivate tokens. Other
|
|
32
|
+
* administrative operations require treasury.admin. This is not a freeze-only
|
|
33
|
+
* supervisor model.
|
|
34
|
+
|
|
35
|
+
*/
|
|
36
|
+
class AdminClient {
|
|
37
|
+
constructor(opts) {
|
|
38
|
+
const { config, provider } = opts;
|
|
39
|
+
this.config = config;
|
|
40
|
+
const idl = JSON.parse(JSON.stringify(idl_1.PROTOCOL_ADMIN_IDL));
|
|
41
|
+
idl.address = config.programs.protocolAdmin.toString();
|
|
42
|
+
this.program = new anchor_1.Program(idl, provider);
|
|
43
|
+
this.cubicPoolProgramId = config.programs.cubicPool;
|
|
44
|
+
this.stldProgramId = config.programs.singleTokenLiquidity;
|
|
45
|
+
[this.treasuryPda] = (0, pda_1.deriveTreasuryPda)(config.programs.protocolAdmin);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* ProgramData PDA of the protocol-admin program itself, under the
|
|
49
|
+
* upgradeable BPF loader. `initialize` is gated on it (audit L-5): only
|
|
50
|
+
* the key that can upgrade the program may bootstrap its Treasury.
|
|
51
|
+
*/
|
|
52
|
+
programDataPda() {
|
|
53
|
+
const [programData] = web3_js_1.PublicKey.findProgramAddressSync([this.program.programId.toBuffer()], exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID);
|
|
54
|
+
return programData;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Idempotent treasury init. Returns true if a new treasury was created.
|
|
58
|
+
* `admin` becomes the initial `treasury.admin`.
|
|
59
|
+
*
|
|
60
|
+
* ⚠ v5.1 (audit L-5) added the `program_data` account: the signer must be
|
|
61
|
+
* the protocol-admin program's current upgrade authority, otherwise this
|
|
62
|
+
* reverts. `admin` may not be the all-zero pubkey (`InvalidAdmin`, 6009).
|
|
63
|
+
*/
|
|
64
|
+
async initializeTreasuryIfMissing(connection, admin, payer = admin) {
|
|
65
|
+
const info = await connection.getAccountInfo(this.treasuryPda);
|
|
66
|
+
if (info)
|
|
67
|
+
return false;
|
|
68
|
+
if (admin.equals(web3_js_1.PublicKey.default)) {
|
|
69
|
+
throw new Error("AdminClient: admin cannot be the default (all-zero) pubkey");
|
|
70
|
+
}
|
|
71
|
+
await this.program.methods
|
|
72
|
+
.initialize(admin)
|
|
73
|
+
.accounts({
|
|
74
|
+
treasury: this.treasuryPda,
|
|
75
|
+
payer,
|
|
76
|
+
programData: this.programDataPda(),
|
|
77
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
78
|
+
})
|
|
79
|
+
.rpc();
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
// ── Admin lifecycle ──────────────────────────────────────────────────────
|
|
83
|
+
initiateAdminTransferIx(admin, newAdmin) {
|
|
84
|
+
return this.program.methods
|
|
85
|
+
.initiateAdminTransfer(newAdmin)
|
|
86
|
+
.accounts({ treasury: this.treasuryPda, admin })
|
|
87
|
+
.instruction();
|
|
88
|
+
}
|
|
89
|
+
acceptAdminTransferIx(newAdmin) {
|
|
90
|
+
return this.program.methods
|
|
91
|
+
.acceptAdminTransfer()
|
|
92
|
+
.accounts({ treasury: this.treasuryPda, newAdmin })
|
|
93
|
+
.instruction();
|
|
94
|
+
}
|
|
95
|
+
cancelAdminTransferIx(admin) {
|
|
96
|
+
return this.program.methods
|
|
97
|
+
.cancelAdminTransfer()
|
|
98
|
+
.accounts({ treasury: this.treasuryPda, admin })
|
|
99
|
+
.instruction();
|
|
100
|
+
}
|
|
101
|
+
// ── Treasury vault management ────────────────────────────────────────────
|
|
102
|
+
registerTokenIx(admin, mint, tokenProgram = spl_token_1.TOKEN_PROGRAM_ID) {
|
|
103
|
+
if (!tokenProgram.equals(spl_token_1.TOKEN_PROGRAM_ID))
|
|
104
|
+
throw new Error("Treasury vaults only support classic SPL Token in this deployment");
|
|
105
|
+
const [vault] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("vault"), mint.toBuffer()], this.program.programId);
|
|
106
|
+
return this.program.methods
|
|
107
|
+
.registerToken()
|
|
108
|
+
.accounts({
|
|
109
|
+
treasury: this.treasuryPda,
|
|
110
|
+
mint,
|
|
111
|
+
vault,
|
|
112
|
+
admin,
|
|
113
|
+
tokenProgram,
|
|
114
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
115
|
+
})
|
|
116
|
+
.instruction();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Withdraw from a registered treasury vault.
|
|
120
|
+
*
|
|
121
|
+
* Treasury vaults use classic SPL Token in this deployed build. The mint
|
|
122
|
+
* argument derives the vault PDA; it is not an account in the instruction.
|
|
123
|
+
*/
|
|
124
|
+
withdrawIx(admin, mint, recipient, amount, tokenProgram = spl_token_1.TOKEN_PROGRAM_ID) {
|
|
125
|
+
if (!tokenProgram.equals(spl_token_1.TOKEN_PROGRAM_ID))
|
|
126
|
+
throw new Error("Treasury vaults only support classic SPL Token in this deployment");
|
|
127
|
+
const [vault] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("vault"), mint.toBuffer()], this.program.programId);
|
|
128
|
+
return this.program.methods
|
|
129
|
+
.withdraw(amount)
|
|
130
|
+
.accounts({
|
|
131
|
+
treasury: this.treasuryPda,
|
|
132
|
+
vault,
|
|
133
|
+
recipient,
|
|
134
|
+
admin,
|
|
135
|
+
tokenProgram,
|
|
136
|
+
})
|
|
137
|
+
.instruction();
|
|
138
|
+
}
|
|
139
|
+
// ── Program upgrade authority ────────────────────────────────────────────
|
|
140
|
+
/**
|
|
141
|
+
* Hand the upgrade authority for `program` to `newAuthority`.
|
|
142
|
+
*
|
|
143
|
+
* ⚠ v5.1 (audit M-3) removed the `new_authority` ARGUMENT and made it an
|
|
144
|
+
* ACCOUNT that must **co-sign**: the loader's `SetAuthorityChecked` is
|
|
145
|
+
* used so a mistyped destination cannot take the authority
|
|
146
|
+
* irrecoverably. The returned instruction therefore has two required
|
|
147
|
+
* signers — the current `admin` and `newAuthority`. Both must sign the
|
|
148
|
+
* transaction or it fails signature verification before it ever reaches
|
|
149
|
+
* the program.
|
|
150
|
+
*/
|
|
151
|
+
transferUpgradeAuthorityIx(admin, program, newAuthority) {
|
|
152
|
+
const [programdata] = web3_js_1.PublicKey.findProgramAddressSync([program.toBuffer()], exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID);
|
|
153
|
+
return this.program.methods
|
|
154
|
+
.transferUpgradeAuthority()
|
|
155
|
+
.accounts({
|
|
156
|
+
treasury: this.treasuryPda,
|
|
157
|
+
admin,
|
|
158
|
+
program,
|
|
159
|
+
programdata,
|
|
160
|
+
newAuthority,
|
|
161
|
+
bpfLoaderUpgradeable: exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID,
|
|
162
|
+
})
|
|
163
|
+
.instruction();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Make `program` permanently non-upgradeable.
|
|
167
|
+
*
|
|
168
|
+
* ⚠ v5.1 (audit M-3) dropped `new_authority_info` and added `program`:
|
|
169
|
+
* the account list is `[treasury, admin, program, programdata,
|
|
170
|
+
* bpf_loader_upgradeable]`. This is irreversible.
|
|
171
|
+
*/
|
|
172
|
+
freezePoolProgramIx(admin, program) {
|
|
173
|
+
const [programdata] = web3_js_1.PublicKey.findProgramAddressSync([program.toBuffer()], exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID);
|
|
174
|
+
return this.program.methods
|
|
175
|
+
.freezePoolProgram()
|
|
176
|
+
.accounts({
|
|
177
|
+
treasury: this.treasuryPda,
|
|
178
|
+
admin,
|
|
179
|
+
program,
|
|
180
|
+
programdata,
|
|
181
|
+
bpfLoaderUpgradeable: exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID,
|
|
182
|
+
})
|
|
183
|
+
.instruction();
|
|
184
|
+
}
|
|
185
|
+
// ── Pool config / pool admin (treasury-routed) ───────────────────────────
|
|
186
|
+
poolInitializeConfigIx(admin, config, defaultProtocolFeeRate) {
|
|
187
|
+
return this.program.methods
|
|
188
|
+
.poolInitializeConfig(defaultProtocolFeeRate)
|
|
189
|
+
.accounts({
|
|
190
|
+
treasury: this.treasuryPda,
|
|
191
|
+
admin,
|
|
192
|
+
config,
|
|
193
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
194
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
195
|
+
})
|
|
196
|
+
.instruction();
|
|
197
|
+
}
|
|
198
|
+
// setSwapFeeRate has been removed from the protocol-admin wrapper —
|
|
199
|
+
// it's a level-1 (pool-admin) instruction, signed directly by the
|
|
200
|
+
// wallet stored in `pool.pool_admin`. Use buildSetSwapFeeRateIx instead.
|
|
201
|
+
setProtocolFeeRateIx(admin, config, pool, protocolFeeRate) {
|
|
202
|
+
return this.program.methods
|
|
203
|
+
.poolSetProtocolFeeRate(protocolFeeRate)
|
|
204
|
+
.accounts({ ...this.poolAdminAccounts(admin, config, pool) })
|
|
205
|
+
.instruction();
|
|
206
|
+
}
|
|
207
|
+
setPoolEnabledIx(admin, config, pool, enabled) {
|
|
208
|
+
return this.program.methods
|
|
209
|
+
.poolSetPoolEnabled(enabled)
|
|
210
|
+
.accounts({ ...this.poolAdminAccounts(admin, config, pool) })
|
|
211
|
+
.instruction();
|
|
212
|
+
}
|
|
213
|
+
setSwapsEnabledIx(admin, config, pool, enabled) {
|
|
214
|
+
return this.program.methods
|
|
215
|
+
.poolSetSwapsEnabled(enabled)
|
|
216
|
+
.accounts({ ...this.poolAdminAccounts(admin, config, pool) })
|
|
217
|
+
.instruction();
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Update a config's Token-2022 extension policy.
|
|
221
|
+
*
|
|
222
|
+
* ⚠ v5.1 (audit H-5) added a second REQUIRED argument,
|
|
223
|
+
* `hardBannedExtensions`. Two distinct bitmaps:
|
|
224
|
+
*
|
|
225
|
+
* - `banned` — the config's default policy, inherited by new pools that
|
|
226
|
+
* do not pass their own override. A pool creator may override it in
|
|
227
|
+
* either direction.
|
|
228
|
+
* - `hardBanned` — the protocol floor. It is OR-ed into every pool's
|
|
229
|
+
* effective bitmap at creation and a creator override can never clear
|
|
230
|
+
* it. This is what keeps `PermanentDelegate` / `TransferHook` mints out
|
|
231
|
+
* of vault custody regardless of what a pool creator chooses.
|
|
232
|
+
*
|
|
233
|
+
* Loosening `hardBanned` is a protocol-wide safety decision, not a
|
|
234
|
+
* routine config tweak.
|
|
235
|
+
*/
|
|
236
|
+
setBannedExtensionsIx(admin, config, banned, hardBanned) {
|
|
237
|
+
if (hardBanned === undefined) {
|
|
238
|
+
throw new Error("AdminClient.setBannedExtensionsIx: hardBanned is required as of v5.1. " +
|
|
239
|
+
"Pass the config's current hard_banned_extensions to leave the floor unchanged.");
|
|
240
|
+
}
|
|
241
|
+
return this.program.methods
|
|
242
|
+
.poolSetBannedExtensions(banned, hardBanned)
|
|
243
|
+
.accounts({
|
|
244
|
+
treasury: this.treasuryPda,
|
|
245
|
+
admin,
|
|
246
|
+
config,
|
|
247
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
248
|
+
})
|
|
249
|
+
.instruction();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Migrate a pool account from the v4 storage layout to v5.
|
|
253
|
+
*
|
|
254
|
+
* ⚠ v5.1 (audit H-7) added `reactivateTokens` and this instruction is no
|
|
255
|
+
* longer a no-op — it mutates pool state.
|
|
256
|
+
*
|
|
257
|
+
* @param reactivateTokens Pass `true` ONLY on the one-shot v4 → v5 pass.
|
|
258
|
+
* On any later call `true` silently re-opens every token that was
|
|
259
|
+
* deliberately disabled via `set_token_active`, undoing a circuit
|
|
260
|
+
* breaker. Default is `false` for that reason.
|
|
261
|
+
*/
|
|
262
|
+
migratePoolToV5Ix(admin, config, pool, reactivateTokens = false) {
|
|
263
|
+
return this.program.methods
|
|
264
|
+
.poolMigrateToV5(reactivateTokens)
|
|
265
|
+
.accounts({
|
|
266
|
+
treasury: this.treasuryPda,
|
|
267
|
+
admin,
|
|
268
|
+
pool,
|
|
269
|
+
config,
|
|
270
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
271
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
272
|
+
})
|
|
273
|
+
.instruction();
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Drain lamports from a single-token-liquidity helper PDA.
|
|
277
|
+
*
|
|
278
|
+
* ⚠ v5.1 (audit L-8 / SF-12) added the `pool` and `system_program`
|
|
279
|
+
* accounts. `pool` is not merely a seed source: the program checks it
|
|
280
|
+
* belongs to `config`, closing the hole where the admin of one config
|
|
281
|
+
* could drain a helper governed by another.
|
|
282
|
+
*/
|
|
283
|
+
stldWithdrawSolIx(admin, config, pool, source, recipient, amount) {
|
|
284
|
+
return this.program.methods
|
|
285
|
+
.stldWithdrawSol(amount)
|
|
286
|
+
.accounts({
|
|
287
|
+
treasury: this.treasuryPda,
|
|
288
|
+
admin,
|
|
289
|
+
config,
|
|
290
|
+
pool,
|
|
291
|
+
source,
|
|
292
|
+
recipient,
|
|
293
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
294
|
+
stldProgram: this.stldProgramId,
|
|
295
|
+
})
|
|
296
|
+
.instruction();
|
|
297
|
+
}
|
|
298
|
+
// ── Circuit breaker (admin OR supervisor) ────────────────────────────────
|
|
299
|
+
/**
|
|
300
|
+
* Batch-freeze pools. `pairs` are `[config, pool]` tuples passed via
|
|
301
|
+
* remaining_accounts.
|
|
302
|
+
*
|
|
303
|
+
* Authority: treasury.admin or treasury.supervisor. Both directions are
|
|
304
|
+
* permitted by the deployed audit-fixes-excluded-SF contract.
|
|
305
|
+
*/
|
|
306
|
+
freezePoolsIx(authority, pairs) {
|
|
307
|
+
return this.program.methods
|
|
308
|
+
.freezePools()
|
|
309
|
+
.accounts({
|
|
310
|
+
treasury: this.treasuryPda,
|
|
311
|
+
authority,
|
|
312
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
313
|
+
})
|
|
314
|
+
.remainingAccounts(this.configPoolRemaining(pairs, /* poolWritable */ true))
|
|
315
|
+
.instruction();
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Batch-unfreeze pools — mirror of {@link freezePoolsIx}.
|
|
319
|
+
*
|
|
320
|
+
* The deployed contract permits either treasury.admin or treasury.supervisor.
|
|
321
|
+
*/
|
|
322
|
+
unfreezePoolsIx(admin, pairs) {
|
|
323
|
+
return this.program.methods
|
|
324
|
+
.unfreezePools()
|
|
325
|
+
.accounts({
|
|
326
|
+
treasury: this.treasuryPda,
|
|
327
|
+
authority: admin,
|
|
328
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
329
|
+
})
|
|
330
|
+
.remainingAccounts(this.configPoolRemaining(pairs, /* poolWritable */ true))
|
|
331
|
+
.instruction();
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Flip a token's input kill switch on a pool.
|
|
335
|
+
*
|
|
336
|
+
* Both admin and supervisor may set either value in the deployed build.
|
|
337
|
+
*/
|
|
338
|
+
setTokenActiveIx(authority, config, pool, tokenIndex, isActive) {
|
|
339
|
+
return this.program.methods
|
|
340
|
+
.poolSetTokenActive(tokenIndex, isActive)
|
|
341
|
+
.accounts({
|
|
342
|
+
treasury: this.treasuryPda,
|
|
343
|
+
authority,
|
|
344
|
+
config,
|
|
345
|
+
pool,
|
|
346
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
347
|
+
})
|
|
348
|
+
.instruction();
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Set or revoke the supervisor pubkey. Admin only. Pass
|
|
352
|
+
* `PublicKey.default` to revoke.
|
|
353
|
+
*
|
|
354
|
+
* The supervisor may freeze/unfreeze pools and set token activity in either
|
|
355
|
+
* direction. Setting or revoking a supervisor remains admin-only.
|
|
356
|
+
*/
|
|
357
|
+
setSupervisorIx(admin, newSupervisor) {
|
|
358
|
+
return this.program.methods
|
|
359
|
+
.setSupervisor(newSupervisor)
|
|
360
|
+
.accounts({
|
|
361
|
+
treasury: this.treasuryPda,
|
|
362
|
+
admin,
|
|
363
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
364
|
+
})
|
|
365
|
+
.instruction();
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Collects protocol fees from a pool to the supplied recipient ATAs.
|
|
369
|
+
*
|
|
370
|
+
* `vaults` / `recipients` / `tokenPrograms` must be aligned with
|
|
371
|
+
* `pool.token_mints` (one entry per token in pool order).
|
|
372
|
+
*/
|
|
373
|
+
collectProtocolFeesIx(admin, config, pool, vaults, recipients, tokenPrograms = vaults.map(() => spl_token_1.TOKEN_PROGRAM_ID)) {
|
|
374
|
+
const remaining = this.tripleRemaining(vaults, recipients, tokenPrograms);
|
|
375
|
+
return this.program.methods
|
|
376
|
+
.poolCollectProtocolFees()
|
|
377
|
+
.accounts({ ...this.poolAdminAccounts(admin, config, pool) })
|
|
378
|
+
.remainingAccounts(remaining)
|
|
379
|
+
.instruction();
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Emergency drain. Pool must be paused first. `amounts.length` must equal
|
|
383
|
+
* the pool's token_count; pass 0 to skip a token.
|
|
384
|
+
*/
|
|
385
|
+
debugWithdrawLiquidityIx(admin, config, pool, amounts, vaults, recipients, tokenPrograms = vaults.map(() => spl_token_1.TOKEN_PROGRAM_ID)) {
|
|
386
|
+
const remaining = this.tripleRemaining(vaults, recipients, tokenPrograms);
|
|
387
|
+
return this.program.methods
|
|
388
|
+
.poolDebugWithdrawLiquidity(amounts)
|
|
389
|
+
.accounts({ ...this.poolAdminAccounts(admin, config, pool) })
|
|
390
|
+
.remainingAccounts(remaining)
|
|
391
|
+
.instruction();
|
|
392
|
+
}
|
|
393
|
+
/** Build Treasury initialization without sending. Payer must be the current
|
|
394
|
+
* protocol-admin upgrade authority; the assigned admin may be a different key.
|
|
395
|
+
*/
|
|
396
|
+
initializeTreasuryIx(payer, admin) {
|
|
397
|
+
if (admin.equals(web3_js_1.PublicKey.default))
|
|
398
|
+
throw new Error("Admin cannot be the default pubkey");
|
|
399
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "initialize", { admin }, {
|
|
400
|
+
treasury: this.treasuryPda, payer, program_data: this.programDataPda(), system_program: web3_js_1.SystemProgram.programId,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
upgradePoolProgramIx(admin, program, buffer, spill) {
|
|
404
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "upgrade_pool_program", {}, {
|
|
405
|
+
treasury: this.treasuryPda, admin, programdata: this.deriveProgramData(program),
|
|
406
|
+
program_to_upgrade: program, buffer, spill, rent: web3_js_1.SYSVAR_RENT_PUBKEY,
|
|
407
|
+
clock: web3_js_1.SYSVAR_CLOCK_PUBKEY, bpf_loader_upgradeable: exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID,
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
/** Closing a program disables it and returns its storage balance. */
|
|
411
|
+
closePoolProgramIx(admin, program, recipient) {
|
|
412
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "close_pool_program", {}, {
|
|
413
|
+
treasury: this.treasuryPda, admin, programdata: this.deriveProgramData(program),
|
|
414
|
+
program_to_close: program, recipient, bpf_loader_upgradeable: exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
withdrawSolIx(admin, recipient, amount) {
|
|
418
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "withdraw_sol", { amount }, { treasury: this.treasuryPda, admin, recipient });
|
|
419
|
+
}
|
|
420
|
+
poolWithdrawSolIx(admin, config, source, recipient, amount) {
|
|
421
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "pool_withdraw_sol", { amount }, {
|
|
422
|
+
treasury: this.treasuryPda, admin, config, source, recipient, cubic_pool_program: this.cubicPoolProgramId,
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
poolInitializeAltIx(admin, config, pool, recentSlot) {
|
|
426
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "pool_initialize_alt", { recent_slot: recentSlot }, {
|
|
427
|
+
treasury: this.treasuryPda, admin, pool, config,
|
|
428
|
+
lookup_table: (0, tx_builders_1.deriveAltAddress)(this.treasuryPda, recentSlot), system_program: web3_js_1.SystemProgram.programId,
|
|
429
|
+
alt_program: web3_js_1.AddressLookupTableProgram.programId, cubic_pool_program: this.cubicPoolProgramId,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
poolInitiateProtocolAdminTransferIx(admin, config, newAdmin) {
|
|
433
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "pool_initiate_protocol_admin_transfer", { new_admin: newAdmin }, {
|
|
434
|
+
treasury: this.treasuryPda, admin, config, cubic_pool_program: this.cubicPoolProgramId,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
poolAcceptProtocolAdminTransferIx(admin, config) {
|
|
438
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "pool_accept_protocol_admin_transfer", {}, {
|
|
439
|
+
treasury: this.treasuryPda, admin, config, cubic_pool_program: this.cubicPoolProgramId,
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
poolCancelProtocolAdminTransferIx(admin, config) {
|
|
443
|
+
return (0, contract_instructions_1.buildContractInstruction)(this.config, "protocolAdmin", "pool_cancel_protocol_admin_transfer", {}, {
|
|
444
|
+
treasury: this.treasuryPda, admin, config, cubic_pool_program: this.cubicPoolProgramId,
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
deriveProgramData(program) {
|
|
448
|
+
return web3_js_1.PublicKey.findProgramAddressSync([program.toBuffer()], exports.BPF_LOADER_UPGRADEABLE_PROGRAM_ID)[0];
|
|
449
|
+
}
|
|
450
|
+
// ── Internals ────────────────────────────────────────────────────────────
|
|
451
|
+
poolAdminAccounts(admin, config, pool) {
|
|
452
|
+
return {
|
|
453
|
+
treasury: this.treasuryPda,
|
|
454
|
+
admin,
|
|
455
|
+
config,
|
|
456
|
+
pool,
|
|
457
|
+
cubicPoolProgram: this.cubicPoolProgramId,
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
configPoolRemaining(pairs, poolWritable) {
|
|
461
|
+
const acc = [];
|
|
462
|
+
for (const { config, pool } of pairs) {
|
|
463
|
+
acc.push({ pubkey: config, isSigner: false, isWritable: false });
|
|
464
|
+
acc.push({ pubkey: pool, isSigner: false, isWritable: poolWritable });
|
|
465
|
+
}
|
|
466
|
+
return acc;
|
|
467
|
+
}
|
|
468
|
+
tripleRemaining(vaults, recipients, tokenPrograms) {
|
|
469
|
+
if (vaults.length !== recipients.length || vaults.length !== tokenPrograms.length) {
|
|
470
|
+
throw new Error("AdminClient: vaults/recipients/tokenPrograms must be the same length");
|
|
471
|
+
}
|
|
472
|
+
const acc = [];
|
|
473
|
+
for (let i = 0; i < vaults.length; i++) {
|
|
474
|
+
acc.push({ pubkey: vaults[i], isSigner: false, isWritable: true });
|
|
475
|
+
acc.push({ pubkey: recipients[i], isSigner: false, isWritable: true });
|
|
476
|
+
acc.push({ pubkey: tokenPrograms[i], isSigner: false, isWritable: false });
|
|
477
|
+
}
|
|
478
|
+
return acc;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
exports.AdminClient = AdminClient;
|
|
482
|
+
//# sourceMappingURL=AdminClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminClient.js","sourceRoot":"","sources":["../../src/clients/AdminClient.ts"],"names":[],"mappings":";;;AACA,8CAA4C;AAC5C,6CAQyB;AACzB,iDAAqD;AAGrD,gCAA4C;AAC5C,mEAAmE;AACnE,+CAAiD;AACjD,sCAAiD;AAEjD,+EAA+E;AAClE,QAAA,iCAAiC,GAAG,IAAI,mBAAS,CAC5D,6CAA6C,CAC9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,WAAW;IAOtB,YAAY,IAA+D;QACzE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAkB,CAAC,CAAQ,CAAC;QAClE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAO,CAAC,GAAG,EAAE,QAAQ,CAAQ,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC1D,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAA,uBAAiB,EAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,MAAM,CAAC,WAAW,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CACpD,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EACnC,yCAAiC,CAClC,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,2BAA2B,CAAC,UAAsB,EAAE,KAAgB,EAAE,QAAmB,KAAK;QAClG,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,MAAO,IAAI,CAAC,OAAO,CAAC,OAAe;aAChC,UAAU,CAAC,KAAK,CAAC;aACjB,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;YAClC,aAAa,EAAE,uBAAa,CAAC,SAAS;SACvC,CAAC;aACD,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IAE5E,uBAAuB,CAAC,KAAgB,EAAE,QAAmB;QAC3D,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,qBAAqB,CAAC,QAAQ,CAAC;aAC/B,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;aAC/C,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,qBAAqB,CAAC,QAAmB;QACvC,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,mBAAmB,EAAE;aACrB,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;aAClD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,qBAAqB,CAAC,KAAgB;QACpC,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,mBAAmB,EAAE;aACrB,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;aAC/C,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,4EAA4E;IAE5E,eAAe,CAAC,KAAgB,EAAE,IAAe,EAAE,YAAY,GAAG,4BAAgB;QAChF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,4BAAgB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACjI,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EACvC,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;QACF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,aAAa,EAAE;aACf,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI;YACJ,KAAK;YACL,KAAK;YACL,YAAY;YACZ,aAAa,EAAE,uBAAa,CAAC,SAAS;SACvC,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CACR,KAAgB,EAChB,IAAe,EACf,SAAoB,EACpB,MAAU,EACV,YAAY,GAAG,4BAAgB;QAE/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,4BAAgB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACjI,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EACvC,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;QACF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,QAAQ,CAAC,MAAM,CAAC;aAChB,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,SAAS;YACT,KAAK;YACL,YAAY;SACb,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,4EAA4E;IAE5E;;;;;;;;;;OAUG;IACH,0BAA0B,CACxB,KAAgB,EAChB,OAAkB,EAClB,YAAuB;QAEvB,MAAM,CAAC,WAAW,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CACpD,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EACpB,yCAAiC,CAClC,CAAC;QACF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,wBAAwB,EAAE;aAC1B,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,OAAO;YACP,WAAW;YACX,YAAY;YACZ,oBAAoB,EAAE,yCAAiC;SACxD,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAgB,EAAE,OAAkB;QACtD,MAAM,CAAC,WAAW,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CACpD,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EACpB,yCAAiC,CAClC,CAAC;QACF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,iBAAiB,EAAE;aACnB,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,OAAO;YACP,WAAW;YACX,oBAAoB,EAAE,yCAAiC;SACxD,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,4EAA4E;IAE5E,sBAAsB,CAAC,KAAgB,EAAE,MAAiB,EAAE,sBAA8B;QACxF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,oBAAoB,CAAC,sBAAsB,CAAC;aAC5C,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,MAAM;YACN,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;YACzC,aAAa,EAAE,uBAAa,CAAC,SAAS;SACvC,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,oEAAoE;IACpE,kEAAkE;IAClE,yEAAyE;IAEzE,oBAAoB,CAAC,KAAgB,EAAE,MAAiB,EAAE,IAAe,EAAE,eAAuB;QAChG,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,sBAAsB,CAAC,eAAe,CAAC;aACvC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC5D,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,gBAAgB,CAAC,KAAgB,EAAE,MAAiB,EAAE,IAAe,EAAE,OAAgB;QACrF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,kBAAkB,CAAC,OAAO,CAAC;aAC3B,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC5D,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,iBAAiB,CAAC,KAAgB,EAAE,MAAiB,EAAE,IAAe,EAAE,OAAgB;QACtF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,mBAAmB,CAAC,OAAO,CAAC;aAC5B,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC5D,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CACnB,KAAgB,EAChB,MAAiB,EACjB,MAAU,EACV,UAAc;QAEd,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,wEAAwE;gBACtE,gFAAgF,CACnF,CAAC;QACJ,CAAC;QACD,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC;aAC3C,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,MAAM;YACN,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;SAC1C,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;;;;;OAUG;IACH,iBAAiB,CACf,KAAgB,EAChB,MAAiB,EACjB,IAAe,EACf,gBAAgB,GAAG,KAAK;QAExB,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,eAAe,CAAC,gBAAgB,CAAC;aACjC,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,IAAI;YACJ,MAAM;YACN,aAAa,EAAE,uBAAa,CAAC,SAAS;YACtC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;SAC1C,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CACf,KAAgB,EAChB,MAAiB,EACjB,IAAe,EACf,MAAiB,EACjB,SAAoB,EACpB,MAAU;QAEV,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,eAAe,CAAC,MAAM,CAAC;aACvB,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,MAAM;YACN,IAAI;YACJ,MAAM;YACN,SAAS;YACT,aAAa,EAAE,uBAAa,CAAC,SAAS;YACtC,WAAW,EAAE,IAAI,CAAC,aAAa;SAChC,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED,4EAA4E;IAE5E;;;;;;OAMG;IACH,aAAa,CAAC,SAAoB,EAAE,KAAoD;QACtF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,WAAW,EAAE;aACb,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,SAAS;YACT,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;SAC1C,CAAC;aACD,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;aAC3E,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAgB,EAAE,KAAoD;QACpF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,aAAa,EAAE;aACf,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;SAC1C,CAAC;aACD,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;aAC3E,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CACd,SAAoB,EACpB,MAAiB,EACjB,IAAe,EACf,UAAkB,EAClB,QAAiB;QAEjB,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC;aACxC,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,SAAS;YACT,MAAM;YACN,IAAI;YACJ,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;SAC1C,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,KAAgB,EAAE,aAAwB;QACxD,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,aAAa,CAAC,aAAa,CAAC;aAC5B,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,aAAa,EAAE,uBAAa,CAAC,SAAS;SACvC,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CACnB,KAAgB,EAChB,MAAiB,EACjB,IAAe,EACf,MAAmB,EACnB,UAAuB,EACvB,gBAA6B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,4BAAgB,CAAC;QAE/D,MAAM,SAAS,GAAkB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,uBAAuB,EAAE;aACzB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC5D,iBAAiB,CAAC,SAAS,CAAC;aAC5B,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,wBAAwB,CACtB,KAAgB,EAChB,MAAiB,EACjB,IAAe,EACf,OAAa,EACb,MAAmB,EACnB,UAAuB,EACvB,gBAA6B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,4BAAgB,CAAC;QAE/D,MAAM,SAAS,GAAkB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe;aACjC,0BAA0B,CAAC,OAAO,CAAC;aACnC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC5D,iBAAiB,CAAC,SAAS,CAAC;aAC5B,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,KAAgB,EAAE,KAAgB;QACrD,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAS,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3F,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE;YACrF,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,uBAAa,CAAC,SAAS;SAChH,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,KAAgB,EAAE,OAAkB,EAAE,MAAiB,EAAE,KAAgB;QAC5F,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,sBAAsB,EAAE,EAAE,EAAE;YACxF,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC/E,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,4BAAkB;YACpE,KAAK,EAAE,6BAAmB,EAAE,sBAAsB,EAAE,yCAAiC;SACtF,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,kBAAkB,CAAC,KAAgB,EAAE,OAAkB,EAAE,SAAoB;QAC3E,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,EAAE,EAAE;YACtF,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC/E,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,yCAAiC;SAChG,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB,EAAE,MAAU;QAC9D,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9I,CAAC;IAED,iBAAiB,CAAC,KAAgB,EAAE,MAAiB,EAAE,MAAiB,EAAE,SAAoB,EAAE,MAAU;QACxG,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,EAAE;YAC7F,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC1G,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,KAAgB,EAAE,MAAiB,EAAE,IAAe,EAAE,UAAc;QACtF,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;YAChH,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;YAC/C,YAAY,EAAE,IAAA,8BAAgB,EAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,cAAc,EAAE,uBAAa,CAAC,SAAS;YACrG,WAAW,EAAE,mCAAyB,CAAC,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC9F,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC,CAAC,KAAgB,EAAE,MAAiB,EAAE,QAAmB;QAC1F,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,uCAAuC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC9H,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SACvF,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC,CAAC,KAAgB,EAAE,MAAiB;QACnE,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,qCAAqC,EAAE,EAAE,EAAE;YACvG,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SACvF,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC,CAAC,KAAgB,EAAE,MAAiB;QACnE,OAAO,IAAA,gDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,qCAAqC,EAAE,EAAE,EAAE;YACvG,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SACvF,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,OAAkB;QAC1C,OAAO,mBAAS,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,yCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,4EAA4E;IAEpE,iBAAiB,CAAC,KAAgB,EAAE,MAAiB,EAAE,IAAe;QAC5E,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,KAAK;YACL,MAAM;YACN,IAAI;YACJ,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;SAC1C,CAAC;IACJ,CAAC;IAEO,mBAAmB,CACzB,KAAoD,EACpD,YAAqB;QAErB,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,eAAe,CACrB,MAAmB,EACnB,UAAuB,EACvB,aAA0B;QAE1B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAhjBD,kCAgjBC"}
|