@shogun-sdk/money-legos
Version:
Shogun Money Legos: clients and types for quotes, memes, prices, balances, fees, validations, etc.
72 lines • 3.81 kB
TypeScript
import { TokenBalanceResults } from '../types/index.js';
import { ShogunBalancesApiClient } from '../clients/shogun-balances-api-client.js';
type SwapParams = {
weiAmount: bigint;
srcToken: string;
destToken: string;
srcNetwork: number;
destNetwork: number;
};
export declare class GasStationCalculator {
private errorBuilder;
private balancesClient;
constructor(errorBuilder: (network: string, tokenSymbol?: string, minAmountValue?: number, minUsdValue?: number) => string, balancesClient: ShogunBalancesApiClient);
protected getNativeDestinationNetworkPrice(network: number, tokens: TokenBalanceResults[]): Promise<number>;
protected getMinNativeBalance(network: number): bigint | undefined;
protected calculateRefuelFeePercent(refuelAmountUsd: number, amountInUsd: number): number;
protected calculateRefuelAmount(srcNetwork: number, destNetwork: number, tokenInput: TokenBalanceResults, tokens: TokenBalanceResults[], destinationNativeBalance: bigint, swapParams: SwapParams, systemFeePercent: number, isEoaAccount: boolean, externalServiceTxCostUsd: number): Promise<{
additionalAffiliateFeePercent: number;
affiliateFeeTotalValidation: {
isValid: boolean;
error?: string;
totalFeePercent?: number;
};
refuelAmount: bigint;
gasRefuelWarning?: string;
}>;
protected isCrossChainRefuel(srcNetwork: number, destNetwork: number): boolean;
protected findTokenIn(tokens: TokenBalanceResults[], srcTokenAddress: string, srcNetwork: number, walletAddress: string): TokenBalanceResults | undefined;
ignoreGasRefuel(tokenOut: TokenBalanceResults | undefined, walletAddress: string, network: number): Promise<boolean>;
protected isTokenOutNative(address: string, destinationNetwork: number): boolean;
calculateGasRefuelAmount(walletAddress: string, destinationWalletAddress: string | undefined, balances: TokenBalanceResults[], swapParams: SwapParams, systemFeePercent: number, isEoaAccount: boolean, externalServiceTxCostUsd: number, findTokenFallback?: (tokens: TokenBalanceResults[], srcTokenAddress: string, srcNetwork: number, walletAddress: string) => TokenBalanceResults): Promise<{
success: boolean;
refuelAmount?: bigint;
tokenIn?: TokenBalanceResults;
destinationWalletAddress?: string;
additionalAffiliateFeePercent: number;
gasRefuelWarning?: string;
affiliateFeeTotalValidation: {
isValid: boolean;
error?: string;
totalFeePercent?: number;
};
}>;
}
export declare class GasStationService extends GasStationCalculator {
private apiKey;
private apiUrl;
private errorHandler;
constructor(apiKey: string, apiUrl: string, errorHandler: (error: Error | string) => void, errorBuilder: (network: string, tokenSymbol?: string, minAmountValue?: number, minUsdValue?: number) => string, balancesClient: ShogunBalancesApiClient);
protected makeGasStationApiRequest(url: string, payload: Record<string, string | number>, headers: Record<string, string>): Promise<boolean>;
/**
* Sends a request to the Gas Station API to refuel a wallet with native tokens
*
* Example curl command to test locally:
* ```
curl -X POST http://localhost:3000 \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
"chainId": 7565164,
"amount": "10000",
"recipient": "HxQpBRpH7sRHpidTWZ55xAsMxddhjHBE8BRkkj2ewHa1"
}'
* ```
*/
sendGasStationRequest(amount: bigint, network: number, walletAddress: string): Promise<{
success: boolean;
error?: string;
}>;
}
export {};
//# sourceMappingURL=GasStationService.d.ts.map