import { KeyType } from "../chain/KeyType.js";
import { SignatureParts } from "../chain/Signature.js";
import { ChainKind } from "@wireio/opp-typescript-models";
/**
 * Signs a message with a private key using various cryptographic algorithms.
 *
 * @param secret - The private key as a byte array
 * @param message - The message to sign as a byte array
 * @param type - The type of key/signing algorithm to use (ED25519, Ethereum, or ECDSA curves)
 * @param options
 * @returns A SignatureParts object containing the signature components (r, s, recid) and the key type
 *
 * The function supports three types of signatures:
 * - ED25519 (ED): Uses TweetNaCl for EdDSA signatures
 * - Ethereum (EM): Signs using Ethereum's personal message format with ECDSA
 * - ECDSA curves (K1, R1): Uses elliptic curve cryptography with canonical signatures
 */
export declare function sign<C extends ChainKind = ChainKind.UNKNOWN>(secret: Uint8Array, message: Uint8Array, type: KeyType, options?: sign.Options<C>): SignatureParts;
export declare namespace sign {
    interface BaseOptions<C extends ChainKind = ChainKind.UNKNOWN> {
        chain: C;
    }
    const DefaultBaseOptions: BaseOptions;
    interface EthereumOptions extends BaseOptions<ChainKind.EVM> {
        personalMessage: boolean;
    }
    const DefaultEthereumOptions: EthereumOptions;
    type Options<C extends ChainKind = ChainKind.UNKNOWN> = C extends ChainKind.EVM ? EthereumOptions : BaseOptions<C>;
    function getOptions<C extends ChainKind = ChainKind.UNKNOWN>(inOpts: object, chain: C): Options<C>;
}
//# sourceMappingURL=Sign.d.ts.map