diff --git a/public/protocols/stackingdao.png b/public/protocols/stackingdao.png new file mode 100644 index 0000000..2c61dee Binary files /dev/null and b/public/protocols/stackingdao.png differ diff --git a/src/db/schema.ts b/src/db/schema.ts index 993b38a..a0acb41 100644 --- a/src/db/schema.ts +++ b/src/db/schema.ts @@ -3,6 +3,8 @@ import type { ActionData, ActionDataAddLiquidity, ActionDataRemoveLiquidity, + ActionDataStackingDAODeposit, + ActionDataStackingDAOWithdraw, ActionDataSwap, } from "@/lib/actions"; import type { Protocol } from "@/lib/protocols"; @@ -55,10 +57,25 @@ export type SelectTransactionActionRemoveLiquidityTyped = SelectTransaction & { action: "remove-liquidity"; data: ActionDataRemoveLiquidity; }; + +/** + * StackingDAO + */ +export type SelectTransactionActionStackingDAODeposit = SelectTransaction & { + action: "stackingdao-deposit"; + data: ActionDataStackingDAODeposit; +}; +export type SelectTransactionActionStackingDAOWithdraw = SelectTransaction & { + action: "stackingdao-withdraw"; + data: ActionDataStackingDAOWithdraw; +}; + export type SelectTransactionTyped = | SelectTransactionActionSwapTyped | SelectTransactionActionAddLiquidityTyped - | SelectTransactionActionRemoveLiquidityTyped; + | SelectTransactionActionRemoveLiquidityTyped + | SelectTransactionActionStackingDAODeposit + | SelectTransactionActionStackingDAOWithdraw; export const tokenTable = sqliteTable("token", { /** diff --git a/src/db/transactions.ts b/src/db/transactions.ts index 122b58e..f6e6f97 100644 --- a/src/db/transactions.ts +++ b/src/db/transactions.ts @@ -15,6 +15,8 @@ import { type SelectToken, type SelectTransactionActionAddLiquidityTyped, type SelectTransactionActionRemoveLiquidityTyped, + type SelectTransactionActionStackingDAODeposit, + type SelectTransactionActionStackingDAOWithdraw, type SelectTransactionActionSwapTyped, type SelectTransactionTyped, tokenTable, @@ -41,7 +43,9 @@ export type SelectTransactionActionRemoveLiquidity = export type SelectTransactionAction = | SelectTransactionActionSwap | SelectTransactionActionAddLiquidity - | SelectTransactionActionRemoveLiquidity; + | SelectTransactionActionRemoveLiquidity + | SelectTransactionActionStackingDAODeposit + | SelectTransactionActionStackingDAOWithdraw; export const getTransactions = async ({ protocol, @@ -113,6 +117,14 @@ export const getTransactions = async ({ tokenX: tokenMap[transaction.data.tokenX], tokenY: tokenMap[transaction.data.tokenY], }; + } else if (transaction.action === "stackingdao-deposit") { + return { + ...transaction, + }; + } else if (transaction.action === "stackingdao-withdraw") { + return { + ...transaction, + }; } return transaction; }); diff --git a/src/lib/actions.ts b/src/lib/actions.ts index 4bed9a1..74a8cf1 100644 --- a/src/lib/actions.ts +++ b/src/lib/actions.ts @@ -1,7 +1,15 @@ import { IconMinus, IconPlus } from "@tabler/icons-react"; import type { Protocol } from "./protocols"; -export const actions = ["swap", "add-liquidity", "remove-liquidity"] as const; +export const actions = [ + // common + "swap", + "add-liquidity", + "remove-liquidity", + // StackingDAO + "stackingdao-deposit", + "stackingdao-withdraw", +] as const; export type Action = (typeof actions)[number]; @@ -25,10 +33,26 @@ export interface ActionDataRemoveLiquidity { tokenY: string; } +/** + * StackingDAO + */ + +export interface ActionDataStackingDAODeposit { + amountSTX: string; + amountStSTX: string; +} + +export interface ActionDataStackingDAOWithdraw { + amountSTX: string; + amountStSTX: string; +} + export type ActionData = | ActionDataSwap | ActionDataAddLiquidity - | ActionDataRemoveLiquidity; + | ActionDataRemoveLiquidity + | ActionDataStackingDAODeposit + | ActionDataStackingDAOWithdraw; export const actionInfo: { [key in Action]: { label: string; icon?: any }; @@ -44,6 +68,15 @@ export const actionInfo: { label: "Liquidity", icon: IconMinus, }, + /** + * StackingDAO + */ + "stackingdao-deposit": { + label: "Deposit", + }, + "stackingdao-withdraw": { + label: "Withdraw", + }, } as const; export const protocolsActions: { @@ -52,6 +85,7 @@ export const protocolsActions: { alex: ["swap"], arkadiko: ["swap", "add-liquidity", "remove-liquidity"], bitflow: ["swap"], + stackingdao: ["stackingdao-deposit", "stackingdao-withdraw"], stackswap: ["swap"], velar: ["swap"], } as const; diff --git a/src/lib/protocols.ts b/src/lib/protocols.ts index 6f524c2..a330b28 100644 --- a/src/lib/protocols.ts +++ b/src/lib/protocols.ts @@ -4,6 +4,7 @@ export const protocols = [ "stackswap", "velar", "bitflow", + "stackingdao", ] as const; export type Protocol = (typeof protocols)[number]; @@ -32,6 +33,12 @@ export const protocolsInfo = { website: "https://www.bitflow.finance/", x: "https://twitter.com/Bitflow_Finance", }, + stackingdao: { + name: "StackingDAO", + description: "Liquid stacking on Stacks.", + website: "https://www.stackingdao.com/", + x: "https://twitter.com/StackingDao", + }, stackswap: { name: "StackSwap", description: