zksync-easy-onramp
Version:
SDK package for ZKsync easy on ramp
319 lines (269 loc) • 10.1 kB
TypeScript
import { Address } from 'viem';
import { EVM } from '@lifi/sdk';
import { LiFiStep } from '@lifi/sdk';
import { RouteExtended } from '@lifi/sdk';
import { SDKProvider } from '@lifi/sdk';
export declare const config: {
get(): SDKConfig;
set(configOptions: Partial<SDKConfig>): SDKConfig;
};
export declare type ConfigOptions = Partial<SDKConfig> & {
integrator: SDKConfig["integrator"];
};
export declare type ConfigResponse = {
chains: Array<{
id: number;
name: string;
}>;
fiatCurrencies: Array<FiatCurrency>;
providers: Array<Provider & {
tokens: Array<{
type: RouteType;
token: Token;
}>;
}>;
tokens: Array<Token>;
};
export declare function createOnRampConfig(configOptions: ConfigOptions): SDKConfig;
export { EVM }
export declare function executeRoute(quote: UnexecutedRoute | Route, executionOptions?: ExternalExecutionOptions): Promise<Route>;
export declare interface Execution {
status: ExecutionStatus;
message?: string;
process: Process[];
[key: string]: unknown;
}
declare type ExecutionStatus = "ACTION_REQUIRED" | "PENDING" | "FAILED" | "DONE";
export declare type ExternalExecutionOptions = {
onUpdateHook?: (route: Route) => void;
executeInBackground?: boolean;
};
export declare function fetchConfig(): Promise<ConfigResponse>;
export declare type FetchQuoteParams = {
toAddress: Address;
fiatAmount?: number;
fiatCurrency?: SupportedFiatCurrencies;
chainId: number;
toToken: Address;
tokenAmount?: number;
providerTypes?: QuoteProviderType[];
paymentMethods?: PaymentMethod[];
routeType?: "buy" | "sell";
country?: string;
};
export declare function fetchQuotes(params: FetchQuoteParams): Promise<QuotesResponse>;
declare type FiatCurrency = typeof supportedFiatCurrencies[number];
/**
* Filters provider quotes based on payment method types.
* Can either include only specified payment methods or exclude specified payment methods.
* Removes any provider quotes that end up with no payment methods after filtering.
*
* @param providerQuotes - The array of provider quotes to filter
* @param paymentMethods - The array of payment method types to include or exclude
* @param filterType - Determines whether to include or exclude the specified payment methods (default: "include")
* @returns A new array of filtered provider quotes
*/
export declare function filterByPaymentMethod(providerQuotes: ProviderQuoteOption[], paymentMethods: PaymentMethod[], filterType?: "include" | "exclude"): ProviderQuoteOption[];
declare enum KycRequirement {
NO_KYC = "no_kyc",
BASIC = "basic",
DOCUMENT_BASED = "document_based"
}
export declare type PaymentMethod = `${PaymentMethod_2}`;
declare enum PaymentMethod_2 {
APPLE_PAY_CREDIT = "apple_pay_credit",
GOOGLE_PAY_CREDIT = "google_pay_credit",
APPLE_PAY_DEBIT = "apple_pay_debit",
GOOGLE_PAY_DEBIT = "google_pay_debit",
CREDIT_CARD = "credit_card",
DEBIT_CARD = "debit_card",
WIRE = "wire",
PIX = "pix",
SEPA = "sepa",
ACH = "ach",
KOYWE = "koywe"
}
declare interface PaymentMethodQuote {
method: PaymentMethod_2;
pay: {
currency: string;
fiatAmount: number;
totalFeeFiat: number;
minAmountUnits?: string;
minAmountFiat?: number;
maxAmountUnits?: string;
maxAmountFiat?: number;
};
receive: {
token: Token;
chain: {
id: number;
name: string;
};
to: Address;
amountUnits: string;
amountFiat: number;
};
kyc: KycRequirement[];
steps: QuoteStep[];
}
export declare type Process = {
type: ProcessType;
message: string;
status: ProcessStatus;
substatus?: Substatus;
[key: string]: any;
};
export declare type ProcessStatus = "PENDING" | "ACTION_REQUIRED" | "PERMIT_REQUIRED" | "DONE" | "FAILED" | "CANCELLED";
export declare type ProcessType = "EXTERNAL" | "STATUS_CHECK";
export declare type Provider = {
key: string;
type: QuoteProviderType_2;
name: string;
iconUrl: string;
};
export declare interface ProviderQuoteOption {
id?: string;
type: `${RouteType}`;
provider: Provider;
country?: string;
paymentMethods: PaymentMethodQuote[];
}
export declare type QuoteProviderType = "cex" | "onramp";
declare enum QuoteProviderType_2 {
CEX = "cex",
ONRAMP = "onramp"
}
export declare type QuotesResponse = {
quotes: ProviderQuoteOption[];
};
declare type QuoteStep = QuoteStepOnrampViaLink | QuoteStepTokenSwap;
declare type QuoteStepOnrampViaLink = {
id?: string;
type: "onramp_via_link";
link: string;
};
declare type QuoteStepTokenSwap = {
type: "lifi_token_swap";
swapQuote: LiFiStep;
};
export declare function quoteToRoute(type: `${RouteType}`, quote: ProviderQuoteOption["paymentMethods"][0], provider: ProviderQuoteOption["provider"]): UnexecutedRoute;
export declare function resumeRouteExecution(route: Route, executionOptions?: ExternalExecutionOptions): Promise<Route>;
export declare interface Route extends Omit<ProviderQuoteOption, "paymentMethods">, Omit<PaymentMethodQuote, "steps"> {
id: string;
status: "HALTING" | "HALTED" | "RUNNING" | "DONE";
steps: StepExtended[];
}
declare enum RouteType {
BUY = "buy",
SELL = "sell"
}
export declare type SDKConfig = {
/**
* A plain string that identifies the integrator.
*/
integrator: string;
/**
* The URL for the API endpoint that the on-ramp SDK
* will use to request quotes and SDK config settings.
*
* By default it will use the production URL,
* but you can set it to a custom URL for testing purposes.
*
* If you want to use the development mode which uses
* sandbox URLs from services to generate quotes,
* you can set the `dev` flag to `true`.
*/
apiUrl?: string;
/**
* The list of services to be used for the onramp.
*
* If no services are defined,
* or if none of the keys are valid in the array,
* all services will be provided for quotes.
*/
services: Services[];
/**
* The provider configuration to handle wallet
* transactions and chain switching via the on-ramp.
*/
provider: SDKProvider | null;
/**
* Setting the `dev` flag to `true` will
* enable the development mode for the SDK.
*
* This will use sandbox URLs from services to
* generate quotes.
*/
dev?: boolean;
};
export { SDKProvider }
export declare type Services = "transak";
/**
* Sorts provider quotes by fee amount either within each provider or across all providers.
*
* @param providerQuotes - An array of provider quote options to be sorted
* @param group - Whether to maintain the grouping of payment methods by provider (true) or
* flatten and sort across all providers (false)
* @param order - Sort order: 'asc' for ascending (lower fees first) or 'desc' for descending (higher fees first)
* @returns A new array of provider quote options with payment methods sorted by fees
*/
export declare function sortByFees(providerQuotes: ProviderQuoteOption[], group?: boolean, order?: "asc" | "desc"): ProviderQuoteOption[];
/**
* Sorts a list of provider quotes by the highest return value in fiat currency among
* all the providers.
*
* This function takes an array of `ProviderQuoteOption` objects, where each provider
* may have multiple payment methods. It flattens the array by creating a new object
* for each payment method, retaining the provider's other properties. The resulting
* array is then sorted in ascending order based on the `amountFiat` value of the
* first payment method in each provider's payment methods array.
*
* @param providerQuotes - An array of `ProviderQuoteOption` objects, each containing
* a list of payment methods with associated fiat return values.
* @returns A new array of `ProviderQuoteOption` objects, each containing a single
* payment method, sorted by the highest fiat return value.
*/
export declare function sortByHighestReturn(providerQuotes: ProviderQuoteOption[]): ProviderQuoteOption[];
/**
* Sorts an array of provider quotes by arranging the payment methods of each provider
* in descending order based on the `amountFiat` value in the `receive` property.
*
* @param providerQuotes - An array of provider quote options to be sorted.
* @returns A new array of provider quote options with their payment methods sorted
* by the `amountFiat` value in descending order.
*/
export declare function sortProviderQuotes(providerQuotes: ProviderQuoteOption[]): ProviderQuoteOption[];
export declare interface Step {
type: "onramp_via_link" | "lifi_token_swap";
[key: string]: unknown;
}
export declare interface StepExtended extends Step {
id: string;
execution: Execution;
swapQuote?: LiFiStep;
lifiRoute?: RouteExtended;
[key: string]: unknown;
}
export declare function stopRouteExecution(routeId: Route["id"]): void;
declare type Substatus = {
message: string;
action: string;
};
export declare type SupportedFiatCurrencies = "USD";
declare const supportedFiatCurrencies: readonly ["USD"];
declare type Token = {
chainId: number;
address: Address;
decimals: number;
symbol: string;
name: string;
usdPrice: number;
marketCap: number;
iconUrl?: string;
};
export declare interface UnexecutedRoute extends Omit<ProviderQuoteOption, "paymentMethods"> {
steps: Step[];
}
export declare function updateRouteExecution(route: Route, executionOptions: ExternalExecutionOptions): void;
export { }