Skip to content

Commit dfb2855

Browse files
refactor: migrate policy-related types to procedural macros
1 parent 23d14f0 commit dfb2855

File tree

3 files changed

+7
-40
lines changed

3 files changed

+7
-40
lines changed

bdk-ffi/src/bdk.udl

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -312,33 +312,9 @@ interface ChangeSet {};
312312
// bdk_wallet crate - wallet module
313313
// ------------------------------------------------------------------------
314314

315-
interface Policy {
316-
string id();
317-
318-
string as_string();
319-
320-
boolean requires_path();
321-
322-
SatisfiableItem item();
323-
324-
Satisfaction satisfaction();
325-
326-
Satisfaction contribution();
327-
};
315+
typedef interface Policy;
328316

329-
[Enum]
330-
interface SatisfiableItem {
331-
EcdsaSignature(PkOrF key);
332-
SchnorrSignature(PkOrF key);
333-
Sha256Preimage(string hash);
334-
Hash256Preimage(string hash);
335-
Ripemd160Preimage(string hash);
336-
Hash160Preimage(string hash);
337-
AbsoluteTimelock(LockTime value);
338-
RelativeTimelock(u32 value);
339-
Multisig(sequence<PkOrF> keys, u64 threshold);
340-
Thresh(sequence<Policy> items, u64 threshold);
341-
};
317+
typedef enum SatisfiableItem;
342318

343319
[Enum]
344320
interface PkOrF {
@@ -353,13 +329,7 @@ interface LockTime {
353329
Seconds(u32 consensus_time);
354330
};
355331

356-
[Enum]
357-
interface Satisfaction {
358-
Partial(u64 n, u64 m, sequence<u64> items, boolean? sorted, record<u32, sequence<Condition>> conditions);
359-
PartialComplete(u64 n, u64 m, sequence<u64> items, boolean? sorted, record<sequence<u32>, sequence<Condition>> conditions);
360-
Complete(Condition condition);
361-
None(string msg);
362-
};
332+
typedef enum Satisfaction;
363333

364334
typedef record Condition;
365335

bdk-ffi/src/lib.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,11 @@ use crate::error::PsbtFinalizeError;
3232
use crate::error::PsbtParseError;
3333
use crate::error::RequestBuilderError;
3434
use crate::error::TransactionError;
35-
use crate::types::Condition;
3635
use crate::types::FullScanRequest;
3736
use crate::types::FullScanRequestBuilder;
3837
use crate::types::FullScanScriptInspector;
3938
use crate::types::LockTime;
4039
use crate::types::PkOrF;
41-
use crate::types::Policy;
42-
use crate::types::Satisfaction;
43-
use crate::types::SatisfiableItem;
4440
use crate::types::SyncRequest;
4541
use crate::types::SyncRequestBuilder;
4642
use crate::types::SyncScriptInspector;

bdk-ffi/src/types.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,13 @@ pub struct KeychainAndIndex {
335335
}
336336

337337
/// Descriptor spending policy
338-
#[derive(Debug, PartialEq, Eq, Clone)]
338+
#[derive(Debug, PartialEq, Eq, Clone, uniffi::Object)]
339339
pub struct Policy(BdkPolicy);
340340

341341
impl_from_core_type!(BdkPolicy, Policy);
342342
impl_into_core_type!(Policy, BdkPolicy);
343343

344+
#[uniffi::export]
344345
impl Policy {
345346
pub fn id(&self) -> String {
346347
self.0.id.clone()
@@ -367,7 +368,7 @@ impl Policy {
367368
}
368369
}
369370

370-
#[derive(Debug, Clone)]
371+
#[derive(Debug, Clone, uniffi::Enum)]
371372
pub enum SatisfiableItem {
372373
EcdsaSignature {
373374
key: PkOrF,
@@ -500,7 +501,7 @@ impl TryFrom<&LockTime> for BdkLockTime {
500501
}
501502
}
502503

503-
#[derive(Debug, Clone)]
504+
#[derive(Debug, Clone, uniffi::Enum)]
504505
pub enum Satisfaction {
505506
Partial {
506507
n: u64,

0 commit comments

Comments
 (0)