import { UserID } from '@streamr/utils';
import { AbstractSigner, Provider } from 'ethers';
import { StrictStreamrClientConfig } from './Config';
import { RpcProviderSource } from './RpcProviderSource';
export declare const AuthenticationInjectionToken: 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>;
export interface Authentication {
    getUserId: () => Promise<UserID>;
    createMessageSignature: (payload: Uint8Array) => Promise<Uint8Array>;
    getTransactionSigner: (rpcProviderSource: RpcProviderSource) => Promise<SignerWithProvider>;
}
export declare const createPrivateKeyAuthentication: (key: string) => Authentication;
export declare const createAuthentication: (config: Pick<StrictStreamrClientConfig, "auth" | "contracts" | "_timeouts">) => Authentication;
