///
import { ResultAsync } from 'neverthrow';
import { UInt256 } from '@radixdlt/uint256';
import { Hasher } from '../_types';
export declare type DiffieHellman = (publicKeyOfOtherParty: PublicKeyT) => ResultAsync;
export declare type Signer = Readonly<{
sign: (hashedMessage: Buffer) => ResultAsync;
signUnhashed: (input: Readonly<{
msgToHash: Buffer | string;
hasher?: Hasher;
}>) => ResultAsync;
}>;
export declare type SignatureT = Readonly<{
r: UInt256;
s: UInt256;
toDER: () => string;
equals: (other: SignatureT) => boolean;
}>;
export declare type ECPointOnCurveT = Readonly<{
x: UInt256;
y: UInt256;
toBuffer: (includePrefixByte?: boolean) => Buffer;
toString: (includePrefixByte?: boolean) => string;
equals: (other: ECPointOnCurveT) => boolean;
add: (other: ECPointOnCurveT) => ECPointOnCurveT;
multiply: (by: UInt256) => ECPointOnCurveT;
multiplyWithPrivateKey: (privateKey: PrivateKeyT) => ECPointOnCurveT;
}>;
export declare type PublicKeyT = Readonly<{
__hex: string;
asData: (input: {
readonly compressed: boolean;
}) => Buffer;
toString: (compressed?: boolean) => string;
isValidSignature: (input: Readonly<{
signature: SignatureT;
hashedMessage: Buffer;
}>) => boolean;
decodeToPointOnCurve: () => ECPointOnCurveT;
equals: (other: PublicKeyT) => boolean;
}>;
export declare type PrivateKeyT = Signer & Readonly<{
diffieHellman: DiffieHellman;
scalar: UInt256;
publicKey: () => PublicKeyT;
toString: () => string;
}>;
export declare type KeyPairT = Readonly<{
publicKey: PublicKeyT;
privateKey: PrivateKeyT;
}>;
//# sourceMappingURL=_types.d.ts.map