import type { Signer } from '@ethersproject/abstract-signer';
import { Provider } from '@ethersproject/providers';
import { EthereumAddress } from '@streamr/utils';
import { StrictStreamrClientConfig } from './Config';
export declare const AuthenticationInjectionToken: unique symbol;
export type SignerWithProvider = Signer & {
    readonly provider: Provider;
};
export interface Authentication {
    getAddress: () => Promise<EthereumAddress>;
    createMessageSignature: (payload: Uint8Array) => Promise<Uint8Array>;
    getStreamRegistryChainSigner: () => Promise<SignerWithProvider>;
}
export declare const createPrivateKeyAuthentication: (key: string, config: Pick<StrictStreamrClientConfig, 'contracts'>) => Authentication;
export declare const createAuthentication: (config: Pick<StrictStreamrClientConfig, 'auth' | 'contracts'>) => Authentication;
