///
import { CoinAddress } from '../../ICoinProtocol';
import { SCALEDecodeResult } from '../common/data/scale/SCALEDecoder';
import { SCALEAccountId } from '../common/data/scale/type/SCALEAccountId';
import { SCALEMultiAddress, SCALEMultiAddressType } from '../common/data/scale/type/SCALEMultiAddress';
import { SCALEType } from '../common/data/scale/type/SCALEType';
import { KusamaAddress } from '../kusama/KusamaAddress';
import { MoonbeamAddress } from '../moonbeam/data/account/MoonbeamAddress';
import { PolkadotAddress } from '../polkadot/PolkadotAddress';
import { SubstrateNetwork } from '../SubstrateNetwork';
export declare type SubstrateAccountId = string | T;
export interface SubstrateAddressFactory {
from(accountId: SubstrateAccountId): SubstrateCompatAddressType[Network];
getPlaceholder(): SubstrateCompatAddressType[Network];
}
export interface SCALEAddressFactory {
from(value: string | Uint8Array | Buffer | SubstrateCompatAddressType[Network], network: Network): SCALECompatAddressType[Network];
decode(network: Network, runtimeVersion: number | undefined, hex: string): SCALEDecodeResult;
}
export interface SubstrateCompatAddressType extends Record {
[SubstrateNetwork.POLKADOT]: PolkadotAddress;
[SubstrateNetwork.KUSAMA]: KusamaAddress;
[SubstrateNetwork.MOONBEAM]: MoonbeamAddress;
}
export interface SCALECompatAddressType extends Record {
[SubstrateNetwork.POLKADOT]: SCALEMultiAddress;
[SubstrateNetwork.KUSAMA]: SCALEMultiAddress;
[SubstrateNetwork.MOONBEAM]: SCALEAccountId;
}
export declare function substrateAddressFactory(substrateNetwork: Network): SubstrateAddressFactory;
export declare function scaleAddressFactory(substrateNetwork: Network): SCALEAddressFactory;
export interface SubstrateCompatAddress extends CoinAddress {
compare(other: SubstrateAccountId): number;
getBufferBytes(): Buffer;
getHexBytes(): string;
}
export declare function isSubstrateCompatAddress(address: unknown): address is SubstrateCompatAddress;