@chironbuilder/ootle-sdk 0.1.11 → 0.1.13

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/README.md CHANGED
@@ -1,90 +1,110 @@
1
- # @chironbuilder/ootle-sdk
2
-
3
- A shared TypeScript client for [Tari Ootle](https://github.com/tari-project/tari-ootle) (L2): account
4
- derivation, balances, transaction building/submission with automatic input resolution, HTLCs, and
5
- stealth/confidential transfers.
6
-
7
- This is the account core extracted from two independently-built wallets that had converged on
8
- (mostly) the same code by hand — [Sapient](https://github.com/chironbuilds/tari-wallet), a Chrome
9
- extension, and the [Tari L1 web wallet](https://universe.tari.mw)'s Ootle L2 support — after each had
10
- picked up its own fixes the other was missing. This package exists so that stops happening: one
11
- wallet core, used by both, with platform-specific concerns (storage, in this case) injected rather
12
- than hardcoded.
13
-
14
- **Status: early.** Extracted and reconciled in one pass; not yet wired back into either of the two
15
- wallets above (they still carry their own local copies for now). Treat `0.x` as exactly that.
16
-
17
- ## Install
18
-
19
- ```bash
20
- npm install @chironbuilder/ootle-sdk
21
- ```
22
-
23
- This package vendors two small, still-unmerged patches: `@tari-project/ootle` (a `covenant_claims`
24
- serialization gap in `StealthTransferStatement.toCompactJson()`, harmless for every transfer this SDK
25
- builds today but not yet upstream-fixed) and `@tari-project/ootle-wasm` (adds
26
- `createConfidentialWithdrawProofLiteral`, needed for confidential-vault withdrawals and not in the
27
- published `0.39.x` builds). See `vendor/*/README.md` for each. Both are tracked for removal once
28
- upstream ships the real fix — check there before assuming either is still needed.
29
-
30
- ## Storage
31
-
32
- The SDK never touches a concrete storage API directly. It reads and writes through a small
33
- `KeyValueStore` interface — configure one adapter, once, before calling anything else:
34
-
35
- ```ts
36
- import { configureOotleStorage } from "@chironbuilder/ootle-sdk";
37
- import { chromeStorageAdapter } from "@chironbuilder/ootle-sdk/adapters";
38
- // or: localStorageAdapter, inMemoryAdapter (tests)
39
-
40
- configureOotleStorage(chromeStorageAdapter());
41
- ```
42
-
43
- Write your own adapter for any other host — it's three methods (`get`/`set`/`remove`).
44
-
45
- This only covers what the account core itself needs (shielded outputs, pending shields, the
46
- private-payment scan cursor, the known-substate-versions cache). Address books, connected-site
47
- permissions, daemon connections, and a full transaction-history UI are application concerns with
48
- very different shapes per host — keep those in your own app's storage layer.
49
-
50
- ## Usage
51
-
52
- ```ts
53
- import { OotleAccount, toOotleNetwork } from "@chironbuilder/ootle-sdk";
54
-
55
- const account = OotleAccount.fromSeed(entropy, /* index */ 0, "esmeralda");
56
-
57
- const balances = await account.getBalances();
58
- await account.send(recipientWalletAddress, resourceAddress, amount);
59
- ```
60
-
61
- See `src/wallet.ts`'s doc comments for the full `OotleAccount` surface — `send`, `sendPrivately`,
62
- `shield`/`unshield`, `htlcFund`/`htlcClaim`/`htlcRefund`, `claimTestnetXtr`, `execute` (the general
63
- instruction-builder escape hatch, with automatic missing-input discovery and lock-contention retry).
64
-
65
- ## What's in here, and what isn't
66
-
67
- - **Account core** (`wallet.ts`): `OotleAccount`, balance/plan-resolution helpers, the transaction
68
- auto-resolve retry loop.
69
- - **Crypto/derivation**: `derivation.ts`, `domainHash.ts`, `componentAddress.ts`, `vault.ts`,
70
- `ownershipProof.ts`, `confidential.ts`.
71
- - **HTLC**: `htlc.ts`.
72
- - **Storage abstraction**: `storage.ts` + `adapters.ts`.
73
- - **Not included**: UI, an approval/permission model for dApp connections, address books, daemon
74
- (`tari_ootle_walletd`) relay support, transaction-history persistence. Those stay in each
75
- consuming application.
76
-
77
- ## Developing
78
-
79
- ```bash
80
- npm install
81
- npm run typecheck
82
- npm test
83
- npm run build
84
- ```
85
-
86
- ## License
87
-
88
- MIT — see [LICENSE](LICENSE). (The two wallets this was extracted from are licensed separately,
89
- under PolyForm Noncommercial; this SDK is deliberately more permissive so other Ootle projects can
90
- build on it without that restriction.)
1
+ # @chironbuilder/ootle-sdk
2
+
3
+ A shared TypeScript client for [Tari Ootle](https://github.com/tari-project/tari-ootle) (L2): account
4
+ derivation, balances, transaction building/submission with automatic input resolution, HTLCs, and
5
+ stealth/confidential transfers.
6
+
7
+ This is the account core extracted from two independently-built wallets that had converged on
8
+ (mostly) the same code by hand — [Sapient](https://github.com/chironbuilds/tari-wallet), a Chrome
9
+ extension, and the [Tari L1 web wallet](https://universe.tari.mw)'s Ootle L2 support — after each had
10
+ picked up its own fixes the other was missing. This package exists so that stops happening: one
11
+ wallet core, used by both, with platform-specific concerns (storage, in this case) injected rather
12
+ than hardcoded.
13
+
14
+ **Status: early.** Extracted and reconciled in one pass; not yet wired back into either of the two
15
+ wallets above (they still carry their own local copies for now). Treat `0.x` as exactly that.
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ npm install @chironbuilder/ootle-sdk
21
+ ```
22
+
23
+ This package vendors two small, still-unmerged patches: `@tari-project/ootle` (a `covenant_claims`
24
+ serialization gap in `StealthTransferStatement.toCompactJson()`, harmless for every transfer this SDK
25
+ builds today but not yet upstream-fixed) and `@tari-project/ootle-wasm` (adds
26
+ `createConfidentialWithdrawProofLiteral`, needed for confidential-vault withdrawals and not in the
27
+ published `0.39.x` builds). See `vendor/*/README.md` for each. Both are tracked for removal once
28
+ upstream ships the real fix — check there before assuming either is still needed.
29
+
30
+ ## Storage
31
+
32
+ The SDK never touches a concrete storage API directly. It reads and writes through a small
33
+ `KeyValueStore` interface — configure one adapter, once, before calling anything else:
34
+
35
+ ```ts
36
+ import { configureOotleStorage } from "@chironbuilder/ootle-sdk";
37
+ import { chromeStorageAdapter } from "@chironbuilder/ootle-sdk/adapters";
38
+ // or: localStorageAdapter, inMemoryAdapter (tests)
39
+
40
+ configureOotleStorage(chromeStorageAdapter());
41
+ ```
42
+
43
+ Write your own adapter for any other host — it's three methods (`get`/`set`/`remove`).
44
+
45
+ This only covers what the account core itself needs (shielded outputs, pending shields, the
46
+ private-payment scan cursor, the known-substate-versions cache). Address books, connected-site
47
+ permissions, daemon connections, and a full transaction-history UI are application concerns with
48
+ very different shapes per host — keep those in your own app's storage layer.
49
+
50
+ ## Usage
51
+
52
+ ```ts
53
+ import { OotleAccount, toOotleNetwork } from "@chironbuilder/ootle-sdk";
54
+
55
+ const account = OotleAccount.fromSeed(entropy, /* index */ 0, "esmeralda");
56
+
57
+ const balances = await account.getBalances();
58
+ await account.send(recipientWalletAddress, resourceAddress, amount);
59
+ ```
60
+
61
+ See `src/wallet.ts`'s doc comments for the full `OotleAccount` surface — `send`, `sendPrivately`,
62
+ `shield`/`unshield`, `htlcFund`/`htlcClaim`/`htlcRefund`, `claimTestnetXtr`, `execute` (the general
63
+ instruction-builder escape hatch, with automatic missing-input discovery and lock-contention retry).
64
+
65
+ ### Claiming a Minotari (L1) burn
66
+
67
+ A burn addressed to this account's public key (`getPublicKey()`) is claimed with `claimBurn`. Build
68
+ the proof from the L1 burn's claim material and its kernel merkle proof (a base node's
69
+ `/generate_kernel_merkle_proof`), or read a `minotari_console_wallet` proof file:
70
+
71
+ ```ts
72
+ import { assembleBurnClaimProof, parseConsoleWalletBurnProof } from "@chironbuilder/ootle-sdk";
73
+
74
+ const proof = assembleBurnClaimProof(l1BurnParts, kernelMerkleProof);
75
+ // or: const proof = parseConsoleWalletBurnProof(fileText);
76
+ // The fee is measured with a dry run; a stealth-revealed fee is never refunded, so it is not padded.
77
+ const { claimedAmount, fee } = await account.claimBurn(proof);
78
+ ```
79
+
80
+ The claimed funds arrive as a stealth output owned by this account and are recorded in its private
81
+ balance. Validators accept a burn only once its L1 block is well confirmed, so an early claim is
82
+ rejected and can be retried.
83
+
84
+ ## What's in here, and what isn't
85
+
86
+ - **Account core** (`wallet.ts`): `OotleAccount`, balance/plan-resolution helpers, the transaction
87
+ auto-resolve retry loop.
88
+ - **Crypto/derivation**: `derivation.ts`, `domainHash.ts`, `componentAddress.ts`, `vault.ts`,
89
+ `ownershipProof.ts`, `confidential.ts`.
90
+ - **HTLC**: `htlc.ts`.
91
+ - **L1 burn claims**: `burnClaim.ts` (proof assembly) + `OotleAccount.claimBurn`.
92
+ - **Storage abstraction**: `storage.ts` + `adapters.ts`.
93
+ - **Not included**: UI, an approval/permission model for dApp connections, address books, daemon
94
+ (`tari_ootle_walletd`) relay support, transaction-history persistence. Those stay in each
95
+ consuming application.
96
+
97
+ ## Developing
98
+
99
+ ```bash
100
+ npm install
101
+ npm run typecheck
102
+ npm test
103
+ npm run build
104
+ ```
105
+
106
+ ## License
107
+
108
+ MIT — see [LICENSE](LICENSE). (The two wallets this was extracted from are licensed separately,
109
+ under PolyForm Noncommercial; this SDK is deliberately more permissive so other Ootle projects can
110
+ build on it without that restriction.)
@@ -0,0 +1,47 @@
1
+ import type { MinotariBurnClaimProof } from "@tari-project/ootle-ts-bindings";
2
+ /** What `OotleAccount.claimBurn()` consumes -- the wallet daemon's `ClaimBurnProofContents`. */
3
+ export interface BurnClaimProofContents {
4
+ claim_proof: MinotariBurnClaimProof;
5
+ /** The burn output's encrypted value/mask, hex. */
6
+ encrypted_data: string;
7
+ }
8
+ /**
9
+ * The claim material an L1 wallet has as soon as it builds a burn (see tari_l1_wasm's
10
+ * `WasmSignedBurn`). Everything except the kernel merkle proof, which only exists once the burn
11
+ * is mined.
12
+ */
13
+ export interface L1BurnProofParts {
14
+ /** The Ootle account public key `P` the burn was addressed to. */
15
+ claimPublicKeyHex: string;
16
+ commitmentHex: string;
17
+ ownershipNonceHex: string;
18
+ ownershipSignatureHex: string;
19
+ senderOffsetPublicKeyHex: string;
20
+ encryptedDataHex: string;
21
+ amount: bigint;
22
+ kernel: {
23
+ version: number;
24
+ fee: bigint;
25
+ lockHeight: bigint;
26
+ excessHex: string;
27
+ nonceHex: string;
28
+ signatureHex: string;
29
+ };
30
+ }
31
+ /** A base node's `/generate_kernel_merkle_proof` response, passed through unchanged. */
32
+ export interface KernelMerkleProof {
33
+ /** base64 */
34
+ block_hash: string;
35
+ /** base64 */
36
+ encoded_merkle_proof: string;
37
+ leaf_index: number | string;
38
+ block_height?: number | null;
39
+ }
40
+ /** Joins an L1 burn's claim material with its kernel merkle proof into a claimable proof. */
41
+ export declare function assembleBurnClaimProof(parts: L1BurnProofParts, merkle: KernelMerkleProof): BurnClaimProofContents;
42
+ /**
43
+ * Reads a proof file written by `minotari_console_wallet` into its `burn_proofs` directory
44
+ * (`CompleteClaimBurnProof`). Its layout matches Ootle's except that `encrypted_data` is base64.
45
+ */
46
+ export declare function parseConsoleWalletBurnProof(json: string | Record<string, unknown>): BurnClaimProofContents;
47
+ //# sourceMappingURL=burnClaim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"burnClaim.d.ts","sourceRoot":"","sources":["../src/burnClaim.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,gGAAgG;AAChG,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,sBAAsB,CAAC;IACpC,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAUD,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,GAAG,sBAAsB,CAgCjH;AASD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,sBAAsB,CAc1G"}
@@ -0,0 +1,68 @@
1
+ // Claim proofs for Layer 1 (minotari) burns, in the exact serde shape Ootle's `ClaimBurn`
2
+ // instruction deserialises (`tari_engine_types::confidential::MinotariBurnClaimProof`): byte fields
3
+ // are hex, the merkle proof's two byte fields are base64, and every u64 is carried as a decimal
4
+ // string -- a burn value can exceed 2^53, and the engine accepts strings for all of them.
5
+ const HEX_32 = /^[0-9a-f]{64}$/;
6
+ function hex32(value, field) {
7
+ const v = value.toLowerCase();
8
+ if (!HEX_32.test(v))
9
+ throw new Error(`${field} must be 32 bytes of hex`);
10
+ return v;
11
+ }
12
+ /** Joins an L1 burn's claim material with its kernel merkle proof into a claimable proof. */
13
+ export function assembleBurnClaimProof(parts, merkle) {
14
+ if (!/^[0-9a-f]+$/i.test(parts.encryptedDataHex) || parts.encryptedDataHex.length % 2 !== 0) {
15
+ throw new Error("encryptedDataHex must be hex");
16
+ }
17
+ return {
18
+ claim_proof: {
19
+ burn_public_key: hex32(parts.claimPublicKeyHex, "claimPublicKeyHex"),
20
+ commitment: hex32(parts.commitmentHex, "commitmentHex"),
21
+ ownership_proof: {
22
+ public_nonce: hex32(parts.ownershipNonceHex, "ownershipNonceHex"),
23
+ signature: hex32(parts.ownershipSignatureHex, "ownershipSignatureHex"),
24
+ },
25
+ encoded_merkle_proof: {
26
+ block_hash: merkle.block_hash,
27
+ encoded_merkle_proof: merkle.encoded_merkle_proof,
28
+ leaf_index: String(merkle.leaf_index),
29
+ },
30
+ kernel: {
31
+ version: parts.kernel.version,
32
+ fee: parts.kernel.fee.toString(),
33
+ lock_height: parts.kernel.lockHeight.toString(),
34
+ excess: hex32(parts.kernel.excessHex, "kernel.excessHex"),
35
+ excess_sig: {
36
+ public_nonce: hex32(parts.kernel.nonceHex, "kernel.nonceHex"),
37
+ signature: hex32(parts.kernel.signatureHex, "kernel.signatureHex"),
38
+ },
39
+ },
40
+ value: parts.amount.toString(),
41
+ sender_offset_public_key: hex32(parts.senderOffsetPublicKeyHex, "senderOffsetPublicKeyHex"),
42
+ },
43
+ encrypted_data: parts.encryptedDataHex.toLowerCase(),
44
+ };
45
+ }
46
+ function base64ToHex(b64) {
47
+ const bin = atob(b64);
48
+ let out = "";
49
+ for (let i = 0; i < bin.length; i++)
50
+ out += bin.charCodeAt(i).toString(16).padStart(2, "0");
51
+ return out;
52
+ }
53
+ /**
54
+ * Reads a proof file written by `minotari_console_wallet` into its `burn_proofs` directory
55
+ * (`CompleteClaimBurnProof`). Its layout matches Ootle's except that `encrypted_data` is base64.
56
+ */
57
+ export function parseConsoleWalletBurnProof(json) {
58
+ const file = (typeof json === "string" ? JSON.parse(json) : json);
59
+ if (!file.claim_proof || file.encrypted_data === undefined) {
60
+ throw new Error("Not a burn proof: expected `claim_proof` and `encrypted_data`");
61
+ }
62
+ const encrypted = Array.isArray(file.encrypted_data)
63
+ ? file.encrypted_data.map((b) => b.toString(16).padStart(2, "0")).join("")
64
+ : /^[0-9a-f]+$/i.test(file.encrypted_data) && file.encrypted_data.length % 2 === 0
65
+ ? file.encrypted_data.toLowerCase()
66
+ : base64ToHex(file.encrypted_data);
67
+ return { claim_proof: file.claim_proof, encrypted_data: encrypted };
68
+ }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export type { TransactionExecuteOpts, WalletAccountApi } from "./accountApi.js";
2
2
  export { ACCOUNT_TEMPLATE_ADDRESS, componentAddressFromWalletAddress, deriveAccountComponentAddress, deriveComponentAddress, } from "./componentAddress.js";
3
+ export type { BurnClaimProofContents, KernelMerkleProof, L1BurnProofParts } from "./burnClaim.js";
4
+ export { assembleBurnClaimProof, parseConsoleWalletBurnProof } from "./burnClaim.js";
3
5
  export type { ConfidentialSumResult, ScannedStealthOutput } from "./confidential.js";
4
6
  export { scanTransactionsForOwnedOutputs, sumConfidentialCommitments } from "./confidential.js";
5
7
  export type { DerivedAccountKeys } from "./derivation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EACL,wBAAwB,EACxB,iCAAiC,EACjC,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAEhG,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEhI,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEzE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,oCAAoC,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAEpI,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3F,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,8BAA8B,EAC9B,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EACL,wBAAwB,EACxB,iCAAiC,EACjC,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAErF,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAEhG,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEhI,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEzE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,oCAAoC,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAEpI,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3F,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,8BAA8B,EAC9B,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // Public surface. Import from the package root ("@chironbuilder/ootle-sdk") rather than reaching
2
2
  // into individual files -- the module layout underneath is free to change; this file is not.
3
3
  export { ACCOUNT_TEMPLATE_ADDRESS, componentAddressFromWalletAddress, deriveAccountComponentAddress, deriveComponentAddress, } from "./componentAddress.js";
4
+ export { assembleBurnClaimProof, parseConsoleWalletBurnProof } from "./burnClaim.js";
4
5
  export { scanTransactionsForOwnedOutputs, sumConfidentialCommitments } from "./confidential.js";
5
6
  export { deriveAccountKeys } from "./derivation.js";
6
7
  export { DomainSeparatedHasher, KEY_MANAGER_DOMAIN, KEY_MANAGER_DOMAIN_VERSION, keyManagerDomainHasher } from "./domainHash.js";
package/dist/wallet.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { ExecuteResult, IndexerGetTransactionResultResponse, Instruction, S
3
3
  import { IndexerProvider } from "@tari-project/ootle-indexer";
4
4
  import { SecretKeyWallet } from "@tari-project/ootle-secret-key-wallet";
5
5
  import type { WalletAccountApi } from "./accountApi.js";
6
+ import type { BurnClaimProofContents } from "./burnClaim.js";
6
7
  import type { ScannedStealthOutput } from "./confidential.js";
7
8
  import { type NetworkName } from "./ootleNetwork.js";
8
9
  import type { ShieldedOutputRecord } from "./storage.js";
@@ -711,6 +712,32 @@ export declare class OotleAccount implements WalletAccountApi {
711
712
  amount: bigint;
712
713
  memo?: string;
713
714
  }>;
715
+ /**
716
+ * Claims a Layer 1 (minotari) burn addressed to this account, minting the burned value on
717
+ * Ootle as a stealth output owned by this account (recorded locally, so it shows in the private
718
+ * balance). The fee is revealed from the claimed value; the rest is claimed.
719
+ *
720
+ * The burn UTXO is minted and spent within the fee instructions, and the transaction is sealed
721
+ * with the stealth claim secret `s = H(p·R) + p` rather than the account key: the L1 ownership
722
+ * proof commits the burn to `s·G`, so `s` is the only key that satisfies its spend condition.
723
+ * Nothing here touches the account component, so the account need not exist on-chain yet.
724
+ *
725
+ * A fee paid purely by stealth reveal is not refundable -- whatever is revealed is kept -- so
726
+ * `maxFee` should sit on the required fee rather than above it. Left unset, it is measured: a
727
+ * dry run meters the claim, and the claim is submitted with that cost plus the engine's own
728
+ * estimate allowance (`FeeReceipt::required_fees`).
729
+ *
730
+ * Validators only accept a burn once its L1 block is well confirmed; claiming earlier is
731
+ * rejected and can simply be retried later.
732
+ */
733
+ claimBurn(contents: BurnClaimProofContents, maxFee?: bigint, memo?: string): Promise<{
734
+ transactionId: string;
735
+ claimedAmount: bigint;
736
+ commitment: string;
737
+ fee: bigint;
738
+ }>;
739
+ /** Dry-runs a sealed claim and returns the fee it needs: what it was charged plus the allowance. */
740
+ private estimateClaimFee;
714
741
  /**
715
742
  * This account's unspent stealth outputs, newest first, optionally filtered to one resource.
716
743
  *
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/dist/wallet.js CHANGED
@@ -1,7 +1,7 @@
1
- import { Mask, OotleWallet, StealthInput, StealthInputsStatement, StealthOutputsStatement, StealthTransfer, StealthTransferStatement, TransactionBuilder, WalletStealthAuthorizer, WasmStealthCrypto, XTR_FAUCET_CLAIM_RESOURCE_ADDRESS, XTR_FAUCET_COMPONENT_ADDRESS, XTR_FAUCET_VAULT_ADDRESS, amountLiteral, createOutput, decryptOwnedUtxo, defaultIndexerUrl, getVaultIdsForAccount, resolveMaxEpoch, resolveTransaction, resourceAddressLiteral, sealTransaction, sendTransaction, serializeUnsignedTx, signTransaction, stealthUtxoSubstateId, submitTransaction, } from "@tari-project/ootle";
1
+ import { Mask, OotleWallet, StealthInput, StealthInputsStatement, StealthOutputsStatement, StealthTransfer, StealthTransferStatement, TARI_RESOURCE_ADDRESS, TransactionBuilder, WalletStealthAuthorizer, WasmStealthCrypto, XTR_FAUCET_CLAIM_RESOURCE_ADDRESS, XTR_FAUCET_COMPONENT_ADDRESS, XTR_FAUCET_VAULT_ADDRESS, amountLiteral, createOutput, decryptOwnedUtxo, defaultIndexerUrl, getVaultIdsForAccount, resolveMaxEpoch, resolveTransaction, resourceAddressLiteral, sealTransaction, sendTransaction, serializeUnsignedTx, signTransaction, stealthUtxoSubstateId, submitTransaction, } from "@tari-project/ootle";
2
2
  import { IndexerProvider } from "@tari-project/ootle-indexer";
3
3
  import { SecretKeyWallet } from "@tari-project/ootle-secret-key-wallet";
4
- import { buildScriptPathWitness, buildStealthTransferStatement, createConfidentialWithdrawProofLiteral, createStealthOutputWitness, parseOotleAddress, publicKeyFromSecretKey, schnorrSign, stealthDhSecret, validateStealthTransfer, } from "@tari-project/ootle-wasm";
4
+ import { buildScriptPathWitness, burnClaimStealthSecret, buildStealthTransferStatement, createConfidentialWithdrawProofLiteral, createStealthOutputWitness, parseOotleAddress, publicKeyFromSecretKey, schnorrSign, stealthDhSecret, validateBurnClaimOwnershipProof, validateStealthTransfer, } from "@tari-project/ootle-wasm";
5
5
  import { componentAddressFromWalletAddress, deriveAccountComponentAddress } from "./componentAddress.js";
6
6
  import { scanTransactionsForOwnedOutputs, sumConfidentialCommitments } from "./confidential.js";
7
7
  import { deriveAccountKeys } from "./derivation.js";
@@ -190,7 +190,10 @@ export class OotleAccount {
190
190
  // actually wrong in the latter case.
191
191
  if (e instanceof Error && e.message.startsWith("Timed out"))
192
192
  throw e;
193
- return []; // account not yet on-chain (never funded)
193
+ // Account not yet on-chain (never funded publicly). It can still hold stealth outputs -- a
194
+ // claimed L1 burn or a redeemed private payment needs no account component -- so the
195
+ // private ledger below is still read rather than returning empty here.
196
+ vaultIds = [];
194
197
  }
195
198
  // Fold in this account's own known-good stealth outputs (from shield()/unshield(), or from
196
199
  // redeeming someone else's shared commitment via the "Advanced" unshield flow) up front, not
@@ -1800,6 +1803,138 @@ export class OotleAccount {
1800
1803
  await recordKnownShieldedOutput(accountId, resourceAddress, commitmentHex, decrypted.value, substateId, memo);
1801
1804
  return { amount: decrypted.value, memo };
1802
1805
  }
1806
+ /**
1807
+ * Claims a Layer 1 (minotari) burn addressed to this account, minting the burned value on
1808
+ * Ootle as a stealth output owned by this account (recorded locally, so it shows in the private
1809
+ * balance). The fee is revealed from the claimed value; the rest is claimed.
1810
+ *
1811
+ * The burn UTXO is minted and spent within the fee instructions, and the transaction is sealed
1812
+ * with the stealth claim secret `s = H(p·R) + p` rather than the account key: the L1 ownership
1813
+ * proof commits the burn to `s·G`, so `s` is the only key that satisfies its spend condition.
1814
+ * Nothing here touches the account component, so the account need not exist on-chain yet.
1815
+ *
1816
+ * A fee paid purely by stealth reveal is not refundable -- whatever is revealed is kept -- so
1817
+ * `maxFee` should sit on the required fee rather than above it. Left unset, it is measured: a
1818
+ * dry run meters the claim, and the claim is submitted with that cost plus the engine's own
1819
+ * estimate allowance (`FeeReceipt::required_fees`).
1820
+ *
1821
+ * Validators only accept a burn once its L1 block is well confirmed; claiming earlier is
1822
+ * rejected and can simply be retried later.
1823
+ */
1824
+ async claimBurn(contents, maxFee, memo = "Burnt funds claimed from L1") {
1825
+ if (maxFee !== undefined && maxFee <= 0n)
1826
+ throw new Error(`claimBurn: maxFee must be > 0, got ${maxFee}`);
1827
+ const proof = contents.claim_proof;
1828
+ const burnCommitment = fromHex(proof.commitment);
1829
+ const senderOffset = fromHex(proof.sender_offset_public_key);
1830
+ const value = BigInt(proof.value);
1831
+ const stealthSecret = burnClaimStealthSecret(this.ownerSecret, senderOffset);
1832
+ const ownershipValid = validateBurnClaimOwnershipProof(this.network, fromHex(proof.ownership_proof.public_nonce), fromHex(proof.ownership_proof.signature), burnCommitment, value, stealthSecret);
1833
+ if (!ownershipValid) {
1834
+ throw new Error("This burn was not addressed to this account (its ownership proof does not verify).");
1835
+ }
1836
+ const crypto = new WasmStealthCrypto(this.network);
1837
+ const aeadKey = await crypto.deriveAeadKey(this.ownerSecret, senderOffset);
1838
+ const decrypted = await crypto.unblindOutput(burnCommitment, fromHex(contents.encrypted_data), aeadKey, true);
1839
+ if (decrypted.value !== value) {
1840
+ throw new Error(`claimBurn: burn proof states ${value} but the burn output holds ${decrypted.value}`);
1841
+ }
1842
+ const provider = await this.getProvider();
1843
+ const walletAddress = await this.getWalletAddress();
1844
+ const sealKeypair = { secret_key: stealthSecret, public_key: publicKeyFromSecretKey(stealthSecret) };
1845
+ // One claim transaction revealing `fee`. The output statement encodes the revealed amount, so
1846
+ // every fee needs its own statement and proofs.
1847
+ const buildClaim = async (fee, dryRun) => {
1848
+ const claimedAmount = decrypted.value - fee;
1849
+ if (claimedAmount <= 0n) {
1850
+ throw new Error(`claimBurn: the burn (${decrypted.value}) does not cover the claim fee (${fee})`);
1851
+ }
1852
+ const output = createOutput({ destination: walletAddress, amount: claimedAmount, resourceAddress: TARI_RESOURCE_ADDRESS, memo: toMemo(memo) });
1853
+ const { statement: outputsStatement, outputMask } = await crypto.generateOutputsStatement([output], fee);
1854
+ // The single input is the UTXO `ClaimBurn` mints in the same transaction; the instruction
1855
+ // itself authorises spending it, so it carries no witness.
1856
+ const inputsStatement = await crypto.buildInputsStatement([new StealthInput(burnCommitment)], 0n);
1857
+ const inputMask = await crypto.aggregateInputMasks([decrypted.mask]);
1858
+ const balanceProof = await crypto.generateBalanceProofSignature(inputMask, outputMask, inputsStatement.statementJson, outputsStatement.statementJson);
1859
+ const statement = new StealthTransferStatement(inputsStatement, outputsStatement, balanceProof);
1860
+ await crypto.validateTransfer(statement);
1861
+ const ownCommitment = outputsStatement.parsed().outputs[0].output.commitment;
1862
+ const maxEpoch = await resolveMaxEpoch(provider);
1863
+ const builder = TransactionBuilder.new(this.network, maxEpoch)
1864
+ .addFeeInstruction({ ClaimBurn: { claim: proof, output_data: { encrypted_data: contents.encrypted_data } } })
1865
+ .addFeeInstruction({
1866
+ StealthTransfer: {
1867
+ resource_address_ref: { Address: TARI_RESOURCE_ADDRESS },
1868
+ statement: { __ootleRawJson: statement.toCompactJson() },
1869
+ revealed_input_bucket: null,
1870
+ },
1871
+ })
1872
+ .addFeeInstruction({ PutLastInstructionOutputOnWorkspace: { key: 0 } })
1873
+ .addFeeInstruction({ PayFeeFromBucket: { bucket: { id: 0, offset: null } } })
1874
+ .addInput({ substate_id: TARI_RESOURCE_ADDRESS, version: null });
1875
+ // The seal key `s` is the transaction's only signer, so it must be authorized as the main
1876
+ // signer; the TS builder leaves that off by default.
1877
+ const unsignedBody = builder.buildUnsignedTransaction();
1878
+ unsignedBody.is_seal_signer_authorized = true;
1879
+ unsignedBody.dry_run = dryRun;
1880
+ const unsignedTx = await resolveTransaction(provider, unsignedBody);
1881
+ const signed = await signTransaction([], unsignedTx, sealKeypair);
1882
+ return { envelope: sealTransaction(signed), claimedAmount, ownCommitment };
1883
+ };
1884
+ let fee = maxFee ?? (await this.estimateClaimFee(await buildClaim(claimFeeProbe(decrypted.value), true)));
1885
+ let attempt = await buildClaim(fee, false);
1886
+ let transactionId = await submitTransaction(provider, attempt.envelope);
1887
+ let response;
1888
+ try {
1889
+ response = await withTimeout(pollTransactionResult(provider, transactionId), 90_000, "claiming the burn");
1890
+ }
1891
+ catch (e) {
1892
+ // A real run can meter a little differently from its dry run. When the rejection names the
1893
+ // fee it wanted, a measured fee is resubmitted once at exactly that; an explicit one is not.
1894
+ const required = maxFee === undefined ? requiredFeeFromRejection(e) : null;
1895
+ if (required === null || required <= fee)
1896
+ throw e;
1897
+ fee = required;
1898
+ attempt = await buildClaim(fee, false);
1899
+ transactionId = await submitTransaction(provider, attempt.envelope);
1900
+ response = await withTimeout(pollTransactionResult(provider, transactionId), 90_000, "claiming the burn");
1901
+ }
1902
+ await recordKnownVersions(response);
1903
+ await recordKnownShieldedOutput(localAccountId(this.index), TARI_RESOURCE_ADDRESS, attempt.ownCommitment, attempt.claimedAmount, transactionId, memo);
1904
+ return { transactionId, claimedAmount: attempt.claimedAmount, commitment: attempt.ownCommitment, fee };
1905
+ }
1906
+ /** Dry-runs a sealed claim and returns the fee it needs: what it was charged plus the allowance. */
1907
+ async estimateClaimFee(dryRun) {
1908
+ const res = await fetch(`${defaultIndexerUrl(this.network)}/transactions/dry-run`, {
1909
+ method: "POST",
1910
+ headers: { "Content-Type": "application/json" },
1911
+ body: JSON.stringify({ transaction: dryRun.envelope }),
1912
+ });
1913
+ const text = await res.text();
1914
+ let body;
1915
+ try {
1916
+ body = text ? JSON.parse(text) : undefined;
1917
+ }
1918
+ catch {
1919
+ // Not JSON — reported raw below.
1920
+ }
1921
+ if (!res.ok || body?.error || !body?.result) {
1922
+ throw new Error(`Could not estimate the claim fee: ${body?.error?.message ?? text ?? res.statusText}`);
1923
+ }
1924
+ const finalize = body.result.finalize;
1925
+ const outcome = finalize.result;
1926
+ if (typeof outcome === "object" && outcome !== null && "Reject" in outcome) {
1927
+ throw new Error(`Transaction ${finalize.transaction_hash ?? ""} was rejected: ${JSON.stringify(outcome.Reject)}`);
1928
+ }
1929
+ const breakdown = (finalize.fee_receipt?.cost_breakdown?.breakdown ?? {});
1930
+ let charged = 0n;
1931
+ for (const amount of Object.values(breakdown))
1932
+ if (amount !== undefined)
1933
+ charged += BigInt(amount);
1934
+ if (charged === 0n)
1935
+ throw new Error("Could not estimate the claim fee: the dry run reported no cost");
1936
+ return charged + FEE_ESTIMATE_ALLOWANCE;
1937
+ }
1803
1938
  /**
1804
1939
  * This account's unspent stealth outputs, newest first, optionally filtered to one resource.
1805
1940
  *
@@ -2353,6 +2488,25 @@ export async function recoverPendingShields(provider) {
2353
2488
  }
2354
2489
  }
2355
2490
  }
2491
+ /**
2492
+ * `FEE_ESTIMATE_ALLOWANCE` in tari-ootle's `engine_types::fees`: a real run meters slightly
2493
+ * differently from its dry run (the fee amount's own encoding feeds the cost), and this bounds the
2494
+ * difference.
2495
+ */
2496
+ const FEE_ESTIMATE_ALLOWANCE = 12n;
2497
+ /**
2498
+ * The fee revealed while dry-running a claim. A dry run never charges it, but its width feeds the
2499
+ * metered cost, so it sits well above any realistic claim cost while staying under the burn.
2500
+ */
2501
+ function claimFeeProbe(burnValue) {
2502
+ const probe = 1000000n;
2503
+ return burnValue > probe ? probe : burnValue - 1n;
2504
+ }
2505
+ /** The fee named by an `InsufficientFeesPaid` rejection ("Required fees N but M paid"), if any. */
2506
+ function requiredFeeFromRejection(e) {
2507
+ const match = /Required fees (\d+) but \d+ paid/.exec(e instanceof Error ? e.message : String(e));
2508
+ return match ? BigInt(match[1]) : null;
2509
+ }
2356
2510
  /**
2357
2511
  * Persists a `ShieldedOutputRecord` for a commitment already known locally (see
2358
2512
  * `extractOutputCommitment`'s doc comment for why this is preferred over scanning the finalized
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chironbuilder/ootle-sdk",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Shared TypeScript client for Tari Ootle (L2): account derivation, balances, transactions, HTLCs, and stealth/confidential transfers — the account core behind Sapient and the Tari L1 web wallet's Ootle support.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -221,6 +221,13 @@ export function buildStealthInputsStatementFromInputs(inputs_json: string, revea
221
221
  */
222
222
  export function buildStealthTransferStatement(input_witnesses_json: string, revealed_input_amount_microtari: bigint, output_witnesses_json: string, revealed_output_amount_microtari: bigint): string;
223
223
 
224
+ /**
225
+ * Derive the stealth claim secret `s = H(p·R) + p` for claiming an L1 (minotari) burn, from the
226
+ * account secret `p` and the burn's sender offset public key `R`. The claim transaction must be
227
+ * sealed with this key.
228
+ */
229
+ export function burnClaimStealthSecret(account_secret: Uint8Array, sender_offset_public_key: Uint8Array): Uint8Array;
230
+
224
231
  /**
225
232
  * Builds a `ConfidentialWithdrawProof` for the Account template's `withdraw_confidential` /
226
233
  * `join_confidential` methods, and returns it `tari_bor`-encoded -- ready to hex-encode and wrap
@@ -442,6 +449,14 @@ export function unblindOutput(output_commitment: Uint8Array, encrypted_data: Uin
442
449
  */
443
450
  export function validateBalanceProofSignature(public_nonce: Uint8Array, signature: Uint8Array, inputs_statement_json: string, outputs_statement_json: string): boolean;
444
451
 
452
+ /**
453
+ * Check an L1 burn's ownership proof against the stealth claim key derived from `stealth_secret`,
454
+ * exactly as a validator will. `false` means the claim would be rejected.
455
+ *
456
+ * `network` is the network byte (0x00 = MainNet, 0x10 = LocalNet, 0x26 = Esmeralda, ...).
457
+ */
458
+ export function validateBurnClaimOwnershipProof(network: number, ownership_nonce: Uint8Array, ownership_signature: Uint8Array, commitment: Uint8Array, value: bigint, stealth_secret: Uint8Array): boolean;
459
+
445
460
  /**
446
461
  * Run the same validation the engine performs on a complete `StealthTransferStatement` envelope:
447
462
  * structural sanity, commitment well-formedness, range and balance-proof verification.
@@ -5,5 +5,5 @@ import { __wbg_set_wasm } from "./ootle_wasm_bg.js";
5
5
  __wbg_set_wasm(wasm);
6
6
  wasm.__wbindgen_start();
7
7
  export {
8
- DecryptedOutputResult, KeypairResult, OotlePublicKey, OotleSecretKey, ParsedOotleAddress, SchnorrSignatureResult, StealthOutputsResult, addTransactionSigner, aggregateInputMasks, borEncodeTransaction, buildScriptPathWitness, buildStealthInputsStatement, buildStealthInputsStatementFromInputs, buildStealthTransferStatement, createConfidentialWithdrawProofLiteral, createStealthOutputWitness, decryptElgamalViewableBalance, encryptedDataDhKdfAead, generateElgamalViewableBalanceProof, generateExtendedBulletProof, generateKeypair, generateOotleAddress, generateOotleSecretKey, generateStealthBalanceProofSignature, generateStealthOutputsStatement, hashUnsignedTransaction, on_start, ootlePublicKeyFromSecretKey, parseOotleAddress, publicKeyFromSecretKey, schnorrSign, sealTransaction, stealthDhSecret, unblindOutput, validateBalanceProofSignature, validateStealthTransfer
8
+ DecryptedOutputResult, KeypairResult, OotlePublicKey, OotleSecretKey, ParsedOotleAddress, SchnorrSignatureResult, StealthOutputsResult, addTransactionSigner, aggregateInputMasks, borEncodeTransaction, buildScriptPathWitness, buildStealthInputsStatement, buildStealthInputsStatementFromInputs, buildStealthTransferStatement, burnClaimStealthSecret, createConfidentialWithdrawProofLiteral, createStealthOutputWitness, decryptElgamalViewableBalance, encryptedDataDhKdfAead, generateElgamalViewableBalanceProof, generateExtendedBulletProof, generateKeypair, generateOotleAddress, generateOotleSecretKey, generateStealthBalanceProofSignature, generateStealthOutputsStatement, hashUnsignedTransaction, on_start, ootlePublicKeyFromSecretKey, parseOotleAddress, publicKeyFromSecretKey, schnorrSign, sealTransaction, stealthDhSecret, unblindOutput, validateBalanceProofSignature, validateBurnClaimOwnershipProof, validateStealthTransfer
9
9
  } from "./ootle_wasm_bg.js";
@@ -729,6 +729,28 @@ export function buildStealthTransferStatement(input_witnesses_json, revealed_inp
729
729
  }
730
730
  }
731
731
 
732
+ /**
733
+ * Derive the stealth claim secret `s = H(p·R) + p` for claiming an L1 (minotari) burn, from the
734
+ * account secret `p` and the burn's sender offset public key `R`. The claim transaction must be
735
+ * sealed with this key.
736
+ * @param {Uint8Array} account_secret
737
+ * @param {Uint8Array} sender_offset_public_key
738
+ * @returns {Uint8Array}
739
+ */
740
+ export function burnClaimStealthSecret(account_secret, sender_offset_public_key) {
741
+ const ptr0 = passArray8ToWasm0(account_secret, wasm.__wbindgen_malloc);
742
+ const len0 = WASM_VECTOR_LEN;
743
+ const ptr1 = passArray8ToWasm0(sender_offset_public_key, wasm.__wbindgen_malloc);
744
+ const len1 = WASM_VECTOR_LEN;
745
+ const ret = wasm.burnClaimStealthSecret(ptr0, len0, ptr1, len1);
746
+ if (ret[3]) {
747
+ throw takeFromExternrefTable0(ret[2]);
748
+ }
749
+ var v3 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
750
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
751
+ return v3;
752
+ }
753
+
732
754
  /**
733
755
  * Builds a `ConfidentialWithdrawProof` for the Account template's `withdraw_confidential` /
734
756
  * `join_confidential` methods, and returns it `tari_bor`-encoded -- ready to hex-encode and wrap
@@ -1293,6 +1315,35 @@ export function validateBalanceProofSignature(public_nonce, signature, inputs_st
1293
1315
  return ret[0] !== 0;
1294
1316
  }
1295
1317
 
1318
+ /**
1319
+ * Check an L1 burn's ownership proof against the stealth claim key derived from `stealth_secret`,
1320
+ * exactly as a validator will. `false` means the claim would be rejected.
1321
+ *
1322
+ * `network` is the network byte (0x00 = MainNet, 0x10 = LocalNet, 0x26 = Esmeralda, ...).
1323
+ * @param {number} network
1324
+ * @param {Uint8Array} ownership_nonce
1325
+ * @param {Uint8Array} ownership_signature
1326
+ * @param {Uint8Array} commitment
1327
+ * @param {bigint} value
1328
+ * @param {Uint8Array} stealth_secret
1329
+ * @returns {boolean}
1330
+ */
1331
+ export function validateBurnClaimOwnershipProof(network, ownership_nonce, ownership_signature, commitment, value, stealth_secret) {
1332
+ const ptr0 = passArray8ToWasm0(ownership_nonce, wasm.__wbindgen_malloc);
1333
+ const len0 = WASM_VECTOR_LEN;
1334
+ const ptr1 = passArray8ToWasm0(ownership_signature, wasm.__wbindgen_malloc);
1335
+ const len1 = WASM_VECTOR_LEN;
1336
+ const ptr2 = passArray8ToWasm0(commitment, wasm.__wbindgen_malloc);
1337
+ const len2 = WASM_VECTOR_LEN;
1338
+ const ptr3 = passArray8ToWasm0(stealth_secret, wasm.__wbindgen_malloc);
1339
+ const len3 = WASM_VECTOR_LEN;
1340
+ const ret = wasm.validateBurnClaimOwnershipProof(network, ptr0, len0, ptr1, len1, ptr2, len2, value, ptr3, len3);
1341
+ if (ret[2]) {
1342
+ throw takeFromExternrefTable0(ret[1]);
1343
+ }
1344
+ return ret[0] !== 0;
1345
+ }
1346
+
1296
1347
  /**
1297
1348
  * Run the same validation the engine performs on a complete `StealthTransferStatement` envelope:
1298
1349
  * structural sanity, commitment well-formedness, range and balance-proof verification.
@@ -49,6 +49,7 @@ export const buildScriptPathWitness: (a: number, b: number, c: number, d: number
49
49
  export const buildStealthInputsStatement: (a: number, b: number, c: bigint) => [number, number, number, number];
50
50
  export const buildStealthInputsStatementFromInputs: (a: number, b: number, c: bigint) => [number, number, number, number];
51
51
  export const buildStealthTransferStatement: (a: number, b: number, c: bigint, d: number, e: number, f: bigint) => [number, number, number, number];
52
+ export const burnClaimStealthSecret: (a: number, b: number, c: number, d: number) => [number, number, number, number];
52
53
  export const createConfidentialWithdrawProofLiteral: (a: number, b: number, c: bigint, d: number, e: number, f: bigint, g: number, h: number, i: bigint) => [number, number, number, number];
53
54
  export const createStealthOutputWitness: (a: number, b: number, c: number, d: number, e: number, f: bigint, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: bigint) => [number, number, number, number];
54
55
  export const decryptElgamalViewableBalance: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: bigint, j: bigint) => [number, bigint, number, number];
@@ -70,6 +71,7 @@ export const sealTransaction: (a: number, b: number, c: number, d: number) => [n
70
71
  export const stealthDhSecret: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
71
72
  export const unblindOutput: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number];
72
73
  export const validateBalanceProofSignature: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
74
+ export const validateBurnClaimOwnershipProof: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: bigint, i: number, j: number) => [number, number, number];
73
75
  export const validateStealthTransfer: (a: number, b: number, c: number, d: number) => [number, number];
74
76
  export const tari_free: (a: number) => void;
75
77
  export const tari_alloc: (a: number) => number;
@@ -4,7 +4,7 @@
4
4
  "collaborators": [
5
5
  "The Tari Development Community"
6
6
  ],
7
- "description": "WASM bindings for Tari Ootle client-side crypto — thin wasm-bindgen shell over ootle-wasm-core. LOCAL VENDOR PATCH: adds createConfidentialWithdrawProofLiteral, built from tari-dan crates/ootle_wasm at commit ac73128 (v0.41.0, esmeralda V1 activation) plus the confidential.rs module added on top -- not yet in an upstream release.",
7
+ "description": "WASM bindings for Tari Ootle client-side crypto — thin wasm-bindgen shell over ootle-wasm-core. LOCAL VENDOR PATCH: adds createConfidentialWithdrawProofLiteral, built from tari-dan crates/ootle_wasm at commit ac73128 (v0.41.0, esmeralda V1 activation) plus the confidential.rs module and burn_claim exports (burnClaimStealthSecret, validateBurnClaimOwnershipProof) added on top -- not yet in an upstream release.",
8
8
  "version": "0.41.0",
9
9
  "license": "BSD-3-Clause",
10
10
  "repository": {