import { ExtendedKeyPair, ExtendedPublicKey, KeyPair, PublicKey } from '../../../types/key'; import { Signature } from '../../../types/signature'; import { _AnyProtocol, _BaseProtocol, _OfflineProtocol } from '../../protocol'; export declare type SignMessageExtension = T extends _OfflineProtocol ? OfflineSignMessage<_PublicKey, _KeyPair> : T extends _BaseProtocol ? BaseSignMessage<_PublicKey> : never; export interface BaseSignMessage<_PublicKey extends PublicKey | ExtendedPublicKey = PublicKey> { verifyMessageWithPublicKey(message: string, signature: Signature, publicKey: _PublicKey): Promise; } export interface OfflineSignMessage<_PublicKey extends PublicKey | ExtendedPublicKey = PublicKey, _KeyPair extends KeyPair | ExtendedKeyPair = KeyPair> extends BaseSignMessage<_PublicKey> { signMessageWithKeyPair(message: string, keyPair: _KeyPair): Promise; }