@smartledger/bsv 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bsv.d.ts CHANGED
@@ -820,6 +820,100 @@ declare module '@smartledger/bsv' {
820
820
  function validateASM(asmString: string): boolean;
821
821
  function interpretScript(script: Script | Buffer | string): any;
822
822
  function optimizeScript(script: Script | Buffer | string): any;
823
+
824
+ // -------- Interpreter-verified covenant suite (v4.2.0+) --------------
825
+
826
+ interface VerifyResult { ok: boolean; err: string; }
827
+ interface VerifyOpts { tx?: Transaction; satoshis?: number; inputIndex?: number; flags?: number; }
828
+
829
+ /** Opt into post-Genesis script limits (required to verify OP_PUSH_TX covenants). */
830
+ function enableGenesis(max?: number): void;
831
+ /** Verify an unlocking/locking pair through the consensus interpreter. */
832
+ function verifyScript(unlocking: Script, locking: Script, opts?: VerifyOpts): VerifyResult;
833
+ /** Perpetually Enforcing Locking Script: every spend recreates the same script (value - fee). */
834
+ function perpetualCovenant(fee: number): Script;
835
+ /** Stateful ownership token (NFT) locking script. */
836
+ function ownershipToken(fee: number, ownerHash: Buffer): Script;
837
+ /** OP_PUSH_TX value/output covenant: coins can only go where the covenant says. */
838
+ function valueCovenant(expectedHashOutputs: Buffer): Script;
839
+
840
+ namespace CovenantHelpers {
841
+ const SIGHASH: number;
842
+ function flags(): number;
843
+ function enableGenesis(max?: number): void;
844
+ function verify(unlocking: Script, locking: Script, opts?: VerifyOpts): VerifyResult;
845
+ function rawPreimage(tx: Transaction, inputIndex: number, lockingScript: Script, satoshis: number, sighashType?: number): Buffer;
846
+ function sighashDigest(tx: Transaction, inputIndex: number, lockingScript: Script, satoshis: number, sighashType?: number): Buffer;
847
+ function signInput(tx: Transaction, privateKey: PrivateKey, inputIndex: number, lockingScript: Script, satoshis: number, sighashType?: number): Buffer;
848
+ function fundAndSpend(lockingScript: Script, satoshis: number, opts?: { outputs?: Transaction.Output[] }): { funding: Transaction; spend: Transaction };
849
+ function p2pkhOutput(addressOrPubKey: Address | PublicKey, satoshis: number): Transaction.Output;
850
+ function scriptNum(n: number): Buffer;
851
+ }
852
+
853
+ namespace PushTx {
854
+ const Gx: Buffer;
855
+ const PUBKEY: Buffer;
856
+ function pushTxCore(script: Script): Script;
857
+ function authenticator(): Script;
858
+ function extractHashOutputs(script: Script): Script;
859
+ function hashOutputs(outputs: Transaction.Output[]): Buffer;
860
+ function valueCovenant(expectedHashOutputs: Buffer): Script;
861
+ function sFromPreimage(preimage: Buffer): Buffer | null;
862
+ function grind(spend: Transaction, inputIndex: number, lockingScript: Script, satoshis: number, maxTries?: number): { preimage: Buffer; tries: number };
863
+ }
864
+
865
+ namespace PELS {
866
+ function pelsCovenant(fee: number): Script;
867
+ }
868
+
869
+ namespace Token {
870
+ function ownershipToken(fee: number, ownerHash: Buffer): Script;
871
+ function ownerId(secret: Buffer): Buffer;
872
+ function unlockTransfer(ownerSecret: Buffer, newOwnerHash: Buffer, preimage: Buffer): Script;
873
+ }
874
+
875
+ interface LockSpec { lock: Script; meta: { [k: string]: any }; [k: string]: any; }
876
+ namespace Locks {
877
+ function hashLock(secret: Buffer): LockSpec;
878
+ function p2pkh(privateKey: PrivateKey): LockSpec;
879
+ function timeLockCLTV(privateKey: PrivateKey, locktime: number): LockSpec;
880
+ function multisig(m: number, privateKeys: PrivateKey[]): LockSpec;
881
+ function htlc(opts: { secret: Buffer; receiver: PrivateKey; sender: PrivateKey; timeout: number }): LockSpec;
882
+ }
883
+
884
+ // -------- Declarative covenant DSL (v4.5.0) --------------------------
885
+
886
+ interface CompiledPolicy {
887
+ lock: Script;
888
+ outputs: Transaction.Output[];
889
+ describe(): string;
890
+ unlock(spendTx: Transaction, satoshis: number, inputIndex?: number): Script;
891
+ }
892
+ class Policy {
893
+ payTo(dest: Address | PublicKey | Script | Transaction.Output, satoshis: number): Policy;
894
+ lockUntil(height: number): Policy;
895
+ outputs(): Transaction.Output[];
896
+ describe(): string;
897
+ compile(): CompiledPolicy;
898
+ }
899
+ interface PolicyFactory {
900
+ (): Policy;
901
+ perpetual(fee: number): Script;
902
+ token(fee: number, ownerHash: Buffer): Script;
903
+ }
904
+ const policy: PolicyFactory;
905
+
906
+ // -------- Covenant stack debugger (v4.5.0) ---------------------------
907
+
908
+ interface TraceStep { phase: 'unlock' | 'lock'; op: string; stack: string[]; altstack: string[]; }
909
+ interface TraceResult { ok: boolean; err: string; steps: TraceStep[]; }
910
+ function trace(unlocking: Script, locking: Script, opts?: VerifyOpts): TraceResult;
911
+ namespace Debugger {
912
+ function trace(unlocking: Script, locking: Script, opts?: VerifyOpts): TraceResult;
913
+ function format(result: TraceResult): string;
914
+ function print(result: TraceResult): TraceResult;
915
+ function opLabel(opcodenum: number): string;
916
+ }
823
917
  }
824
918
 
825
919
  // -------- BrowserUTXOManager ----------------------------------------