@wildcatfi/wildcat-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.
Files changed (93) hide show
  1. package/dist/account.d.ts +73 -0
  2. package/dist/account.d.ts.map +1 -0
  3. package/dist/account.js +145 -0
  4. package/dist/account.js.map +1 -0
  5. package/dist/constants.d.ts +12 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +23 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/controller.d.ts +12 -0
  10. package/dist/controller.d.ts.map +1 -0
  11. package/dist/controller.js +35 -0
  12. package/dist/controller.js.map +1 -0
  13. package/dist/index.d.ts +9 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +45 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/misc.d.ts +7 -0
  18. package/dist/misc.d.ts.map +1 -0
  19. package/dist/misc.js +15 -0
  20. package/dist/misc.js.map +1 -0
  21. package/dist/token.d.ts +39 -0
  22. package/dist/token.d.ts.map +1 -0
  23. package/dist/token.js +105 -0
  24. package/dist/token.js.map +1 -0
  25. package/dist/typechain/DebtTokenBase.d.ts +508 -0
  26. package/dist/typechain/DebtTokenBase.d.ts.map +1 -0
  27. package/dist/typechain/DebtTokenBase.js +3 -0
  28. package/dist/typechain/DebtTokenBase.js.map +1 -0
  29. package/dist/typechain/IERC20.d.ts +175 -0
  30. package/dist/typechain/IERC20.d.ts.map +1 -0
  31. package/dist/typechain/IERC20.js +3 -0
  32. package/dist/typechain/IERC20.js.map +1 -0
  33. package/dist/typechain/VaultLens.d.ts +207 -0
  34. package/dist/typechain/VaultLens.d.ts.map +1 -0
  35. package/dist/typechain/VaultLens.js +3 -0
  36. package/dist/typechain/VaultLens.js.map +1 -0
  37. package/dist/typechain/WildcatVaultController.d.ts +331 -0
  38. package/dist/typechain/WildcatVaultController.d.ts.map +1 -0
  39. package/dist/typechain/WildcatVaultController.js +3 -0
  40. package/dist/typechain/WildcatVaultController.js.map +1 -0
  41. package/dist/typechain/WildcatVaultFactory.d.ts +137 -0
  42. package/dist/typechain/WildcatVaultFactory.d.ts.map +1 -0
  43. package/dist/typechain/WildcatVaultFactory.js +3 -0
  44. package/dist/typechain/WildcatVaultFactory.js.map +1 -0
  45. package/dist/typechain/WildcatVaultToken.d.ts +556 -0
  46. package/dist/typechain/WildcatVaultToken.d.ts.map +1 -0
  47. package/dist/typechain/WildcatVaultToken.js +3 -0
  48. package/dist/typechain/WildcatVaultToken.js.map +1 -0
  49. package/dist/typechain/common.d.ts +23 -0
  50. package/dist/typechain/common.d.ts.map +1 -0
  51. package/dist/typechain/common.js +3 -0
  52. package/dist/typechain/common.js.map +1 -0
  53. package/dist/typechain/factories/DebtTokenBase__factory.d.ts +660 -0
  54. package/dist/typechain/factories/DebtTokenBase__factory.d.ts.map +1 -0
  55. package/dist/typechain/factories/DebtTokenBase__factory.js +867 -0
  56. package/dist/typechain/factories/DebtTokenBase__factory.js.map +1 -0
  57. package/dist/typechain/factories/IERC20__factory.d.ts +185 -0
  58. package/dist/typechain/factories/IERC20__factory.d.ts.map +1 -0
  59. package/dist/typechain/factories/IERC20__factory.js +251 -0
  60. package/dist/typechain/factories/IERC20__factory.js.map +1 -0
  61. package/dist/typechain/factories/VaultLens__factory.d.ts +405 -0
  62. package/dist/typechain/factories/VaultLens__factory.d.ts.map +1 -0
  63. package/dist/typechain/factories/VaultLens__factory.js +536 -0
  64. package/dist/typechain/factories/VaultLens__factory.js.map +1 -0
  65. package/dist/typechain/factories/WildcatVaultController__factory.d.ts +465 -0
  66. package/dist/typechain/factories/WildcatVaultController__factory.d.ts.map +1 -0
  67. package/dist/typechain/factories/WildcatVaultController__factory.js +612 -0
  68. package/dist/typechain/factories/WildcatVaultController__factory.js.map +1 -0
  69. package/dist/typechain/factories/WildcatVaultFactory__factory.d.ts +196 -0
  70. package/dist/typechain/factories/WildcatVaultFactory__factory.d.ts.map +1 -0
  71. package/dist/typechain/factories/WildcatVaultFactory__factory.js +266 -0
  72. package/dist/typechain/factories/WildcatVaultFactory__factory.js.map +1 -0
  73. package/dist/typechain/factories/WildcatVaultToken__factory.d.ts +678 -0
  74. package/dist/typechain/factories/WildcatVaultToken__factory.d.ts.map +1 -0
  75. package/dist/typechain/factories/WildcatVaultToken__factory.js +889 -0
  76. package/dist/typechain/factories/WildcatVaultToken__factory.js.map +1 -0
  77. package/dist/typechain/factories/index.d.ts +7 -0
  78. package/dist/typechain/factories/index.d.ts.map +1 -0
  79. package/dist/typechain/factories/index.js +16 -0
  80. package/dist/typechain/factories/index.js.map +1 -0
  81. package/dist/typechain/index.d.ts +8 -0
  82. package/dist/typechain/index.d.ts.map +1 -0
  83. package/dist/typechain/index.js +18 -0
  84. package/dist/typechain/index.js.map +1 -0
  85. package/dist/types.d.ts +19 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/types.js +40 -0
  88. package/dist/types.js.map +1 -0
  89. package/dist/vault.d.ts +72 -0
  90. package/dist/vault.d.ts.map +1 -0
  91. package/dist/vault.js +170 -0
  92. package/dist/vault.js.map +1 -0
  93. package/package.json +41 -0
@@ -0,0 +1,73 @@
1
+ import { BigNumber, ContractTransaction } from "ethers";
2
+ import { TokenAmount } from "./token";
3
+ import { Vault } from "./vault";
4
+ import { AccountVaultInfoStructOutput } from "./typechain";
5
+ export type DepositStatus = {
6
+ status: "InsufficientBalance";
7
+ } | {
8
+ status: "ExceedsMaximumDeposit";
9
+ } | {
10
+ status: "InsufficientAllowance";
11
+ remainder: TokenAmount;
12
+ } | {
13
+ status: "Ready";
14
+ };
15
+ /**
16
+ * Class to provide information about a vault user's account
17
+ * and to wrap interactions.
18
+ *
19
+ * Use `update()` to update the account's state.
20
+ *
21
+ *
22
+ */
23
+ export declare class VaultAccount {
24
+ account: string;
25
+ vaultBalance: TokenAmount;
26
+ underlyingBalance: TokenAmount;
27
+ underlyingApproval: BigNumber;
28
+ vault: Vault;
29
+ constructor(account: string, vaultBalance: TokenAmount, underlyingBalance: TokenAmount, underlyingApproval: BigNumber, vault: Vault);
30
+ static readonly UpdatableKeys: Array<keyof VaultAccount>;
31
+ isBorrower(): boolean;
32
+ setAPR(newAprBips: number): Promise<ContractTransaction>;
33
+ approveAllowanceRemainder(amount: TokenAmount): Promise<ContractTransaction>;
34
+ deposit(amount: TokenAmount): Promise<ContractTransaction>;
35
+ withdraw(amount: TokenAmount): Promise<ContractTransaction>;
36
+ /**
37
+ * @returns Amount of underlying token borrower can borrow
38
+ */
39
+ getBorrowableAmount(amount: TokenAmount): TokenAmount;
40
+ update(): Promise<void>;
41
+ /**
42
+ * @returns Maximum amount of underlying token user can deposit
43
+ * given their underlying balance and the vault's max supply
44
+ */
45
+ get maximumDeposit(): TokenAmount;
46
+ /**
47
+ * @returns Amount of underlying token user can withdraw
48
+ * given their vault balance and the vault's assets.
49
+ */
50
+ get maximumWithdrawal(): TokenAmount;
51
+ /**
52
+ * @returns Amount of underlying token user can actually deposit
53
+ * given a target amount.
54
+ */
55
+ getDepositAmount(amount: TokenAmount): TokenAmount;
56
+ /**
57
+ * @returns Amount of underlying token user can actually withdraw
58
+ * given a target amount.
59
+ */
60
+ getWithdrawalAmount(amount: TokenAmount): TokenAmount;
61
+ isApprovedFor(amount: TokenAmount): boolean;
62
+ /**
63
+ * @returns Remaining amount of underlying token user must approve
64
+ * vault to spend to make a deposit.
65
+ */
66
+ getAllowanceRemainder(amount: TokenAmount): TokenAmount;
67
+ /**
68
+ * @returns Status for deposit
69
+ */
70
+ checkDepositStep(amount: TokenAmount): DepositStatus;
71
+ static fromAccountVaultInfoStruct(account: string, info: AccountVaultInfoStructOutput, vault: Vault): VaultAccount;
72
+ }
73
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAI3D,MAAM,MAAM,aAAa,GACrB;IACE,MAAM,EAAE,qBAAqB,CAAC;CAC/B,GACD;IACE,MAAM,EAAE,uBAAuB,CAAC;CACjC,GACD;IACE,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,WAAW,CAAC;CACxB,GACD;IACE,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEN;;;;;;;GAOG;AACH,qBAAa,YAAY;IAEd,OAAO,EAAE,MAAM;IACf,YAAY,EAAE,WAAW;IACzB,iBAAiB,EAAE,WAAW;IAC9B,kBAAkB,EAAE,SAAS;IAC7B,KAAK,EAAE,KAAK;gBAJZ,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,WAAW,EACzB,iBAAiB,EAAE,WAAW,EAC9B,kBAAkB,EAAE,SAAS,EAC7B,KAAK,EAAE,KAAK;IAGrB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,YAAY,CAAC,CAItD;IAEF,UAAU,IAAI,OAAO;IAIf,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiBxD,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAW5E,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAW1D,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQjE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAI/C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;;OAGG;IACH,IAAI,cAAc,IAAI,WAAW,CAEhC;IAED;;;OAGG;IACH,IAAI,iBAAiB,IAAI,WAAW,CAEnC;IAED;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAIlD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAIrD,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI3C;;;OAGG;IACH,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAIvD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAgBpD,MAAM,CAAC,0BAA0B,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,4BAA4B,EAClC,KAAK,EAAE,KAAK,GACX,YAAY;CAShB"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VaultAccount = void 0;
4
+ const token_1 = require("./token");
5
+ const misc_1 = require("./misc");
6
+ const constants_1 = require("./constants");
7
+ /**
8
+ * Class to provide information about a vault user's account
9
+ * and to wrap interactions.
10
+ *
11
+ * Use `update()` to update the account's state.
12
+ *
13
+ *
14
+ */
15
+ class VaultAccount {
16
+ constructor(account, vaultBalance, underlyingBalance, underlyingApproval, vault) {
17
+ this.account = account;
18
+ this.vaultBalance = vaultBalance;
19
+ this.underlyingBalance = underlyingBalance;
20
+ this.underlyingApproval = underlyingApproval;
21
+ this.vault = vault;
22
+ }
23
+ isBorrower() {
24
+ return this.vault.borrower.toLowerCase() === this.account.toLowerCase();
25
+ }
26
+ async setAPR(newAprBips) {
27
+ if (!this.isBorrower) {
28
+ throw Error("Only borrower can set APR");
29
+ }
30
+ if (newAprBips > 10000) {
31
+ throw Error("APR must be less than 100% (10000 BIPS)");
32
+ }
33
+ if (!this.vault.canChangeAPR) {
34
+ throw Error("APR cannot be changed - change in progress");
35
+ }
36
+ const controller = (0, constants_1.getControllerContract)(this.vault.provider);
37
+ if (this.vault.controller !== controller.address) {
38
+ throw Error(`Unexpected controller address: ${this.vault.controller}`);
39
+ }
40
+ return controller.reduceInterestRate(this.vault.address, newAprBips);
41
+ }
42
+ async approveAllowanceRemainder(amount) {
43
+ const token = this.vault.underlyingToken;
44
+ const signer = await token.signer.getAddress();
45
+ if (signer !== this.account) {
46
+ throw Error(`VaultAccount signer ${signer} does not match ${this.account}`);
47
+ }
48
+ amount = this.getAllowanceRemainder(amount);
49
+ return token.contract.approve(this.vault.address, amount.raw);
50
+ }
51
+ // TODO: Add support for depositUpTo
52
+ async deposit(amount) {
53
+ const signer = await this.vault.signer.getAddress();
54
+ if (signer !== this.account) {
55
+ throw Error(`VaultAccount signer ${signer} does not match ${this.account}`);
56
+ }
57
+ if (amount.gt(this.underlyingBalance)) {
58
+ throw Error("Insufficient balance");
59
+ }
60
+ return this.vault.contract.deposit(amount.raw, this.account);
61
+ }
62
+ async withdraw(amount) {
63
+ const signer = await this.vault.signer.getAddress();
64
+ if (signer !== this.account) {
65
+ throw Error(`VaultAccount signer ${signer} does not match ${this.account}`);
66
+ }
67
+ return this.vault.contract.withdraw(amount.raw, this.account);
68
+ }
69
+ /**
70
+ * @returns Amount of underlying token borrower can borrow
71
+ */
72
+ getBorrowableAmount(amount) {
73
+ return (0, token_1.minTokenAmount)(amount, this.vault.borrowableAssets);
74
+ }
75
+ async update() {
76
+ const acccountVaultInfo = await this.vault.getAccountInfo();
77
+ (0, misc_1.updateObject)(this, acccountVaultInfo, VaultAccount.UpdatableKeys);
78
+ }
79
+ /**
80
+ * @returns Maximum amount of underlying token user can deposit
81
+ * given their underlying balance and the vault's max supply
82
+ */
83
+ get maximumDeposit() {
84
+ return (0, token_1.minTokenAmount)(this.vault.maximumDeposit, this.underlyingBalance);
85
+ }
86
+ /**
87
+ * @returns Amount of underlying token user can withdraw
88
+ * given their vault balance and the vault's assets.
89
+ */
90
+ get maximumWithdrawal() {
91
+ return (0, token_1.minTokenAmount)(this.vault.totalAssets, this.vaultBalance);
92
+ }
93
+ /**
94
+ * @returns Amount of underlying token user can actually deposit
95
+ * given a target amount.
96
+ */
97
+ getDepositAmount(amount) {
98
+ return (0, token_1.minTokenAmount)(amount, this.maximumDeposit);
99
+ }
100
+ /**
101
+ * @returns Amount of underlying token user can actually withdraw
102
+ * given a target amount.
103
+ */
104
+ getWithdrawalAmount(amount) {
105
+ return (0, token_1.minTokenAmount)(amount, this.maximumWithdrawal);
106
+ }
107
+ isApprovedFor(amount) {
108
+ return this.underlyingApproval.gte(amount.raw);
109
+ }
110
+ /**
111
+ * @returns Remaining amount of underlying token user must approve
112
+ * vault to spend to make a deposit.
113
+ */
114
+ getAllowanceRemainder(amount) {
115
+ return amount.satsub(this.underlyingApproval);
116
+ }
117
+ /**
118
+ * @returns Status for deposit
119
+ */
120
+ checkDepositStep(amount) {
121
+ if (amount.gt(this.vault.maximumDeposit)) {
122
+ return { status: "ExceedsMaximumDeposit" };
123
+ }
124
+ if (amount.gt(this.underlyingBalance)) {
125
+ return { status: "InsufficientBalance" };
126
+ }
127
+ if (!this.isApprovedFor(amount)) {
128
+ return {
129
+ status: "InsufficientAllowance",
130
+ remainder: this.getAllowanceRemainder(amount)
131
+ };
132
+ }
133
+ return { status: "Ready" };
134
+ }
135
+ static fromAccountVaultInfoStruct(account, info, vault) {
136
+ return new VaultAccount(account, vault.vaultToken.getAmount(info.normalizedBalance), vault.underlyingToken.getAmount(info.underlyingBalance), info.underlyingApproval, vault);
137
+ }
138
+ }
139
+ VaultAccount.UpdatableKeys = [
140
+ "vaultBalance",
141
+ "underlyingBalance",
142
+ "underlyingApproval"
143
+ ];
144
+ exports.VaultAccount = VaultAccount;
145
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { BigNumber } from "ethers";
2
+ import { VaultLens, WildcatVaultController, WildcatVaultFactory } from "./typechain";
3
+ import { SignerOrProvider } from "./types";
4
+ export declare const LensAddress = "0xDdcBBC4510156441F88D23A6ab4c64eed1775C16";
5
+ export declare const FactoryAddress = "0x2050084919527BDE33Ff2dc9ef3768B2E335AC71";
6
+ export declare const ControllerAddress = "0x41176b30395e1eea87dd6deb6d796c56097f6fa0";
7
+ export declare const getControllerContract: (provider: SignerOrProvider) => WildcatVaultController;
8
+ export declare const getFactoryContract: (provider: SignerOrProvider) => WildcatVaultFactory;
9
+ export declare const getLensContract: (provider: SignerOrProvider) => VaultLens;
10
+ export declare const RAY: BigNumber;
11
+ export declare const WAD: BigNumber;
12
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EACL,SAAS,EAET,sBAAsB,EAEtB,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,+CAA+C,CAAC;AACxE,eAAO,MAAM,cAAc,+CAA+C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,+CAA+C,CAAC;AAE9E,eAAO,MAAM,qBAAqB,aAAc,gBAAgB,KAAG,sBAElE,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAc,gBAAgB,KAAG,mBAE/D,CAAC;AAEF,eAAO,MAAM,eAAe,aAAc,gBAAgB,KAAG,SAE5D,CAAC;AAEF,eAAO,MAAM,GAAG,WAA6B,CAAC;AAC9C,eAAO,MAAM,GAAG,WAA6B,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WAD = exports.RAY = exports.getLensContract = exports.getFactoryContract = exports.getControllerContract = exports.ControllerAddress = exports.FactoryAddress = exports.LensAddress = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const typechain_1 = require("./typechain");
6
+ exports.LensAddress = "0xDdcBBC4510156441F88D23A6ab4c64eed1775C16";
7
+ exports.FactoryAddress = "0x2050084919527BDE33Ff2dc9ef3768B2E335AC71";
8
+ exports.ControllerAddress = "0x41176b30395e1eea87dd6deb6d796c56097f6fa0";
9
+ const getControllerContract = (provider) => {
10
+ return typechain_1.WildcatVaultController__factory.connect(exports.ControllerAddress, provider);
11
+ };
12
+ exports.getControllerContract = getControllerContract;
13
+ const getFactoryContract = (provider) => {
14
+ return typechain_1.WildcatVaultFactory__factory.connect(exports.FactoryAddress, provider);
15
+ };
16
+ exports.getFactoryContract = getFactoryContract;
17
+ const getLensContract = (provider) => {
18
+ return typechain_1.VaultLens__factory.connect(exports.LensAddress, provider);
19
+ };
20
+ exports.getLensContract = getLensContract;
21
+ exports.RAY = ethers_1.BigNumber.from(10).pow(27);
22
+ exports.WAD = ethers_1.BigNumber.from(10).pow(18);
23
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,2CAOqB;AAGR,QAAA,WAAW,GAAG,4CAA4C,CAAC;AAC3D,QAAA,cAAc,GAAG,4CAA4C,CAAC;AAC9D,QAAA,iBAAiB,GAAG,4CAA4C,CAAC;AAEvE,MAAM,qBAAqB,GAAG,CAAC,QAA0B,EAA0B,EAAE;IAC1F,OAAO,2CAA+B,CAAC,OAAO,CAAC,yBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEK,MAAM,kBAAkB,GAAG,CAAC,QAA0B,EAAuB,EAAE;IACpF,OAAO,wCAA4B,CAAC,OAAO,CAAC,sBAAc,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEK,MAAM,eAAe,GAAG,CAAC,QAA0B,EAAa,EAAE;IACvE,OAAO,8BAAkB,CAAC,OAAO,CAAC,mBAAW,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEW,QAAA,GAAG,GAAG,kBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,GAAG,GAAG,kBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { WildcatVaultController, WildcatVaultController__factory } from "./typechain";
2
+ import { ContractWrapper, SignerOrProvider } from "./types";
3
+ import { Vault } from "./vault";
4
+ export declare class VaultController extends ContractWrapper<WildcatVaultController> {
5
+ address: string;
6
+ readonly contractFactory: typeof WildcatVaultController__factory;
7
+ constructor(address: string, provider: SignerOrProvider);
8
+ isKnownVault(vault: string): Promise<boolean>;
9
+ getAllVaults(provider: SignerOrProvider): Promise<Vault[]>;
10
+ static getController(provider: SignerOrProvider): Promise<VaultController>;
11
+ }
12
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAOtF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,eAAgB,SAAQ,eAAe,CAAC,sBAAsB,CAAC;IAGvD,OAAO,EAAE,MAAM;IAFlC,QAAQ,CAAC,eAAe,yCAAmC;gBAExC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;IAIxD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU7C,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;WAWnD,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAGjF"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VaultController = void 0;
4
+ const typechain_1 = require("./typechain");
5
+ const constants_1 = require("./constants");
6
+ const types_1 = require("./types");
7
+ const vault_1 = require("./vault");
8
+ class VaultController extends types_1.ContractWrapper {
9
+ constructor(address, provider) {
10
+ super(provider);
11
+ this.address = address;
12
+ this.contractFactory = typechain_1.WildcatVaultController__factory;
13
+ }
14
+ async isKnownVault(vault) {
15
+ return await this.contract.vaults(vault);
16
+ }
17
+ // async getTemporaryExcessLiquidityCoverage(vault: string) {
18
+ // const { expiry, liquidityCoverageRatio } = await this.contract.temporaryExcessLiquidityCoverage(
19
+ // vault
20
+ // );
21
+ // }
22
+ async getAllVaults(provider) {
23
+ const controller = (0, constants_1.getControllerContract)(provider);
24
+ const factory = (0, constants_1.getFactoryContract)(provider);
25
+ const vaults = (await this.contract.queryFilter(factory.filters.VaultDeployed(controller.address), 3399789)).map(({ args: { vault } }) => vault);
26
+ console.log("vaults", vaults);
27
+ const metadatas = await (0, constants_1.getLensContract)(provider).getVaultsMetadata(vaults);
28
+ return metadatas.map((x) => vault_1.Vault.fromVaultMetadataStruct(x, provider));
29
+ }
30
+ static async getController(provider) {
31
+ return new VaultController(constants_1.ControllerAddress, provider);
32
+ }
33
+ }
34
+ exports.VaultController = VaultController;
35
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":";;;AAAA,2CAAsF;AACtF,2CAKqB;AACrB,mCAA4D;AAC5D,mCAAgC;AAEhC,MAAa,eAAgB,SAAQ,uBAAuC;IAG1E,YAAmB,OAAe,EAAE,QAA0B;QAC5D,KAAK,CAAC,QAAQ,CAAC,CAAC;QADC,YAAO,GAAP,OAAO,CAAQ;QAFzB,oBAAe,GAAG,2CAA+B,CAAC;IAI3D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,6DAA6D;IAC7D,mGAAmG;IACnG,QAAQ;IACR,KAAK;IACL,IAAI;IAEJ,KAAK,CAAC,YAAY,CAAC,QAA0B;QAC3C,MAAM,UAAU,GAAG,IAAA,iCAAqB,EAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAA,8BAAkB,EAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,CACb,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAC5F,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAe,EAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAA0B;QACnD,OAAO,IAAI,eAAe,CAAC,6BAAiB,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;CACF;AA/BD,0CA+BC"}
@@ -0,0 +1,9 @@
1
+ import { SignerOrProvider } from "./types";
2
+ import { Vault } from "./vault";
3
+ export * from "./vault";
4
+ export { Signer, Provider, SignerOrProvider } from "./types";
5
+ export * from "./account";
6
+ export * from "./controller";
7
+ export * from "./token";
8
+ export declare function getAllVaults(provider: SignerOrProvider): Promise<Vault[]>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC7D,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,wBAAsB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAmB/E"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getAllVaults = exports.Provider = exports.Signer = void 0;
18
+ const constants_1 = require("./constants");
19
+ const types_1 = require("./types");
20
+ const vault_1 = require("./vault");
21
+ __exportStar(require("./vault"), exports);
22
+ var types_2 = require("./types");
23
+ Object.defineProperty(exports, "Signer", { enumerable: true, get: function () { return types_2.Signer; } });
24
+ Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return types_2.Provider; } });
25
+ __exportStar(require("./account"), exports);
26
+ __exportStar(require("./controller"), exports);
27
+ __exportStar(require("./token"), exports);
28
+ async function getAllVaults(provider) {
29
+ // const controller = getControllerContract(provider);
30
+ const factory = (0, constants_1.getFactoryContract)(provider);
31
+ const currentBlock = await (provider instanceof types_1.Provider
32
+ ? provider
33
+ : provider.provider).getBlockNumber();
34
+ const vaults = [];
35
+ for (let block = 3399789; block < currentBlock; block += 5000) {
36
+ const from = block;
37
+ const to = Math.min(block + 5000, currentBlock);
38
+ const newVaults = (await factory.queryFilter(factory.filters.VaultDeployed(), from, to)).map(({ args: { vault } }) => vault);
39
+ vaults.push(...newVaults);
40
+ }
41
+ const metadatas = await (0, constants_1.getLensContract)(provider).getVaultsMetadata(vaults);
42
+ return metadatas.map((x) => vault_1.Vault.fromVaultMetadataStruct(x, provider));
43
+ }
44
+ exports.getAllVaults = getAllVaults;
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,mCAAqD;AACrD,mCAAgC;AAChC,0CAAwB;AACxB,iCAA6D;AAApD,+FAAA,MAAM,OAAA;AAAE,iGAAA,QAAQ,OAAA;AACzB,4CAA0B;AAC1B,+CAA6B;AAC7B,0CAAwB;AAEjB,KAAK,UAAU,YAAY,CAAC,QAA0B;IAC3D,sDAAsD;IACtD,MAAM,OAAO,GAAG,IAAA,8BAAkB,EAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,YAAY,gBAAQ;QACtD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ,CAAC,QAAS,CACrB,CAAC,cAAc,EAAE,CAAC;IACnB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAC1F,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAC/B,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;KAC3B;IACD,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAe,EAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC;AAnBD,oCAmBC"}
package/dist/misc.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type OnlyValueFields<C> = {
2
+ [K in ValueFields<C, keyof C>]: C[K];
3
+ };
4
+ export type ValueFields<C, K extends keyof C> = K extends string ? K extends keyof C ? C[K] extends (...args: any[]) => any ? never : K : never : never;
5
+ export declare function updateValue<O, K extends keyof O>(obj: O, otherObj: O, key: K): void;
6
+ export declare function updateObject<O>(obj: O, otherObj: O, keys: Array<keyof O>): void;
7
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;KAC9B,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,GAC5D,CAAC,SAAS,MAAM,CAAC,GACf,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,KAAK,GACL,CAAC,GACH,KAAK,GACP,KAAK,CAAC;AAIV,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAEnF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAI/E"}
package/dist/misc.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateObject = exports.updateValue = void 0;
4
+ // type Keys<C> = keyof OnlyValueFields<C> & string;
5
+ function updateValue(obj, otherObj, key) {
6
+ obj[key] = otherObj[key];
7
+ }
8
+ exports.updateValue = updateValue;
9
+ function updateObject(obj, otherObj, keys) {
10
+ for (const key of keys) {
11
+ updateValue(obj, otherObj, key);
12
+ }
13
+ }
14
+ exports.updateObject = updateObject;
15
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":";;;AAYA,oDAAoD;AAEpD,SAAgB,WAAW,CAAuB,GAAM,EAAE,QAAW,EAAE,GAAM;IAC3E,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAFD,kCAEC;AAED,SAAgB,YAAY,CAAI,GAAM,EAAE,QAAW,EAAE,IAAoB;IACvE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;KACjC;AACH,CAAC;AAJD,oCAIC"}
@@ -0,0 +1,39 @@
1
+ import { BigNumber, BigNumberish } from "ethers";
2
+ import { TokenMetadataStructOutput } from "./typechain";
3
+ import { ContractWrapper, SignerOrProvider } from "./types";
4
+ import { IERC20, IERC20__factory } from "./typechain";
5
+ type RhsAmount = BigNumberish | TokenAmount;
6
+ export declare const maxTokenAmount: (...amounts: TokenAmount[]) => TokenAmount;
7
+ export declare const minTokenAmount: (...amounts: TokenAmount[]) => TokenAmount;
8
+ export declare class TokenAmount {
9
+ raw: BigNumber;
10
+ token: Token;
11
+ constructor(raw: BigNumber, token: Token);
12
+ get name(): string;
13
+ get symbol(): string;
14
+ get decimals(): number;
15
+ toFixed(digits?: number): number;
16
+ format(digits?: number, withSymbol?: boolean): string;
17
+ gt(amount: RhsAmount): boolean;
18
+ lt(amount: RhsAmount): boolean;
19
+ lte(amount: RhsAmount): boolean;
20
+ gte(amount: RhsAmount): boolean;
21
+ eq(amount: RhsAmount): boolean;
22
+ add(amount: RhsAmount): TokenAmount;
23
+ sub(amount: RhsAmount): TokenAmount;
24
+ satsub(amount: RhsAmount): TokenAmount;
25
+ }
26
+ export declare class Token extends ContractWrapper<IERC20> {
27
+ address: string;
28
+ name: string;
29
+ symbol: string;
30
+ decimals: number;
31
+ readonly contractFactory: typeof IERC20__factory;
32
+ constructor(address: string, name: string, symbol: string, decimals: number, provider: SignerOrProvider);
33
+ getAmount(amount: RhsAmount): TokenAmount;
34
+ parseAmount(amount: number | string): TokenAmount;
35
+ static fromTokenMetadataStruct(metadata: TokenMetadataStructOutput, provider: SignerOrProvider): Token;
36
+ static getTokenInfo(token: string, provider: SignerOrProvider): Promise<Token>;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEtD,KAAK,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;AAQ5C,eAAO,MAAM,cAAc,eAAgB,WAAW,EAAE,KAAG,WACtB,CAAC;AAEtC,eAAO,MAAM,cAAc,eAAgB,WAAW,EAAE,KAAG,WACtB,CAAC;AAEtC,qBAAa,WAAW;IACH,GAAG,EAAE,SAAS;IAAS,KAAK,EAAE,KAAK;gBAAnC,GAAG,EAAE,SAAS,EAAS,KAAK,EAAE,KAAK;IAEtD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,OAAO,CAAC,MAAM,SAAgB,GAAG,MAAM;IAKvC,MAAM,CAAC,MAAM,SAAgB,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM;IAI5D,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK9B,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK9B,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK/B,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK/B,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK9B,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW;IAKnC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW;IAKnC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW;CASvC;AAED,qBAAa,KAAM,SAAQ,eAAe,CAAC,MAAM,CAAC;IAIvC,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IANzB,QAAQ,CAAC,eAAe,yBAAmB;gBAGlC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EACvB,QAAQ,EAAE,gBAAgB;IAK5B,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW;IAIzC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAKjD,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,yBAAyB,EACnC,QAAQ,EAAE,gBAAgB,GACzB,KAAK;WAUK,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;CAKrF"}
package/dist/token.js ADDED
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Token = exports.TokenAmount = exports.minTokenAmount = exports.maxTokenAmount = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const utils_1 = require("ethers/lib/utils");
6
+ const types_1 = require("./types");
7
+ const constants_1 = require("./constants");
8
+ const typechain_1 = require("./typechain");
9
+ const toBn = (amount) => {
10
+ if (amount instanceof TokenAmount) {
11
+ return amount.raw;
12
+ }
13
+ return ethers_1.BigNumber.from(amount);
14
+ };
15
+ const maxTokenAmount = (...amounts) => amounts.sort((a, b) => +a.lt(b))[0];
16
+ exports.maxTokenAmount = maxTokenAmount;
17
+ const minTokenAmount = (...amounts) => amounts.sort((a, b) => +a.gt(b))[0];
18
+ exports.minTokenAmount = minTokenAmount;
19
+ class TokenAmount {
20
+ constructor(raw, token) {
21
+ this.raw = raw;
22
+ this.token = token;
23
+ }
24
+ get name() {
25
+ return this.token.name;
26
+ }
27
+ get symbol() {
28
+ return this.token.symbol;
29
+ }
30
+ get decimals() {
31
+ return this.token.decimals;
32
+ }
33
+ toFixed(digits = this.decimals) {
34
+ const str = (0, utils_1.formatUnits)(this.raw, this.decimals);
35
+ return +parseFloat(str).toFixed(digits);
36
+ }
37
+ format(digits = this.decimals, withSymbol) {
38
+ return `${this.toFixed(digits)}${withSymbol ? " " + this.symbol : ""}`;
39
+ }
40
+ gt(amount) {
41
+ amount = toBn(amount);
42
+ return this.raw.gt(amount);
43
+ }
44
+ lt(amount) {
45
+ amount = toBn(amount);
46
+ return this.raw.lt(amount);
47
+ }
48
+ lte(amount) {
49
+ amount = toBn(amount);
50
+ return this.raw.lte(amount);
51
+ }
52
+ gte(amount) {
53
+ amount = toBn(amount);
54
+ return this.raw.gte(amount);
55
+ }
56
+ eq(amount) {
57
+ amount = toBn(amount);
58
+ return this.raw.eq(amount);
59
+ }
60
+ add(amount) {
61
+ amount = toBn(amount);
62
+ return this.token.getAmount(this.raw.add(amount));
63
+ }
64
+ sub(amount) {
65
+ amount = toBn(amount);
66
+ return this.token.getAmount(this.raw.sub(amount));
67
+ }
68
+ satsub(amount) {
69
+ amount = toBn(amount);
70
+ const a = this.raw;
71
+ const b = amount;
72
+ if (a.lt(b)) {
73
+ return this.token.getAmount(ethers_1.BigNumber.from(0));
74
+ }
75
+ return this.token.getAmount(a.sub(b));
76
+ }
77
+ }
78
+ exports.TokenAmount = TokenAmount;
79
+ class Token extends types_1.ContractWrapper {
80
+ constructor(address, name, symbol, decimals, provider) {
81
+ super(provider);
82
+ this.address = address;
83
+ this.name = name;
84
+ this.symbol = symbol;
85
+ this.decimals = decimals;
86
+ this.contractFactory = typechain_1.IERC20__factory;
87
+ }
88
+ getAmount(amount) {
89
+ return new TokenAmount(toBn(amount), this);
90
+ }
91
+ parseAmount(amount) {
92
+ const bnAmount = (0, utils_1.parseUnits)(amount.toString(), this.decimals);
93
+ return this.getAmount(bnAmount);
94
+ }
95
+ static fromTokenMetadataStruct(metadata, provider) {
96
+ return new Token(metadata.token, metadata.name, metadata.symbol, metadata.decimals.toNumber(), provider);
97
+ }
98
+ static async getTokenInfo(token, provider) {
99
+ const lens = (0, constants_1.getLensContract)(provider);
100
+ const metadata = await lens.getTokenInfo(token);
101
+ return Token.fromTokenMetadataStruct(metadata, provider);
102
+ }
103
+ }
104
+ exports.Token = Token;
105
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}