@rainbow-me/fee-suggestions
Version:
JavaScript library that suggest fees on Ethereum after EIP-1559 using historical data using ethers.js
70 lines (63 loc) • 2.43 kB
text/typescript
export type Reward = string[];
export type GasUsedRatio = number[];
export interface BlocksToConfirmationByPriorityFee {
1: string;
2: string;
3: string;
4: string;
}
export interface BlocksToConfirmationByBaseFee {
4: string;
8: string;
40: string;
120: string;
240: string;
}
/**
* Response interface from `eth_feeHistory` RPC call
*
* @member baseFeePerGas - Array containing base fee per gas of the last BLOCKCOUNT blocks
* @member gasUsedRatio - Array containing gas used ratio of the last BLOCKCOUNT blocks
* @member gasUsedRatio - Lowest number block of the returned range
* @member reward - Array of effective priority fee per gas data points from a single block
*/
export interface FeeHistoryResponse {
baseFeePerGas: string[];
gasUsedRatio: GasUsedRatio;
oldestBlock: number;
reward: Reward[];
}
/**
* Max base fee related suggestions
*
* @member baseFeeSuggestion - Base fee suggestion in wei string
* @member baseFeeTrend - Estimated trend
* @member currentBaseFee - Current block base fee in wei string
* @member blocksToConfirmationByBaseFee - Object containing estimated blocks that a confirmation is going to happen if `blocksToConfirmationByBaseFee[blocks]` is used as `maxBasefee`, in wei string
*/
export interface MaxFeeSuggestions {
baseFeeSuggestion: string;
baseFeeTrend: number;
blocksToConfirmationByBaseFee: BlocksToConfirmationByBaseFee;
currentBaseFee: string;
}
/**
* Max fee priority fee related suggestions
*
* @member maxPriorityFeeSuggestions - Object containing max priority fee in wei string per speeds, `urgent`, `fast` and `normal`
* @member confirmationTimeByPriorityFee - Object containing estimated seconds that a confirmation is going to happen if `confirmationTimeByPriorityFee[secs]` is used as `maxPriorityfee`, in wei string
* @member blocksToConfirmationByPriorityFee - Object containing estimated blocks that a confirmation is going to happen if `confirmationTimeByPriorityFee[blocks]` is used as `maxPriorityfee`, in wei string
*/
export interface MaxPriorityFeeSuggestions {
blocksToConfirmationByPriorityFee: BlocksToConfirmationByPriorityFee;
confirmationTimeByPriorityFee: {
15: string;
30: string;
45: string;
60: string;
};
maxPriorityFeeSuggestions: { urgent: string; fast: string; normal: string };
}
export interface Suggestions
extends MaxFeeSuggestions,
MaxPriorityFeeSuggestions {}