///
import { PublicKey } from '@airgap/module-kit';
import { SubstrateAccountConfiguration, SubstrateProtocolConfiguration } from '../../../types/configuration';
import { SCALEDecodeResult } from '../../scale/SCALEDecoder';
import { SCALEAccountId } from '../../scale/type/SCALEAccountId';
import { SCALEMultiAddress, SCALEMultiAddressType } from '../../scale/type/SCALEMultiAddress';
import { SCALEType } from '../../scale/type/SCALEType';
import { SubstrateAccountId, SubstrateAddress } from './SubstrateAddress';
import { SubstrateEthAddress } from './SubstrateEthAddress';
import { SubstrateSS58Address } from './SubstrateSS58Address';
export interface SubstrateAddressFactory {
from(accountId: SubstrateAccountId>): TypedSubstrateAddress;
getPlaceholder(): TypedSubstrateAddress;
}
export interface SCALEAddressFactory {
from(value: string | PublicKey | Uint8Array | Buffer | TypedSubstrateAddress, configuration: C): TypedSCALEAddress;
decode(configuration: C, runtimeVersion: number | undefined, hex: string): SCALEDecodeResult>;
}
export declare type TypedSubstrateAddress = SubstrateAddressType[C['account']['type']];
interface SubstrateAddressType extends Record {
ss58: SubstrateSS58Address;
eth: SubstrateEthAddress;
}
export declare type TypedSCALEAddress = SCALEAddressRecord[C['account']['type']];
interface SCALEAddressRecord extends Record {
ss58: SCALEMultiAddress;
eth: SCALEAccountId;
}
export declare function substrateAddressFactory(configuration: C): SubstrateAddressFactory;
export declare function scaleAddressFactory(configuration: C): SCALEAddressFactory;
export {};