/**
 * OData handlers for NightgateService submission actions.
 *
 * - `deployContract`        → TransactionSubmitter.deploy()
 * - `submitContractCall`    → TransactionSubmitter.call()
 *
 * Responsibilities here (the submitter itself does NOT do any of these):
 *   1. Parse the JSON-encoded `args` / `initialPrivateState` payloads.
 *   2. Rate-limit per sessionId (deploys are stricter than calls).
 *   3. Resolve `compiledArtifactRef` → compiled contract + zkConfigPath +
 *      privateStateId via the contract registry.
 *   4. Look up the wallet session and build WalletMaterial (real signing-capable
 *      material when the session has a seed; `WalletMaterialUnavailable` otherwise).
 *   5. Catch SubmissionError / SessionNotFoundError / ContractNotRegisteredError /
 *      WalletMaterialUnavailable and translate to OData status codes.
 *
 * The submitter (`srv/submission/TransactionSubmitter.ts`) handles the actual
 * SDK call, error classification, and PendingSubmissions row lifecycle.
 */
import cds from '@sap/cds';
import { TransactionSubmitter, type TransactionSubmitterDeps } from './TransactionSubmitter';
import { resolveContract } from './contract-registry';
import { buildWalletMaterialForSession } from './wallet-material-factory';
import { loadCircuitArgTypes } from './arg-coercion';
import { reindexDisclosuresForContract } from './disclosure-indexer';
/**
 * Optional dependency overrides, primarily for tests.
 */
export interface SubmissionHandlersOptions {
    /** Override the wallet-material factory. Defaults to buildWalletMaterialForSession. */
    walletMaterialFactory?: typeof buildWalletMaterialForSession;
    /** Override contract resolution. Defaults to the static registry. */
    resolveContractImpl?: typeof resolveContract;
    /** Override the submitter constructor. Defaults to the real class. */
    submitterFactory?: (deps: TransactionSubmitterDeps) => TransactionSubmitter;
    /** Override circuit-arg-type introspection. Defaults to reading contract-info.json. */
    circuitArgTypesLoader?: typeof loadCircuitArgTypes;
    /** Override the post-submit disclosure reindexer. Defaults to the real wrapper. */
    disclosureReindexer?: typeof reindexDisclosuresForContract;
}
export declare function registerSubmissionHandlers(srv: cds.ApplicationService, db: any, options?: SubmissionHandlersOptions): void;
