Skip to content

Commit 50c8d6a

Browse files
committed
Expose NostrSigner
1 parent 3fa311a commit 50c8d6a

17 files changed

+2313
-110
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
* Expose `ConnectionMode` ([Yuki Kishimoto])
3939
* Expose `ClientOptions` ([Yuki Kishimoto])
4040
* Expose `ClientBuilder` ([Yuki Kishimoto])
41+
* Expose `NostrSigner` ([Yuki Kishimoto])
4142

4243
### Fixed
4344

lib/nostr_sdk.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export 'src/rust/api/protocol/event/tag.dart';
77
export 'src/rust/api/protocol/key.dart';
88
export 'src/rust/api/protocol/key/public_key.dart';
99
export 'src/rust/api/protocol/key/secret_key.dart';
10+
export 'src/rust/api/protocol/signer.dart';
1011
export 'src/rust/api/relay/options.dart';
1112
export 'src/rust/api/client.dart';
1213
export 'src/rust/api/client/options.dart';

lib/src/rust/api/client/builder.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import '../../frb_generated.dart';
77
import '../client.dart';
8+
import '../protocol/signer.dart';
89
import 'options.dart';
910
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
1011

@@ -21,4 +22,7 @@ abstract class ClientBuilder implements RustOpaqueInterface {
2122

2223
/// Set opts
2324
ClientBuilder opts({required ClientOptions opts});
25+
26+
/// Set signer
27+
ClientBuilder signer({required NostrSigner signer});
2428
}

lib/src/rust/api/protocol/key/public_key.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import '../../../frb_generated.dart';
77
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
88

9-
// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `from`
9+
// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `deref`, `from`
1010
// These functions have error during generation (see debug logs or enable `stop_on_error: true` for more details): `to_bytes`
1111

1212
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<_PublicKey>>
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
// This file is automatically generated, so please do not edit it.
2+
// Generated by `flutter_rust_bridge`@ 2.0.0.
3+
4+
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
5+
6+
import '../../frb_generated.dart';
7+
import 'key.dart';
8+
import 'key/public_key.dart';
9+
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
10+
import 'package:freezed_annotation/freezed_annotation.dart' hide protected;
11+
part 'signer.freezed.dart';
12+
13+
// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `deref`, `from`, `from`, `from`
14+
15+
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<_NostrSigner>>
16+
abstract class NostrSigner implements RustOpaqueInterface {
17+
/// Get backend
18+
SignerBackend backend();
19+
20+
/// Get public key
21+
Future<PublicKey> getPublicKey();
22+
23+
/// Keys signer
24+
static NostrSigner keys({required Keys keys}) =>
25+
NostrSdk.instance.api.crateApiProtocolSignerNostrSignerKeys(keys: keys);
26+
27+
/// Decrypt
28+
Future<String> nip04Decrypt(
29+
{required PublicKey publicKey, required String encryptedContent});
30+
31+
/// Encrypt
32+
Future<String> nip04Encrypt(
33+
{required PublicKey publicKey, required String content});
34+
35+
/// Decrypt
36+
Future<String> nip44Decrypt(
37+
{required PublicKey publicKey, required String payload});
38+
39+
/// Encrypt
40+
Future<String> nip44Encrypt(
41+
{required PublicKey publicKey, required String content});
42+
}
43+
44+
@freezed
45+
sealed class SignerBackend with _$SignerBackend {
46+
const SignerBackend._();
47+
48+
/// Secret key
49+
const factory SignerBackend.keys() = SignerBackend_Keys;
50+
51+
/// Browser extension (NIP07)
52+
///
53+
/// <https://github.com/nostr-protocol/nips/blob/master/07.md>
54+
const factory SignerBackend.browserExtension() =
55+
SignerBackend_BrowserExtension;
56+
57+
/// Nostr Connect (NIP46)
58+
///
59+
/// <https://github.com/nostr-protocol/nips/blob/master/46.md>
60+
const factory SignerBackend.nostrConnect() = SignerBackend_NostrConnect;
61+
62+
/// Custom
63+
const factory SignerBackend.custom(
64+
String field0,
65+
) = SignerBackend_Custom;
66+
}

0 commit comments

Comments
 (0)