Skip to content

Commit

Permalink
refactor(sdks): external opt-in augmentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Rubilmax committed Jul 17, 2024
1 parent 0c32ea0 commit ec2d22d
Show file tree
Hide file tree
Showing 47 changed files with 366 additions and 293 deletions.
30 changes: 15 additions & 15 deletions packages/blue-sdk-ethers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,20 @@ Opt in classes augmentation to easily fetch an entire entity of the Morpho Blue

```typescript
// Granular, opt-in, per-entity class augmentation:
import "@morpho-org/blue-sdk-ethers/lib/fetch/AccrualPosition";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Holding";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Market";
import "@morpho-org/blue-sdk-ethers/lib/fetch/MarketConfig";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Position";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Token";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Vault";
import "@morpho-org/blue-sdk-ethers/lib/fetch/VaultConfig";
import "@morpho-org/blue-sdk-ethers/lib/fetch/VaultMarketAllocation";
import "@morpho-org/blue-sdk-ethers/lib/fetch/VaultMarketConfig";
import "@morpho-org/blue-sdk-ethers/lib/fetch/VaultMarketPublicAllocatorConfig";
import "@morpho-org/blue-sdk-ethers/lib/augment/AccrualPosition";
import "@morpho-org/blue-sdk-ethers/lib/augment/Holding";
import "@morpho-org/blue-sdk-ethers/lib/augment/Market";
import "@morpho-org/blue-sdk-ethers/lib/augment/MarketConfig";
import "@morpho-org/blue-sdk-ethers/lib/augment/Position";
import "@morpho-org/blue-sdk-ethers/lib/augment/Token";
import "@morpho-org/blue-sdk-ethers/lib/augment/Vault";
import "@morpho-org/blue-sdk-ethers/lib/augment/VaultConfig";
import "@morpho-org/blue-sdk-ethers/lib/augment/VaultMarketAllocation";
import "@morpho-org/blue-sdk-ethers/lib/augment/VaultMarketConfig";
import "@morpho-org/blue-sdk-ethers/lib/augment/VaultMarketPublicAllocatorConfig";

// Or full, opt-in class augmentation:
import "@morpho-org/blue-sdk-ethers/lib/fetch";
import "@morpho-org/blue-sdk-ethers/lib/augment";
```

### Fetch the config of a specific market
Expand All @@ -47,7 +47,7 @@ Leverage the [`MarketConfig`](./src/market/MarketConfig.ts) class to fetch infor

```typescript
import { MarketId, MarketConfig } from "@morpho-org/blue-sdk";
import "@morpho-org/blue-sdk-ethers/lib/fetch/MarketConfig";
import "@morpho-org/blue-sdk-ethers/lib/augment/MarketConfig";

const config = await MarketConfig.fetch(
"0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc" as MarketId,
Expand All @@ -64,7 +64,7 @@ Leverage the [`Market`](./src/market/Market.ts) class to fetch information on a
```typescript
import { Time } from "@morpho-org/morpho-ts";
import { MarketId, Market } from "@morpho-org/blue-sdk";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Market";
import "@morpho-org/blue-sdk-ethers/lib/augment/Market";

const market = await Market.fetch(
"0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc" as MarketId,
Expand Down Expand Up @@ -93,7 +93,7 @@ Leverage the [`Position`](./src/position/Position.ts) class to fetch the positio
```typescript
import { Time } from "@morpho-org/morpho-ts";
import { MarketId, AccrualPosition } from "@morpho-org/blue-sdk";
import "@morpho-org/blue-sdk-ethers/lib/fetch/Position";
import "@morpho-org/blue-sdk-ethers/lib/augment/Position";

const position = await AccrualPosition.fetch(
"0x7f65e7326F22963e2039734dDfF61958D5d284Ca",
Expand Down
2 changes: 1 addition & 1 deletion packages/blue-sdk-ethers/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@morpho-org/blue-sdk-ethers",
"version": "1.0.5",
"version": "1.1.0",
"author": "Morpho Association <contact@morpho.org>",
"license": "MIT",
"main": "src/index.ts",
Expand Down
10 changes: 10 additions & 0 deletions packages/blue-sdk-ethers/src/augment/Holding.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Holding } from "@morpho-org/blue-sdk";
import { fetchHolding } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace Holding {
let fetch: typeof fetchHolding;
}
}

Holding.fetch = fetchHolding;
12 changes: 12 additions & 0 deletions packages/blue-sdk-ethers/src/augment/Market.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Market } from "@morpho-org/blue-sdk";
import { fetchMarket, fetchMarketFromConfig } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace Market {
let fetch: typeof fetchMarket;
let fetchFromConfig: typeof fetchMarketFromConfig;
}
}

Market.fetch = fetchMarket;
Market.fetchFromConfig = fetchMarketFromConfig;
10 changes: 10 additions & 0 deletions packages/blue-sdk-ethers/src/augment/MarketConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { MarketConfig } from "@morpho-org/blue-sdk";
import { fetchMarketConfig } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace MarketConfig {
let fetch: typeof fetchMarketConfig;
}
}

MarketConfig.fetch = fetchMarketConfig;
23 changes: 23 additions & 0 deletions packages/blue-sdk-ethers/src/augment/Position.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { AccrualPosition, Position } from "@morpho-org/blue-sdk";

import "./Market";
import {
fetchAccrualPosition,
fetchAccrualPositionFromConfig,
fetchPosition,
} from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace Position {
let fetch: typeof fetchPosition;
}

namespace AccrualPosition {
let fetch: typeof fetchAccrualPosition;
let fetchFromConfig: typeof fetchAccrualPositionFromConfig;
}
}

Position.fetch = fetchPosition;
AccrualPosition.fetch = fetchAccrualPosition;
AccrualPosition.fetchFromConfig = fetchAccrualPositionFromConfig;
10 changes: 10 additions & 0 deletions packages/blue-sdk-ethers/src/augment/Token.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Token } from "@morpho-org/blue-sdk";
import { fetchToken } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace Token {
let fetch: typeof fetchToken;
}
}

Token.fetch = fetchToken;
20 changes: 20 additions & 0 deletions packages/blue-sdk-ethers/src/augment/Vault.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { AccrualVault, Vault } from "@morpho-org/blue-sdk";

import "./VaultConfig";
import "./VaultMarketAllocation";
import { fetchAccrualVault, fetchVault, fetchVaultFromConfig } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace Vault {
let fetch: typeof fetchVault;
let fetchFromConfig: typeof fetchVaultFromConfig;
}

namespace AccrualVault {
let fetch: typeof fetchAccrualVault;
}
}

Vault.fetch = fetchVault;
Vault.fetchFromConfig = fetchVaultFromConfig;
AccrualVault.fetch = fetchAccrualVault;
10 changes: 10 additions & 0 deletions packages/blue-sdk-ethers/src/augment/VaultConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { VaultConfig } from "@morpho-org/blue-sdk";
import { fetchVaultConfig } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace VaultConfig {
let fetch: typeof fetchVaultConfig;
}
}

VaultConfig.fetch = fetchVaultConfig;
18 changes: 18 additions & 0 deletions packages/blue-sdk-ethers/src/augment/VaultMarketAllocation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { VaultMarketAllocation } from "@morpho-org/blue-sdk";

import "./Position";
import "./VaultMarketConfig";
import {
fetchVaultMarketAllocation,
fetchVaultMarketAllocationFromConfig,
} from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace VaultMarketAllocation {
let fetch: typeof fetchVaultMarketAllocation;
let fetchFromConfig: typeof fetchVaultMarketAllocationFromConfig;
}
}

VaultMarketAllocation.fetch = fetchVaultMarketAllocation;
VaultMarketAllocation.fetchFromConfig = fetchVaultMarketAllocationFromConfig;
12 changes: 12 additions & 0 deletions packages/blue-sdk-ethers/src/augment/VaultMarketConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { VaultMarketConfig } from "@morpho-org/blue-sdk";

import "./VaultMarketPublicAllocatorConfig";
import { fetchVaultMarketConfig } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace VaultMarketConfig {
let fetch: typeof fetchVaultMarketConfig;
}
}

VaultMarketConfig.fetch = fetchVaultMarketConfig;
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { VaultMarketPublicAllocatorConfig } from "@morpho-org/blue-sdk";
import { fetchVaultMarketPublicAllocatorConfig } from "../fetch";

declare module "@morpho-org/blue-sdk" {
namespace VaultMarketPublicAllocatorConfig {
let fetch: typeof fetchVaultMarketPublicAllocatorConfig;
}
}

VaultMarketPublicAllocatorConfig.fetch = fetchVaultMarketPublicAllocatorConfig;
10 changes: 10 additions & 0 deletions packages/blue-sdk-ethers/src/augment/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export * from "./Holding";
export * from "./Position";
export * from "./MarketConfig";
export * from "./Market";
export * from "./Token";
export * from "./VaultConfig";
export * from "./Vault";
export * from "./VaultMarketConfig";
export * from "./VaultMarketAllocation";
export * from "./VaultMarketPublicAllocatorConfig";
8 changes: 0 additions & 8 deletions packages/blue-sdk-ethers/src/fetch/Holding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,3 @@ export async function fetchHolding(

return holding;
}

declare module "@morpho-org/blue-sdk" {
namespace Holding {
let fetch: typeof fetchHolding;
}
}

Holding.fetch = fetchHolding;
17 changes: 3 additions & 14 deletions packages/blue-sdk-ethers/src/fetch/Market.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ import {
MarketId,
getChainAddresses,
} from "@morpho-org/blue-sdk";

import "./MarketConfig";
import { fetchMarketConfig } from "./MarketConfig";

export async function fetchMarket(
id: MarketId,
Expand All @@ -29,9 +28,9 @@ export async function fetchMarket(
chainId ?? (await runner.provider.getNetwork()).chainId,
);

const config = await MarketConfig.fetch(id, runner, { chainId });
const config = await fetchMarketConfig(id, runner, { chainId });

return Market.fetchFromConfig(config, runner, { chainId, overrides });
return fetchMarketFromConfig(config, runner, { chainId, overrides });
}

export async function fetchMarketFromConfig(
Expand Down Expand Up @@ -84,13 +83,3 @@ export async function fetchMarketFromConfig(
rateAtTarget,
});
}

declare module "@morpho-org/blue-sdk" {
namespace Market {
let fetch: typeof fetchMarket;
let fetchFromConfig: typeof fetchMarketFromConfig;
}
}

Market.fetch = fetchMarket;
Market.fetchFromConfig = fetchMarketFromConfig;
8 changes: 0 additions & 8 deletions packages/blue-sdk-ethers/src/fetch/MarketConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,3 @@ export async function fetchMarketConfig(

return config;
}

declare module "@morpho-org/blue-sdk" {
namespace MarketConfig {
let fetch: typeof fetchMarketConfig;
}
}

MarketConfig.fetch = fetchMarketConfig;
27 changes: 5 additions & 22 deletions packages/blue-sdk-ethers/src/fetch/Position.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@ import {
Address,
ChainId,
ChainUtils,
Market,
MarketConfig,
MarketId,
Position,
getChainAddresses,
} from "@morpho-org/blue-sdk";

import "./Market";
import { fetchMarket, fetchMarketFromConfig } from "./Market";

export async function fetchPosition(
user: Address,
Expand Down Expand Up @@ -58,8 +56,8 @@ export async function fetchAccrualPosition(
);

const [position, market] = await Promise.all([
await Position.fetch(user, marketId, runner, options),
await Market.fetch(marketId, runner, options),
await fetchPosition(user, marketId, runner, options),
await fetchMarket(marketId, runner, options),
]);

return new AccrualPosition(position, market);
Expand All @@ -76,24 +74,9 @@ export async function fetchAccrualPositionFromConfig(
);

const [position, market] = await Promise.all([
await Position.fetch(user, config.id, runner, options),
await Market.fetchFromConfig(config, runner, options),
await fetchPosition(user, config.id, runner, options),
await fetchMarketFromConfig(config, runner, options),
]);

return new AccrualPosition(position, market);
}

declare module "@morpho-org/blue-sdk" {
namespace Position {
let fetch: typeof fetchPosition;
}

namespace AccrualPosition {
let fetch: typeof fetchAccrualPosition;
let fetchFromConfig: typeof fetchAccrualPositionFromConfig;
}
}

Position.fetch = fetchPosition;
AccrualPosition.fetch = fetchAccrualPosition;
AccrualPosition.fetchFromConfig = fetchAccrualPositionFromConfig;
8 changes: 0 additions & 8 deletions packages/blue-sdk-ethers/src/fetch/Token.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,11 +183,3 @@ export async function fetchToken(

return new Token(token);
}

declare module "@morpho-org/blue-sdk" {
namespace Token {
let fetch: typeof fetchToken;
}
}

Token.fetch = fetchToken;
Loading

0 comments on commit ec2d22d

Please sign in to comment.