/**
 * Signing message format builders (M2).
 * Bridges and frameworks need these to construct the exact message
 * strings that the J41 platform expects for accept/deliver signatures.
 *
 * @example
 * ```typescript
 * import { buildAcceptMessage, buildDeliverMessage, signMessage } from '@junction41/sovagent-sdk';
 *
 * const msg = buildAcceptMessage({ jobHash, buyerVerusId, amount: 5, currency: 'VRSCTEST', timestamp });
 * const sig = signMessage(wif, msg, 'verustest');
 * await client.acceptJob(jobId, sig, timestamp);
 * ```
 */
export interface AcceptMessageParams {
    /** Job hash from the platform */
    jobHash: string;
    /** Buyer's Verus identity */
    buyerVerusId: string;
    /** Job amount */
    amount: number | string;
    /** Job currency */
    currency: string;
    /** Unix timestamp (seconds) */
    timestamp: number;
}
export interface DeliverMessageParams {
    /** Job hash from the platform */
    jobHash: string;
    /** SHA-256 hash of the deliverable content */
    deliveryHash: string;
    /** Unix timestamp (seconds) */
    timestamp: number;
}
/**
 * Build the canonical accept message for signing.
 * This is the exact format the J41 platform verifies.
 */
export declare function buildAcceptMessage(params: AcceptMessageParams): string;
/**
 * Build the canonical deliver message for signing.
 * This is the exact format the J41 platform verifies.
 */
export declare function buildDeliverMessage(params: DeliverMessageParams): string;
export interface DisputeRespondMessageParams {
    /** Job hash (or request_signature) from the platform */
    jobHash: string;
    /** Dispute response action */
    action: 'refund' | 'rework' | 'rejected';
    /** Unix timestamp (seconds) */
    timestamp: number;
}
export interface ReworkAcceptMessageParams {
    /** Job hash (or request_signature) from the platform */
    jobHash: string;
    /** Unix timestamp (seconds) */
    timestamp: number;
}
/**
 * Build the canonical dispute-respond message for signing.
 * Uses first 16 chars of jobHash per platform spec.
 */
export declare function buildDisputeRespondMessage(params: DisputeRespondMessageParams): string;
/**
 * Build the canonical rework-accept message for signing.
 * Uses first 16 chars of jobHash per platform spec.
 */
export declare function buildReworkAcceptMessage(params: ReworkAcceptMessageParams): string;
/**
 * Build the canonical complete message for signing.
 * Used by buyers to confirm work has been delivered satisfactorily.
 */
export declare function buildCompleteMessage(jobHash: string, timestamp: number): string;
/**
 * Build the canonical dispute message for signing.
 * Used by buyers to raise a dispute on a job.
 */
export declare function buildDisputeMessage(jobHash: string, reason: string, timestamp: number): string;
/**
 * Build the canonical post-bounty message for signing.
 * Must match the exact format the J41 platform verifies.
 */
export declare function buildPostBountyMessage(title: string, amount: number | string, currency: string, timestamp: number): string;
/**
 * Build the canonical apply-to-bounty message for signing.
 */
export declare function buildApplyBountyMessage(bountyId: string, timestamp: number): string;
/**
 * Build the canonical select-claimants message for signing.
 */
export declare function buildSelectClaimantsMessage(bountyId: string, applicantIds: string[], timestamp: number): string;
/**
 * Reject a string formatted as a J41 protocol message. Used to stop the
 * auth/onboarding challenge-signing paths from acting as a signing oracle: a
 * MITM'd `/auth/challenge` could otherwise return a fully-formed `J41-*` message
 * (deposit report, access envelope, status change) which the agent would sign
 * with its identity key, handing the attacker a valid privileged signature.
 * Normalizes compatibility/zero-width/dash forms so the prefix can't be
 * smuggled past the check. Auth challenges are opaque/random and never begin
 * with `J41-`, so this has no false positives.
 */
export declare function assertNotProtocolMessage(text: string): void;
export interface DepositReportParams {
    /** VerusID claiming the deposit (must control the signing key). */
    buyerVerusId: string;
    /** Seller agent's VerusID the deposit was paid to. */
    sellerVerusId: string;
    /** Transaction ID of the on-chain deposit. */
    txid: string;
    /** Amount in VRSC (string or number; stringified into the message). */
    amount: number | string;
    /** Single-use random nonce (replay protection). */
    nonce: string;
    /** Unix seconds when the report was signed (freshness window). */
    timestamp: number;
}
/**
 * Build the canonical deposit-report message for signing.
 *
 * The dispatcher's /j41/deposit/report endpoint requires this exact string to
 * be signed by `buyerVerusId` so an attacker cannot claim someone else's
 * on-chain payment as their own credit. `nonce` and `timestamp` are bound into
 * the signature for replay protection. The buyer signs with `signMessage`; the
 * dispatcher verifies with `verifyMessage` against the buyer's on-chain
 * primary address. Field order/format MUST stay byte-identical on both sides.
 */
export declare function buildDepositReportMessage(params: DepositReportParams): string;
//# sourceMappingURL=messages.d.ts.map