mirror of
https://github.com/Instadapp/assembly.git
synced 2024-07-29 22:37:06 +00:00
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import tokens from "~/constant/tokens";
|
|
import { defineStrategy, defineInput, StrategyInputType } from "../../helpers";
|
|
|
|
export default defineStrategy({
|
|
name: "Deposit & Borrow",
|
|
description: "Deposit collateral & borrow asset in a single txn.",
|
|
author: "Instadapp Team",
|
|
|
|
inputs: [
|
|
defineInput({
|
|
type: StrategyInputType.INPUT_WITH_TOKEN,
|
|
name: "Debt",
|
|
placeholder: ({ input }) => `${input.token?.symbol} to Payback`,
|
|
validate: ({ input }) => {
|
|
if (!input.token) {
|
|
return "Token is required";
|
|
}
|
|
|
|
if (input.token.balance < input.value) {
|
|
return "Your amount exceeds your maximum limit.";
|
|
}
|
|
},
|
|
defaults: context => {
|
|
return {
|
|
token: context.dsaTokens
|
|
? Object.values(context.dsaTokens).find(t => t.key === "eth")
|
|
: null
|
|
};
|
|
}
|
|
}),
|
|
defineInput({
|
|
type: StrategyInputType.INPUT_WITH_TOKEN,
|
|
name: "Collateral",
|
|
placeholder: ({ input }) => `${input.token?.symbol} to Withdraw`,
|
|
defaults: ({ dsaTokens }) => ({
|
|
token: dsaTokens
|
|
? Object.values(dsaTokens).find(t => t.key === "dai")
|
|
: null
|
|
})
|
|
})
|
|
],
|
|
|
|
spells: async ({ inputs }) => {
|
|
return [
|
|
{
|
|
connector: "aave_v2",
|
|
method: "deposit",
|
|
args: [inputs[0].token.address, inputs[0].value, 0, 0]
|
|
},
|
|
{
|
|
connector: "aave_v2",
|
|
method: "borrow",
|
|
args: [inputs[1].token.address, inputs[1].value, 1, 0, 0]
|
|
}
|
|
];
|
|
}
|
|
});
|