@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
79 lines (70 loc) • 2.13 kB
text/typescript
import type { ExtraTransfer } from '../core/orders/common.js';
export type ChainOrderStatus = 'Auction' | 'NoBids' | 'Executing' | 'Fulfilled' | 'Cancelled' | 'Outdated';
export type ApiCrossChainOrder = {
orderId: string;
// Flattened fields from the API response
user: string;
srcChainId: number;
tokenIn: string;
minStablecoinsAmount: string;
destChainId: number;
tokenOut: string;
amountOutMin: string;
destinationAddress: string;
extraTransfers?: ExtraTransfer[];
deadline: number;
executionDetailsHash: string;
amountIn: string;
// Cross-chain specific fields
executionDetails: string;
orderCreationTime: number;
orderStatus: ChainOrderStatus;
tokensInWereSwappedToStablecoins: boolean;
lockedStablecoins: string;
nonce?: string;
orderFulfillmentTimestamp?: number;
transactionHash?: string;
amountOut?: string;
};
export type ApiSingleChainOrder = {
orderId: string;
// Flattened fields from the API response
user: string;
chainId: number;
tokenIn: string;
tokenOut: string;
amountOutMin: string;
destinationAddress: string;
extraTransfers?: ExtraTransfer[];
deadline: number;
amountIn: string;
// Single-chain specific fields
orderCreationTime: number;
orderStatus: ChainOrderStatus;
nonce?: string;
orderFulfillmentTimestamp?: number;
transactionHash?: string;
amountOut?: string;
};
export type ApiUserOrders = {
singleChainLimitOrders: ApiSingleChainOrder[];
crossChainLimitOrders: ApiCrossChainOrder[];
};
export type ValidResponseData = ApiUserOrders | string | null;
export type ApiResponse<T extends ValidResponseData = ValidResponseData> = {
success: boolean;
code: number;
data?: T;
error?: unknown;
extra_error_data?: unknown;
};
export function isSuccessApiResponse<T extends ValidResponseData>(
response: ApiResponse<T>,
): response is ApiResponse<T> & { success: true; data: T } {
return response.success;
}
export function isErrorApiResponse<T extends ValidResponseData>(
response: ApiResponse<T>,
): response is ApiResponse<T> & { success: false; error: unknown } {
return !response.success;
}