@exponent-labs/kamino-reserve-deserializer 0.0.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/CHANGELOG.md +16 -0
- package/build/fraction.d.ts +23 -0
- package/build/fraction.js +61 -0
- package/build/fraction.js.map +1 -0
- package/build/index.d.ts +102 -0
- package/build/index.js +214 -0
- package/build/index.js.map +1 -0
- package/build/types/BigFractionBytes.d.ts +26 -0
- package/build/types/BigFractionBytes.js +72 -0
- package/build/types/BigFractionBytes.js.map +1 -0
- package/build/types/BorrowRateCurve.d.ts +27 -0
- package/build/types/BorrowRateCurve.js +63 -0
- package/build/types/BorrowRateCurve.js.map +1 -0
- package/build/types/CurvePoint.d.ts +25 -0
- package/build/types/CurvePoint.js +68 -0
- package/build/types/CurvePoint.js.map +1 -0
- package/build/types/LastUpdate.d.ts +46 -0
- package/build/types/LastUpdate.js +88 -0
- package/build/types/LastUpdate.js.map +1 -0
- package/build/types/PriceHeuristic.d.ts +40 -0
- package/build/types/PriceHeuristic.js +81 -0
- package/build/types/PriceHeuristic.js.map +1 -0
- package/build/types/PythConfiguration.d.ts +24 -0
- package/build/types/PythConfiguration.js +64 -0
- package/build/types/PythConfiguration.js.map +1 -0
- package/build/types/ReserveCollateral.d.ts +52 -0
- package/build/types/ReserveCollateral.js +101 -0
- package/build/types/ReserveCollateral.js.map +1 -0
- package/build/types/ReserveConfig.d.ts +366 -0
- package/build/types/ReserveConfig.js +307 -0
- package/build/types/ReserveConfig.js.map +1 -0
- package/build/types/ReserveFees.d.ts +77 -0
- package/build/types/ReserveFees.js +98 -0
- package/build/types/ReserveFees.js.map +1 -0
- package/build/types/ReserveLiquidity.d.ts +181 -0
- package/build/types/ReserveLiquidity.js +214 -0
- package/build/types/ReserveLiquidity.js.map +1 -0
- package/build/types/ScopeConfiguration.d.ts +40 -0
- package/build/types/ScopeConfiguration.js +82 -0
- package/build/types/ScopeConfiguration.js.map +1 -0
- package/build/types/SwitchboardConfiguration.d.ts +29 -0
- package/build/types/SwitchboardConfiguration.js +70 -0
- package/build/types/SwitchboardConfiguration.js.map +1 -0
- package/build/types/TokenInfo.d.ts +121 -0
- package/build/types/TokenInfo.js +154 -0
- package/build/types/TokenInfo.js.map +1 -0
- package/build/types/WithdrawalCaps.d.ts +37 -0
- package/build/types/WithdrawalCaps.js +90 -0
- package/build/types/WithdrawalCaps.js.map +1 -0
- package/build/types/index.d.ts +46 -0
- package/build/types/index.js +88 -0
- package/build/types/index.js.map +1 -0
- package/package.json +20 -0
- package/src/fraction.ts +70 -0
- package/src/index.ts +269 -0
- package/src/types/BigFractionBytes.ts +59 -0
- package/src/types/BorrowRateCurve.ts +53 -0
- package/src/types/CurvePoint.ts +58 -0
- package/src/types/LastUpdate.ts +88 -0
- package/src/types/PriceHeuristic.ts +76 -0
- package/src/types/PythConfiguration.ts +54 -0
- package/src/types/ReserveCollateral.ts +103 -0
- package/src/types/ReserveConfig.ts +431 -0
- package/src/types/ReserveFees.ts +116 -0
- package/src/types/ReserveLiquidity.ts +280 -0
- package/src/types/ScopeConfiguration.ts +83 -0
- package/src/types/SwitchboardConfiguration.ts +62 -0
- package/src/types/TokenInfo.ts +178 -0
- package/src/types/WithdrawalCaps.ts +84 -0
- package/src/types/index.ts +88 -0
- package/tsconfig.json +18 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
## [0.0.3](https://github.com/exponent-finance/exponent-core/compare/@exponent-labs/kamino-reserve-deserializer@0.0.2...@exponent-labs/kamino-reserve-deserializer@0.0.3) (2025-03-03)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @exponent-labs/kamino-reserve-deserializer
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [0.0.2](https://github.com/exponent-finance/exponent-core/compare/@exponent-labs/kamino-reserve-deserializer@0.0.1...@exponent-labs/kamino-reserve-deserializer@0.0.2) (2025-03-03)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @exponent-labs/kamino-reserve-deserializer
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
import Decimal from "decimal.js";
|
|
3
|
+
export declare class Fraction {
|
|
4
|
+
static MAX_SIZE_F: number;
|
|
5
|
+
static MAX_SIZE_BF: number;
|
|
6
|
+
static FRACTIONS: number;
|
|
7
|
+
static MULTIPLIER_NUMBER: number;
|
|
8
|
+
static MAX_BN: BN;
|
|
9
|
+
static MIN_BN: BN;
|
|
10
|
+
valueSf: BN;
|
|
11
|
+
constructor(valueSf: BN);
|
|
12
|
+
toDecimal(): Decimal;
|
|
13
|
+
static fromDecimal(n: Decimal): Fraction;
|
|
14
|
+
static fromBps(n: Decimal): Fraction;
|
|
15
|
+
static fromPercent(n: number): Fraction;
|
|
16
|
+
getValue(): BN;
|
|
17
|
+
gt(x: Fraction): boolean;
|
|
18
|
+
lt(x: Fraction): boolean;
|
|
19
|
+
gte(x: Fraction): boolean;
|
|
20
|
+
lte(x: Fraction): boolean;
|
|
21
|
+
eq(x: Fraction): boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const ZERO_FRACTION: Fraction;
|
|
@@ -0,0 +1,61 @@
|
|
|
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.ZERO_FRACTION = exports.Fraction = void 0;
|
|
7
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
8
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
9
|
+
class Fraction {
|
|
10
|
+
static MAX_SIZE_F = 128;
|
|
11
|
+
static MAX_SIZE_BF = 256;
|
|
12
|
+
static FRACTIONS = 60;
|
|
13
|
+
static MULTIPLIER_NUMBER = Math.pow(2, Fraction.FRACTIONS);
|
|
14
|
+
static MAX_BN = new bn_js_1.default(2).pow(new bn_js_1.default(Fraction.MAX_SIZE_BF)).sub(new bn_js_1.default(1));
|
|
15
|
+
static MIN_BN = new bn_js_1.default(0);
|
|
16
|
+
valueSf;
|
|
17
|
+
constructor(valueSf) {
|
|
18
|
+
if (valueSf.lt(Fraction.MIN_BN) || valueSf.gt(Fraction.MAX_BN)) {
|
|
19
|
+
throw new Error("Number out of range");
|
|
20
|
+
}
|
|
21
|
+
this.valueSf = valueSf;
|
|
22
|
+
}
|
|
23
|
+
toDecimal() {
|
|
24
|
+
return new decimal_js_1.default(this.valueSf.toString()).div(Fraction.MULTIPLIER_NUMBER);
|
|
25
|
+
}
|
|
26
|
+
static fromDecimal(n) {
|
|
27
|
+
const MULTIPLIER_DECIMAL = new decimal_js_1.default(Fraction.MULTIPLIER_NUMBER.toString());
|
|
28
|
+
const scaledDecimal = n.mul(MULTIPLIER_DECIMAL).round();
|
|
29
|
+
const scaledValue = new bn_js_1.default(scaledDecimal.toString());
|
|
30
|
+
return new Fraction(scaledValue);
|
|
31
|
+
}
|
|
32
|
+
static fromBps(n) {
|
|
33
|
+
const decimal = n.div(10000);
|
|
34
|
+
return Fraction.fromDecimal(decimal);
|
|
35
|
+
}
|
|
36
|
+
static fromPercent(n) {
|
|
37
|
+
const decimal = new decimal_js_1.default(n).div(100);
|
|
38
|
+
return Fraction.fromDecimal(decimal);
|
|
39
|
+
}
|
|
40
|
+
getValue() {
|
|
41
|
+
return this.valueSf;
|
|
42
|
+
}
|
|
43
|
+
gt(x) {
|
|
44
|
+
return this.valueSf.gt(x.getValue());
|
|
45
|
+
}
|
|
46
|
+
lt(x) {
|
|
47
|
+
return this.valueSf.lt(x.getValue());
|
|
48
|
+
}
|
|
49
|
+
gte(x) {
|
|
50
|
+
return this.valueSf.gte(x.getValue());
|
|
51
|
+
}
|
|
52
|
+
lte(x) {
|
|
53
|
+
return this.valueSf.lte(x.getValue());
|
|
54
|
+
}
|
|
55
|
+
eq(x) {
|
|
56
|
+
return this.valueSf.eq(x.getValue());
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.Fraction = Fraction;
|
|
60
|
+
exports.ZERO_FRACTION = new Fraction(new bn_js_1.default(0));
|
|
61
|
+
//# sourceMappingURL=fraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction.js","sourceRoot":"","sources":["../src/fraction.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { PublicKey, Connection } from "@solana/web3.js";
|
|
4
|
+
import BN from "bn.js";
|
|
5
|
+
import { LastUpdate, LastUpdateFields, LastUpdateJSON } from "./types";
|
|
6
|
+
import { ReserveLiquidity, ReserveLiquidityFields, ReserveLiquidityJSON } from "./types/ReserveLiquidity";
|
|
7
|
+
import { ReserveCollateral, ReserveCollateralFields, ReserveCollateralJSON } from "./types/ReserveCollateral";
|
|
8
|
+
import { ReserveConfig, ReserveConfigFields, ReserveConfigJSON } from "./types/ReserveConfig";
|
|
9
|
+
import Decimal from "decimal.js";
|
|
10
|
+
export interface ReserveFields {
|
|
11
|
+
/** Version of the reserve */
|
|
12
|
+
version: BN;
|
|
13
|
+
/** Last slot when supply and rates updated */
|
|
14
|
+
lastUpdate: LastUpdateFields;
|
|
15
|
+
/** Lending market address */
|
|
16
|
+
lendingMarket: PublicKey;
|
|
17
|
+
farmCollateral: PublicKey;
|
|
18
|
+
farmDebt: PublicKey;
|
|
19
|
+
/** Reserve liquidity */
|
|
20
|
+
liquidity: ReserveLiquidityFields;
|
|
21
|
+
reserveLiquidityPadding: Array<BN>;
|
|
22
|
+
/** Reserve collateral */
|
|
23
|
+
collateral: ReserveCollateralFields;
|
|
24
|
+
reserveCollateralPadding: Array<BN>;
|
|
25
|
+
/** Reserve configuration values */
|
|
26
|
+
config: ReserveConfigFields;
|
|
27
|
+
configPadding: Array<BN>;
|
|
28
|
+
borrowedAmountOutsideElevationGroup: BN;
|
|
29
|
+
/**
|
|
30
|
+
* Amount of token borrowed in lamport of debt asset in the given
|
|
31
|
+
* elevation group when this reserve is part of the collaterals.
|
|
32
|
+
*/
|
|
33
|
+
borrowedAmountsAgainstThisReserveInElevationGroups: Array<BN>;
|
|
34
|
+
padding: Array<BN>;
|
|
35
|
+
}
|
|
36
|
+
export interface ReserveJSON {
|
|
37
|
+
/** Version of the reserve */
|
|
38
|
+
version: string;
|
|
39
|
+
/** Last slot when supply and rates updated */
|
|
40
|
+
lastUpdate: LastUpdateJSON;
|
|
41
|
+
/** Lending market address */
|
|
42
|
+
lendingMarket: string;
|
|
43
|
+
farmCollateral: string;
|
|
44
|
+
farmDebt: string;
|
|
45
|
+
/** Reserve liquidity */
|
|
46
|
+
liquidity: ReserveLiquidityJSON;
|
|
47
|
+
reserveLiquidityPadding: Array<string>;
|
|
48
|
+
/** Reserve collateral */
|
|
49
|
+
collateral: ReserveCollateralJSON;
|
|
50
|
+
reserveCollateralPadding: Array<string>;
|
|
51
|
+
/** Reserve configuration values */
|
|
52
|
+
config: ReserveConfigJSON;
|
|
53
|
+
configPadding: Array<string>;
|
|
54
|
+
borrowedAmountOutsideElevationGroup: string;
|
|
55
|
+
/**
|
|
56
|
+
* Amount of token borrowed in lamport of debt asset in the given
|
|
57
|
+
* elevation group when this reserve is part of the collaterals.
|
|
58
|
+
*/
|
|
59
|
+
borrowedAmountsAgainstThisReserveInElevationGroups: Array<string>;
|
|
60
|
+
padding: Array<string>;
|
|
61
|
+
}
|
|
62
|
+
export declare class Reserve {
|
|
63
|
+
/** Version of the reserve */
|
|
64
|
+
readonly version: BN;
|
|
65
|
+
/** Last slot when supply and rates updated */
|
|
66
|
+
readonly lastUpdate: LastUpdate;
|
|
67
|
+
/** Lending market address */
|
|
68
|
+
readonly lendingMarket: PublicKey;
|
|
69
|
+
readonly farmCollateral: PublicKey;
|
|
70
|
+
readonly farmDebt: PublicKey;
|
|
71
|
+
/** Reserve liquidity */
|
|
72
|
+
readonly liquidity: ReserveLiquidity;
|
|
73
|
+
readonly reserveLiquidityPadding: Array<BN>;
|
|
74
|
+
/** Reserve collateral */
|
|
75
|
+
readonly collateral: ReserveCollateral;
|
|
76
|
+
readonly reserveCollateralPadding: Array<BN>;
|
|
77
|
+
/** Reserve configuration values */
|
|
78
|
+
readonly config: ReserveConfig;
|
|
79
|
+
readonly configPadding: Array<BN>;
|
|
80
|
+
readonly borrowedAmountOutsideElevationGroup: BN;
|
|
81
|
+
/**
|
|
82
|
+
* Amount of token borrowed in lamport of debt asset in the given
|
|
83
|
+
* elevation group when this reserve is part of the collaterals.
|
|
84
|
+
*/
|
|
85
|
+
readonly borrowedAmountsAgainstThisReserveInElevationGroups: Array<BN>;
|
|
86
|
+
readonly padding: Array<BN>;
|
|
87
|
+
static readonly discriminator: Buffer;
|
|
88
|
+
static readonly layout: any;
|
|
89
|
+
constructor(fields: ReserveFields);
|
|
90
|
+
static fetch(c: Connection, address: PublicKey, programId?: PublicKey): Promise<Reserve | null>;
|
|
91
|
+
static fetchMultiple(c: Connection, addresses: PublicKey[], programId?: PublicKey): Promise<Array<Reserve | null>>;
|
|
92
|
+
static decode(data: Buffer): Reserve;
|
|
93
|
+
toJSON(): ReserveJSON;
|
|
94
|
+
static fromJSON(obj: ReserveJSON): Reserve;
|
|
95
|
+
getCollateralExchangeRate(): Decimal;
|
|
96
|
+
getTotalSupply(): Decimal;
|
|
97
|
+
getLiquidityAvailableAmount(): Decimal;
|
|
98
|
+
getBorrowedAmount(): Decimal;
|
|
99
|
+
getAccumulatedProtocolFees(): Decimal;
|
|
100
|
+
getAccumulatedReferrerFees(): Decimal;
|
|
101
|
+
getPendingReferrerFees(): Decimal;
|
|
102
|
+
}
|
package/build/index.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.Reserve = void 0;
|
|
30
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
31
|
+
const bn_js_1 = __importDefault(require("bn.js")); // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
32
|
+
const borsh = __importStar(require("@coral-xyz/borsh")); // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
33
|
+
const types_1 = require("./types");
|
|
34
|
+
const ReserveLiquidity_1 = require("./types/ReserveLiquidity");
|
|
35
|
+
const ReserveCollateral_1 = require("./types/ReserveCollateral");
|
|
36
|
+
const ReserveConfig_1 = require("./types/ReserveConfig");
|
|
37
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
38
|
+
const fraction_1 = require("./fraction");
|
|
39
|
+
const PROGRAM_ID = new web3_js_1.PublicKey("KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD");
|
|
40
|
+
class Reserve {
|
|
41
|
+
/** Version of the reserve */
|
|
42
|
+
version;
|
|
43
|
+
/** Last slot when supply and rates updated */
|
|
44
|
+
lastUpdate;
|
|
45
|
+
/** Lending market address */
|
|
46
|
+
lendingMarket;
|
|
47
|
+
farmCollateral;
|
|
48
|
+
farmDebt;
|
|
49
|
+
/** Reserve liquidity */
|
|
50
|
+
liquidity;
|
|
51
|
+
reserveLiquidityPadding;
|
|
52
|
+
/** Reserve collateral */
|
|
53
|
+
collateral;
|
|
54
|
+
reserveCollateralPadding;
|
|
55
|
+
/** Reserve configuration values */
|
|
56
|
+
config;
|
|
57
|
+
configPadding;
|
|
58
|
+
borrowedAmountOutsideElevationGroup;
|
|
59
|
+
/**
|
|
60
|
+
* Amount of token borrowed in lamport of debt asset in the given
|
|
61
|
+
* elevation group when this reserve is part of the collaterals.
|
|
62
|
+
*/
|
|
63
|
+
borrowedAmountsAgainstThisReserveInElevationGroups;
|
|
64
|
+
padding;
|
|
65
|
+
static discriminator = Buffer.from([43, 242, 204, 202, 26, 247, 59, 127]);
|
|
66
|
+
static layout = borsh.struct([
|
|
67
|
+
borsh.u64("version"),
|
|
68
|
+
types_1.LastUpdate.layout("lastUpdate"),
|
|
69
|
+
borsh.publicKey("lendingMarket"),
|
|
70
|
+
borsh.publicKey("farmCollateral"),
|
|
71
|
+
borsh.publicKey("farmDebt"),
|
|
72
|
+
ReserveLiquidity_1.ReserveLiquidity.layout("liquidity"),
|
|
73
|
+
borsh.array(borsh.u64(), 150, "reserveLiquidityPadding"),
|
|
74
|
+
ReserveCollateral_1.ReserveCollateral.layout("collateral"),
|
|
75
|
+
borsh.array(borsh.u64(), 150, "reserveCollateralPadding"),
|
|
76
|
+
ReserveConfig_1.ReserveConfig.layout("config"),
|
|
77
|
+
borsh.array(borsh.u64(), 117, "configPadding"),
|
|
78
|
+
borsh.u64("borrowedAmountOutsideElevationGroup"),
|
|
79
|
+
borsh.array(borsh.u64(), 32, "borrowedAmountsAgainstThisReserveInElevationGroups"),
|
|
80
|
+
borsh.array(borsh.u64(), 207, "padding"),
|
|
81
|
+
]);
|
|
82
|
+
constructor(fields) {
|
|
83
|
+
this.version = fields.version;
|
|
84
|
+
this.lastUpdate = new types_1.LastUpdate({ ...fields.lastUpdate });
|
|
85
|
+
this.lendingMarket = fields.lendingMarket;
|
|
86
|
+
this.farmCollateral = fields.farmCollateral;
|
|
87
|
+
this.farmDebt = fields.farmDebt;
|
|
88
|
+
this.liquidity = new ReserveLiquidity_1.ReserveLiquidity({ ...fields.liquidity });
|
|
89
|
+
this.reserveLiquidityPadding = fields.reserveLiquidityPadding;
|
|
90
|
+
this.collateral = new ReserveCollateral_1.ReserveCollateral({ ...fields.collateral });
|
|
91
|
+
this.reserveCollateralPadding = fields.reserveCollateralPadding;
|
|
92
|
+
this.config = new ReserveConfig_1.ReserveConfig({ ...fields.config });
|
|
93
|
+
this.configPadding = fields.configPadding;
|
|
94
|
+
this.borrowedAmountOutsideElevationGroup = fields.borrowedAmountOutsideElevationGroup;
|
|
95
|
+
this.borrowedAmountsAgainstThisReserveInElevationGroups = fields.borrowedAmountsAgainstThisReserveInElevationGroups;
|
|
96
|
+
this.padding = fields.padding;
|
|
97
|
+
}
|
|
98
|
+
static async fetch(c, address, programId = PROGRAM_ID) {
|
|
99
|
+
const info = await c.getAccountInfo(address);
|
|
100
|
+
if (info === null) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
if (!info.owner.equals(programId)) {
|
|
104
|
+
throw new Error("account doesn't belong to this program");
|
|
105
|
+
}
|
|
106
|
+
return this.decode(info.data);
|
|
107
|
+
}
|
|
108
|
+
static async fetchMultiple(c, addresses, programId = PROGRAM_ID) {
|
|
109
|
+
const infos = await c.getMultipleAccountsInfo(addresses);
|
|
110
|
+
return infos.map((info) => {
|
|
111
|
+
if (info === null) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
if (!info.owner.equals(programId)) {
|
|
115
|
+
throw new Error("account doesn't belong to this program");
|
|
116
|
+
}
|
|
117
|
+
return this.decode(info.data);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
static decode(data) {
|
|
121
|
+
if (!data.slice(0, 8).equals(Reserve.discriminator)) {
|
|
122
|
+
throw new Error("invalid account discriminator");
|
|
123
|
+
}
|
|
124
|
+
const dec = Reserve.layout.decode(data.slice(8));
|
|
125
|
+
return new Reserve({
|
|
126
|
+
version: dec.version,
|
|
127
|
+
lastUpdate: types_1.LastUpdate.fromDecoded(dec.lastUpdate),
|
|
128
|
+
lendingMarket: dec.lendingMarket,
|
|
129
|
+
farmCollateral: dec.farmCollateral,
|
|
130
|
+
farmDebt: dec.farmDebt,
|
|
131
|
+
liquidity: ReserveLiquidity_1.ReserveLiquidity.fromDecoded(dec.liquidity),
|
|
132
|
+
reserveLiquidityPadding: dec.reserveLiquidityPadding,
|
|
133
|
+
collateral: ReserveCollateral_1.ReserveCollateral.fromDecoded(dec.collateral),
|
|
134
|
+
reserveCollateralPadding: dec.reserveCollateralPadding,
|
|
135
|
+
config: ReserveConfig_1.ReserveConfig.fromDecoded(dec.config),
|
|
136
|
+
configPadding: dec.configPadding,
|
|
137
|
+
borrowedAmountOutsideElevationGroup: dec.borrowedAmountOutsideElevationGroup,
|
|
138
|
+
borrowedAmountsAgainstThisReserveInElevationGroups: dec.borrowedAmountsAgainstThisReserveInElevationGroups,
|
|
139
|
+
padding: dec.padding,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
toJSON() {
|
|
143
|
+
return {
|
|
144
|
+
version: this.version.toString(),
|
|
145
|
+
lastUpdate: this.lastUpdate.toJSON(),
|
|
146
|
+
lendingMarket: this.lendingMarket.toString(),
|
|
147
|
+
farmCollateral: this.farmCollateral.toString(),
|
|
148
|
+
farmDebt: this.farmDebt.toString(),
|
|
149
|
+
liquidity: this.liquidity.toJSON(),
|
|
150
|
+
reserveLiquidityPadding: this.reserveLiquidityPadding.map((item) => item.toString()),
|
|
151
|
+
collateral: this.collateral.toJSON(),
|
|
152
|
+
reserveCollateralPadding: this.reserveCollateralPadding.map((item) => item.toString()),
|
|
153
|
+
config: this.config.toJSON(),
|
|
154
|
+
configPadding: this.configPadding.map((item) => item.toString()),
|
|
155
|
+
borrowedAmountOutsideElevationGroup: this.borrowedAmountOutsideElevationGroup.toString(),
|
|
156
|
+
borrowedAmountsAgainstThisReserveInElevationGroups: this.borrowedAmountsAgainstThisReserveInElevationGroups.map((item) => item.toString()),
|
|
157
|
+
padding: this.padding.map((item) => item.toString()),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
static fromJSON(obj) {
|
|
161
|
+
return new Reserve({
|
|
162
|
+
version: new bn_js_1.default(obj.version),
|
|
163
|
+
lastUpdate: types_1.LastUpdate.fromJSON(obj.lastUpdate),
|
|
164
|
+
lendingMarket: new web3_js_1.PublicKey(obj.lendingMarket),
|
|
165
|
+
farmCollateral: new web3_js_1.PublicKey(obj.farmCollateral),
|
|
166
|
+
farmDebt: new web3_js_1.PublicKey(obj.farmDebt),
|
|
167
|
+
liquidity: ReserveLiquidity_1.ReserveLiquidity.fromJSON(obj.liquidity),
|
|
168
|
+
reserveLiquidityPadding: obj.reserveLiquidityPadding.map((item) => new bn_js_1.default(item)),
|
|
169
|
+
collateral: ReserveCollateral_1.ReserveCollateral.fromJSON(obj.collateral),
|
|
170
|
+
reserveCollateralPadding: obj.reserveCollateralPadding.map((item) => new bn_js_1.default(item)),
|
|
171
|
+
config: ReserveConfig_1.ReserveConfig.fromJSON(obj.config),
|
|
172
|
+
configPadding: obj.configPadding.map((item) => new bn_js_1.default(item)),
|
|
173
|
+
borrowedAmountOutsideElevationGroup: new bn_js_1.default(obj.borrowedAmountOutsideElevationGroup),
|
|
174
|
+
borrowedAmountsAgainstThisReserveInElevationGroups: obj.borrowedAmountsAgainstThisReserveInElevationGroups.map((item) => new bn_js_1.default(item)),
|
|
175
|
+
padding: obj.padding.map((item) => new bn_js_1.default(item)),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
getCollateralExchangeRate() {
|
|
179
|
+
const totalSupply = this.getTotalSupply();
|
|
180
|
+
const mintTotalSupply = this.collateral.mintTotalSupply;
|
|
181
|
+
if (mintTotalSupply.isZero() || totalSupply.isZero()) {
|
|
182
|
+
return new decimal_js_1.default(1);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
const num = totalSupply.toString();
|
|
186
|
+
const den = new decimal_js_1.default(mintTotalSupply.toString());
|
|
187
|
+
return new decimal_js_1.default(num).dividedBy(den);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
getTotalSupply() {
|
|
191
|
+
return this.getLiquidityAvailableAmount()
|
|
192
|
+
.add(this.getBorrowedAmount())
|
|
193
|
+
.sub(this.getAccumulatedProtocolFees())
|
|
194
|
+
.sub(this.getAccumulatedReferrerFees())
|
|
195
|
+
.sub(this.getPendingReferrerFees());
|
|
196
|
+
}
|
|
197
|
+
getLiquidityAvailableAmount() {
|
|
198
|
+
return new decimal_js_1.default(this.liquidity.availableAmount.toString());
|
|
199
|
+
}
|
|
200
|
+
getBorrowedAmount() {
|
|
201
|
+
return new fraction_1.Fraction(this.liquidity.borrowedAmountSf).toDecimal();
|
|
202
|
+
}
|
|
203
|
+
getAccumulatedProtocolFees() {
|
|
204
|
+
return new fraction_1.Fraction(this.liquidity.accumulatedProtocolFeesSf).toDecimal();
|
|
205
|
+
}
|
|
206
|
+
getAccumulatedReferrerFees() {
|
|
207
|
+
return new fraction_1.Fraction(this.liquidity.accumulatedReferrerFeesSf).toDecimal();
|
|
208
|
+
}
|
|
209
|
+
getPendingReferrerFees() {
|
|
210
|
+
return new fraction_1.Fraction(this.liquidity.pendingReferrerFeesSf).toDecimal();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
exports.Reserve = Reserve;
|
|
214
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
export interface BigFractionBytesFields {
|
|
3
|
+
value: Array<BN>;
|
|
4
|
+
padding: Array<BN>;
|
|
5
|
+
}
|
|
6
|
+
export interface BigFractionBytesJSON {
|
|
7
|
+
value: Array<string>;
|
|
8
|
+
padding: Array<string>;
|
|
9
|
+
}
|
|
10
|
+
export declare class BigFractionBytes {
|
|
11
|
+
readonly value: Array<BN>;
|
|
12
|
+
readonly padding: Array<BN>;
|
|
13
|
+
constructor(fields: BigFractionBytesFields);
|
|
14
|
+
static layout(property?: string): any;
|
|
15
|
+
static fromDecoded(obj: any): BigFractionBytes;
|
|
16
|
+
static toEncodable(fields: BigFractionBytesFields): {
|
|
17
|
+
value: BN[];
|
|
18
|
+
padding: BN[];
|
|
19
|
+
};
|
|
20
|
+
toJSON(): BigFractionBytesJSON;
|
|
21
|
+
static fromJSON(obj: BigFractionBytesJSON): BigFractionBytes;
|
|
22
|
+
toEncodable(): {
|
|
23
|
+
value: BN[];
|
|
24
|
+
padding: BN[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.BigFractionBytes = void 0;
|
|
30
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
31
|
+
const borsh = __importStar(require("@coral-xyz/borsh"));
|
|
32
|
+
class BigFractionBytes {
|
|
33
|
+
value;
|
|
34
|
+
padding;
|
|
35
|
+
constructor(fields) {
|
|
36
|
+
this.value = fields.value;
|
|
37
|
+
this.padding = fields.padding;
|
|
38
|
+
}
|
|
39
|
+
static layout(property) {
|
|
40
|
+
return borsh.struct([borsh.array(borsh.u64(), 4, "value"), borsh.array(borsh.u64(), 2, "padding")], property);
|
|
41
|
+
}
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
static fromDecoded(obj) {
|
|
44
|
+
return new BigFractionBytes({
|
|
45
|
+
value: obj.value,
|
|
46
|
+
padding: obj.padding,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
static toEncodable(fields) {
|
|
50
|
+
return {
|
|
51
|
+
value: fields.value,
|
|
52
|
+
padding: fields.padding,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
toJSON() {
|
|
56
|
+
return {
|
|
57
|
+
value: this.value.map((item) => item.toString()),
|
|
58
|
+
padding: this.padding.map((item) => item.toString()),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
static fromJSON(obj) {
|
|
62
|
+
return new BigFractionBytes({
|
|
63
|
+
value: obj.value.map((item) => new bn_js_1.default(item)),
|
|
64
|
+
padding: obj.padding.map((item) => new bn_js_1.default(item)),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
toEncodable() {
|
|
68
|
+
return BigFractionBytes.toEncodable(this);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.BigFractionBytes = BigFractionBytes;
|
|
72
|
+
//# sourceMappingURL=BigFractionBytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BigFractionBytes.js","sourceRoot":"","sources":["../../src/types/BigFractionBytes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAsB;AACtB,wDAAyC;AAYzC,MAAa,gBAAgB;IAClB,KAAK,CAAW;IAChB,OAAO,CAAW;IAE3B,YAAY,MAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,QAAiB;QAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC/G,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,WAAW,CAAC,GAAQ;QACzB,OAAO,IAAI,gBAAgB,CAAC;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA8B;QAC/C,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACrD,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAyB;QACvC,OAAO,IAAI,gBAAgB,CAAC;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,eAAE,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,eAAE,CAAC,IAAI,CAAC,CAAC;SACjD,CAAC,CAAA;IACJ,CAAC;IAED,WAAW;QACT,OAAO,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;CACF;AA7CD,4CA6CC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CurvePoint, CurvePointFields, CurvePointJSON } from "./CurvePoint";
|
|
2
|
+
export interface BorrowRateCurveFields {
|
|
3
|
+
points: Array<CurvePointFields>;
|
|
4
|
+
}
|
|
5
|
+
export interface BorrowRateCurveJSON {
|
|
6
|
+
points: Array<CurvePointJSON>;
|
|
7
|
+
}
|
|
8
|
+
export declare class BorrowRateCurve {
|
|
9
|
+
readonly points: Array<CurvePoint>;
|
|
10
|
+
constructor(fields: BorrowRateCurveFields);
|
|
11
|
+
static layout(property?: string): any;
|
|
12
|
+
static fromDecoded(obj: any): BorrowRateCurve;
|
|
13
|
+
static toEncodable(fields: BorrowRateCurveFields): {
|
|
14
|
+
points: {
|
|
15
|
+
utilizationRateBps: number;
|
|
16
|
+
borrowRateBps: number;
|
|
17
|
+
}[];
|
|
18
|
+
};
|
|
19
|
+
toJSON(): BorrowRateCurveJSON;
|
|
20
|
+
static fromJSON(obj: BorrowRateCurveJSON): BorrowRateCurve;
|
|
21
|
+
toEncodable(): {
|
|
22
|
+
points: {
|
|
23
|
+
utilizationRateBps: number;
|
|
24
|
+
borrowRateBps: number;
|
|
25
|
+
}[];
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.BorrowRateCurve = void 0;
|
|
27
|
+
const borsh = __importStar(require("@coral-xyz/borsh"));
|
|
28
|
+
const CurvePoint_1 = require("./CurvePoint");
|
|
29
|
+
class BorrowRateCurve {
|
|
30
|
+
points;
|
|
31
|
+
constructor(fields) {
|
|
32
|
+
this.points = fields.points.map((item) => new CurvePoint_1.CurvePoint({ ...item }));
|
|
33
|
+
}
|
|
34
|
+
static layout(property) {
|
|
35
|
+
return borsh.struct([borsh.array(CurvePoint_1.CurvePoint.layout(), 11, "points")], property);
|
|
36
|
+
}
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
static fromDecoded(obj) {
|
|
39
|
+
return new BorrowRateCurve({
|
|
40
|
+
points: obj.points.map((item /* eslint-disable-line @typescript-eslint/no-explicit-any */) => CurvePoint_1.CurvePoint.fromDecoded(item)),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
static toEncodable(fields) {
|
|
44
|
+
return {
|
|
45
|
+
points: fields.points.map((item) => CurvePoint_1.CurvePoint.toEncodable(item)),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
toJSON() {
|
|
49
|
+
return {
|
|
50
|
+
points: this.points.map((item) => item.toJSON()),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
static fromJSON(obj) {
|
|
54
|
+
return new BorrowRateCurve({
|
|
55
|
+
points: obj.points.map((item) => CurvePoint_1.CurvePoint.fromJSON(item)),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
toEncodable() {
|
|
59
|
+
return BorrowRateCurve.toEncodable(this);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.BorrowRateCurve = BorrowRateCurve;
|
|
63
|
+
//# sourceMappingURL=BorrowRateCurve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BorrowRateCurve.js","sourceRoot":"","sources":["../../src/types/BorrowRateCurve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAyC;AACzC,6CAA2E;AAU3E,MAAa,eAAe;IACjB,MAAM,CAAmB;IAElC,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,uBAAU,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,QAAiB;QAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IACjF,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,WAAW,CAAC,GAAQ;QACzB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,CAAC,4DAA4D,EAAE,EAAE,CAChG,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAC7B;SACF,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA6B;QAC9C,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAClE,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACjD,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAwB;QACtC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC5D,CAAC,CAAA;IACJ,CAAC;IAED,WAAW;QACT,OAAO,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;CACF;AAzCD,0CAyCC"}
|