@wildcatfi/wildcat-sdk 3.0.11 → 3.0.12
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/gql/getActiveLendersByMarket.d.ts +38 -0
- package/dist/gql/getActiveLendersByMarket.d.ts.map +1 -0
- package/dist/gql/getActiveLendersByMarket.js +119 -0
- package/dist/gql/getActiveLendersByMarket.js.map +1 -0
- package/dist/gql/graphql.d.ts +6 -0
- package/dist/gql/graphql.d.ts.map +1 -1
- package/dist/gql/graphql.js +16 -2
- package/dist/gql/graphql.js.map +1 -1
- package/dist/gql/index.d.ts +1 -0
- package/dist/gql/index.d.ts.map +1 -1
- package/dist/gql/index.js +1 -0
- package/dist/gql/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ApolloClient, FetchPolicy, NormalizedCacheObject } from "@apollo/client";
|
|
2
|
+
import { SubgraphGetActiveLendersByMarketQueryVariables } from "./graphql";
|
|
3
|
+
import { Market } from "../market";
|
|
4
|
+
import { LenderRole } from "../account";
|
|
5
|
+
import { HooksCredential } from "../types";
|
|
6
|
+
import { BigNumber } from "ethers";
|
|
7
|
+
import { TokenAmount } from "../token";
|
|
8
|
+
export type GetActiveLendersByMarketOptions = SubgraphGetActiveLendersByMarketQueryVariables & {
|
|
9
|
+
fetchPolicy?: FetchPolicy;
|
|
10
|
+
market: Market;
|
|
11
|
+
};
|
|
12
|
+
type BasicLenderArgs = {
|
|
13
|
+
market: Market;
|
|
14
|
+
address: string;
|
|
15
|
+
scaledBalance: BigNumber;
|
|
16
|
+
addedTimestamp: number;
|
|
17
|
+
isKnownLender?: boolean;
|
|
18
|
+
/** For V2 markets - credentials on market hooks instance */
|
|
19
|
+
credential?: HooksCredential;
|
|
20
|
+
/** For V1 markets - whether lender has been manually approved on controller */
|
|
21
|
+
isAuthorizedOnController?: boolean;
|
|
22
|
+
role?: LenderRole;
|
|
23
|
+
};
|
|
24
|
+
export interface BasicLenderData extends BasicLenderArgs {
|
|
25
|
+
}
|
|
26
|
+
export declare class BasicLenderData {
|
|
27
|
+
constructor(args: BasicLenderArgs);
|
|
28
|
+
get marketBalance(): TokenAmount;
|
|
29
|
+
get credentialExpiry(): number | undefined;
|
|
30
|
+
get hasValidCredential(): boolean;
|
|
31
|
+
/** Shim for functions in app that use lender role */
|
|
32
|
+
get inferredRole(): LenderRole | undefined;
|
|
33
|
+
get canDeposit(): boolean;
|
|
34
|
+
get canWithdraw(): boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function getActiveLendersByMarket(subgraphClient: ApolloClient<NormalizedCacheObject>, { fetchPolicy, market, ...options }: GetActiveLendersByMarketOptions): Promise<BasicLenderData[]>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=getActiveLendersByMarket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getActiveLendersByMarket.d.ts","sourceRoot":"","sources":["../../src/gql/getActiveLendersByMarket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAGL,8CAA8C,EAC/C,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAA4B,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,MAAM,+BAA+B,GAAG,8CAA8C,GAAG;IAC7F,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,SAAS,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,eAAe,CAAC;IAE7B,gFAAgF;IAChF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAGF,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAE3D,qBAAa,eAAe;gBACd,IAAI,EAAE,eAAe;IAIjC,IAAI,aAAa,IAAI,WAAW,CAE/B;IAED,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAKzC;IAED,IAAI,kBAAkB,IAAI,OAAO,CAGhC;IAED,qDAAqD;IACrD,IAAI,YAAY,IAAI,UAAU,GAAG,SAAS,CAWzC;IAED,IAAI,UAAU,IAAI,OAAO,CAwBxB;IAED,IAAI,WAAW,IAAI,OAAO,CA2BzB;CACF;AAED,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,YAAY,CAAC,qBAAqB,CAAC,EACnD,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,+BAA+B,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CA4B5B"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getActiveLendersByMarket = exports.BasicLenderData = void 0;
|
|
4
|
+
const graphql_1 = require("./graphql");
|
|
5
|
+
const account_1 = require("../account");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
const ethers_1 = require("ethers");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
class BasicLenderData {
|
|
10
|
+
constructor(args) {
|
|
11
|
+
Object.assign(this, args);
|
|
12
|
+
}
|
|
13
|
+
get marketBalance() {
|
|
14
|
+
return this.market.marketToken.getAmount(this.market.scaleAmount(this.scaledBalance));
|
|
15
|
+
}
|
|
16
|
+
get credentialExpiry() {
|
|
17
|
+
if (this.credential && this.credential.lastProvider) {
|
|
18
|
+
return this.credential.lastApprovalTimestamp + this.credential.lastProvider.timeToLive;
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
get hasValidCredential() {
|
|
23
|
+
const expiry = this.credentialExpiry;
|
|
24
|
+
return expiry !== undefined && expiry >= Date.now() / 1000;
|
|
25
|
+
}
|
|
26
|
+
/** Shim for functions in app that use lender role */
|
|
27
|
+
get inferredRole() {
|
|
28
|
+
if (this.canDeposit) {
|
|
29
|
+
return account_1.LenderRole.DepositAndWithdraw;
|
|
30
|
+
}
|
|
31
|
+
if (this.canWithdraw) {
|
|
32
|
+
return account_1.LenderRole.WithdrawOnly;
|
|
33
|
+
}
|
|
34
|
+
if (this.credential?.isBlockedFromDeposits || this.role === account_1.LenderRole.Blocked) {
|
|
35
|
+
return account_1.LenderRole.Blocked;
|
|
36
|
+
}
|
|
37
|
+
return account_1.LenderRole.Null;
|
|
38
|
+
}
|
|
39
|
+
get canDeposit() {
|
|
40
|
+
if (this.market.isClosed)
|
|
41
|
+
return false;
|
|
42
|
+
if (this.market.version === types_1.MarketVersion.V1) {
|
|
43
|
+
if (this.role === account_1.LenderRole.Blocked)
|
|
44
|
+
return false;
|
|
45
|
+
if (this.role === account_1.LenderRole.DepositAndWithdraw ||
|
|
46
|
+
(this.role === account_1.LenderRole.Null && !!this.isAuthorizedOnController)) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const config = this.market.hooksConfig;
|
|
53
|
+
(0, utils_1.assert)(config !== undefined, `V2 market missing hooksConfig`);
|
|
54
|
+
// Can deposit if the market does not use the onDeposit hook
|
|
55
|
+
if (!config.flags.useOnDeposit)
|
|
56
|
+
return true;
|
|
57
|
+
// Can not deposit if the lender is blocked
|
|
58
|
+
if (this.credential?.isBlockedFromDeposits)
|
|
59
|
+
return false;
|
|
60
|
+
// Can deposit if lender has credential or market does not require one
|
|
61
|
+
if (config.depositRequiresAccess && !this.hasValidCredential) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
get canWithdraw() {
|
|
68
|
+
if (this.market.version === types_1.MarketVersion.V1) {
|
|
69
|
+
if (this.role === account_1.LenderRole.WithdrawOnly ||
|
|
70
|
+
this.role === account_1.LenderRole.DepositAndWithdraw ||
|
|
71
|
+
(this.role === account_1.LenderRole.Null && !!this.isAuthorizedOnController)) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const config = this.market.hooksConfig;
|
|
78
|
+
(0, utils_1.assert)(config !== undefined, `V2 market missing hooksConfig`);
|
|
79
|
+
// Can withdraw if market does not use wd hook
|
|
80
|
+
if (!config.flags.useOnQueueWithdrawal)
|
|
81
|
+
return true;
|
|
82
|
+
// Can not withdraw if market in fixed term
|
|
83
|
+
if (this.market.isInFixedTerm)
|
|
84
|
+
return false;
|
|
85
|
+
// Can not withdraw if market requires access and lender has no credential and is not a known lender
|
|
86
|
+
if (config.flags.useOnQueueWithdrawal &&
|
|
87
|
+
(config.kind === types_1.HooksKind.OpenTerm || config.queueWithdrawalRequiresAccess) &&
|
|
88
|
+
!(this.hasValidCredential || this.isKnownLender)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.BasicLenderData = BasicLenderData;
|
|
96
|
+
async function getActiveLendersByMarket(subgraphClient, { fetchPolicy, market, ...options }) {
|
|
97
|
+
const { data: { market: marketData } } = await subgraphClient.query({
|
|
98
|
+
query: graphql_1.GetActiveLendersByMarketDocument,
|
|
99
|
+
variables: {
|
|
100
|
+
market: market.address.toLowerCase(),
|
|
101
|
+
...options
|
|
102
|
+
},
|
|
103
|
+
fetchPolicy
|
|
104
|
+
});
|
|
105
|
+
(0, utils_1.assert)(marketData !== undefined && marketData !== null, `Market not found ${market.address}`);
|
|
106
|
+
return marketData.lenders.map(({ controllerAuthorization, hooksAccess, knownLenderStatus, scaledBalance, role, ...rest }) => {
|
|
107
|
+
return new BasicLenderData({
|
|
108
|
+
...rest,
|
|
109
|
+
market,
|
|
110
|
+
scaledBalance: ethers_1.BigNumber.from(scaledBalance),
|
|
111
|
+
credential: hooksAccess ? (0, utils_1.parseSubgraphLenderHooksAccess)(hooksAccess) : undefined,
|
|
112
|
+
isAuthorizedOnController: controllerAuthorization?.authorized,
|
|
113
|
+
isKnownLender: !!knownLenderStatus?.id,
|
|
114
|
+
role: (0, utils_1.parseSubgraphLenderStatus)(role)
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
exports.getActiveLendersByMarket = getActiveLendersByMarket;
|
|
119
|
+
//# sourceMappingURL=getActiveLendersByMarket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getActiveLendersByMarket.js","sourceRoot":"","sources":["../../src/gql/getActiveLendersByMarket.ts"],"names":[],"mappings":"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"}
|
package/dist/gql/graphql.d.ts
CHANGED
|
@@ -12665,6 +12665,7 @@ export type SubgraphBasicLenderDataFragment = {
|
|
|
12665
12665
|
id: string;
|
|
12666
12666
|
address: string;
|
|
12667
12667
|
scaledBalance: string;
|
|
12668
|
+
addedTimestamp: number;
|
|
12668
12669
|
role: SubgraphLenderStatus;
|
|
12669
12670
|
controllerAuthorization?: {
|
|
12670
12671
|
__typename: "LenderAuthorization";
|
|
@@ -13818,6 +13819,11 @@ export type SubgraphGetMarketsAndLendersByHooksInstanceOrControllerQuery = {
|
|
|
13818
13819
|
};
|
|
13819
13820
|
export type SubgraphGetActiveLendersByMarketQueryVariables = Exact<{
|
|
13820
13821
|
market: Scalars["ID"]["input"];
|
|
13822
|
+
accountFilter?: InputMaybe<SubgraphLenderAccount_Filter>;
|
|
13823
|
+
numAccounts?: InputMaybe<Scalars["Int"]["input"]>;
|
|
13824
|
+
skipAccounts?: InputMaybe<Scalars["Int"]["input"]>;
|
|
13825
|
+
orderAccounts?: InputMaybe<SubgraphLenderAccount_OrderBy>;
|
|
13826
|
+
directionAccounts?: InputMaybe<SubgraphOrderDirection>;
|
|
13821
13827
|
}>;
|
|
13822
13828
|
export type SubgraphGetActiveLendersByMarketQuery = {
|
|
13823
13829
|
__typename: "Query";
|