Skip to content

Commit 1b10c00

Browse files
committed
fix: simplify price feed constructors a bit
1 parent 36dae41 commit 1b10c00

29 files changed

+53
-88
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
.DS_Store
55
/forge-out/
66
/cache/
7+
/dist/
78
.env
89
.eslint.local.json
910
example-state.json

src/base/BaseContract.ts

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,28 +28,32 @@ import { SDKConstruct } from "./SDKConstruct";
2828

2929
export interface BaseContractOptions<abi extends Abi | readonly unknown[]> {
3030
abi: abi;
31-
address: Address;
31+
addr: Address;
3232
name?: string;
33-
version?: number;
33+
version?: number | bigint;
3434
contractType?: string;
3535
}
3636

3737
export abstract class BaseContract<
3838
abi extends Abi | readonly unknown[],
3939
> extends SDKConstruct {
40-
contract: GetContractReturnType<abi, { public: Client }, Address>;
40+
public readonly contract: GetContractReturnType<
41+
abi,
42+
{ public: Client },
43+
Address
44+
>;
4145
public readonly abi: abi;
4246
public readonly logger?: ILogger;
47+
public readonly contractType: string;
48+
public version: number;
4349

44-
version: number;
45-
contractType: string;
4650
#name: string;
4751
#address: Address;
4852

4953
constructor(sdk: GearboxSDK, args: BaseContractOptions<abi>) {
5054
super(sdk);
5155
this.abi = args.abi;
52-
this.#address = args.address.toLowerCase() as Address;
56+
this.#address = args.addr;
5357

5458
this.contract = getContract({
5559
address: this.address,
@@ -58,7 +62,7 @@ export abstract class BaseContract<
5862
public: sdk.provider.publicClient,
5963
},
6064
});
61-
this.version = args.version || 0;
65+
this.version = Number(args.version || 0);
6266
this.contractType = args.contractType ?? "";
6367
if (isHex(this.contractType)) {
6468
this.contractType = bytes32ToString(this.contractType);
@@ -71,35 +75,35 @@ export abstract class BaseContract<
7175
sdk.contracts.upsert(this.address, this);
7276
}
7377

74-
get address(): Address {
78+
public get address(): Address {
7579
return this.#address;
7680
}
7781

78-
set address(address: Address) {
82+
public set address(address: Address) {
7983
if (this.#address !== ADDRESS_0X0) {
8084
throw new Error(`Address can't be changed, currently: ${this.#address}`);
8185
}
8286
this.#address = address;
8387
this.addressLabels.set(address, this.#name);
8488
}
8589

86-
test_setAddress(address: Address) {
90+
public test_setAddress(address: Address) {
8791
this.#address = address;
8892
this.addressLabels.set(address, this.#name);
8993
}
9094

91-
get name(): string {
95+
public get name(): string {
9296
return this.#name;
9397
}
9498

95-
set name(name: string) {
99+
public set name(name: string) {
96100
this.#name = name;
97101
if (this.#address !== ADDRESS_0X0) {
98102
this.addressLabels.set(this.#address, name);
99103
}
100104
}
101105

102-
get contractData(): BaseContractState {
106+
public get contractData(): BaseContractState {
103107
return {
104108
address: this.address,
105109
version: this.version,
@@ -113,6 +117,11 @@ export abstract class BaseContract<
113117
*/
114118
public parseLog(_log: Log): void {}
115119

120+
/**
121+
* Converts contract calldata to some human-friendly string
122+
* @param calldata
123+
* @returns
124+
*/
116125
public parseFunctionData(calldata: Hex): string {
117126
const decoded = decodeFunctionData({
118127
abi: this.abi,
@@ -147,13 +156,13 @@ export abstract class BaseContract<
147156
return `${this.name}.${decoded.functionName}({${paramsHuman.join(", ")}})`;
148157
}
149158

150-
parseFunctionParams(
159+
public parseFunctionParams(
151160
_params: DecodeFunctionDataReturnType<abi>,
152161
): Array<string> | undefined {
153162
return undefined;
154163
}
155164

156-
async getVersion(): Promise<number> {
165+
public async getVersion(): Promise<number> {
157166
this.version = Number(
158167
await this.sdk.provider.publicClient.readContract({
159168
abi: iVersionAbi,

src/core/AddressProviderV3_1Contract.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class AddressProviderContractV3_1 extends BaseContract<abi> {
1616

1717
constructor(sdk: GearboxSDK, address: Address) {
1818
super(sdk, {
19-
address,
19+
addr: address,
2020
name: "AddressProviderV3",
2121
abi: iAddressProviderV3_1Abi,
2222
});

src/core/BotListV3Contract.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export class BotListContract extends BaseContract<abi> {
1313
approvedCreditManagers: Set<Address> = new Set();
1414

1515
constructor(sdk: GearboxSDK, address: Address) {
16-
super(sdk, { address, name: "BotListV3", abi: botListV3Abi });
16+
super(sdk, { addr: address, name: "BotListV3", abi: botListV3Abi });
1717
}
1818

1919
public parseFunctionParams(

src/core/GearStakingV3Contract.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ type abi = typeof gearStakingV3Abi;
1010

1111
export class GearStakingContract extends BaseContract<abi> {
1212
constructor(sdk: GearboxSDK, address: Address) {
13-
super(sdk, { address, name: "GearStakingV3", abi: gearStakingV3Abi });
13+
super(sdk, { addr: address, name: "GearStakingV3", abi: gearStakingV3Abi });
1414
}
1515

1616
parseFunctionParams(

src/market/CreditConfiguratorContract.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ export class CreditConfiguratorContract extends BaseContract<abi> {
1919
emergencyLiquidators: readonly Address[],
2020
) {
2121
super(sdk, {
22-
address: creditConfigurator.baseParams.addr,
23-
contractType: creditConfigurator.baseParams.contractType,
24-
version: Number(creditConfigurator.baseParams.version),
22+
...creditConfigurator.baseParams,
2523
name: `CreditConfigurator(${creditManager.name})`,
2624
abi: creditConfiguratorV3Abi,
2725
});

src/market/CreditFacadeContract.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ export class CreditFacadeContract extends BaseContract<abi> {
1717
{ creditFacade, creditManager }: CreditManagerData,
1818
) {
1919
super(sdk, {
20-
address: creditFacade.baseParams.addr,
21-
version: Number(creditFacade.baseParams.version),
22-
contractType: creditFacade.baseParams.contractType,
20+
...creditFacade.baseParams,
2321
name: `CreditFacadeV3(${creditManager.name})`,
2422
abi: creditFacadeV3Abi,
2523
});

src/market/CreditManagerContract.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ export class CreditManagerContract extends BaseContract<abi> {
1717
pool: PoolData,
1818
) {
1919
super(sdk, {
20-
address: creditManager.baseParams.addr,
21-
version: Number(creditManager.baseParams.version),
22-
contractType: creditManager.baseParams.contractType,
20+
...creditManager.baseParams,
2321
name: `CreditManagerV3(${creditManager.name})`,
2422
abi: creditManagerV3Abi,
2523
});

src/market/GaugeContract.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ export class GaugeContract extends BaseContract<abi> {
1414

1515
constructor(sdk: GearboxSDK, pool: PoolData, gauge: RateKeeperData) {
1616
super(sdk, {
17-
address: gauge.baseParams.addr,
18-
contractType: gauge.baseParams.contractType,
19-
version: Number(gauge.baseParams.version),
17+
...gauge.baseParams,
2018
name: `Gauge(${pool.name})`,
2119
abi: gaugeV3Abi,
2220
});

src/market/LinearModelContract.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ export class LinearModelContract extends BaseContract<abi> {
1313

1414
constructor(sdk: GearboxSDK, { interestRateModel }: MarketData) {
1515
super(sdk, {
16-
address: interestRateModel.baseParams.addr,
17-
contractType: interestRateModel.baseParams.contractType,
18-
version: Number(interestRateModel.baseParams.version),
16+
...interestRateModel.baseParams,
1917
name: "LinearInterestRateModel",
2018
abi: linearInterestRateModelV3Abi,
2119
});

0 commit comments

Comments
 (0)