import { z } from 'zod'; import type { StepInput } from './types/template.ts'; export type LinterResultCode = 'duplicate-key-in-step' | 'empty-steps' | 'empty-use-array' | 'infinite-assembly' | 'invalid-json' | 'invalid-steps-type' | 'missing-ffmpeg-stack' | 'missing-imagemagick-stack' | 'missing-input' | 'missing-original-storage' | 'missing-robot' | 'missing-steps' | 'missing-url' | 'schema-violation' | 'missing-use-steps' | 'missing-use' | 'no-storage' | 'smart-cdn-input-field-missing' | 'step-is-not-an-object' | 'undefined-robot' | 'undefined-step' | 'unqualified-http-import-url' | 'smart-cdn-max-steps-exceeded' | 'smart-cdn-robot-not-allowed' | 'wrong-ffmpeg-version' | 'wrong-imagemagick-version' | 'wrong-step-name' | 'wrong-use-type'; type StepWithMetadata = StepInput & { __line: Record; __column: Record; }; interface StepsWithMetadata { [stepName: string]: StepWithMetadata | Record; __line: Record; __column: Record; } interface TemplateWithMetadata extends Record { steps?: StepsWithMetadata; __line?: Record; __column?: Record; } declare const fixWrongStackVersionSchema: z.ZodObject<{ stepName: z.ZodString; paramName: z.ZodString; recommendedVersion: z.ZodString; }, "strip", z.ZodTypeAny, { stepName: string; paramName: string; recommendedVersion: string; }, { stepName: string; paramName: string; recommendedVersion: string; }>; type FixDataWrongStackVersion = z.infer; declare const fixMissingUseSchema: z.ZodObject<{ stepName: z.ZodString; }, "strip", z.ZodTypeAny, { stepName: string; }, { stepName: string; }>; type FixDataMissingUse = z.infer; declare const fixDuplicateKeyInStepSchema: z.ZodObject<{ stepName: z.ZodString; duplicateKeys: z.ZodArray; }, "strip", z.ZodTypeAny, { stepName: string; duplicateKeys: string[]; }, { stepName: string; duplicateKeys: string[]; }>; type FixDataDuplicateKeyInStep = z.infer; declare const fixSmartCdnInputFieldSchema: z.ZodObject<{ stepName: z.ZodString; }, "strip", z.ZodTypeAny, { stepName: string; }, { stepName: string; }>; type FixDataSmartCdnInputField = z.infer; declare const fixMissingInputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; type FixDataMissingInput = z.infer; declare const fixMissingStepsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; type FixDataMissingSteps = z.infer; declare const fixInvalidStepsTypeSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; type FixDataInvalidStepsType = z.infer; declare const fixEmptyStepsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; type FixDataEmptySteps = z.infer; declare const fixMissingOriginalStorageSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; type FixDataMissingOriginalStorage = z.infer; export type FixData = { fixId: 'fix-wrong-stack-version'; fixData: FixDataWrongStackVersion; } | { fixId: 'fix-missing-use'; fixData: FixDataMissingUse; } | { fixId: 'fix-duplicate-key-in-step'; fixData: FixDataDuplicateKeyInStep; } | { fixId: 'fix-missing-input'; fixData: FixDataMissingInput; } | { fixId: 'fix-missing-steps'; fixData: FixDataMissingSteps; } | { fixId: 'fix-invalid-steps-type'; fixData: FixDataInvalidStepsType; } | { fixId: 'fix-empty-steps'; fixData: FixDataEmptySteps; } | { fixId: 'fix-missing-original-storage'; fixData: FixDataMissingOriginalStorage; } | { fixId: 'fix-smart-cdn-input-field'; fixData: FixDataSmartCdnInputField; }; export type AssemblyLinterResult = { code: LinterResultCode; type: 'error' | 'warning'; row: number; column: number; message?: string; stepName?: string; robot?: string; isAudioRobot?: boolean; stackVersion?: string; wrongStepName?: string; desc?: string | null; duplicateKeys?: string[]; maxStepCount?: number; stepCount?: number; } & Partial; export declare function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[]; /** * Checks if an assembly is a Smart CDN Assembly by looking for the `/file/serve` robot */ export declare function isSmartCdnAssembly(assembly: TemplateWithMetadata): boolean; export declare function parseAndLint(json: string): Promise; export declare function applyFix(content: string, fixId: T, fixData?: Extract['fixData']): string; export {}; //# sourceMappingURL=assembly-linter.d.ts.map