import type { AllowanceProps, ApproveProps, SignTokenPermitProps, TransferProps } from './types.js';
import { erc20abi } from './abi/erc20abi.js';
import { type Address, type GetContractReturnType, type Hash, type WalletClient } from 'viem';
import { LidoSDKModule } from '../common/class-primitives/sdk-module.js';
import type { NoTxOptions, PermitSignature, TransactionOptions, TransactionResult } from '../core/types.js';
export declare abstract class AbstractLidoSDKErc20 extends LidoSDKModule {
abstract contractAddress(): Promise
;
getContract(): Promise>;
balance(address?: Address): Promise;
transfer(props: TransferProps): Promise;
populateTransfer(props: NoTxOptions): Promise<{
to: `0x${string}`;
from: import("viem").JsonRpcAccount;
data: `0x${string}`;
}>;
simulateTransfer(props: NoTxOptions): Promise | import("viem").SimulateContractReturnType>;
estimateTransfer(props: NoTxOptions): Promise;
signPermit(props: SignTokenPermitProps): Promise;
populatePermit(props: SignTokenPermitProps): Promise<{
readonly account: import("viem").JsonRpcAccount;
readonly domain: {
name: string;
version: string;
chainId: bigint;
verifyingContract: Address;
};
readonly types: {
readonly EIP712Domain: readonly [{
readonly name: "name";
readonly type: "string";
}, {
readonly name: "version";
readonly type: "string";
}, {
readonly name: "chainId";
readonly type: "uint256";
}, {
readonly name: "verifyingContract";
readonly type: "address";
}];
readonly Permit: readonly [{
readonly name: "owner";
readonly type: "address";
}, {
readonly name: "spender";
readonly type: "address";
}, {
readonly name: "value";
readonly type: "uint256";
}, {
readonly name: "nonce";
readonly type: "uint256";
}, {
readonly name: "deadline";
readonly type: "uint256";
}];
};
readonly primaryType: "Permit";
readonly message: {
owner: `0x${string}`;
spender: `0x${string}`;
value: bigint;
nonce: bigint;
deadline: bigint;
};
}>;
approve(props: ApproveProps): Promise;
populateApprove(props: NoTxOptions): Promise<{
to: `0x${string}`;
from: `0x${string}`;
data: `0x${string}`;
}>;
simulateApprove(props: NoTxOptions): Promise>;
estimateApprove(props: NoTxOptions, options?: TransactionOptions): Promise;
allowance({ account: accountProp, to, }: AllowanceProps): Promise;
erc20Metadata(): Promise<{
name: string;
symbol: string;
decimals: number;
domainSeparator: Hash;
}>;
totalSupply(): Promise;
nonces(address: Address): Promise;
erc721Domain(): Promise<{
name: string;
version: string;
chainId: bigint;
verifyingContract: Address;
}>;
private parseProps;
}
//# sourceMappingURL=erc20.d.ts.map