import { SubstrateAccountController } from '../controller/account/SubstrateAccountController'; import { SubstrateTransactionController } from '../controller/transaction/SubstrateTransactionController'; import { SubstrateAccountId } from '../data/account/address/SubstrateAddress'; import { TypedSubstrateAddress } from '../data/account/address/SubstrateAddressFactory'; import { SubstrateTransactionType } from '../data/transaction/SubstrateTransaction'; import { SubstrateNodeClient } from '../node/SubstrateNodeClient'; import { SubstrateProtocolConfiguration } from '../types/configuration'; import { SubstrateCryptoConfiguration } from '../types/crypto'; import { SubstrateProtocolNetwork } from '../types/protocol'; import { SubstrateProtocol, SubstrateProtocolImpl } from './SubstrateProtocol'; export interface SubstrateStakingProtocol<_ProtocolConfiguration extends SubstrateProtocolConfiguration = SubstrateProtocolConfiguration, _Units extends string = string, _ProtocolNetwork extends SubstrateProtocolNetwork = SubstrateProtocolNetwork, _CryptoConfiguration extends SubstrateCryptoConfiguration = SubstrateCryptoConfiguration> extends SubstrateProtocol<_ProtocolConfiguration, _Units, _ProtocolNetwork, _CryptoConfiguration> { getMaxDelegationValueWithAddress(address: string): Promise; } export declare abstract class SubstrateStakingProtocolImpl<_Units extends string, _ProtocolConfiguration extends SubstrateProtocolConfiguration, _ProtocolNetwork extends SubstrateProtocolNetwork = SubstrateProtocolNetwork, _NodeClient extends SubstrateNodeClient<_ProtocolConfiguration> = SubstrateNodeClient<_ProtocolConfiguration>, _AccountController extends SubstrateAccountController<_ProtocolConfiguration> = SubstrateAccountController<_ProtocolConfiguration>, _TransactionController extends SubstrateTransactionController<_ProtocolConfiguration> = SubstrateTransactionController<_ProtocolConfiguration>> extends SubstrateProtocolImpl<_Units, _ProtocolConfiguration, _ProtocolNetwork, _NodeClient, _AccountController, _TransactionController> implements SubstrateStakingProtocol<_ProtocolConfiguration, _Units, _ProtocolNetwork, SubstrateCryptoConfiguration<_ProtocolConfiguration>> { getMaxDelegationValueWithAddress(address: string): Promise; protected abstract getFutureRequiredTransactions(accountId: SubstrateAccountId>, intention: 'transfer' | 'check' | 'delegate'): Promise<[SubstrateTransactionType<_ProtocolConfiguration>, any][]>; }