@chironbuilder/ootle-sdk 0.1.11 → 0.1.12

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,109 @@
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
+ const { claimedAmount, commitment } = await account.claimBurn(proof, /* maxFee */ 2000n);
77
+ ```
78
+
79
+ The claimed funds arrive as a stealth output owned by this account and are recorded in its private
80
+ balance. Validators accept a burn only once its L1 block is well confirmed, so an early claim is
81
+ rejected and can be retried.
82
+
83
+ ## What's in here, and what isn't
84
+
85
+ - **Account core** (`wallet.ts`): `OotleAccount`, balance/plan-resolution helpers, the transaction
86
+ auto-resolve retry loop.
87
+ - **Crypto/derivation**: `derivation.ts`, `domainHash.ts`, `componentAddress.ts`, `vault.ts`,
88
+ `ownershipProof.ts`, `confidential.ts`.
89
+ - **HTLC**: `htlc.ts`.
90
+ - **L1 burn claims**: `burnClaim.ts` (proof assembly) + `OotleAccount.claimBurn`.
91
+ - **Storage abstraction**: `storage.ts` + `adapters.ts`.
92
+ - **Not included**: UI, an approval/permission model for dApp connections, address books, daemon
93
+ (`tari_ootle_walletd`) relay support, transaction-history persistence. Those stay in each
94
+ consuming application.
95
+
96
+ ## Developing
97
+
98
+ ```bash
99
+ npm install
100
+ npm run typecheck
101
+ npm test
102
+ npm run build
103
+ ```
104
+
105
+ ## License
106
+
107
+ MIT — see [LICENSE](LICENSE). (The two wallets this was extracted from are licensed separately,
108
+ under PolyForm Noncommercial; this SDK is deliberately more permissive so other Ootle projects can
109
+ 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,24 @@ 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). `maxFee` is revealed from the claimed value to pay the fee; 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
+ * Validators only accept a burn once its L1 block is well confirmed; claiming earlier is
726
+ * rejected and can simply be retried later.
727
+ */
728
+ claimBurn(contents: BurnClaimProofContents, maxFee?: bigint, memo?: string): Promise<{
729
+ transactionId: string;
730
+ claimedAmount: bigint;
731
+ commitment: string;
732
+ }>;
714
733
  /**
715
734
  * This account's unspent stealth outputs, newest first, optionally filtered to one resource.
716
735
  *
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EA2BR,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,aAAa,EACb,mCAAmC,EACnC,WAAW,EAIX,mBAAmB,EACnB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAYxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAcrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIzD;;;yFAGyF;AACzF,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC;AAahG,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf;;;wCAGoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;kCAE8B;IAC9B,2BAA2B,EAAE,MAAM,CAAC;IACpC;yEACqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB;sEACkE;IAClE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;oDACgD;IAChD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;mGAE+F;IAC/F,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACtC;AAED;;;4CAG4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB;iCAC6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf;gFAC4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAmCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CASpF;AAoCD;;;GAGG;AACH,qBAAa,YAAa,YAAW,gBAAgB;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAgC;IAKhD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO;IAOP,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,YAAY;IAOrF,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAqB7C;;;;;OAKG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC;;;;;;;;OAQG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA+I5C;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CACX,YAAY,EAAE,WAAW,EAAE,EAC3B,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACd;wBA8IqB,aAAa;gBAAU,aAAa;;wBA4DE,aAAa;;wBAksE4B,MAAM;;IApxElH;;;;;;;;;;;;;;;;;OAiBG;YACW,YAAY;IAgD1B;;;;;;;;;;;OAWG;YACW,UAAU;IAoCxB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAQ,EAAE,OAAO,GAAE,OAAiC;wBApH3G,aAAa;gBAAU,aAAa;;wBA4DE,aAAa;;wBAksE4B,MAAM;;IAxmElH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE,OAAO,GAAE,OAAiC;wBApLjG,aAAa;gBAAU,aAAa;;wBA4DE,aAAa;;wBAksE4B,MAAM;;IA7hElH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,eAAe,CAAC,MAAM,SAAQ,EAAE,OAAO,SAAK,EAAE,YAAY,SAAM;IA0EtE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,MAAM,CACV,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,SAAS,EACf,IAAI,CAAC,EAAE,MAAM,EACb,mBAAmB,SAAK,EACxB,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;IAkD1G;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CACtB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA4BzE;;;;;;;;;;;;;OAaG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAOxH;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,MAAM,SAAU,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAqErC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,yBAAyB,CAC7B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,EAAE,WAAW,EAAE,EACnC,iBAAiB,GAAE,MAAM,EAAO,EAChC,MAAM,SAAU,EAChB,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCrC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACG,6BAA6B,CACjC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,oBAAoB,EAAE,WAAW,EAAE,EACnC,iBAAiB,GAAE,MAAM,EAAO,EAChC,MAAM,SAAU,EAChB,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAmGrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH;;;;;;;;;;;;;;;;;;OAkBG;YACW,2BAA2B;IAgFzC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;;;OAOG;YACW,kBAAkB;IAOhC;;;;;OAKG;YACW,qBAAqB;IAKnC;;;;OAIG;YACW,iBAAiB;IAmD/B;;;;;;;;;;;;;;;;;OAiBG;YACW,6BAA6B;IAkC3C;;;;;;;;;;;;OAYG;YACW,iBAAiB;IAsBzB,iCAAiC,CACrC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,oBAAoB,EAAE,WAAW,EAAE,EACnC,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,GAAE,MAAM,EAAO,GAC/B,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;IAsFlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,EAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,SAAS,EACf,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAwCtG;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,SAAS,CACb,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,SAAS,EACf,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAmDrC;;;;;;;;;;;;;;;;;OAiBG;IACG,UAAU,CACd,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,MAAM,SAAS,EACf,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAuCrC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,aAAa,CACjB,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,EAC9B,MAAM,EAAE,MAAM,EACd,MAAM,SAAU,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,mBAAmB,SAAK,EACxB,OAAO,GAAE,OAAiC,GACzC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;IA+E5H;;;;;;;;;OASG;IACG,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBrH;;;;;;;;OAQG;IACG,0BAA0B,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAI3F;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBrD;;;;;;;;;;;;;;OAcG;IACG,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,oBAAoB,EAAE,CAAA;KAAE,CAAC;IA4D3H;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,oBAAoB,CACxB,eAAe,EAAE,MAAM,EACvB,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAC7F,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAoFnC;AAED;;;;;;;;;GASG;AACH;;;;;;;;;;;;;GAaG;AAIH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb;6DACyD;IACzD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CA2BT;AAuED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,EAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GACzC,YAAY,EAAE,CAiBhB;AAoBD;;;;;;;;;;;GAWG;AACH;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAI9H;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,oBAAoB,EAAE,GAC9B;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CASpE;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,oBAAoB,EAAE,EAC/B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB;IAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAiBzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GACxB;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmB9C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAM,EAAO,GACrB,oBAAoB,CAetB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAOjD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpF;AAyGD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;AAED;;0GAE0G;AAC1G,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,MAAM,EACrB,SAAS,SAAS,GACjB,OAAO,CAAC,mCAAmC,CAAC,CAwB9C;AAmBD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,mBAAmB,EAAE,EACnC,OAAO,SAAI,EACX,YAAY,SAAM,GACjB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAUhC;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQpG;AAmBD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5E;AAOD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGvG"}
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";
@@ -1800,6 +1800,81 @@ export class OotleAccount {
1800
1800
  await recordKnownShieldedOutput(accountId, resourceAddress, commitmentHex, decrypted.value, substateId, memo);
1801
1801
  return { amount: decrypted.value, memo };
1802
1802
  }
1803
+ /**
1804
+ * Claims a Layer 1 (minotari) burn addressed to this account, minting the burned value on
1805
+ * Ootle as a stealth output owned by this account (recorded locally, so it shows in the private
1806
+ * balance). `maxFee` is revealed from the claimed value to pay the fee; the rest is claimed.
1807
+ *
1808
+ * The burn UTXO is minted and spent within the fee instructions, and the transaction is sealed
1809
+ * with the stealth claim secret `s = H(p·R) + p` rather than the account key: the L1 ownership
1810
+ * proof commits the burn to `s·G`, so `s` is the only key that satisfies its spend condition.
1811
+ * Nothing here touches the account component, so the account need not exist on-chain yet.
1812
+ *
1813
+ * Validators only accept a burn once its L1 block is well confirmed; claiming earlier is
1814
+ * rejected and can simply be retried later.
1815
+ */
1816
+ async claimBurn(contents, maxFee = 2000n, memo = "Burnt funds claimed from L1") {
1817
+ if (maxFee <= 0n)
1818
+ throw new Error(`claimBurn: maxFee must be > 0, got ${maxFee}`);
1819
+ const proof = contents.claim_proof;
1820
+ const burnCommitment = fromHex(proof.commitment);
1821
+ const senderOffset = fromHex(proof.sender_offset_public_key);
1822
+ const value = BigInt(proof.value);
1823
+ const stealthSecret = burnClaimStealthSecret(this.ownerSecret, senderOffset);
1824
+ const ownershipValid = validateBurnClaimOwnershipProof(this.network, fromHex(proof.ownership_proof.public_nonce), fromHex(proof.ownership_proof.signature), burnCommitment, value, stealthSecret);
1825
+ if (!ownershipValid) {
1826
+ throw new Error("This burn was not addressed to this account (its ownership proof does not verify).");
1827
+ }
1828
+ const crypto = new WasmStealthCrypto(this.network);
1829
+ const aeadKey = await crypto.deriveAeadKey(this.ownerSecret, senderOffset);
1830
+ const decrypted = await crypto.unblindOutput(burnCommitment, fromHex(contents.encrypted_data), aeadKey, true);
1831
+ if (decrypted.value !== value) {
1832
+ throw new Error(`claimBurn: burn proof states ${value} but the burn output holds ${decrypted.value}`);
1833
+ }
1834
+ const claimedAmount = decrypted.value - maxFee;
1835
+ if (claimedAmount <= 0n) {
1836
+ throw new Error(`claimBurn: the burn (${decrypted.value}) does not cover maxFee (${maxFee})`);
1837
+ }
1838
+ const walletAddress = await this.getWalletAddress();
1839
+ const output = createOutput({ destination: walletAddress, amount: claimedAmount, resourceAddress: TARI_RESOURCE_ADDRESS, memo: toMemo(memo) });
1840
+ const { statement: outputsStatement, outputMask } = await crypto.generateOutputsStatement([output], maxFee);
1841
+ // The single input is the UTXO `ClaimBurn` mints in the same transaction; the instruction
1842
+ // itself authorises spending it, so it carries no witness.
1843
+ const inputsStatement = await crypto.buildInputsStatement([new StealthInput(burnCommitment)], 0n);
1844
+ const inputMask = await crypto.aggregateInputMasks([decrypted.mask]);
1845
+ const balanceProof = await crypto.generateBalanceProofSignature(inputMask, outputMask, inputsStatement.statementJson, outputsStatement.statementJson);
1846
+ const statement = new StealthTransferStatement(inputsStatement, outputsStatement, balanceProof);
1847
+ await crypto.validateTransfer(statement);
1848
+ const ownCommitment = outputsStatement.parsed().outputs[0].output.commitment;
1849
+ const provider = await this.getProvider();
1850
+ const maxEpoch = await resolveMaxEpoch(provider);
1851
+ const builder = TransactionBuilder.new(this.network, maxEpoch)
1852
+ .addFeeInstruction({ ClaimBurn: { claim: proof, output_data: { encrypted_data: contents.encrypted_data } } })
1853
+ .addFeeInstruction({
1854
+ StealthTransfer: {
1855
+ resource_address_ref: { Address: TARI_RESOURCE_ADDRESS },
1856
+ statement: { __ootleRawJson: statement.toCompactJson() },
1857
+ revealed_input_bucket: null,
1858
+ },
1859
+ })
1860
+ .addFeeInstruction({ PutLastInstructionOutputOnWorkspace: { key: 0 } })
1861
+ .addFeeInstruction({ PayFeeFromBucket: { bucket: { id: 0, offset: null } } })
1862
+ .addInput({ substate_id: TARI_RESOURCE_ADDRESS, version: null });
1863
+ // The seal key `s` is the transaction's only signer, so it must be authorized as the main
1864
+ // signer; the TS builder leaves that off by default.
1865
+ const unsignedBody = builder.buildUnsignedTransaction();
1866
+ unsignedBody.is_seal_signer_authorized = true;
1867
+ const unsignedTx = await resolveTransaction(provider, unsignedBody);
1868
+ const signed = await signTransaction([], unsignedTx, {
1869
+ secret_key: stealthSecret,
1870
+ public_key: publicKeyFromSecretKey(stealthSecret),
1871
+ });
1872
+ const transactionId = await submitTransaction(provider, sealTransaction(signed));
1873
+ const response = await withTimeout(pollTransactionResult(provider, transactionId), 90_000, "claiming the burn");
1874
+ await recordKnownVersions(response);
1875
+ await recordKnownShieldedOutput(localAccountId(this.index), TARI_RESOURCE_ADDRESS, ownCommitment, claimedAmount, transactionId, memo);
1876
+ return { transactionId, claimedAmount, commitment: ownCommitment };
1877
+ }
1803
1878
  /**
1804
1879
  * This account's unspent stealth outputs, newest first, optionally filtered to one resource.
1805
1880
  *
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.12",
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": {