@b3dotfun/anyspend-sdk
Version:
React Hooks and UI Components for AnySpend by B3
60 lines (51 loc) • 1.59 kB
text/typescript
import { QuoteDetails } from "@reservoir0x/relay-sdk";
import { OrderType } from "../order";
import { z } from "zod";
import { TradeType } from "../relay";
import { zCustomPayload } from "../custom";
const zGetQuoteBody = z.object({
srcChain: z.number(),
dstChain: z.number(),
srcTokenAddress: z.string(),
dstTokenAddress: z.string()
});
const zGetQuoteForSwapOrderBody = zGetQuoteBody.extend({
type: z.literal(OrderType.Swap),
tradeType: z.nativeEnum(TradeType),
amount: z.string()
});
const zGetQuoteForMintNftOrderBody = zGetQuoteBody.extend({
type: z.literal(OrderType.MintNFT),
contractAddress: z.string(),
price: z.string()
});
const zGetQuoteForJoinTournamentOrderBody = zGetQuoteBody.extend({
type: z.literal(OrderType.JoinTournament),
contractAddress: z.string(),
price: z.string()
});
const zGetQuoteForFundTournamentOrderBody = zGetQuoteBody.extend({
type: z.literal(OrderType.FundTournament),
contractAddress: z.string(),
fundAmount: z.string()
});
const zGetQuoteForCustomOrderBody = zGetQuoteBody.extend({
type: z.literal(OrderType.Custom),
payload: zCustomPayload
});
export const zGetQuoteRequest = z.object({
body: z.discriminatedUnion("type", [
zGetQuoteForSwapOrderBody,
zGetQuoteForMintNftOrderBody,
zGetQuoteForJoinTournamentOrderBody,
zGetQuoteForFundTournamentOrderBody,
zGetQuoteForCustomOrderBody
])
});
export type GetQuoteRequest = z.infer<typeof zGetQuoteRequest.shape.body>;
export interface GetQuoteResponse {
success: boolean;
message: string;
data: QuoteDetails;
statusCode: number;
}