import type { CLIFlags } from './args.js';
export interface PromoteResult {
    ok: boolean;
    message: string;
    /** The path the draft moved to (relative to projectRoot). */
    certifiedPath?: string;
    /** The patch the human still needs to apply to datalex-manifest.json. */
    datalexManifestDiff?: string;
}
/**
 * Promote a Tier-2 draft block from `blocks/_drafts/<slug>.dql` or
 * `domains/<domain>/blocks/_drafts/<slug>.dql` to the canonical block
 * location, flipping `status` to `certified`. When a DataLex contract is
 * supplied, the promoted block is also bound to that contract.
 *
 * Companion to the dql-mcp `query_via_metadata` tool. Together they close
 * the graduated-trust promotion loop:
 *
 *   ask  ->  no Tier-1 hit  ->  query_via_metadata writes a draft
 *        ->  human reviews / refines
 *        ->  dql certify --from-draft <path>
 *        ->  next ask hits Tier-1 forever
 *
 * Behavior:
 *   1. Validates the draft exists and has status=draft.
 *   2. Moves the file to domains/<domain>/blocks/<slug>.dql when that domain
 *      layout exists, otherwise blocks/<domain>/<slug>.dql.
 *   3. Flips `status = "draft"` to `status = "certified"`.
 *   4. Optionally sets `datalex_contract = "<contract>"` (provided via
 *      --contract or taken from `proposed_contract_id` with `@1` appended).
 *   5. Sets `owner = "<owner>"` from --owner if provided.
 *   6. Drops Tier-2 proposal metadata fields (their job is done).
 *   7. Computes the optional patch the human still needs to apply to
 *      datalex-manifest.json when a contract is present.
 *
 * Does NOT auto-modify datalex-manifest.json. That file is hand-curated
 * until the DataLex compiler ships its v1 emitter; this command shows
 * the user the exact diff to apply.
 */
export declare function promoteFromDraft(projectRoot: string, flags: CLIFlags): PromoteResult;
//# sourceMappingURL=promote-from-draft.d.ts.map