51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import type { z } from "zod";
|
|
|
|
import type { analysisStringSchema } from "../../src/domain/hopperValues.js";
|
|
|
|
type VerifierCall = (
|
|
name: string,
|
|
arguments_?: Record<string, unknown>,
|
|
) => Promise<unknown>;
|
|
|
|
interface StringExpectation {
|
|
readonly value: string;
|
|
readonly encoding: string;
|
|
readonly symbol?: string;
|
|
readonly recognitionOptional?: boolean;
|
|
}
|
|
|
|
/** Verify native fragments against a complete, independently read source extent. */
|
|
export function verifyHopperStringFragments(
|
|
call: VerifierCall,
|
|
inventory: readonly z.output<typeof analysisStringSchema>[],
|
|
expectation: {
|
|
readonly value: string;
|
|
readonly symbol: string;
|
|
readonly recognitionOptional?: boolean;
|
|
},
|
|
): Promise<{
|
|
readonly sourceBytes: number;
|
|
readonly recognition: {
|
|
readonly address: string;
|
|
readonly state: "observed" | "not_observed";
|
|
readonly decodedObject: "verified" | "unverified";
|
|
};
|
|
readonly fragments: readonly z.output<typeof analysisStringSchema>[];
|
|
}>;
|
|
|
|
/** Verify source bytes, observed decoding, address filters and literal searches. */
|
|
export function verifyHopperStringObjects(
|
|
call: VerifierCall,
|
|
expectations: readonly StringExpectation[],
|
|
inventory?: readonly z.output<typeof analysisStringSchema>[] | null,
|
|
): Promise<{
|
|
readonly sourceBytesVerified: true;
|
|
readonly recognition: readonly {
|
|
readonly value: string;
|
|
readonly address: string;
|
|
readonly state: "observed" | "not_observed";
|
|
readonly decodedObject: "verified" | "unverified";
|
|
}[];
|
|
readonly displayEscapesExcludedFromMatching: true;
|
|
}>;
|