UNPKG

@macalinao/codama-instruction-accounts-dedupe-visitor

Version:

Codama visitor for deduplicating instruction accounts from Anchor IDL

37 lines (36 loc) 1.63 kB
import { AnchorIdl } from "@codama/nodes-from-anchor"; import { ProgramNode } from "codama"; //#region src/instruction-accounts-dedupe-program-visitor.d.ts /** * Creates a Codama program visitor that deduplicates and flattens nested instruction accounts from an Anchor IDL. * * This is a program-level visitor that can be composed with other visitors. It transforms * instruction nodes to have flattened account structures, removing nested account groups. * * @param idl - The Anchor IDL containing the instruction definitions with potentially nested accounts * @returns A visitor that transforms all instruction nodes to have flattened account structures * * @example * ```typescript * // Use with a single program * const programNode = programNodeFromAnchor(idl); * const visitor = instructionAccountsDedupeProgramVisitor(idl); * const transformedProgram = visit(programNode, visitor); * * // Or compose with other visitors * const composedVisitor = mergeVisitor( * instructionAccountsDedupeProgramVisitor(idl), * otherProgramVisitor(), * ); * ``` * * @remarks * - This visitor operates at the program level, not the root level * - Account names are joined with underscores to maintain parent-child relationships * - PDA seed paths are automatically updated to match the flattened structure * - All account metadata and constraints are preserved during flattening */ declare function instructionAccountsDedupeProgramVisitor(idl: AnchorIdl, programNode: ProgramNode): ProgramNode; //#endregion export { instructionAccountsDedupeProgramVisitor }; //# sourceMappingURL=instruction-accounts-dedupe-program-visitor.d.ts.map