import type { ChainInfo, GasFreeLedgerRawHashObject, TronAddress, EvmAddress, GasFreeTypedDataMessage, EvmGasFreeTypedData } from './types'; export interface GasFreeParameter { chainId?: number; chainInfo?: ChainInfo; } export interface AssembleGasFreeTransactionParams { token: string; serviceProvider: string; user: string; receiver: string; value: string; maxFee: string; deadline: string; version: string; nonce: string; } export declare abstract class GasFree { protected readonly chainInfo: ChainInfo; protected constructor(gasFreeParameter: GasFreeParameter); private checkIsValidChainId; private checkIsValidCreationCode; assembleStandard712GasFreeTransactionJson({ token, serviceProvider, user, receiver, value, maxFee, deadline, version, nonce, }: AssembleGasFreeTransactionParams): EvmGasFreeTypedData; protected checkIsValidMessageNumber(value: string | number): boolean; calculateSalt(address: string): string; addFunctionSelectorToAddress(address: string): string; calculateBytecodeHash(address: string, beacon: string, creationCode: string): string; calculateCreate2Address(salt: string, bytecodeHash: string, gasFreeController: string): EvmAddress; calculateGasFreeContractAddress(userAddress: string, gasFreeController: string, beacon: string, creationCode: string): string; getGasFreeLedgerRawHash({ message, }: { message: GasFreeTypedDataMessage; }): GasFreeLedgerRawHashObject; getGasFreeTypedDataDomain(): { name: string; version: string; chainId: number; verifyingContract: `0x${string}`; }; abstract checkIsValidGasFreeTypedDataParams({ message, }: { message: GasFreeTypedDataMessage; }): boolean; protected abstract checkIsValidAddress(address?: string): boolean; protected abstract getCreate2PrefixByte(): string; abstract generateGasFreeAddress(userAddress?: string): TronAddress | EvmAddress; }