Skip to content

Commit

Permalink
fix: deposit liquidity working with validation
Browse files Browse the repository at this point in the history
  • Loading branch information
LukasDeco committed May 1, 2024
1 parent 5d7cb6e commit 4bd0164
Show file tree
Hide file tree
Showing 5 changed files with 168 additions and 112 deletions.
18 changes: 12 additions & 6 deletions lib/client/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
VaultAccountWithProtocol,
OpenbookMarket,
AmmMarket,
LiquidityAddError,
} from "@/types";
import { SwapType } from "@metadaoproject/futarchy-ts";
import { Observable } from "rxjs";
Expand Down Expand Up @@ -88,18 +89,23 @@ export interface FutarchyOrderbookMarketsClient<
export interface FutarchyAmmMarketsClient {
fetchMarket(request: MarketFetchRequest): Promise<Market | undefined>;
swap(
ammAddr: PublicKey,
ammAddr: AmmMarket,
swapType: SwapType,
inputAmount: number,
outputAmountMin: number
): Promise<string[]>;
removeLiquidity(
ammAddr: PublicKey,
ammAddr: AmmMarket,
lpTokensToBurn: number
): Promise<string[]>;
validateAddLiquidity(
ammMarket: AmmMarket,
quoteAmount: number,
baseAmount: number
): LiquidityAddError | null;
addLiquidity(
ammAddr: PublicKey,
quoteAmount?: number,
baseAmount?: number
): Promise<string[]>;
ammAddr: AmmMarket,
quoteAmount: number,
baseAmount: number
): Promise<string[] | LiquidityAddError>;
}
44 changes: 31 additions & 13 deletions lib/client/indexer/market-clients/ammMarkets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { FutarchyAmmMarketsRPCClient } from "../../rpc";
import {
AmmMarket,
AmmMarketFetchRequest,
LiquidityAddError,
Market,
TokenMetadataSource,
TokenProps,
Expand All @@ -24,55 +25,72 @@ export class FutarchyIndexerAmmMarketsClient
): Promise<AmmMarket | undefined> {
return this.rpcMarketsClient.fetchMarket(request);
}

validateAddLiquidity(
ammMarket: AmmMarket,
quoteAmount: number,
baseAmount: number
): LiquidityAddError | null {
return this.rpcMarketsClient.validateAddLiquidity(
ammMarket,
quoteAmount,
baseAmount
);
}

async addLiquidity(
ammAddr: PublicKey,
quoteAmount?: number | undefined,
baseAmount?: number | undefined
): Promise<string[]> {
return this.rpcMarketsClient.addLiquidity(ammAddr, quoteAmount, baseAmount);
ammMarket: AmmMarket,
quoteAmount: number,
baseAmount: number
): Promise<string[] | LiquidityAddError> {
return this.rpcMarketsClient.addLiquidity(
ammMarket,
quoteAmount,
baseAmount
);
}

async simulateAddLiquidity(
ammAddr: PublicKey,
ammMarket: AmmMarket,
baseAmount: number,
quoteAmount: number
): Promise<any> {
// Replace `any` with the actual return type if defined
return this.rpcMarketsClient.simulateAddLiquidity(
ammAddr,
ammMarket,
baseAmount,
quoteAmount
);
}

async removeLiquidity(
ammAddr: PublicKey,
ammMarket: AmmMarket,
lpTokensToBurn: number
): Promise<string[]> {
return this.rpcMarketsClient.removeLiquidity(ammAddr, lpTokensToBurn);
return this.rpcMarketsClient.removeLiquidity(ammMarket, lpTokensToBurn);
}

async swap(
ammAddr: PublicKey,
ammMarket: AmmMarket,
swapType: SwapType,
inputAmount: number,
outputAmountMin: number
): Promise<string[]> {
return this.rpcMarketsClient.swap(
ammAddr,
ammMarket,
swapType,
inputAmount,
outputAmountMin
);
}

async getSwapPreview(
ammAddr: PublicKey,
ammMarket: AmmMarket,
inputAmount: number,
isBuyBase: boolean
): Promise<SwapPreview> {
return this.rpcMarketsClient.getSwapPreview(
ammAddr,
ammMarket,
inputAmount,
isBuyBase
);
Expand Down
Loading

0 comments on commit 4bd0164

Please sign in to comment.