import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
import { Buffer } from '../../lib/utils/buffer.js';
export type SignableAccount = ReturnType<InstanceType<typeof KeetaNetLib.Account>['assertAccount']>;
export type VerifiableAccount = InstanceType<typeof KeetaNetLib.Account>;
export type Signable = (string | number | bigint | InstanceType<typeof KeetaNetLib.Account>)[];
/**
 * Structural input to {@link objectToSignable}.
 */
export type SignableInput = {
    [key: string | number | symbol]: unknown;
} | SignableInput[] | Signable[number] | undefined | null | boolean;
/**
 * Serialize a JSON-shaped value following JCS
 * ({@link https://www.rfc-editor.org/rfc/rfc8785 RFC 8785}).
 */
export declare function canonicalizeJson(value: unknown): string;
/**
 * Canonicalize a tree into a {@link Signable} via {@link canonicalizeJson}.
 * {@link KeetaNetLib.Account} instances are replaced by their `publicKeyAndTypeString`.
 * {@link Date} instances are replaced by their ISO 8601 string.
 */
export declare function objectToSignable(item: SignableInput): Signable;
/**
 * Options for signature verification
 */
export interface VerifyOptions {
    /** Maximum allowed time difference in milliseconds (default: 5 * 60 * 1000 = 5 minutes) */
    maxSkewMs?: number;
    /** Reference time for skew calculation (default: new Date()) */
    referenceTime?: Date;
}
export declare function FormatData(account: VerifiableAccount, data: Signable, nonce?: string, timestamp?: string | Date): {
    nonce: string;
    timestamp: string;
    verificationData: Buffer;
};
export declare function SignData(account: SignableAccount, data: Signable): Promise<{
    nonce: string;
    timestamp: string;
    signature: string;
}>;
export declare function VerifySignedData(account: VerifiableAccount, data: Signable, signed: Awaited<ReturnType<typeof SignData>>, options?: VerifyOptions): Promise<boolean>;
//# sourceMappingURL=signing.d.ts.map