@funkit/connect
Version:
Funkit Connect SDK elevates DeFi apps via web2 sign-ins and one-click checkouts.
64 lines (63 loc) • 3.29 kB
TypeScript
import type { FeeBreakdownV2 } from '@funkit/api-base';
import { RelayQuoteError } from '@funkit/api-base';
import type { RelayExecute, RelayQuote } from '@funkit/fun-relay';
import type { TFunction } from 'i18next';
import type { ReactNode } from 'react';
export type RelayQuoteMetadata = {
relayQuote: RelayQuote['metadata']['relayQuote'];
feeBreakdown?: FeeBreakdownV2;
};
export declare function extractRelayFeeInfo(quoteV2: {
[x: string]: unknown;
} | undefined): FeeBreakdownV2;
type RelayQuoteDetails = NonNullable<RelayExecute['details']>;
/** Checks if input and output are the same token on the same chain. */
export declare function isRelayQuoteSameChainAndAsset(details: RelayQuoteDetails): boolean;
/** Checks if the quote is a native token wrap (e.g., ETH → WETH). */
export declare function isRelayQuoteWrapOperation(details: RelayQuoteDetails): boolean;
/** Checks if the quote has a 1:1 exchange rate (no price conversion). */
export declare function hasRelayQuoteUnitRate(details: RelayQuoteDetails): boolean;
/**
* Checks if Relay is acting as a passthrough (no solver, no fees).
* True when the quote has a 1:1 rate AND is either a same-chain/same-asset
* transfer or a native token wrap operation.
*/
export declare function isRelayPassthrough(details: RelayQuoteDetails): boolean;
export declare enum RelayExpectedErrorCodes {
AMOUNT_TOO_LOW = "AMOUNT_TOO_LOW",
CHAIN_DISABLED = "CHAIN_DISABLED",
EXTRA_TXS_NOT_SUPPORTED = "EXTRA_TXS_NOT_SUPPORTED",
FORBIDDEN = "FORBIDDEN",
INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
INSUFFICIENT_LIQUIDITY = "INSUFFICIENT_LIQUIDITY",
INVALID_ADDRESS = "INVALID_ADDRESS",
INVALID_EXTRA_TXS = "INVALID_EXTRA_TXS",
INVALID_GAS_LIMIT_FOR_DEPOSIT_SPECIFIED_TXS = "INVALID_GAS_LIMIT_FOR_DEPOSIT_SPECIFIED_TXS",
INVALID_INPUT_CURRENCY = "INVALID_INPUT_CURRENCY",
INVALID_OUTPUT_CURRENCY = "INVALID_OUTPUT_CURRENCY",
INVALID_SLIPPAGE_TOLERANCE = "INVALID_SLIPPAGE_TOLERANCE",
NO_INTERNAL_SWAP_ROUTES_FOUND = "NO_INTERNAL_SWAP_ROUTES_FOUND",
NO_QUOTES = "NO_QUOTES",
NO_SWAP_ROUTES_FOUND = "NO_SWAP_ROUTES_FOUND",
ROUTE_TEMPORARILY_RESTRICTED = "ROUTE_TEMPORARILY_RESTRICTED",
SANCTIONED_CURRENCY = "SANCTIONED_CURRENCY",
SANCTIONED_WALLET_ADDRESS = "SANCTIONED_WALLET_ADDRESS",
SWAP_IMPACT_TOO_HIGH = "SWAP_IMPACT_TOO_HIGH",
UNAUTHORIZED = "UNAUTHORIZED",
UNSUPPORTED_CHAIN = "UNSUPPORTED_CHAIN",
UNSUPPORTED_CURRENCY = "UNSUPPORTED_CURRENCY",
UNSUPPORTED_EXECUTION_TYPE = "UNSUPPORTED_EXECUTION_TYPE",
UNSUPPORTED_ROUTE = "UNSUPPORTED_ROUTE",
USER_RECIPIENT_MISMATCH = "USER_RECIPIENT_MISMATCH"
}
export declare enum RelayUnexpectedErrorCodes {
DESTINATION_TX_FAILED = "DESTINATION_TX_FAILED",
ERC20_ROUTER_ADDRESS_NOT_FOUND = "ERC20_ROUTER_ADDRESS_NOT_FOUND",
UNKNOWN_ERROR = "UNKNOWN_ERROR",
SWAP_QUOTE_FAILED = "SWAP_QUOTE_FAILED",
PERMIT_FAILED = "PERMIT_FAILED"
}
export type RelayErrorCodes = RelayExpectedErrorCodes | RelayUnexpectedErrorCodes;
export declare function getRelayErrorMessages(t: TFunction): Partial<Record<RelayErrorCodes, ReactNode>>;
export declare function getRelayQuoteErrorDisplayMessage(error: RelayQuoteError, t: TFunction, fallback: ReactNode): ReactNode;
export {};