@bnb-chain/canonical-bridge-sdk
Version:
canonical bridge sdk
304 lines (302 loc) • 8.22 kB
TypeScript
import { PublicClient, WalletClient } from 'viem';
export interface ICBridgeChain {
id: number;
name: string;
icon: string;
block_delay: number;
gas_token_symbol: string;
explore_url: string;
contract_addr: string;
drop_gas_amt: string;
drop_gas_cost_amt: string;
drop_gas_balance_alert: string;
suggested_gas_cost: string;
flat_usd_fee: number;
farming_reward_contract_addr: string;
transfer_agent_contract_addr: string;
disabled: boolean;
}
export interface ICBridgeToken {
token: {
symbol: string;
address: string;
decimal: number;
xfer_disabled: boolean;
display_symbol?: string;
};
name: string;
icon: string;
inbound_lmt: string;
inbound_epoch_cap: string;
transfer_disabled: boolean;
liq_add_disabled: boolean;
liq_rm_disabled: boolean;
liq_agg_rm_src_disabled: boolean;
delay_threshold: string;
delay_period: number;
method?: string;
bridgeAddress?: string;
}
export interface ICBridgePeggedPairConfig {
org_chain_id: number;
org_token: ICBridgeToken;
pegged_chain_id: number;
pegged_token: ICBridgeToken;
pegged_deposit_contract_addr: string;
pegged_burn_contract_addr: string;
canonical_token_contract_addr: string;
vault_version: number;
bridge_version: number;
migration_peg_burn_contract_addr: string;
}
export interface ICBridgeBurnConfig {
chain_id: number;
token: ICBridgeToken;
burn_contract_addr: string;
canonical_token_contract_addr: string;
burn_contract_version: number;
}
export interface ICBridgeBurnPairConfig {
burn_config_as_org: ICBridgeBurnConfig;
burn_config_as_dst: ICBridgeBurnConfig;
}
export interface CBridgeTransferConfigs {
chains: ICBridgeChain[];
chain_token: {
[k: number]: {
token: ICBridgeToken[];
};
};
farming_reward_contract_addr: string;
pegged_pair_configs: ICBridgePeggedPairConfig[];
blocked_bridge_direct: {
symbol: string;
src_chain_id: string;
dst_chain_id: string;
}[];
redirect_to_aggregators_config: {
symbol: string;
src_chain_id: string;
dst_chain_id: string;
}[];
}
export interface ICBridgeTransferStatusResponse {
err: object;
status: number;
wd_onchain: null;
sorted_sigs: string[];
signers: string[];
powers: string[];
refund_reason: number;
block_delay: number;
src_block_tx_link: string;
dst_block_tx_link: string;
}
export interface ICBridgeTransferInfo {
chain: any;
token: any;
amount: string;
}
export interface ICBridgeTransferHistory {
transfer_id: string;
src_send_info: ICBridgeTransferInfo;
dst_received_info: ICBridgeTransferInfo;
ts: number;
src_block_tx_link: string;
dst_block_tx_link: string;
status: string;
refund_reason: string;
}
export interface ICBridgeTransferHistoryResponse {
err: object;
history: ICBridgeTransferHistory[];
next_page_token: string;
current_size: string;
}
export interface ICBridgeTransferEstimatedTime {
err: object;
median_transfer_latency_in_second: number;
}
export type ICBridgeTransactionResponse = {
data: null | {
gasFee: bigint;
gasPrice: bigint;
transferId: string;
send: () => Promise<`0x${string}`>;
};
isLoading: boolean;
isError: boolean;
error: null | unknown;
};
export type ICBridgeEstimateAmountRequest = {
src_chain_id: number;
dst_chain_id: number;
token_symbol: string;
amt: string;
user_addr?: string;
slippage_tolerance: number;
is_pegged?: boolean;
};
export interface ICBridgeEstimateAmountResponse {
err: object;
eq_value_token_amt: string;
bridge_rate: number;
perc_fee: string;
base_fee: string;
slippage_tolerance: number;
max_slippage: number;
estimated_receive_amt: string;
drop_gas_amt: string;
op_fee_rebate: number;
op_fee_rebate_portion: number;
op_fee_rebate_end_time: string;
}
export interface ICBridgeBurnConfig {
chain_id: number;
token: ICBridgeToken;
burn_contract_addr: string;
canonical_token_contract_addr: string;
burn_contract_version: number;
}
export interface ICBridgeBurnPairConfig {
burn_config_as_org: ICBridgeBurnConfig;
burn_config_as_dst: ICBridgeBurnConfig;
}
export interface ICBridgeGetSupportedFuncParams {
fromChainId?: number;
toChainId?: number;
fromTokenSymbol?: string;
peggedPairConfigs: ICBridgePeggedPairConfig[];
burnPairConfigs: ICBridgeBurnPairConfig[];
data: ICBridgeTransferConfig;
}
export interface ICBridgeSendRangeInput {
bridgeAddress: `0x${string}`;
tokenAddress: `0x${string}`;
isPegged?: boolean;
client: PublicClient;
}
export interface ISendCBridgeToken {
walletClient: WalletClient;
publicClient: PublicClient;
bridgeAddress: string;
fromChainId: number;
address: `0x${string}`;
peggedConfig?: ICBridgePeggedPairConfig;
isPegged: boolean;
args: any;
}
export interface IGetCBridgeTransferAddressInput {
fromChainId: number;
isPegged: boolean;
peggedConfig?: ICBridgePeggedPairConfig;
chainConfig?: ICBridgeChain;
}
export interface IGetCBridgeTransferParamsInput {
amount: bigint;
isPegged: boolean;
toChainId: number;
address: `0x${string}`;
tokenAddress: `0x${string}`;
maxSlippage: number;
transferType?: 'deposit' | 'withdraw';
peggedConfig?: ICBridgePeggedPairConfig;
nonce: number;
}
export interface IGetCBridgeABI {
isPegged: boolean;
transferType?: 'deposit' | 'withdraw';
peggedConfig?: ICBridgePeggedPairConfig;
}
export interface IGetCBridgeTransferFunction {
isPegged: boolean;
transferType?: 'deposit' | 'withdraw';
}
export interface ICBridgeToken {
token: {
symbol: string;
address: string;
decimal: number;
xfer_disabled: boolean;
display_symbol?: string;
};
name: string;
icon: string;
inbound_lmt: string;
inbound_epoch_cap: string;
transfer_disabled: boolean;
liq_add_disabled: boolean;
liq_rm_disabled: boolean;
liq_agg_rm_src_disabled: boolean;
delay_threshold: string;
delay_period: number;
method?: string;
bridgeAddress?: string;
}
export interface ICBridgeChain {
id: number;
name: string;
icon: string;
block_delay: number;
gas_token_symbol: string;
explore_url: string;
contract_addr: string;
drop_gas_amt: string;
drop_gas_cost_amt: string;
drop_gas_balance_alert: string;
suggested_gas_cost: string;
flat_usd_fee: number;
farming_reward_contract_addr: string;
transfer_agent_contract_addr: string;
disabled: boolean;
}
export interface ICBridgePeggedPairConfig {
org_chain_id: number;
org_token: ICBridgeToken;
pegged_chain_id: number;
pegged_token: ICBridgeToken;
pegged_deposit_contract_addr: string;
pegged_burn_contract_addr: string;
canonical_token_contract_addr: string;
vault_version: number;
bridge_version: number;
migration_peg_burn_contract_addr: string;
}
export interface ICBridgeTransferConfig {
chains: ICBridgeChain[];
chain_token: {
[k: number]: {
token: ICBridgeToken[];
};
};
farming_reward_contract_addr: string;
pegged_pair_configs: ICBridgePeggedPairConfig[];
blocked_bridge_direct: {
symbol: string;
src_chain_id: string;
dst_chain_id: string;
}[];
redirect_to_aggregators_config: {
symbol: string;
src_chain_id: string;
dst_chain_id: string;
}[];
}
export interface ICBridgeTokenValidateParams {
isPegged: boolean;
fromChainId?: number;
fromTokenAddress: `0x${string}`;
fromTokenSymbol: string;
fromTokenDecimals: number;
bridgeAddress: `0x${string}`;
toChainId?: number;
toTokenAddress?: `0x${string}`;
toTokenSymbol?: string;
toTokenDecimals: number;
amount: number;
cBridgeEndpoint: string;
}
export interface ICBridgeMaxMinSendAmt {
max: string;
min: string;
}