Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
514 changes: 514 additions & 0 deletions src/abi/router/midasWorker.ts

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion src/plugins/adapters/AdaptersPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import type {
IGearboxSDKPlugin,
} from "../../sdk/index.js";
import { BasePlugin, bytes32ToString } from "../../sdk/index.js";
import { BalancerV3WrapperAdapterContract } from "./contracts/BalancerV3WrapperAdapterContract.js";
import {
BalancerV2VaultAdapterContract,
BalancerV3RouterAdapterContract,
BalancerV3WrapperAdapterContract,
CamelotV3AdapterContract,
ConvexV1BaseRewardPoolAdapterContract,
ConvexV1BoosterAdapterContract,
Expand All @@ -32,6 +32,8 @@ import {
MellowERC4626VaultAdapterContract,
MellowVaultAdapterContract,
MellowWrapperAdapterContract,
MidasIssuanceVaultAdapterContract,
MidasRedemptionVaultAdapterContract,
PendleRouterAdapterContract,
StakingRewardsAdapterContract,
TraderJoeRouterAdapterContract,
Expand Down Expand Up @@ -111,6 +113,10 @@ export class AdaptersPlugin
return new MellowVaultAdapterContract(this.sdk, args);
case "ADAPTER::MELLOW_WRAPPER":
return new MellowWrapperAdapterContract(this.sdk, args);
case "ADAPTER::MIDAS_ISSUANCE_VAULT":
return new MidasIssuanceVaultAdapterContract(this.sdk, args);
case "ADAPTER::MIDAS_REDEMPTION_VAULT":
return new MidasRedemptionVaultAdapterContract(this.sdk, args);
case "ADAPTER::PENDLE_ROUTER":
return new PendleRouterAdapterContract(this.sdk, args);
case "ADAPTER::STAKING_REWARDS":
Expand Down
6 changes: 6 additions & 0 deletions src/plugins/adapters/abi/actionAbi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ export const adapterActionSignatures: PartialRecord<
[AdapterType.MELLOW_WRAPPER]: {
310: "function setVaultStatusBatch((address,bool)[])",
},
[AdapterType.MIDAS_ISSUANCE_VAULT]: {
310: "function setTokenAllowedStatusBatch(address[],bool[])",
},
[AdapterType.MIDAS_REDEMPTION_VAULT]: {
310: "function setTokenAllowedStatusBatch((address,address,bool)[])",
},
[AdapterType.PENDLE_ROUTER]: {
310: "function setPairStatusBatch((address,address,address,uint8)[])",
311: "function setPairStatusBatch((address,address,address,uint8,uint8)[])",
Expand Down
8 changes: 8 additions & 0 deletions src/plugins/adapters/abi/conctructorAbi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
CURVE_V1_WRAPPER_ADAPTER_ABI,
GATEWAY_ADAPTER_ABI,
LP_ADAPTER_ABI,
REFERER_ID_ADAPTER_ABI,
STAKED_TOKEN_ADAPTER_ABI,
STAKING_REWARDS_ADAPTER_ABI,
UINT_REFERRAL_ADAPTER_ABI,
Expand Down Expand Up @@ -50,6 +51,9 @@ export const adapterConstructorAbi: Record<AdapterType, VersionedAbi> = {
[AdapterType.LIDO_WSTETH_V1]: {
310: BASIC_ADAPTER_ABI,
},
[AdapterType.MIDAS_REDEMPTION_VAULT]: {
310: BASIC_ADAPTER_ABI,
},
[AdapterType.PENDLE_ROUTER]: {
310: BASIC_ADAPTER_ABI,
311: BASIC_ADAPTER_ABI,
Expand Down Expand Up @@ -152,4 +156,8 @@ export const adapterConstructorAbi: Record<AdapterType, VersionedAbi> = {
311: STAKING_REWARDS_ADAPTER_ABI,
312: STAKING_REWARDS_ADAPTER_ABI,
},

[AdapterType.MIDAS_ISSUANCE_VAULT]: {
310: REFERER_ID_ADAPTER_ABI,
},
} as const;
6 changes: 6 additions & 0 deletions src/plugins/adapters/abi/conctructorAbiPatterns.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ export const UINT_REFERRAL_ADAPTER_ABI = [
{ type: "uint16", name: "referral" },
] as const;

export const REFERER_ID_ADAPTER_ABI = [
{ type: "address", name: "creditManager" },
{ type: "address", name: "target" },
{ type: "bytes32", name: "referrerId" },
] as const;

// Curve ABI patterns
export const CURVE_V1_ADAPTER_310_ABI = [
{ type: "address", name: "creditManager" },
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { type Address, decodeAbiParameters } from "viem";
import type { GearboxSDK } from "../../../sdk/index.js";
import type { AbstractAdapterContractOptions } from "./AbstractAdapter.js";
import { AbstractAdapterContract } from "./AbstractAdapter.js";

// TODO:
const abi = [] as const;
type abi = typeof abi;

export class MidasIssuanceVaultAdapterContract extends AbstractAdapterContract<abi> {
public readonly mToken: Address;
public readonly referrerId: string;
public readonly allowedTokens: Address[];

constructor(
sdk: GearboxSDK,
args: Omit<AbstractAdapterContractOptions<abi>, "abi">,
) {
super(sdk, { ...args, abi });

// Decode parameters directly using ABI decoding
const decoded = decodeAbiParameters(
[
{ type: "address", name: "creditManager" },
{ type: "address", name: "targetContract" },
{ type: "address", name: "mToken" },
{ type: "bytes32", name: "referrerId" },
{ type: "address[]", name: "allowedTokens" },
],
args.baseParams.serializedParams,
);

this.mToken = decoded[2];
this.referrerId = decoded[3];
this.allowedTokens = [...decoded[4]];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { type Address, decodeAbiParameters } from "viem";
import type { GearboxSDK } from "../../../sdk/index.js";
import type { AbstractAdapterContractOptions } from "./AbstractAdapter.js";
import { AbstractAdapterContract } from "./AbstractAdapter.js";

// TODO:
const abi = [] as const;
type abi = typeof abi;

export class MidasRedemptionVaultAdapterContract extends AbstractAdapterContract<abi> {
public readonly gateway: Address;
public readonly mToken: Address;
public readonly allowedTokens: Address[];

constructor(
sdk: GearboxSDK,
args: Omit<AbstractAdapterContractOptions<abi>, "abi">,
) {
super(sdk, { ...args, abi });

// Decode parameters directly using ABI decoding
const decoded = decodeAbiParameters(
[
{ type: "address", name: "creditManager" },
{ type: "address", name: "targetContract" },
{ type: "address", name: "gateway" },
{ type: "address", name: "mToken" },
{ type: "address[]", name: "allowedTokens" },
],
args.baseParams.serializedParams,
);

this.gateway = decoded[2];
this.mToken = decoded[3];
this.allowedTokens = [...decoded[4]];
}
}
3 changes: 3 additions & 0 deletions src/plugins/adapters/contracts/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export * from "./AbstractAdapter.js";
export * from "./BalancerV2VaultAdapterContract.js";
export * from "./BalancerV3RouterAdapterContract.js";
export * from "./BalancerV3WrapperAdapterContract.js";
export * from "./CamelotV3AdapterContract.js";
export * from "./ConvexV1BaseRewardPoolAdapterContract.js";
export * from "./ConvexV1BoosterAdapterContract.js";
Expand All @@ -23,6 +24,8 @@ export * from "./MellowDVVAdapterContract.js";
export * from "./MellowERC4626VaultAdapterContract.js";
export * from "./MellowVaultAdapterContract.js";
export * from "./MellowWrapperAdapterContract.js";
export * from "./MidasIssuanceVaultAdapterContract.js";
export * from "./MidasRedemptionVaultAdapterContract.js";
export * from "./PendleRouterAdapterContract.js";
export * from "./StakingRewardsAdapterContract.js";
export * from "./TraderJoeRouterAdapterContract.js";
Expand Down
4 changes: 4 additions & 0 deletions src/plugins/adapters/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ export type AdapterContractType =
| "ADAPTER::MELLOW_ERC4626_VAULT"
| "ADAPTER::MELLOW_LRT_VAULT"
| "ADAPTER::MELLOW_WRAPPER"
| "ADAPTER::MIDAS_ISSUANCE_VAULT"
| "ADAPTER::MIDAS_REDEMPTION_VAULT"
| "ADAPTER::PENDLE_ROUTER"
| "ADAPTER::STAKING_REWARDS"
| "ADAPTER::TRADERJOE_ROUTER"
Expand Down Expand Up @@ -96,6 +98,8 @@ export enum AdapterType {
MELLOW_ERC4626_VAULT = "MELLOW_ERC4626_VAULT",
MELLOW_LRT_VAULT = "MELLOW_LRT_VAULT",
MELLOW_WRAPPER = "MELLOW_WRAPPER",
MIDAS_ISSUANCE_VAULT = "MIDAS_ISSUANCE_VAULT",
MIDAS_REDEMPTION_VAULT = "MIDAS_REDEMPTION_VAULT",
PENDLE_ROUTER = "PENDLE_ROUTER",
STAKING_REWARDS = "STAKING_REWARDS",
TRADERJOE_ROUTER = "TRADERJOE_ROUTER",
Expand Down
Loading