import type { RunContractArtifact } from './run-status.js'; import type { ProviderRouteId } from './provider-platform/types.js'; /** * The environment the fingerprint must see. For seedance-modelark that is the * route's own merge (`.env.local` under the process env): the transport reads * its model, host and chain mode from there, so a value set only in * `.env.local` would otherwise change the bill without changing the hash. */ export declare function submitEnvironmentFor(routeId: string | null | undefined, workspaceRoot: string, env: NodeJS.ProcessEnv): Promise; /** * What decides the spend but lives in the environment, not the payload: WHICH * transport submits (on `seedance-direct` the free engine and the paid API share * one route id and one payload, and `VCLAW_SEEDANCE_DIRECT_NATIVE=1` is the whole * difference) and Dreamina's route-local model and resolution overrides. Read * from the same environment the adapter is resolved from. */ export declare function submitEnvironmentFingerprint(routeId: ProviderRouteId, env: NodeJS.ProcessEnv, /** Injectable free-engine probe, passed straight to `resolveActiveTransport` (tests). */ probeFreeSeedanceEngine?: (env: NodeJS.ProcessEnv) => boolean): Record; export declare function runContractApprovalHash(contract: Pick, submitEnvironment?: Record): string; export declare function parseRequiredContractHash(raw: string | undefined): string; /** * Refuse a submit whose contract is not the approved one. `approved` is the * contract the last run left on disk: when it is the dry run that produced * `requiredHash`, the refusal can name the scenes that changed; when it is not * (another run overwrote it, or it never existed) the refusal says so instead. */ export declare function assertApprovedRunContract(input: { requiredHash: string; pending: Pick; approved: RunContractArtifact | null; /** From `submitEnvironmentFingerprint`, for the run about to be submitted. */ submitEnvironment?: Record; }): void; /** * Handlers read flags with `args.includes(...)`, so a flag a command does not * know is dropped without a word. For a spend gate that is the worst outcome: * `render-scenes --require-contract --confirm-spend` would walk the whole * paid ladder looking gated. A command that cannot hold the gate says so. */ export declare function assertRequireContractIsHonoured(subcommand: string, args: string[]): void; //# sourceMappingURL=run-contract-approval.d.ts.map