import type { GenericMessageReply } from '../types/message-types.js';
import type { HandlerDependencies, MethodHandler } from '../types/method-handler.js';
import type { ProtocolsConfigureMessage } from '../types/protocols-types.js';
import { ProtocolsConfigure } from '../interfaces/protocols-configure.js';
export declare class ProtocolsConfigureHandler implements MethodHandler {
    private readonly deps;
    constructor(deps: HandlerDependencies);
    handle({ tenant, message, }: {
        tenant: string;
        message: ProtocolsConfigureMessage;
    }): Promise<GenericMessageReply>;
    static constructIndexes(protocolsConfigure: ProtocolsConfigure, isLatestBaseState: boolean): {
        [key: string]: string | boolean;
    };
    private static authorizeProtocolsConfigure;
    private purgeRecordsInvalidatedByProtocolConfig;
    private getStoredInitialWriteConfigValidity;
    private static isStoredInitialWriteConfigInvalidError;
    /**
     * Validates composition dependencies at install time:
     * 1. All `uses` protocols must already be installed for the tenant.
     * 2. Each `$ref` path must exist in the referenced protocol's structure.
     * 3. Cross-protocol role references must point to valid role paths in the referenced protocol.
     *
     * This is a no-op if the protocol definition has no `uses` map.
     */
    private static validateCompositionDependencies;
    /**
     * Recursively walks the structure tree to validate:
     * - `$ref` type paths exist in the referenced protocol's structure
     * - Cross-protocol `role` references point to valid `$role: true` paths in the referenced protocol
     */
    private static validateRefsAndRolesRecursively;
}
//# sourceMappingURL=protocols-configure.d.ts.map