@dripfi/drip-sdk 1.0.0 → 1.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.
@@ -0,0 +1,19 @@
1
+ import { BigNumber } from "ethers";
2
+ import { Vault } from "./types/Vault";
3
+ import { SwapInfo } from "./types/SwapInfo";
4
+ import { QLFastRedeem } from "./types/QLFastRedeem";
5
+ export default class DripApi {
6
+ route: string;
7
+ constructor(route: string);
8
+ fetchAllVaults(): Promise<Vault[]>;
9
+ fetchVaultDetails(vaultAddress: string): Promise<Vault>;
10
+ getSwapInfo(fromTokenAddress: string, toTokenAddress: string, amount: BigNumber, fromAddress: string): Promise<SwapInfo[]>;
11
+ fetchUserSVTBalance(vaultAddress: string, walletAddress: string, token: string): Promise<BigNumber>;
12
+ fetchUserBalance(vaultAddress: string, walletAddress: string, token: string): Promise<Record<string, string>>;
13
+ fetchEnrichedUserDNFTForVault(vaultAddress: string, walletAddress: string, token: string): Promise<any[]>;
14
+ fetchUserSVTFromNfts(vaultAddress: string, userAddress: string, dnfts: number[], token: string): Promise<BigNumber[]>;
15
+ fetchAllUserWNFTForVault(vaultAddress: string, walletAddress: string, token: string): Promise<any[]>;
16
+ fetchAllUserDNFTForVault(vaultAddress: string, walletAddress: string, token: string): Promise<any[]>;
17
+ fetchAssetPerSvtAtBlock(vaultAddress: string, blocknumber: number, token: string): Promise<BigNumber>;
18
+ fetchFastWithdrawNFTs(vaultAddress: string, walletAddress: string, token: string): Promise<QLFastRedeem[]>;
19
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const WETH_TOKEN_ADDRESS = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
13
+ class DripApi {
14
+ constructor(route) {
15
+ this.route = route;
16
+ }
17
+ fetchAllVaults() {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const res = yield fetch(`${this.route}/api-be/api/vault`);
20
+ const data = yield res.json();
21
+ return data;
22
+ });
23
+ }
24
+ fetchVaultDetails(vaultAddress) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const res = yield fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
27
+ const data = yield res.json();
28
+ return data;
29
+ });
30
+ }
31
+ getSwapInfo(fromTokenAddress, toTokenAddress, amount, fromAddress) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ if (fromTokenAddress === toTokenAddress && fromTokenAddress === WETH_TOKEN_ADDRESS) {
34
+ return [];
35
+ }
36
+ const url = `${this.route}/oneinch?getRequest=/swap/v5.2/1/swap?fromTokenAddress=${fromTokenAddress}%26toTokenAddress=${toTokenAddress}%26amount=${amount.toString()}%26fromAddress=${fromAddress}%26slippage=0.1%26disableEstimate=true%26allowPartialFill=false%26includeTokensInfo=true`;
37
+ const res = yield fetch(url);
38
+ const data = yield res.json();
39
+ return [
40
+ {
41
+ swapTarget: data.tx.to,
42
+ token: data.fromToken.address,
43
+ swapCallData: data.tx.data,
44
+ }
45
+ ];
46
+ });
47
+ }
48
+ fetchUserSVTBalance(vaultAddress, walletAddress, token) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const headers = new Headers();
51
+ headers.append('Authorization', token);
52
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/svtBalance/${walletAddress}/${vaultAddress}`, {
53
+ headers,
54
+ });
55
+ const data = yield res.json();
56
+ return data;
57
+ });
58
+ }
59
+ fetchUserBalance(vaultAddress, walletAddress, token) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ const headers = new Headers();
62
+ headers.append('Authorization', token);
63
+ const res = yield fetch(`${this.route}/api-be/api/spool/userBalance/${walletAddress}/${vaultAddress}`, {
64
+ headers,
65
+ });
66
+ const data = yield res.json();
67
+ return data;
68
+ });
69
+ }
70
+ fetchEnrichedUserDNFTForVault(vaultAddress, walletAddress, token) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const headers = new Headers();
73
+ headers.append('Authorization', token);
74
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/dNft/${walletAddress}/${vaultAddress}`, {
75
+ headers,
76
+ });
77
+ const data = yield res.json();
78
+ return data;
79
+ });
80
+ }
81
+ fetchUserSVTFromNfts(vaultAddress, userAddress, dnfts, token) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const headers = new Headers();
84
+ headers.append('Authorization', token);
85
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/svtFromNft/${userAddress}/${vaultAddress}?dnfts=${dnfts.join(',')}`, {
86
+ headers: {
87
+ Authorization: token,
88
+ },
89
+ });
90
+ const data = yield res.json();
91
+ return data;
92
+ });
93
+ }
94
+ fetchAllUserWNFTForVault(vaultAddress, walletAddress, token) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const headers = new Headers();
97
+ headers.append('Authorization', token);
98
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/allWnft/${walletAddress}/${vaultAddress}`, {
99
+ headers
100
+ });
101
+ const data = yield res.json();
102
+ return data;
103
+ });
104
+ }
105
+ fetchAllUserDNFTForVault(vaultAddress, walletAddress, token) {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ const headers = new Headers();
108
+ headers.append('Authorization', token);
109
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/allDnft/${walletAddress}/${vaultAddress}`, {
110
+ headers
111
+ });
112
+ const data = yield res.json();
113
+ return data;
114
+ });
115
+ }
116
+ fetchAssetPerSvtAtBlock(vaultAddress, blocknumber, token) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ const headers = new Headers();
119
+ headers.append('Authorization', token);
120
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/assetBalance/${blocknumber}/${vaultAddress}`, {
121
+ headers,
122
+ });
123
+ const data = yield res.json();
124
+ return data;
125
+ });
126
+ }
127
+ fetchFastWithdrawNFTs(vaultAddress, walletAddress, token) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ const headers = new Headers();
130
+ headers.append('Authorization', token);
131
+ const res = yield fetch(`${this.route}/api-be/api/spool/user/fastWithdrawNft/${walletAddress}/${vaultAddress}`, {
132
+ headers,
133
+ });
134
+ const data = yield res.json();
135
+ return data;
136
+ });
137
+ }
138
+ }
139
+ exports.default = DripApi;
@@ -0,0 +1,11 @@
1
+ import { ContractAddresses, SDKConfig } from "@spool.fi/spool-v2-sdk";
2
+ import { Signer } from "ethers";
3
+ export declare class DripConfig {
4
+ internalConfig: SDKConfig;
5
+ dripRoute: string;
6
+ swapAndDepositContractAddress: string | undefined;
7
+ smartVaultManagerAddress: string | undefined;
8
+ constructor(subgraphUrl: string, priceFeedApiUrl: string, rewardsUrl: string, fastRedeemApi: string, contracts: Record<number, ContractAddresses>, dripRoute: string);
9
+ getSwapAndDepositContractAddress(signer: Signer): Promise<string>;
10
+ getSmartVaultManagerAddress(signer: Signer): Promise<string>;
11
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DripConfig = void 0;
13
+ const spool_v2_sdk_1 = require("@spool.fi/spool-v2-sdk");
14
+ class DripConfig {
15
+ constructor(subgraphUrl, priceFeedApiUrl, rewardsUrl, fastRedeemApi, contracts, dripRoute) {
16
+ this.internalConfig = new spool_v2_sdk_1.SDKConfig(subgraphUrl, priceFeedApiUrl, rewardsUrl, fastRedeemApi, contracts);
17
+ this.dripRoute = dripRoute;
18
+ }
19
+ getSwapAndDepositContractAddress(signer) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ if (!signer)
22
+ throw Error('No signer provided');
23
+ if (!this.swapAndDepositContractAddress) {
24
+ const contract = yield this.internalConfig.getChainAddresses(signer);
25
+ this.swapAndDepositContractAddress = contract.IDepositSwap;
26
+ }
27
+ return this.swapAndDepositContractAddress;
28
+ });
29
+ }
30
+ getSmartVaultManagerAddress(signer) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ if (!signer)
33
+ throw Error('No signer provided');
34
+ if (!this.smartVaultManagerAddress) {
35
+ const contract = yield this.internalConfig.getChainAddresses(signer);
36
+ this.smartVaultManagerAddress = contract.ISmartVaultManager;
37
+ }
38
+ return this.smartVaultManagerAddress;
39
+ });
40
+ }
41
+ }
42
+ exports.DripConfig = DripConfig;
@@ -0,0 +1,36 @@
1
+ import { Vault } from "./types/Vault";
2
+ import { Signer } from "ethers";
3
+ import { DripConfig } from "./DripConfig";
4
+ import { UserBalance } from "./types/UserBalance";
5
+ export default class DripSdk {
6
+ private dripApi;
7
+ private spoolSdk?;
8
+ private signer?;
9
+ private dripConfig;
10
+ constructor(dripConfig: DripConfig, signer?: Signer);
11
+ getAllVaults(): Promise<Vault[]>;
12
+ getVaultDetails(vaultAddress: string): Promise<Vault>;
13
+ getUserBalance(vault: Vault): Promise<UserBalance>;
14
+ private fastWithdraw;
15
+ private deposit;
16
+ private swapAndDeposit;
17
+ private withdraw;
18
+ private generateOldRedeemBagStruct;
19
+ private generateNewRedeemBagStruct;
20
+ private getAllSvts;
21
+ private getERC20Precission;
22
+ private calculateFastWithdrawBalancesOld;
23
+ private calculatePendingDepositsOld;
24
+ private calculateDepositsOld;
25
+ private calculatePendingDeposits;
26
+ private calculateAllDeposits;
27
+ private calculateBalanceForDNFT;
28
+ private checkIfUserHasWithdrawsToClaim;
29
+ private shouldUseNewWithdrawLogic;
30
+ private generateToken;
31
+ private calculateAllWithdrawalBalances;
32
+ private getTokenAllowanceForSwapAndDepositContractAddress;
33
+ private approveTokenForSwapAndDepositContract;
34
+ private getTokenAllowanceForDeposit;
35
+ private approveTokenForDeposit;
36
+ }