import { UserID, UserIDRaw } from '@streamr/utils';
import { AbstractSigner, Provider } from 'ethers';
import { RpcProviderSource } from '../RpcProviderSource';
import { SignatureType } from '@streamr/trackerless-network';
export declare const IdentityInjectionToken: unique symbol;
/**
 * The {@link https://docs.ethers.org/v6/api/providers/abstract-signer/#AbstractSigner AbstractSigner} type is from the `ethers` library.
 */
export type SignerWithProvider = AbstractSigner<Provider>;
/**
 * Identity represents a digital identity, specified by cryptographic keys,
 * and capable of signing. You can configure new Identities in IdentityMapping.ts.
 */
export declare abstract class Identity {
    abstract getUserId(): Promise<UserID>;
    abstract getUserIdRaw(): Promise<UserIDRaw>;
    abstract getSignatureType(): SignatureType;
    abstract createMessageSignature(payload: Uint8Array): Promise<Uint8Array>;
    abstract getTransactionSigner(rpcProviderSource: RpcProviderSource): Promise<SignerWithProvider>;
}
