import type { TypeRegistry } from '@dedot/codecs'; import type { AnyShape } from '@dedot/shape'; import { ApiCompatibilityError } from '@dedot/utils'; /** * Parameter specification for validation */ export interface ParamSpec { name: string; typeId?: number; codec?: AnyShape; } /** * Context for error messages */ export interface ValidationContext { apiName: string; registry: TypeRegistry; itemIndex?: number; } /** * Check if a codec is an Option type */ export declare function isOptionCodec(codec: AnyShape): boolean; /** * Check if a parameter is optional (wrapped in Option) */ export declare function isOptionalParam(param: ParamSpec, registry: TypeRegistry): boolean; /** * Pad args array with undefined for missing trailing optional parameters. * This allows users to omit optional parameters at the end of the parameter list. */ export declare function padArgsForOptionalParams(args: any[], params: T[], registry: TypeRegistry): any[]; /** * Build a comprehensive API compatibility error with detailed information */ export declare function buildCompatibilityError(originalError: Error, params: ParamSpec[], args: any[], context: ValidationContext): ApiCompatibilityError;