@reown/appkit-bitcoin-react-native 2.0.0-alpha.4 → 2.0.0-alpha.6

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.
@@ -7,7 +7,8 @@ exports.BitcoinAdapter = void 0;
7
7
  var _appkitCommonReactNative = require("@reown/appkit-common-react-native");
8
8
  var _BitcoinApi = require("./utils/BitcoinApi");
9
9
  var _UnitsUtil = require("./utils/UnitsUtil");
10
- class BitcoinAdapter extends _appkitCommonReactNative.BlockchainAdapter {
10
+ var _FormatUtil = require("./utils/FormatUtil");
11
+ class BitcoinAdapter extends _appkitCommonReactNative.BitcoinBaseAdapter {
11
12
  static supportedNamespace = 'bip122';
12
13
  static api = _BitcoinApi.BitcoinApi;
13
14
  constructor() {
@@ -79,6 +80,25 @@ class BitcoinAdapter extends _appkitCommonReactNative.BlockchainAdapter {
79
80
  getSupportedNamespace() {
80
81
  return BitcoinAdapter.supportedNamespace;
81
82
  }
83
+ async signMessage(address, message, chainId) {
84
+ if (!this.connector) throw new Error('BitcoinAdapter:signMessage - No active connector');
85
+ const provider = this.connector.getProvider('bip122');
86
+ if (!provider) throw new Error('BitcoinAdapter:signMessage - No active provider');
87
+ const chain = chainId ? `${this.getSupportedNamespace()}:${chainId}` : undefined;
88
+ const {
89
+ signature
90
+ } = await provider.request({
91
+ method: 'signMessage',
92
+ params: {
93
+ message,
94
+ account: address,
95
+ address,
96
+ protocol: 'ecdsa'
97
+ }
98
+ }, chain);
99
+ const formattedSignature = _FormatUtil.FormatUtil.normalizeSignature(signature);
100
+ return formattedSignature.base64;
101
+ }
82
102
  }
83
103
  exports.BitcoinAdapter = BitcoinAdapter;
84
104
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_appkitCommonReactNative","require","_BitcoinApi","_UnitsUtil","BitcoinAdapter","BlockchainAdapter","supportedNamespace","api","BitcoinApi","constructor","adapterType","getBalance","params","network","address","connector","Error","balanceCaipAddress","getAccounts","find","account","includes","id","toString","balanceAddress","split","Promise","resolve","amount","symbol","utxos","getUTXOs","balance","reduce","acc","utxo","value","formattedBalance","UnitsUtil","parseSatoshis","emit","nativeCurrency","error","switchNetwork","provider","getProvider","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect","exports"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_appkitCommonReactNative","require","_BitcoinApi","_UnitsUtil","_FormatUtil","BitcoinAdapter","BitcoinBaseAdapter","supportedNamespace","api","BitcoinApi","constructor","adapterType","getBalance","params","network","address","connector","Error","balanceCaipAddress","getAccounts","find","account","includes","id","toString","balanceAddress","split","Promise","resolve","amount","symbol","utxos","getUTXOs","balance","reduce","acc","utxo","value","formattedBalance","UnitsUtil","parseSatoshis","emit","nativeCurrency","error","switchNetwork","provider","getProvider","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect","signMessage","message","chainId","chain","undefined","signature","request","method","protocol","formattedSignature","FormatUtil","normalizeSignature","base64","exports"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FormatUtil = void 0;
7
+ const FormatUtil = exports.FormatUtil = {
8
+ normalizeSignature(signature) {
9
+ let raw;
10
+ try {
11
+ // Try hex first
12
+ raw = Buffer.from(signature, 'hex');
13
+ if (raw.length > 0 && /^[0-9a-fA-F]+$/.test(signature)) {
14
+ return {
15
+ hex: signature,
16
+ base64: raw.toString('base64')
17
+ };
18
+ }
19
+ } catch {
20
+ // ignore and try base64
21
+ }
22
+ try {
23
+ // Fallback: assume base64
24
+ raw = Buffer.from(signature, 'base64');
25
+ if (raw.length > 0) {
26
+ return {
27
+ hex: raw.toString('hex'),
28
+ base64: signature
29
+ };
30
+ }
31
+ } catch {
32
+ // ignore
33
+ }
34
+ throw new Error('Unsupported signature format: expected hex or base64');
35
+ }
36
+ };
37
+ //# sourceMappingURL=FormatUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FormatUtil","exports","normalizeSignature","signature","raw","Buffer","from","length","test","hex","base64","toString","Error"],"sourceRoot":"../../../src","sources":["utils/FormatUtil.ts"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG;EACxBE,kBAAkBA,CAACC,SAAiB,EAAmC;IACrE,IAAIC,GAAW;IAEf,IAAI;MACF;MACAA,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,KAAK,CAAC;MACnC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAACC,IAAI,CAACL,SAAS,CAAC,EAAE;QACtD,OAAO;UACLM,GAAG,EAAEN,SAAS;UACdO,MAAM,EAAEN,GAAG,CAACO,QAAQ,CAAC,QAAQ;QAC/B,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,IAAI;MACF;MACAP,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,QAAQ,CAAC;MACtC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO;UACLE,GAAG,EAAEL,GAAG,CAACO,QAAQ,CAAC,KAAK,CAAC;UACxBD,MAAM,EAAEP;QACV,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,MAAM,IAAIS,KAAK,CAAC,sDAAsD,CAAC;EACzE;AACF,CAAC","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import { BlockchainAdapter } from '@reown/appkit-common-react-native';
3
+ import { BitcoinBaseAdapter } from '@reown/appkit-common-react-native';
4
4
  import { BitcoinApi } from './utils/BitcoinApi';
5
5
  import { UnitsUtil } from './utils/UnitsUtil';
6
- export class BitcoinAdapter extends BlockchainAdapter {
6
+ import { FormatUtil } from './utils/FormatUtil';
7
+ export class BitcoinAdapter extends BitcoinBaseAdapter {
7
8
  static supportedNamespace = 'bip122';
8
9
  static api = BitcoinApi;
9
10
  constructor() {
@@ -75,5 +76,24 @@ export class BitcoinAdapter extends BlockchainAdapter {
75
76
  getSupportedNamespace() {
76
77
  return BitcoinAdapter.supportedNamespace;
77
78
  }
79
+ async signMessage(address, message, chainId) {
80
+ if (!this.connector) throw new Error('BitcoinAdapter:signMessage - No active connector');
81
+ const provider = this.connector.getProvider('bip122');
82
+ if (!provider) throw new Error('BitcoinAdapter:signMessage - No active provider');
83
+ const chain = chainId ? `${this.getSupportedNamespace()}:${chainId}` : undefined;
84
+ const {
85
+ signature
86
+ } = await provider.request({
87
+ method: 'signMessage',
88
+ params: {
89
+ message,
90
+ account: address,
91
+ address,
92
+ protocol: 'ecdsa'
93
+ }
94
+ }, chain);
95
+ const formattedSignature = FormatUtil.normalizeSignature(signature);
96
+ return formattedSignature.base64;
97
+ }
78
98
  }
79
99
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BlockchainAdapter","BitcoinApi","UnitsUtil","BitcoinAdapter","supportedNamespace","api","constructor","adapterType","getBalance","params","network","address","connector","Error","balanceCaipAddress","getAccounts","find","account","includes","id","toString","balanceAddress","split","Promise","resolve","amount","symbol","utxos","getUTXOs","balance","reduce","acc","utxo","value","formattedBalance","parseSatoshis","emit","nativeCurrency","error","switchNetwork","provider","getProvider","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BitcoinBaseAdapter","BitcoinApi","UnitsUtil","FormatUtil","BitcoinAdapter","supportedNamespace","api","constructor","adapterType","getBalance","params","network","address","connector","Error","balanceCaipAddress","getAccounts","find","account","includes","id","toString","balanceAddress","split","Promise","resolve","amount","symbol","utxos","getUTXOs","balance","reduce","acc","utxo","value","formattedBalance","parseSatoshis","emit","nativeCurrency","error","switchNetwork","provider","getProvider","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect","signMessage","message","chainId","chain","undefined","signature","request","method","protocol","formattedSignature","normalizeSignature","base64"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ export const FormatUtil = {
4
+ normalizeSignature(signature) {
5
+ let raw;
6
+ try {
7
+ // Try hex first
8
+ raw = Buffer.from(signature, 'hex');
9
+ if (raw.length > 0 && /^[0-9a-fA-F]+$/.test(signature)) {
10
+ return {
11
+ hex: signature,
12
+ base64: raw.toString('base64')
13
+ };
14
+ }
15
+ } catch {
16
+ // ignore and try base64
17
+ }
18
+ try {
19
+ // Fallback: assume base64
20
+ raw = Buffer.from(signature, 'base64');
21
+ if (raw.length > 0) {
22
+ return {
23
+ hex: raw.toString('hex'),
24
+ base64: signature
25
+ };
26
+ }
27
+ } catch {
28
+ // ignore
29
+ }
30
+ throw new Error('Unsupported signature format: expected hex or base64');
31
+ }
32
+ };
33
+ //# sourceMappingURL=FormatUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FormatUtil","normalizeSignature","signature","raw","Buffer","from","length","test","hex","base64","toString","Error"],"sourceRoot":"../../../src","sources":["utils/FormatUtil.ts"],"mappings":";;AAAA,OAAO,MAAMA,UAAU,GAAG;EACxBC,kBAAkBA,CAACC,SAAiB,EAAmC;IACrE,IAAIC,GAAW;IAEf,IAAI;MACF;MACAA,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,KAAK,CAAC;MACnC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAACC,IAAI,CAACL,SAAS,CAAC,EAAE;QACtD,OAAO;UACLM,GAAG,EAAEN,SAAS;UACdO,MAAM,EAAEN,GAAG,CAACO,QAAQ,CAAC,QAAQ;QAC/B,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,IAAI;MACF;MACAP,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,QAAQ,CAAC;MACtC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO;UACLE,GAAG,EAAEL,GAAG,CAACO,QAAQ,CAAC,KAAK,CAAC;UACxBD,MAAM,EAAEP;QACV,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,MAAM,IAAIS,KAAK,CAAC,sDAAsD,CAAC;EACzE;AACF,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { BlockchainAdapter, type AppKitNetwork, type CaipAddress, type ChainNamespace, type GetBalanceParams, type GetBalanceResponse } from '@reown/appkit-common-react-native';
2
- export declare class BitcoinAdapter extends BlockchainAdapter {
1
+ import { BitcoinBaseAdapter, type AppKitNetwork, type CaipAddress, type ChainNamespace, type GetBalanceParams, type GetBalanceResponse } from '@reown/appkit-common-react-native';
2
+ export declare class BitcoinAdapter extends BitcoinBaseAdapter {
3
3
  private static supportedNamespace;
4
4
  private static api;
5
5
  constructor();
@@ -8,5 +8,6 @@ export declare class BitcoinAdapter extends BlockchainAdapter {
8
8
  getAccounts(): CaipAddress[] | undefined;
9
9
  disconnect(): Promise<void>;
10
10
  getSupportedNamespace(): ChainNamespace;
11
+ signMessage(address: string, message: string, chainId?: string): Promise<string>;
11
12
  }
12
13
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAI3C,qBAAa,cAAe,SAAQ,iBAAiB;IACnD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA4B;IAC7D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAc;;IAS1B,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsCjE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,WAAW,IAAI,WAAW,EAAE,GAAG,SAAS;IAOxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,qBAAqB,IAAI,cAAc;CAGxC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAK3C,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA4B;IAC7D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAc;;IAS1B,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsCjE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,WAAW,IAAI,WAAW,EAAE,GAAG,SAAS;IAOxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,qBAAqB,IAAI,cAAc;IAIjC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBvF"}
@@ -0,0 +1,7 @@
1
+ export declare const FormatUtil: {
2
+ normalizeSignature(signature: string): {
3
+ hex: string;
4
+ base64: string;
5
+ };
6
+ };
7
+ //# sourceMappingURL=FormatUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormatUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/FormatUtil.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;kCACS,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CA+BvE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit-bitcoin-react-native",
3
- "version": "2.0.0-alpha.4",
3
+ "version": "2.0.0-alpha.6",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "types": "lib/typescript/index.d.ts",
6
6
  "module": "lib/module/index.js",
@@ -30,16 +30,17 @@
30
30
  "repository": "https://github.com/reown-com/appkit-react-native",
31
31
  "author": "Reown (https://discord.gg/reown)",
32
32
  "homepage": "https://reown.com/appkit",
33
- "license": "Apache-2.0",
33
+ "license": "SEE LICENSE IN LICENSE.md",
34
34
  "bugs": {
35
35
  "url": "https://github.com/reown-com/appkit-react-native/issues"
36
36
  },
37
37
  "publishConfig": {
38
38
  "registry": "https://registry.npmjs.org/",
39
- "access": "public"
39
+ "access": "public",
40
+ "provenance": true
40
41
  },
41
42
  "dependencies": {
42
- "@reown/appkit-common-react-native": "2.0.0-alpha.4"
43
+ "@reown/appkit-common-react-native": "2.0.0-alpha.6"
43
44
  },
44
45
  "peerDependencies": {
45
46
  "@walletconnect/react-native-compat": ">=2.16.1",
package/src/adapter.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import {
2
- BlockchainAdapter,
2
+ BitcoinBaseAdapter,
3
3
  type AppKitNetwork,
4
4
  type CaipAddress,
5
5
  type ChainNamespace,
@@ -8,8 +8,9 @@ import {
8
8
  } from '@reown/appkit-common-react-native';
9
9
  import { BitcoinApi } from './utils/BitcoinApi';
10
10
  import { UnitsUtil } from './utils/UnitsUtil';
11
+ import { FormatUtil } from './utils/FormatUtil';
11
12
 
12
- export class BitcoinAdapter extends BlockchainAdapter {
13
+ export class BitcoinAdapter extends BitcoinBaseAdapter {
13
14
  private static supportedNamespace: ChainNamespace = 'bip122';
14
15
  private static api = BitcoinApi;
15
16
 
@@ -89,4 +90,25 @@ export class BitcoinAdapter extends BlockchainAdapter {
89
90
  getSupportedNamespace(): ChainNamespace {
90
91
  return BitcoinAdapter.supportedNamespace;
91
92
  }
93
+
94
+ async signMessage(address: string, message: string, chainId?: string): Promise<string> {
95
+ if (!this.connector) throw new Error('BitcoinAdapter:signMessage - No active connector');
96
+
97
+ const provider = this.connector.getProvider('bip122');
98
+ if (!provider) throw new Error('BitcoinAdapter:signMessage - No active provider');
99
+
100
+ const chain = chainId ? `${this.getSupportedNamespace()}:${chainId}` : undefined;
101
+
102
+ const { signature } = (await provider.request(
103
+ {
104
+ method: 'signMessage',
105
+ params: { message, account: address, address, protocol: 'ecdsa' }
106
+ },
107
+ chain
108
+ )) as { address: string; signature: string };
109
+
110
+ const formattedSignature = FormatUtil.normalizeSignature(signature);
111
+
112
+ return formattedSignature.base64;
113
+ }
92
114
  }
@@ -0,0 +1,33 @@
1
+ export const FormatUtil = {
2
+ normalizeSignature(signature: string): { hex: string; base64: string } {
3
+ let raw: Buffer;
4
+
5
+ try {
6
+ // Try hex first
7
+ raw = Buffer.from(signature, 'hex');
8
+ if (raw.length > 0 && /^[0-9a-fA-F]+$/.test(signature)) {
9
+ return {
10
+ hex: signature,
11
+ base64: raw.toString('base64')
12
+ };
13
+ }
14
+ } catch {
15
+ // ignore and try base64
16
+ }
17
+
18
+ try {
19
+ // Fallback: assume base64
20
+ raw = Buffer.from(signature, 'base64');
21
+ if (raw.length > 0) {
22
+ return {
23
+ hex: raw.toString('hex'),
24
+ base64: signature
25
+ };
26
+ }
27
+ } catch {
28
+ // ignore
29
+ }
30
+
31
+ throw new Error('Unsupported signature format: expected hex or base64');
32
+ }
33
+ };