@cowprotocol/cow-sdk
Version:
## 📚 [Docs website](https://docs.cow.fi/)
268 lines (267 loc) • 7.58 kB
TypeScript
export type SupportedBridge = 'across' | 'cctp';
export interface BungeeQuoteAPIRequest {
userAddress: string;
originChainId: string;
destinationChainId: string;
inputToken: string;
inputAmount: string;
receiverAddress: string;
outputToken: string;
enableManual: true;
disableSwapping: true;
disableAuto: true;
includeBridges?: SupportedBridge[];
}
export interface BungeeQuoteAPIResponse {
success: boolean;
statusCode: number;
result: {
originChainId: number;
destinationChainId: number;
userAddress: string;
receiverAddress: string;
input: {
token: {
chainId: number;
address: string;
name: string;
symbol: string;
decimals: number;
logoURI: string;
icon: string;
};
amount: string;
priceInUsd: number;
valueInUsd: number;
};
destinationExec: unknown;
autoRoute: unknown;
manualRoutes: Array<{
quoteId: string;
quoteExpiry: number;
output: {
token: {
chainId: number;
address: string;
name: string;
symbol: string;
decimals: number;
logoURI: string;
icon: string;
};
amount: string;
priceInUsd: number;
valueInUsd: number;
minAmountOut: string;
effectiveReceivedInUsd: number;
};
affiliateFee: unknown;
approvalData: {
spenderAddress: string;
amount: string;
tokenAddress: string;
userAddress: string;
};
gasFee: {
gasToken: {
chainId: number;
address: string;
symbol: string;
name: string;
decimals: number;
icon: string;
logoURI: string;
chainAgnosticId: unknown;
};
gasLimit: string;
gasPrice: string;
estimatedFee: string;
feeInUsd: number;
};
slippage: number;
estimatedTime: number;
routeDetails: {
name: string;
logoURI: string;
routeFee: {
token: {
chainId: number;
address: string;
name: string;
symbol: string;
decimals: number;
logoURI: string;
icon: string;
};
amount: string;
feeInUsd: number;
priceInUsd: number;
};
dexDetails: unknown;
};
refuel: unknown;
}>;
};
}
export declare enum BungeeBridge {
'Across' = "across",
'CircleCCTP' = "cctp"
}
export declare const BungeeBridgeNames: Record<string, BungeeBridge>;
export interface BungeeQuote {
originChainId: number;
destinationChainId: number;
userAddress: string;
receiverAddress: string;
input: BungeeQuoteAPIResponse['result']['input'];
route: BungeeQuoteAPIResponse['result']['manualRoutes'][0];
routeBridge: BungeeBridge;
quoteTimestamp: number;
}
export type BungeeQuoteWithBuildTx = {
bungeeQuote: BungeeQuote;
buildTx: BungeeBuildTx;
};
export interface BungeeBuildTxAPIResponse {
success: boolean;
statusCode: number;
result: {
approvalData: {
spenderAddress: string;
amount: string;
tokenAddress: string;
userAddress: string;
};
txData: {
data: string;
to: string;
chainId: number;
value: string;
};
userOp: string;
};
}
export type BungeeBuildTx = BungeeBuildTxAPIResponse['result'];
export interface InputAmountTxDataBytesIndices {
inputAmount: {
bytes_startIndex: number;
bytes_length: number;
bytesString_startIndex: number;
bytesString_length: number;
};
}
export interface OutputAmountTxDataBytesIndices {
outputAmount: {
bytes_startIndex: number;
bytes_length: number;
bytesString_startIndex: number;
bytesString_length: number;
};
}
export interface InputOutputAmountTxDataBytesIndices extends InputAmountTxDataBytesIndices, OutputAmountTxDataBytesIndices {
}
export type BungeeTxDataBytesIndicesType = {
[K in BungeeBridge]: {
[functionSelector: string]: K extends BungeeBridge.Across ? InputOutputAmountTxDataBytesIndices : InputAmountTxDataBytesIndices;
};
};
export type SocketRequest = {
amount: string;
recipient: string;
toChainId: string;
token: string;
signature: string;
};
export type UserRequestValidation = {
routeId: string;
socketRequest: SocketRequest;
};
export declare enum BungeeEventStatus {
COMPLETED = "COMPLETED",
PENDING = "PENDING"
}
export declare enum BungeeBridgeName {
ACROSS = "across",
CCTP = "cctp"
}
export type BungeeEvent = {
identifier: string;
srcTransactionHash?: string;
bridgeName: BungeeBridgeName;
fromChainId: number;
gasUsed: string;
isCowswapTrade: boolean;
isSocketTx: boolean;
metadata: string;
orderId: string;
recipient: string;
sender: string;
socketContractVersion: string;
srcAmount: string;
srcBlockHash: string;
srcBlockNumber: number;
srcBlockTimeStamp: number;
srcTokenAddress: string;
srcTokenDecimals: number;
srcTokenLogoURI: string;
srcTokenName: string;
srcTokenSymbol: string;
to: string;
toChainId: number;
destTransactionHash?: string;
destAmount?: string;
destBlockHash: string;
destBlockNumber: number;
destBlockTimeStamp: number;
destTokenAddress: string;
destTokenDecimals: number;
destTokenLogoURI: string;
destTokenName: string;
destTokenSymbol: string;
srcTxStatus: BungeeEventStatus;
destTxStatus: BungeeEventStatus;
};
export type BungeeEventsAPIResponse = {
success: boolean;
result: Array<BungeeEvent>;
};
export interface AcrossStatusAPIResponse {
status: 'filled' | 'pending' | 'expired' | 'refunded' | 'slowFillRequested';
originChainId: string;
depositId: string;
depositTxHash?: string;
fillTx?: string;
destinationChainId?: string;
depositRefundTxHash?: string;
pagination?: {
currentIndex: number;
maxIndex: number;
};
}
export type AcrossStatus = AcrossStatusAPIResponse['status'];
export type BungeeBuyTokensAPIResponse = {
success: boolean;
statusCode: number;
result: Array<{
chainId: number;
address: string;
decimals: number;
name?: string;
symbol?: string;
logoURI?: string;
icon?: string;
}>;
};
export type BungeeIntermediateTokensAPIResponse = {
success: boolean;
statusCode: number;
result: Array<{
chainId: number;
address: string;
name: string;
symbol: string;
decimals: number;
logoURI: string;
icon: string;
}>;
};