use alloc::vec::Vec;
use miden_protocol::account::auth::{AuthScheme, PublicKeyCommitment};
use miden_protocol::errors::AccountError;
use crate::account::auth::{
Approver,
ApproverSet,
AuthGuardedMultisig,
AuthGuardedMultisigConfig,
AuthMultisig,
AuthMultisigConfig,
GuardianConfig,
};
pub fn user_faucet_multisig(
approvers: Vec<(PublicKeyCommitment, AuthScheme)>,
default_threshold: u32,
) -> Result<AuthMultisig, AccountError> {
let approvers = approvers
.iter()
.map(|(pub_key, auth_scheme)| Approver::new(*pub_key, *auth_scheme))
.collect();
let approver_set = ApproverSet::new(approvers, default_threshold)?;
let config = AuthMultisigConfig::new(approver_set);
AuthMultisig::new(config)
}
pub fn user_faucet_guarded(
approvers: Vec<(PublicKeyCommitment, AuthScheme)>,
default_threshold: u32,
guardian: GuardianConfig,
) -> Result<AuthGuardedMultisig, AccountError> {
let approvers = approvers
.iter()
.map(|(pub_key, auth_scheme)| Approver::new(*pub_key, *auth_scheme))
.collect();
let approver_set = ApproverSet::new(approvers, default_threshold)?;
let config = AuthGuardedMultisigConfig::new(approver_set, guardian)?;
AuthGuardedMultisig::new(config)
}