import type { LocalParseFixture } from "../local/fixtures.js"; import { type AdapterImplementation, type AdapterResponse } from "../protocol/types.js"; import { type PsbtMutationRecipe } from "../psbt/mutation.js"; import type { RuntimeProvider } from "../runtime/provider.js"; export type ParserClassification = "accepted" | "rejected" | "unsupported" | "crashed" | "timeout"; export interface ParserFacts { readonly psbtVersion: number; readonly inputs: number; readonly outputs: number; } export interface ParserOutcome { readonly classification: ParserClassification; readonly detail: string; readonly facts?: ParserFacts; } export type ParserExpectedOutcome = ParserClassification | { readonly classification: ParserClassification; readonly facts?: ParserFacts; }; export interface DifferentialFuzzCase { readonly index: number; readonly recipes: readonly PsbtMutationRecipe[]; readonly mutatedPsbt: string; readonly outcomes: Readonly>; } export interface InterestingDifferentialCase extends DifferentialFuzzCase { readonly minimizedRecipes: readonly PsbtMutationRecipe[]; readonly minimizedPsbt: string; readonly minimizedOutcomes: Readonly>; } export interface DifferentialFuzzResult { readonly runtime: string; readonly implementations: Readonly>; readonly fixture: Pick; readonly seed: number; readonly requestedCases: number; readonly cases: readonly DifferentialFuzzCase[]; readonly interesting: readonly InterestingDifferentialCase[]; } export interface DifferentialFuzzOptions { readonly provider: RuntimeProvider; readonly fixture: LocalParseFixture; readonly seed: number; readonly cases: number; } export declare function classifyLabParser(psbt: string): ParserOutcome; export declare function classifyAdapterParserResponse(response: AdapterResponse): ParserOutcome; export declare function parserOutcomeMatches(actual: ParserOutcome | undefined, expected: ParserExpectedOutcome): boolean; export declare function hasSameParserOutcomes(left: Readonly>, right: Readonly>): boolean; export declare function hasParserDifferential(outcomes: Readonly>): boolean; export declare function compareRuntimeParsers(provider: RuntimeProvider, psbt: string): Promise>>; export declare function runDifferentialFuzz(options: DifferentialFuzzOptions): Promise; //# sourceMappingURL=differential.d.ts.map