export type ConformanceNormativeLevel = "must" | "should" | "may" | "interoperability" | "house-policy"; export type ConformanceRuleSeverity = "stop" | "review" | "info"; export type ConformanceRuleRepairability = "code-or-dependency-change" | "investigation-required" | "not-a-code-defect"; export type ConformanceRuleConfidence = "high" | "medium" | "low"; export interface ConformanceRule { readonly id: string; readonly title: string; readonly category: string; readonly normativeLevel: ConformanceNormativeLevel; readonly source: { readonly name: string; readonly url: string; readonly section: string; }; readonly expected: string; readonly severity: ConformanceRuleSeverity; readonly repairability: ConformanceRuleRepairability; readonly confidence: ConformanceRuleConfidence; } export declare const CONFORMANCE_RULES: Readonly<{ readonly "bip174.map-keys.unique": Readonly<{ readonly id: "bip174.map-keys.unique"; readonly title: "Unique PSBT map keys"; readonly category: "implementation-divergence"; readonly normativeLevel: "must"; readonly source: { readonly name: "BIP174"; readonly url: "https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki"; readonly section: "Specification"; }; readonly expected: "Every key in each PSBT map is unique."; readonly severity: "review"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "bip174.unknown-keypairs.preserved": Readonly<{ readonly id: "bip174.unknown-keypairs.preserved"; readonly title: "Unknown PSBT keypair preservation"; readonly category: "metadata-loss"; readonly normativeLevel: "must"; readonly source: { readonly name: "BIP174"; readonly url: "https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki"; readonly section: "Key-value map"; }; readonly expected: "Unknown and proprietary keypairs are preserved when a PSBT is reserialized."; readonly severity: "stop"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "bip174.final-scriptsig.empty-omitted": Readonly<{ readonly id: "bip174.final-scriptsig.empty-omitted"; readonly title: "Empty final scriptSig omission"; readonly category: "implementation-divergence"; readonly normativeLevel: "must"; readonly source: { readonly name: "BIP174"; readonly url: "https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki"; readonly section: "Finalizer"; }; readonly expected: "An empty final scriptSig is represented by omitting PSBT_IN_FINAL_SCRIPTSIG."; readonly severity: "review"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "bip370.valid-vectors.accepted": Readonly<{ readonly id: "bip370.valid-vectors.accepted"; readonly title: "Valid PSBTv2 vectors accepted"; readonly category: "implementation-divergence"; readonly normativeLevel: "must"; readonly source: { readonly name: "BIP370"; readonly url: "https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki"; readonly section: "Test vectors"; }; readonly expected: "PSBTv2 documents identified as valid by the official BIP370 vectors are accepted."; readonly severity: "review"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "bip371.output-tap-bip32-derivation.finalization-cleanup": Readonly<{ readonly id: "bip371.output-tap-bip32-derivation.finalization-cleanup"; readonly title: "Taproot output derivation finalization cleanup"; readonly category: "implementation-divergence"; readonly normativeLevel: "should"; readonly source: { readonly name: "BIP371"; readonly url: "https://github.com/bitcoin/bips/blob/master/bip-0371.mediawiki"; readonly section: "Finalizer"; }; readonly expected: "Taproot output derivation fields may be removed only as finalization cleanup after every input has final script data."; readonly severity: "review"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "bip375.invalid-vectors.rejected": Readonly<{ readonly id: "bip375.invalid-vectors.rejected"; readonly title: "Invalid Silent Payment PSBT vectors rejected"; readonly category: "implementation-divergence"; readonly normativeLevel: "must"; readonly source: { readonly name: "BIP375"; readonly url: "https://github.com/bitcoin/bips/blob/master/bip-0375.mediawiki"; readonly section: "Test vectors"; }; readonly expected: "PSBTs identified as invalid by the official BIP375 vectors are rejected at the indicated validation stage."; readonly severity: "review"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "lab.transaction-intent.unchanged": Readonly<{ readonly id: "lab.transaction-intent.unchanged"; readonly title: "Transaction intent preservation"; readonly category: "transaction-intent-mutation"; readonly normativeLevel: "house-policy"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Safety invariants"; }; readonly expected: "A handoff does not change the committed unsigned transaction intent."; readonly severity: "stop"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "lab.psbtv2.modifiability.valid": Readonly<{ readonly id: "lab.psbtv2.modifiability.valid"; readonly title: "PSBTv2 modifiability transition"; readonly category: "psbtv2-modifiability-violation"; readonly normativeLevel: "house-policy"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Safety invariants"; }; readonly expected: "PSBTv2 transaction-modifiable flags only change in ways accepted by the lab transition policy."; readonly severity: "stop"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "lab.signatures.preserved": Readonly<{ readonly id: "lab.signatures.preserved"; readonly title: "Signature preservation"; readonly category: "signature-loss"; readonly normativeLevel: "house-policy"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Safety invariants"; }; readonly expected: "Existing partial and Taproot signatures are not removed by a handoff."; readonly severity: "stop"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "lab.fields.preserved": Readonly<{ readonly id: "lab.fields.preserved"; readonly title: "Required field preservation"; readonly category: "unexpected-field-loss"; readonly normativeLevel: "house-policy"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Safety invariants"; }; readonly expected: "Fields required by the selected transition policy are not removed."; readonly severity: "stop"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "lab.fields.immutable": Readonly<{ readonly id: "lab.fields.immutable"; readonly title: "Required field immutability"; readonly category: "field-mutation"; readonly normativeLevel: "house-policy"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Safety invariants"; }; readonly expected: "Existing fields required by the selected transition policy are not mutated."; readonly severity: "stop"; readonly repairability: "code-or-dependency-change"; readonly confidence: "high"; }>; readonly "lab.fields.no-unexpected-addition": Readonly<{ readonly id: "lab.fields.no-unexpected-addition"; readonly title: "Permitted field additions"; readonly category: "unexpected-field"; readonly normativeLevel: "house-policy"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Safety invariants"; }; readonly expected: "A handoff adds only fields permitted by the selected transition role."; readonly severity: "review"; readonly repairability: "investigation-required"; readonly confidence: "high"; }>; readonly "core.transaction.policy-accepted": Readonly<{ readonly id: "core.transaction.policy-accepted"; readonly title: "Bitcoin Core policy acceptance"; readonly category: "core-policy-rejection"; readonly normativeLevel: "interoperability"; readonly source: { readonly name: "Bitcoin Core"; readonly url: "https://bitcoincore.org/en/doc/31.0.0/rpc/rawtransactions/testmempoolaccept/"; readonly section: "testmempoolaccept"; }; readonly expected: "The extracted transaction is accepted by Bitcoin Core regtest mempool policy."; readonly severity: "stop"; readonly repairability: "investigation-required"; readonly confidence: "high"; }>; readonly "lab.workflow.completed": Readonly<{ readonly id: "lab.workflow.completed"; readonly title: "Interop workflow completion"; readonly category: "workflow-failure"; readonly normativeLevel: "interoperability"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Operational results"; }; readonly expected: "The selected interoperability workflow completes all required assertions."; readonly severity: "review"; readonly repairability: "investigation-required"; readonly confidence: "low"; }>; readonly "lab.capability.declared": Readonly<{ readonly id: "lab.capability.declared"; readonly title: "Adapter capability declaration"; readonly category: "capability-mismatch"; readonly normativeLevel: "interoperability"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Operational results"; }; readonly expected: "An adapter declares every capability required by the selected scenario."; readonly severity: "info"; readonly repairability: "not-a-code-defect"; readonly confidence: "high"; }>; readonly "lab.known-regression.recorded": Readonly<{ readonly id: "lab.known-regression.recorded"; readonly title: "Known regression specimen"; readonly category: "known-regression"; readonly normativeLevel: "interoperability"; readonly source: { readonly name: "PSBT Interop Lab"; readonly url: "https://github.com/GautamBytes/psbt-interop-lab/blob/main/docs/conformance-policy.md"; readonly section: "Operational results"; }; readonly expected: "A historical regression specimen remains reproducible and explicitly identified."; readonly severity: "info"; readonly repairability: "not-a-code-defect"; readonly confidence: "high"; }>; }>; export type ConformanceRuleId = keyof typeof CONFORMANCE_RULES; export declare function getConformanceRule(id: ConformanceRuleId): ConformanceRule; //# sourceMappingURL=rules.d.ts.map