@meshconnect/uwc-types 0.25.0 → 0.26.1

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.
@@ -39,6 +39,12 @@ export interface DetectedTonWalletInfo {
39
39
  icon: string;
40
40
  jsBridgeKey: string;
41
41
  }
42
+ export interface DetectedBitcoinWalletInfo {
43
+ uuid: string;
44
+ name: string;
45
+ /** Wallet Standard `bitcoin:*` feature names the wallet advertises. */
46
+ features: string[];
47
+ }
42
48
  export interface Eip155Metadata {
43
49
  eip155Name: string;
44
50
  injectedId: string;
@@ -65,12 +71,20 @@ export interface TonMetadata {
65
71
  installed?: boolean;
66
72
  detectedWallet?: DetectedTonWalletInfo;
67
73
  }
74
+ export interface BitcoinMetadata {
75
+ /** Wallet Standard wallet name used to match the `bitcoin:*` registry entry. */
76
+ walletStandardName?: string;
77
+ injectedId?: string;
78
+ installed?: boolean;
79
+ detectedWallet?: DetectedBitcoinWalletInfo;
80
+ }
68
81
  /** Keys are CAIP-2 namespace identifiers. Types use brand names (e.g. tvm → TonMetadata). */
69
82
  interface NamespaceMetaDataRegistry {
70
83
  eip155: Eip155Metadata;
71
84
  solana: SolanaMetadata;
72
85
  tron: TronMetadata;
73
86
  tvm: TonMetadata;
87
+ bip122: BitcoinMetadata;
74
88
  }
75
89
  type NamespaceMetaDataMap = {
76
90
  [K in Namespace]?: K extends keyof NamespaceMetaDataRegistry ? NamespaceMetaDataRegistry[K] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"UWC-state.d.ts","sourceRoot":"","sources":["../src/UWC-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UWC-state.d.ts","sourceRoot":"","sources":["../src/UWC-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Per-wallet feature-flag key for `enabledWallets`. Open `string` because the
3
+ * Bitcoin namespace is metadata-driven — the wallet set comes from the passed-in
4
+ * metadata, not a compiled union — so any backend-configured wallet can be gated
5
+ * without a UWC release. Mirrors `TronWalletId`.
6
+ */
7
+ export type BitcoinWalletId = string;
8
+ /**
9
+ * A bip122 account as surfaced by the wallet (Wallet Standard `bitcoin:*`).
10
+ *
11
+ * Shapes match the Wallet Standard bitcoin account: an `address`, its
12
+ * `publicKey` (needed per-input for PSBT signing), and an optional `purpose`
13
+ * distinguishing payment vs. ordinals addresses on wallets that separate them.
14
+ * `publicKey` is hex here (JSON/transport-safe) — adapters convert to/from the
15
+ * wallet's native `Uint8Array` at the boundary.
16
+ */
17
+ export interface BitcoinAccount {
18
+ address: string;
19
+ /** Compressed public key, hex-encoded (no `0x`). */
20
+ publicKey: string;
21
+ /** Address purpose, when the wallet distinguishes them (e.g. Phantom-style). */
22
+ purpose?: 'payment' | 'ordinals';
23
+ }
24
+ /**
25
+ * Params to sign a message (Wallet Standard `bitcoin:signMessage`).
26
+ * `message` is the UTF-8 string; the adapter encodes it to bytes.
27
+ */
28
+ export interface BitcoinSignMessageParams {
29
+ account: BitcoinAccount;
30
+ message: string;
31
+ /** Signing protocol; wallets default to `ecdsa` when omitted. */
32
+ protocol?: 'ecdsa' | 'bip322';
33
+ }
34
+ /**
35
+ * Public configuration for the Bitcoin namespace module. Lives in `uwc-types`
36
+ * (like `TronConnectorConfig` / `TonConnectConfig`) so it can thread through
37
+ * `UniversalWalletConnector` once the core wiring lands.
38
+ *
39
+ * The `enabledWallets` set is an OPTIONAL per-wallet feature-flag surface. When
40
+ * omitted, every wallet whose metadata declares a `namespaceMetaData.bip122`
41
+ * entry is enabled (catalog-driven). An empty set/array enables nothing.
42
+ *
43
+ * Broadcast configuration (mempool.space endpoints) is intentionally NOT here
44
+ * yet — it arrives in Phase 3 alongside the broadcast implementation, together
45
+ * with the bip122 testnet network id it needs to be keyed by.
46
+ */
47
+ export interface BitcoinConfig {
48
+ /**
49
+ * Optional allow-list of wallets to enable, matched against each wallet's
50
+ * `WalletMetadata.id` or its `namespaceMetaData.bip122.injectedId`
51
+ * (case-insensitive). Omit to enable every bip122-capable wallet the metadata
52
+ * declares; an empty set/array enables nothing.
53
+ */
54
+ enabledWallets?: ReadonlySet<BitcoinWalletId> | readonly BitcoinWalletId[];
55
+ /** Timeout (ms) for the per-wallet injection probe during connect. Default: 3000. */
56
+ readyStateTimeoutMs?: number;
57
+ /**
58
+ * Timeout (ms) for the injection probe during discovery. Deliberately short
59
+ * (default: 300) because absent wallets always wait out the full timeout.
60
+ */
61
+ discoveryTimeoutMs?: number;
62
+ /** Poll cadence (ms) for the injection probe. Default: 50. */
63
+ readyStatePollIntervalMs?: number;
64
+ }
65
+ //# sourceMappingURL=bitcoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoin.d.ts","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAEpC;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,SAAS,eAAe,EAAE,CAAA;IAE1E,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,8DAA8D;IAC9D,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bitcoin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './connector';
7
7
  export * from './providers';
8
8
  export * from './wallet-connect-connector';
9
9
  export * from './tron-connector';
10
+ export * from './bitcoin';
10
11
  export * from './react-hooks';
11
12
  export * from './signature';
12
13
  export * from './transactions';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ export * from './connector';
7
7
  export * from './providers';
8
8
  export * from './wallet-connect-connector';
9
9
  export * from './tron-connector';
10
+ export * from './bitcoin';
10
11
  export * from './react-hooks';
11
12
  export * from './signature';
12
13
  export * from './transactions';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA"}
@@ -1,6 +1,6 @@
1
- export type NetworkId = 'eip155:1' | 'eip155:11155111' | 'solana:devnet' | 'eip155:56' | 'eip155:137' | 'eip155:43114' | 'eip155:42161' | 'eip155:10' | 'eip155:8453' | 'eip155:84532' | 'bip122:000000000019d6689c085ae165831e93' | 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp' | 'tron:0x2b6653dc' | 'tron:0x94a9059e' | 'tron:0xcd8690dc' | 'eip155:81457' | 'bip122:1a91e3dace36e2be3bf030a65679fe82' | 'xrpl:0' | 'bip122:12a765e31ffd4059bada1e25190f6e98' | 'eip155:999' | 'eip155:143' | 'eip155:1329' | 'eip155:57073' | 'eip155:480' | 'eip155:4326' | 'eip155:4217' | 'eip155:25' | 'eip155:59144' | 'eip155:988' | 'tvm:-239' | 'sui:mainnet';
2
- export type NetworkType = 'evm' | 'solana' | 'bitcoin' | 'tron' | 'dogecoin' | 'litecoin' | 'ripple' | 'tvm' | 'sui';
3
- export type Namespace = 'eip155' | 'solana' | 'bip122' | 'tron' | 'xrpl' | 'tvm' | 'sui';
1
+ export type NetworkId = 'eip155:1' | 'eip155:11155111' | 'solana:devnet' | 'eip155:56' | 'eip155:137' | 'eip155:43114' | 'eip155:42161' | 'eip155:10' | 'eip155:8453' | 'eip155:84532' | 'bip122:000000000019d6689c085ae165831e93' | 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp' | 'tron:0x2b6653dc' | 'tron:0x94a9059e' | 'tron:0xcd8690dc' | 'eip155:81457' | 'bip122:1a91e3dace36e2be3bf030a65679fe82' | 'xrpl:0' | 'bip122:12a765e31ffd4059bada1e25190f6e98' | 'eip155:999' | 'eip155:143' | 'eip155:1329' | 'eip155:57073' | 'eip155:480' | 'eip155:4326' | 'eip155:4217' | 'eip155:25' | 'eip155:59144' | 'eip155:988' | 'tvm:-239' | 'sui:mainnet' | 'aptos:1';
2
+ export type NetworkType = 'evm' | 'solana' | 'bitcoin' | 'tron' | 'dogecoin' | 'litecoin' | 'ripple' | 'tvm' | 'sui' | 'aptos';
3
+ export type Namespace = 'eip155' | 'solana' | 'bip122' | 'tron' | 'xrpl' | 'tvm' | 'sui' | 'aptos';
4
4
  export interface NativeCurrency {
5
5
  name: string;
6
6
  symbol: string;
@@ -1 +1 @@
1
- {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../src/networks.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,iBAAiB,GACjB,eAAe,GACf,WAAW,GACX,YAAY,GACZ,cAAc,GACd,cAAc,GACd,WAAW,GACX,aAAa,GACb,cAAc,GACd,yCAAyC,GACzC,yCAAyC,GACzC,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,yCAAyC,GACzC,QAAQ,GACR,yCAAyC,GACzC,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,GACd,YAAY,GACZ,aAAa,GACb,aAAa,GACb,WAAW,GACX,cAAc,GACd,YAAY,GACZ,UAAU,GACV,aAAa,CAAA;AAEjB,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,QAAQ,GACR,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,QAAQ,GACR,KAAK,GACL,KAAK,CAAA;AAET,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,CAAA;AAET,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,EAAE,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,SAAS,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,WAAW,EAAE,WAAW,CAAA;CACzB"}
1
+ {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../src/networks.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,iBAAiB,GACjB,eAAe,GACf,WAAW,GACX,YAAY,GACZ,cAAc,GACd,cAAc,GACd,WAAW,GACX,aAAa,GACb,cAAc,GACd,yCAAyC,GACzC,yCAAyC,GACzC,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,yCAAyC,GACzC,QAAQ,GACR,yCAAyC,GACzC,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,GACd,YAAY,GACZ,aAAa,GACb,aAAa,GACb,WAAW,GACX,cAAc,GACd,YAAY,GACZ,UAAU,GACV,aAAa,GACb,SAAS,CAAA;AAEb,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,QAAQ,GACR,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,QAAQ,GACR,KAAK,GACL,KAAK,GACL,OAAO,CAAA;AAEX,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,OAAO,CAAA;AAEX,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,EAAE,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,SAAS,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,WAAW,EAAE,WAAW,CAAA;CACzB"}
@@ -10,6 +10,7 @@
10
10
  * UWC ships NO third-party telemetry SDK. The consumer implements the sinks and
11
11
  * wires them to whatever backend they run (Datadog, Amplitude, Segment, …).
12
12
  */
13
+ import type { Namespace } from './networks';
13
14
  export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
14
15
  /**
15
16
  * Pluggable logger. The default implementation (`createLogger`) is console-backed
@@ -85,4 +86,60 @@ export type LifecycleUnavailableReason =
85
86
  * tripped (a storming provider). Emitted once at the moment of the trip.
86
87
  */
87
88
  | 'emission_cap';
89
+ /**
90
+ * A named phase INSIDE a wallet operation, below the `awaitingWallet` →
91
+ * terminal pair. The handoff funnel answers "did the wallet answer?"; these
92
+ * answer "which part took the time / gave up?" — the gap that made a hung
93
+ * MetaMask connect indistinguishable from a slow one (ONC-183).
94
+ *
95
+ * Deliberately coarse and stable (dashboard-facing, low-cardinality). Only
96
+ * steps with a distinct failure mode get a name; internal bookkeeping does not.
97
+ */
98
+ export type WalletStepName =
99
+ /** Discovering the injected provider for the target namespace (EIP-6963 / bridge poll). */
100
+ 'providerDetection'
101
+ /** Passive `eth_accounts`-style read for an already-authorized provider (no prompt). */
102
+ | 'existingConnectionCheck'
103
+ /** The authorizing wallet call for the TARGET namespace (e.g. `eth_requestAccounts`). */
104
+ | 'primaryConnect'
105
+ /** Post-authorization chain read (`eth_chainId`) confirming the provider is live. */
106
+ | 'chainIdRead'
107
+ /**
108
+ * Best-effort address gather for a NON-target namespace (MetaMask's Solana
109
+ * Snap, a multi-namespace wallet's Tron leg). Unbounded before ONC-183 and
110
+ * the dominant source of connects that hang AFTER the user already approved.
111
+ */
112
+ | 'secondaryGather';
113
+ /** How a {@link WalletStepName} phase ended. */
114
+ export type WalletStepOutcome = 'ok'
115
+ /** Threw. For a best-effort step this is still a degraded-but-continuing connect. */
116
+ | 'failed'
117
+ /** Hit its deadline and was abandoned; the underlying promise may still be pending. */
118
+ | 'timedOut'
119
+ /**
120
+ * RESERVED — not yet emitted. Deliberately not run because a gate suppressed
121
+ * it, which is distinct from `ok` with no result. Declared now so consumer
122
+ * switch statements are exhaustive ahead of it (same convention as
123
+ * {@link LifecycleUnavailableReason}'s `old_bridge_parent`). The natural first
124
+ * emit site is the injected connector's legacy-`injectedId` / framed gates on
125
+ * the secondary Solana gather, which today report only through their own
126
+ * dedicated `secondarySolanaConnectSkipped` sink — so a suppressed leg is
127
+ * currently ABSENT from the step timeline rather than present-and-skipped.
128
+ */
129
+ | 'skipped';
130
+ /**
131
+ * Payload for the injected connector's step sink. Routing facets only — the
132
+ * same non-PII contract as the handoff events (no address, no payload). Core
133
+ * stamps `handoffId` on the way out so a step joins its own attempt's terminal.
134
+ */
135
+ export interface WalletStepInfo {
136
+ step: WalletStepName;
137
+ outcome: WalletStepOutcome;
138
+ /** Wall-clock ms for this step alone. */
139
+ durationMs: number;
140
+ /** The namespace the step acted on — the gather leg for `secondaryGather`. */
141
+ namespace?: Namespace | undefined;
142
+ /** The deadline that elapsed; set only when `outcome` is `timedOut`. */
143
+ timeoutMs?: number | undefined;
144
+ }
88
145
  //# sourceMappingURL=observability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACjD;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,+BAA+B,GAC/B,wBAAwB,GACxB,qBAAqB,GACrB,cAAc,GACd,qBAAqB,GACrB,4BAA4B,GAC5B,wBAAwB,GACxB,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe;AACjB,iFAAiF;GAC/E,mBAAmB,GACnB,oBAAoB,GACpB,gBAAgB,GAChB,SAAS;AACX,gFAAgF;GAC9E,oBAAoB,GACpB,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,WAAW,GACX,QAAQ,GACR,KAAK,GACL,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,MAAM,0BAA0B;AACpC,gGAAgG;AAC9F,mCAAmC;AACrC,uFAAuF;GACrF,iCAAiC;AACnC,oEAAoE;GAClE,uBAAuB;AACzB;;;;GAIG;GACD,mBAAmB;AACrB;;;GAGG;GACD,cAAc,CAAA"}
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACjD;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,+BAA+B,GAC/B,wBAAwB,GACxB,qBAAqB,GACrB,cAAc,GACd,qBAAqB,GACrB,4BAA4B,GAC5B,wBAAwB,GACxB,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe;AACjB,iFAAiF;GAC/E,mBAAmB,GACnB,oBAAoB,GACpB,gBAAgB,GAChB,SAAS;AACX,gFAAgF;GAC9E,oBAAoB,GACpB,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,WAAW,GACX,QAAQ,GACR,KAAK,GACL,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,MAAM,0BAA0B;AACpC,gGAAgG;AAC9F,mCAAmC;AACrC,uFAAuF;GACrF,iCAAiC;AACnC,oEAAoE;GAClE,uBAAuB;AACzB;;;;GAIG;GACD,mBAAmB;AACrB;;;GAGG;GACD,cAAc,CAAA;AAElB;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc;AACxB,2FAA2F;AACzF,mBAAmB;AACrB,wFAAwF;GACtF,yBAAyB;AAC3B,yFAAyF;GACvF,gBAAgB;AAClB,qFAAqF;GACnF,aAAa;AACf;;;;GAIG;GACD,iBAAiB,CAAA;AAErB,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GACzB,IAAI;AACN,qFAAqF;GACnF,QAAQ;AACV,uFAAuF;GACrF,UAAU;AACZ;;;;;;;;;GASG;GACD,SAAS,CAAA;AAEb;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAA;IACpB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACjC,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B"}
@@ -39,7 +39,12 @@ export interface EVMContractCallRequest {
39
39
  functionName: string;
40
40
  args: unknown[];
41
41
  from: string;
42
- value?: bigint;
42
+ /**
43
+ * Native currency to attach to a payable call, in wei (unsigned). A bigint, or a
44
+ * decimal or `0x`-hex string — `1000000000000000000n`, `'1000000000000000000'`,
45
+ * and `'0xde0b6b3a7640000'` are all 1 ETH. Omitted → 0.
46
+ */
47
+ value?: bigint | string;
43
48
  gasConfig?: EVMGasConfig;
44
49
  }
45
50
  /**
@@ -49,7 +54,12 @@ export interface EVMDataTransferRequest {
49
54
  from: string;
50
55
  to: string;
51
56
  data: string;
52
- value?: bigint;
57
+ /**
58
+ * Native currency to attach to the call, in wei (unsigned). A bigint, or a
59
+ * decimal or `0x`-hex string — `1000000000000000000n`, `'1000000000000000000'`,
60
+ * and `'0xde0b6b3a7640000'` are all 1 ETH. Omitted → 0.
61
+ */
62
+ value?: bigint | string;
53
63
  chainId: string;
54
64
  gasConfig?: EVMGasConfig;
55
65
  }
@@ -181,6 +191,39 @@ export interface TronContractCallRequest {
181
191
  data: string;
182
192
  }
183
193
  export type TronTransactionRequest = TronNativeTransferRequest | TronTRC20TransferRequest | TronContractCallRequest;
194
+ /**
195
+ * Bitcoin (bip122) Transaction Types
196
+ */
197
+ /** SIGHASH flag for a PSBT input (Wallet Standard bitcoin values). */
198
+ export type BitcoinSigHash = 'ALL' | 'NONE' | 'SINGLE' | 'ALL|ANYONECANPAY' | 'NONE|ANYONECANPAY' | 'SINGLE|ANYONECANPAY';
199
+ /** Which inputs of a PSBT a given address should sign. */
200
+ export interface BitcoinPsbtInputToSign {
201
+ address: string;
202
+ signingIndexes: number[];
203
+ sigHash?: BitcoinSigHash;
204
+ }
205
+ /**
206
+ * Path B — sign a backend-constructed PSBT (Wallet Standard `signTransaction`).
207
+ * The wallet signs the requested inputs and returns the signed PSBT; the
208
+ * connector finalizes and broadcasts (to mempool.space). Not a wallet broadcast.
209
+ */
210
+ export interface BitcoinPsbtSignRequest {
211
+ from: string;
212
+ /** Base64-encoded PSBT (BIP-174). */
213
+ psbt: string;
214
+ /** Inputs to sign; when omitted the wallet signs all it can. */
215
+ inputsToSign?: BitcoinPsbtInputToSign[];
216
+ }
217
+ /**
218
+ * Path A — high-level transfer (Trust Wallet WalletConnect `sendTransfer`). The
219
+ * wallet does coin selection, fee estimation, signing, and broadcast.
220
+ */
221
+ export interface BitcoinSendTransferRequest {
222
+ from: string;
223
+ to: string;
224
+ amount: number | bigint;
225
+ }
226
+ export type BitcoinTransactionRequest = BitcoinPsbtSignRequest | BitcoinSendTransferRequest;
184
227
  /**
185
228
  * Common Transaction Types
186
229
  */
@@ -248,7 +291,16 @@ export interface BatchTransactionResult {
248
291
  /**
249
292
  * Generic transaction request that can be either EVM or Solana
250
293
  */
251
- export type TransactionRequest = EthereumTransactionRequest | SolanaTransactionRequest | TronTransactionRequest | TonNativeTransferRequest;
294
+ export type TransactionRequest = EthereumTransactionRequest | SolanaTransactionRequest | TronTransactionRequest | TonNativeTransferRequest | BitcoinTransactionRequest;
252
295
  export type EthereumTransactionRequest = EVMNativeTransferRequest | EVMContractCallRequest | EVMBatchTransactionRequest | EVMDataTransferRequest;
253
296
  export type SolanaTransactionRequest = SolanaNativeTransferRequest | SolanaTokenTransferRequest | SolanaGenericTransferRequest;
297
+ /**
298
+ * Normalize an EVM `value` (in wei) to a bigint for viem.
299
+ *
300
+ * Accepts a bigint or a decimal / `0x`-hex string. Missing/nullish → 0n. Anything
301
+ * else throws with context rather than silently coercing to 0 on a money path:
302
+ * empty/whitespace, non-numeric, binary/octal (`0b`/`0o`), negative, or a
303
+ * non-string/non-bigint value (e.g. a number arriving from untyped JSON).
304
+ */
305
+ export declare function toEvmValueBigInt(value?: bigint | string | null): bigint;
254
306
  //# sourceMappingURL=transactions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,42 @@
1
1
  /**
2
2
  * EVM Transaction Types
3
3
  */
4
- export {};
4
+ /**
5
+ * Normalize an EVM `value` (in wei) to a bigint for viem.
6
+ *
7
+ * Accepts a bigint or a decimal / `0x`-hex string. Missing/nullish → 0n. Anything
8
+ * else throws with context rather than silently coercing to 0 on a money path:
9
+ * empty/whitespace, non-numeric, binary/octal (`0b`/`0o`), negative, or a
10
+ * non-string/non-bigint value (e.g. a number arriving from untyped JSON).
11
+ */
12
+ export function toEvmValueBigInt(value) {
13
+ if (value == null)
14
+ return 0n;
15
+ if (typeof value === 'bigint') {
16
+ if (value < 0n)
17
+ throw new Error(`Invalid EVM value: "${value}"`);
18
+ return value;
19
+ }
20
+ if (typeof value !== 'string') {
21
+ throw new Error(`Invalid EVM value: expected bigint or string, got ${typeof value}`);
22
+ }
23
+ const trimmed = value.trim();
24
+ if (trimmed === '') {
25
+ throw new Error('Invalid EVM value: empty string');
26
+ }
27
+ // BigInt() accepts 0b/0o prefixes; reject so only decimal and 0x-hex wei parse.
28
+ if (/^[+-]?0[bo]/i.test(trimmed)) {
29
+ throw new Error(`Invalid EVM value: "${value}"`);
30
+ }
31
+ let result;
32
+ try {
33
+ result = BigInt(trimmed);
34
+ }
35
+ catch {
36
+ throw new Error(`Invalid EVM value: "${value}"`);
37
+ }
38
+ if (result < 0n)
39
+ throw new Error(`Invalid EVM value: "${value}"`);
40
+ return result;
41
+ }
5
42
  //# sourceMappingURL=transactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoXH;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA8B;IAC7D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAA;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAA;QAChE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,qDAAqD,OAAO,KAAK,EAAE,CACpE,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IACD,gFAAgF;IAChF,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAA;IACjE,OAAO,MAAM,CAAA;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/uwc-types",
3
- "version": "0.25.0",
3
+ "version": "0.26.1",
4
4
  "description": "TypeScript types for Universal Wallet Connector",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/UWC-state.ts CHANGED
@@ -45,6 +45,13 @@ export interface DetectedTonWalletInfo {
45
45
  jsBridgeKey: string
46
46
  }
47
47
 
48
+ export interface DetectedBitcoinWalletInfo {
49
+ uuid: string
50
+ name: string
51
+ /** Wallet Standard `bitcoin:*` feature names the wallet advertises. */
52
+ features: string[]
53
+ }
54
+
48
55
  export interface Eip155Metadata {
49
56
  eip155Name: string
50
57
  injectedId: string
@@ -75,12 +82,21 @@ export interface TonMetadata {
75
82
  detectedWallet?: DetectedTonWalletInfo
76
83
  }
77
84
 
85
+ export interface BitcoinMetadata {
86
+ /** Wallet Standard wallet name used to match the `bitcoin:*` registry entry. */
87
+ walletStandardName?: string
88
+ injectedId?: string
89
+ installed?: boolean
90
+ detectedWallet?: DetectedBitcoinWalletInfo
91
+ }
92
+
78
93
  /** Keys are CAIP-2 namespace identifiers. Types use brand names (e.g. tvm → TonMetadata). */
79
94
  interface NamespaceMetaDataRegistry {
80
95
  eip155: Eip155Metadata
81
96
  solana: SolanaMetadata
82
97
  tron: TronMetadata
83
98
  tvm: TonMetadata
99
+ bip122: BitcoinMetadata
84
100
  }
85
101
 
86
102
  type NamespaceMetaDataMap = {
package/src/bitcoin.ts ADDED
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Per-wallet feature-flag key for `enabledWallets`. Open `string` because the
3
+ * Bitcoin namespace is metadata-driven — the wallet set comes from the passed-in
4
+ * metadata, not a compiled union — so any backend-configured wallet can be gated
5
+ * without a UWC release. Mirrors `TronWalletId`.
6
+ */
7
+ export type BitcoinWalletId = string
8
+
9
+ /**
10
+ * A bip122 account as surfaced by the wallet (Wallet Standard `bitcoin:*`).
11
+ *
12
+ * Shapes match the Wallet Standard bitcoin account: an `address`, its
13
+ * `publicKey` (needed per-input for PSBT signing), and an optional `purpose`
14
+ * distinguishing payment vs. ordinals addresses on wallets that separate them.
15
+ * `publicKey` is hex here (JSON/transport-safe) — adapters convert to/from the
16
+ * wallet's native `Uint8Array` at the boundary.
17
+ */
18
+ export interface BitcoinAccount {
19
+ address: string
20
+ /** Compressed public key, hex-encoded (no `0x`). */
21
+ publicKey: string
22
+ /** Address purpose, when the wallet distinguishes them (e.g. Phantom-style). */
23
+ purpose?: 'payment' | 'ordinals'
24
+ }
25
+
26
+ /**
27
+ * Params to sign a message (Wallet Standard `bitcoin:signMessage`).
28
+ * `message` is the UTF-8 string; the adapter encodes it to bytes.
29
+ */
30
+ export interface BitcoinSignMessageParams {
31
+ account: BitcoinAccount
32
+ message: string
33
+ /** Signing protocol; wallets default to `ecdsa` when omitted. */
34
+ protocol?: 'ecdsa' | 'bip322'
35
+ }
36
+
37
+ /**
38
+ * Public configuration for the Bitcoin namespace module. Lives in `uwc-types`
39
+ * (like `TronConnectorConfig` / `TonConnectConfig`) so it can thread through
40
+ * `UniversalWalletConnector` once the core wiring lands.
41
+ *
42
+ * The `enabledWallets` set is an OPTIONAL per-wallet feature-flag surface. When
43
+ * omitted, every wallet whose metadata declares a `namespaceMetaData.bip122`
44
+ * entry is enabled (catalog-driven). An empty set/array enables nothing.
45
+ *
46
+ * Broadcast configuration (mempool.space endpoints) is intentionally NOT here
47
+ * yet — it arrives in Phase 3 alongside the broadcast implementation, together
48
+ * with the bip122 testnet network id it needs to be keyed by.
49
+ */
50
+ export interface BitcoinConfig {
51
+ /**
52
+ * Optional allow-list of wallets to enable, matched against each wallet's
53
+ * `WalletMetadata.id` or its `namespaceMetaData.bip122.injectedId`
54
+ * (case-insensitive). Omit to enable every bip122-capable wallet the metadata
55
+ * declares; an empty set/array enables nothing.
56
+ */
57
+ enabledWallets?: ReadonlySet<BitcoinWalletId> | readonly BitcoinWalletId[]
58
+
59
+ /** Timeout (ms) for the per-wallet injection probe during connect. Default: 3000. */
60
+ readyStateTimeoutMs?: number
61
+
62
+ /**
63
+ * Timeout (ms) for the injection probe during discovery. Deliberately short
64
+ * (default: 300) because absent wallets always wait out the full timeout.
65
+ */
66
+ discoveryTimeoutMs?: number
67
+
68
+ /** Poll cadence (ms) for the injection probe. Default: 50. */
69
+ readyStatePollIntervalMs?: number
70
+ }
package/src/index.ts CHANGED
@@ -7,6 +7,7 @@ export * from './connector'
7
7
  export * from './providers'
8
8
  export * from './wallet-connect-connector'
9
9
  export * from './tron-connector'
10
+ export * from './bitcoin'
10
11
  export * from './react-hooks'
11
12
  export * from './signature'
12
13
  export * from './transactions'
package/src/networks.ts CHANGED
@@ -30,6 +30,7 @@ export type NetworkId =
30
30
  | 'eip155:988'
31
31
  | 'tvm:-239'
32
32
  | 'sui:mainnet'
33
+ | 'aptos:1'
33
34
 
34
35
  export type NetworkType =
35
36
  | 'evm'
@@ -41,6 +42,7 @@ export type NetworkType =
41
42
  | 'ripple'
42
43
  | 'tvm'
43
44
  | 'sui'
45
+ | 'aptos'
44
46
 
45
47
  export type Namespace =
46
48
  | 'eip155'
@@ -50,6 +52,7 @@ export type Namespace =
50
52
  | 'xrpl'
51
53
  | 'tvm'
52
54
  | 'sui'
55
+ | 'aptos'
53
56
 
54
57
  export interface NativeCurrency {
55
58
  name: string
@@ -11,6 +11,8 @@
11
11
  * wires them to whatever backend they run (Datadog, Amplitude, Segment, …).
12
12
  */
13
13
 
14
+ import type { Namespace } from './networks'
15
+
14
16
  export type LogLevel = 'debug' | 'info' | 'warn' | 'error'
15
17
 
16
18
  /**
@@ -114,3 +116,63 @@ export type LifecycleUnavailableReason =
114
116
  * tripped (a storming provider). Emitted once at the moment of the trip.
115
117
  */
116
118
  | 'emission_cap'
119
+
120
+ /**
121
+ * A named phase INSIDE a wallet operation, below the `awaitingWallet` →
122
+ * terminal pair. The handoff funnel answers "did the wallet answer?"; these
123
+ * answer "which part took the time / gave up?" — the gap that made a hung
124
+ * MetaMask connect indistinguishable from a slow one (ONC-183).
125
+ *
126
+ * Deliberately coarse and stable (dashboard-facing, low-cardinality). Only
127
+ * steps with a distinct failure mode get a name; internal bookkeeping does not.
128
+ */
129
+ export type WalletStepName =
130
+ /** Discovering the injected provider for the target namespace (EIP-6963 / bridge poll). */
131
+ | 'providerDetection'
132
+ /** Passive `eth_accounts`-style read for an already-authorized provider (no prompt). */
133
+ | 'existingConnectionCheck'
134
+ /** The authorizing wallet call for the TARGET namespace (e.g. `eth_requestAccounts`). */
135
+ | 'primaryConnect'
136
+ /** Post-authorization chain read (`eth_chainId`) confirming the provider is live. */
137
+ | 'chainIdRead'
138
+ /**
139
+ * Best-effort address gather for a NON-target namespace (MetaMask's Solana
140
+ * Snap, a multi-namespace wallet's Tron leg). Unbounded before ONC-183 and
141
+ * the dominant source of connects that hang AFTER the user already approved.
142
+ */
143
+ | 'secondaryGather'
144
+
145
+ /** How a {@link WalletStepName} phase ended. */
146
+ export type WalletStepOutcome =
147
+ | 'ok'
148
+ /** Threw. For a best-effort step this is still a degraded-but-continuing connect. */
149
+ | 'failed'
150
+ /** Hit its deadline and was abandoned; the underlying promise may still be pending. */
151
+ | 'timedOut'
152
+ /**
153
+ * RESERVED — not yet emitted. Deliberately not run because a gate suppressed
154
+ * it, which is distinct from `ok` with no result. Declared now so consumer
155
+ * switch statements are exhaustive ahead of it (same convention as
156
+ * {@link LifecycleUnavailableReason}'s `old_bridge_parent`). The natural first
157
+ * emit site is the injected connector's legacy-`injectedId` / framed gates on
158
+ * the secondary Solana gather, which today report only through their own
159
+ * dedicated `secondarySolanaConnectSkipped` sink — so a suppressed leg is
160
+ * currently ABSENT from the step timeline rather than present-and-skipped.
161
+ */
162
+ | 'skipped'
163
+
164
+ /**
165
+ * Payload for the injected connector's step sink. Routing facets only — the
166
+ * same non-PII contract as the handoff events (no address, no payload). Core
167
+ * stamps `handoffId` on the way out so a step joins its own attempt's terminal.
168
+ */
169
+ export interface WalletStepInfo {
170
+ step: WalletStepName
171
+ outcome: WalletStepOutcome
172
+ /** Wall-clock ms for this step alone. */
173
+ durationMs: number
174
+ /** The namespace the step acted on — the gather leg for `secondaryGather`. */
175
+ namespace?: Namespace | undefined
176
+ /** The deadline that elapsed; set only when `outcome` is `timedOut`. */
177
+ timeoutMs?: number | undefined
178
+ }
@@ -0,0 +1,53 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { toEvmValueBigInt } from './transactions'
3
+
4
+ describe('toEvmValueBigInt', () => {
5
+ const oneEth = 1000000000000000000n
6
+
7
+ it('returns 0n for undefined or null', () => {
8
+ expect(toEvmValueBigInt(undefined)).toBe(0n)
9
+ expect(toEvmValueBigInt(null as unknown as undefined)).toBe(0n)
10
+ })
11
+
12
+ it('passes a bigint through unchanged', () => {
13
+ expect(toEvmValueBigInt(oneEth)).toBe(oneEth)
14
+ })
15
+
16
+ it.each([
17
+ ['decimal string', '1000000000000000000'],
18
+ ['hex string', '0xde0b6b3a7640000'],
19
+ ['whitespace-padded', ' 1000000000000000000 ']
20
+ ])('parses %s to the same bigint', (_l, value) => {
21
+ expect(toEvmValueBigInt(value)).toBe(oneEth)
22
+ })
23
+
24
+ it.each(['', ' '])('throws on empty/whitespace value %j', value => {
25
+ expect(() => toEvmValueBigInt(value)).toThrow(
26
+ 'Invalid EVM value: empty string'
27
+ )
28
+ })
29
+
30
+ it.each(['abc', '1.5', '1e18', '0x'])(
31
+ 'throws with context on malformed value %j',
32
+ value => {
33
+ expect(() => toEvmValueBigInt(value)).toThrow(/Invalid EVM value/)
34
+ }
35
+ )
36
+
37
+ it.each(['-1', '0b1010', '0o17'])(
38
+ 'rejects negative and binary/octal value %j',
39
+ value => {
40
+ expect(() => toEvmValueBigInt(value)).toThrow(/Invalid EVM value/)
41
+ }
42
+ )
43
+
44
+ it('rejects a negative bigint', () => {
45
+ expect(() => toEvmValueBigInt(-1n)).toThrow(/Invalid EVM value/)
46
+ })
47
+
48
+ it('rejects a non-string/non-bigint value with a clear error', () => {
49
+ expect(() => toEvmValueBigInt(100 as unknown as string)).toThrow(
50
+ /expected bigint or string, got number/
51
+ )
52
+ })
53
+ })
@@ -44,7 +44,12 @@ export interface EVMContractCallRequest {
44
44
  functionName: string
45
45
  args: unknown[]
46
46
  from: string
47
- value?: bigint // For payable functions (in wei)
47
+ /**
48
+ * Native currency to attach to a payable call, in wei (unsigned). A bigint, or a
49
+ * decimal or `0x`-hex string — `1000000000000000000n`, `'1000000000000000000'`,
50
+ * and `'0xde0b6b3a7640000'` are all 1 ETH. Omitted → 0.
51
+ */
52
+ value?: bigint | string
48
53
  gasConfig?: EVMGasConfig
49
54
  }
50
55
 
@@ -55,7 +60,12 @@ export interface EVMDataTransferRequest {
55
60
  from: string
56
61
  to: string
57
62
  data: string
58
- value?: bigint // For payable functions (in wei)
63
+ /**
64
+ * Native currency to attach to the call, in wei (unsigned). A bigint, or a
65
+ * decimal or `0x`-hex string — `1000000000000000000n`, `'1000000000000000000'`,
66
+ * and `'0xde0b6b3a7640000'` are all 1 ETH. Omitted → 0.
67
+ */
68
+ value?: bigint | string
59
69
  chainId: string
60
70
  gasConfig?: EVMGasConfig
61
71
  }
@@ -222,6 +232,56 @@ export type TronTransactionRequest =
222
232
  | TronTRC20TransferRequest
223
233
  | TronContractCallRequest
224
234
 
235
+ /**
236
+ * Bitcoin (bip122) Transaction Types
237
+ */
238
+
239
+ /** SIGHASH flag for a PSBT input (Wallet Standard bitcoin values). */
240
+ export type BitcoinSigHash =
241
+ | 'ALL'
242
+ | 'NONE'
243
+ | 'SINGLE'
244
+ | 'ALL|ANYONECANPAY'
245
+ | 'NONE|ANYONECANPAY'
246
+ | 'SINGLE|ANYONECANPAY'
247
+
248
+ /** Which inputs of a PSBT a given address should sign. */
249
+ export interface BitcoinPsbtInputToSign {
250
+ address: string
251
+ signingIndexes: number[]
252
+ sigHash?: BitcoinSigHash
253
+ }
254
+
255
+ /**
256
+ * Path B — sign a backend-constructed PSBT (Wallet Standard `signTransaction`).
257
+ * The wallet signs the requested inputs and returns the signed PSBT; the
258
+ * connector finalizes and broadcasts (to mempool.space). Not a wallet broadcast.
259
+ */
260
+ export interface BitcoinPsbtSignRequest {
261
+ from: string
262
+ /** Base64-encoded PSBT (BIP-174). */
263
+ psbt: string
264
+ /** Inputs to sign; when omitted the wallet signs all it can. */
265
+ inputsToSign?: BitcoinPsbtInputToSign[]
266
+ }
267
+
268
+ /**
269
+ * Path A — high-level transfer (Trust Wallet WalletConnect `sendTransfer`). The
270
+ * wallet does coin selection, fee estimation, signing, and broadcast.
271
+ */
272
+ export interface BitcoinSendTransferRequest {
273
+ from: string
274
+ to: string
275
+ // amount in satoshis. `bigint` avoids float-precision loss; sats are
276
+ // serialized to a JSON number over WalletConnect, so values must stay within
277
+ // the safe-integer range (BTC's 2.1e15-sat cap does).
278
+ amount: number | bigint
279
+ }
280
+
281
+ export type BitcoinTransactionRequest =
282
+ | BitcoinPsbtSignRequest
283
+ | BitcoinSendTransferRequest
284
+
225
285
  /**
226
286
  * Common Transaction Types
227
287
  */
@@ -299,6 +359,7 @@ export type TransactionRequest =
299
359
  | SolanaTransactionRequest
300
360
  | TronTransactionRequest
301
361
  | TonNativeTransferRequest
362
+ | BitcoinTransactionRequest
302
363
 
303
364
  export type EthereumTransactionRequest =
304
365
  | EVMNativeTransferRequest
@@ -310,3 +371,40 @@ export type SolanaTransactionRequest =
310
371
  | SolanaNativeTransferRequest
311
372
  | SolanaTokenTransferRequest
312
373
  | SolanaGenericTransferRequest
374
+
375
+ /**
376
+ * Normalize an EVM `value` (in wei) to a bigint for viem.
377
+ *
378
+ * Accepts a bigint or a decimal / `0x`-hex string. Missing/nullish → 0n. Anything
379
+ * else throws with context rather than silently coercing to 0 on a money path:
380
+ * empty/whitespace, non-numeric, binary/octal (`0b`/`0o`), negative, or a
381
+ * non-string/non-bigint value (e.g. a number arriving from untyped JSON).
382
+ */
383
+ export function toEvmValueBigInt(value?: bigint | string | null): bigint {
384
+ if (value == null) return 0n
385
+ if (typeof value === 'bigint') {
386
+ if (value < 0n) throw new Error(`Invalid EVM value: "${value}"`)
387
+ return value
388
+ }
389
+ if (typeof value !== 'string') {
390
+ throw new Error(
391
+ `Invalid EVM value: expected bigint or string, got ${typeof value}`
392
+ )
393
+ }
394
+ const trimmed = value.trim()
395
+ if (trimmed === '') {
396
+ throw new Error('Invalid EVM value: empty string')
397
+ }
398
+ // BigInt() accepts 0b/0o prefixes; reject so only decimal and 0x-hex wei parse.
399
+ if (/^[+-]?0[bo]/i.test(trimmed)) {
400
+ throw new Error(`Invalid EVM value: "${value}"`)
401
+ }
402
+ let result: bigint
403
+ try {
404
+ result = BigInt(trimmed)
405
+ } catch {
406
+ throw new Error(`Invalid EVM value: "${value}"`)
407
+ }
408
+ if (result < 0n) throw new Error(`Invalid EVM value: "${value}"`)
409
+ return result
410
+ }