Table of Contents

Namespace NArk.Arkade.Program

Classes

ArkadeArtifactParser

Parses an Arkade Program compiler artifact (JSON) into a typed ArkadeProgram. Mirrors the ts-sdk's parseArtifact — a pure structural conversion. It does not validate signer/timelock exclusivity, resolve $param placeholders, or compile anything to script bytes; those are later, separate steps.

ArkadeArtifactSerializer

Serializes an ArkadeProgram back into artifact JSON — the inverse of ArkadeArtifactParser. Mirrors the ts-sdk's stringifyArtifact.

ArkadeProgramCompiler

Compiles an ArkadeProgram (plus constructor args and signer ArkadeProgramKeys) into per-function leaf scripts. Mirrors the ts-sdk's compileFunctions/resolveAsm/resolveSigner/validateTapscript, but reuses this codebase's existing tapleaf conventions (NofNMultisigTapScript, the "last OP_CHECKSIGVERIFY becomes OP_CHECKSIG" trick from UnilateralPathArkTapScript) instead of porting ts-sdk's parallel *Tapscript builders.

ArkadeProgramFunctionScriptBuilder

A compiled ArkadeProgram covenant leaf, wrapped so it is detected as arkade-bound by the existing emulator co-signing pipeline — same role as ArkadeNofNMultisigTapScript, but for arbitrary compiled leaves instead of a hardcoded N-of-N.

ArkadeProgramValidator

Validates an ArkadeProgram's constructor-parameter declarations against the bound args. When a program declares Params they are authoritative: every declared param must be bound, every $name reference in the program must be declared, and every typed entry (Type set) validates its bound value. Bare (untyped) entries still get the structural checks; only the value type-check is skipped.

CompiledArkadeFunction

One fully-resolved spending path of a compiled ArkadeProgram — its definition plus the committed leaf script bytes. Mirrors the ts-sdk's CompiledProgramFunction, minus the taproot-tree/control-block parts (those are derived once all leaves are known, outside the compiler itself).