mirror of
https://github.com/mimblewimble/grin.git
synced 2025-01-21 03:21:08 +03:00
Move slate code from core/libtx to wallet/libwallet (#2533)
* move slate from core to wallet crate * rustfmt
This commit is contained in:
parent
4eba13a207
commit
e69ce5ad82
20 changed files with 54 additions and 77 deletions
|
@ -16,7 +16,7 @@
|
||||||
use failure::{Backtrace, Context, Fail};
|
use failure::{Backtrace, Context, Fail};
|
||||||
use std::fmt::{self, Display};
|
use std::fmt::{self, Display};
|
||||||
|
|
||||||
use crate::core::{committed, transaction};
|
use crate::core::transaction;
|
||||||
use crate::keychain;
|
use crate::keychain;
|
||||||
use crate::util::secp;
|
use crate::util::secp;
|
||||||
|
|
||||||
|
@ -44,12 +44,6 @@ pub enum ErrorKind {
|
||||||
/// Rangeproof error
|
/// Rangeproof error
|
||||||
#[fail(display = "Rangeproof Error")]
|
#[fail(display = "Rangeproof Error")]
|
||||||
RangeProof(String),
|
RangeProof(String),
|
||||||
/// Fee error
|
|
||||||
#[fail(display = "Fee Error")]
|
|
||||||
Fee(String),
|
|
||||||
/// Error from summing commitments via committed trait.
|
|
||||||
#[fail(display = "Committed Error")]
|
|
||||||
Committed(committed::Error),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Fail for Error {
|
impl Fail for Error {
|
||||||
|
@ -97,14 +91,6 @@ impl From<secp::Error> for Error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<committed::Error> for Error {
|
|
||||||
fn from(error: committed::Error) -> Error {
|
|
||||||
Error {
|
|
||||||
inner: Context::new(ErrorKind::Committed(error)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<keychain::Error> for Error {
|
impl From<keychain::Error> for Error {
|
||||||
fn from(error: keychain::Error) -> Error {
|
fn from(error: keychain::Error) -> Error {
|
||||||
Error {
|
Error {
|
||||||
|
|
|
@ -27,7 +27,6 @@ mod error;
|
||||||
pub mod proof;
|
pub mod proof;
|
||||||
pub mod reward;
|
pub mod reward;
|
||||||
pub mod secp_ser;
|
pub mod secp_ser;
|
||||||
pub mod slate;
|
|
||||||
|
|
||||||
use crate::consensus;
|
use crate::consensus;
|
||||||
use crate::core::Transaction;
|
use crate::core::Transaction;
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
|
|
||||||
use crate::core::libtx::slate::Slate;
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::{Error, ErrorKind};
|
use crate::libwallet::{Error, ErrorKind};
|
||||||
use crate::{WalletCommAdapter, WalletConfig};
|
use crate::{WalletCommAdapter, WalletConfig};
|
||||||
use serde_json as json;
|
use serde_json as json;
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
use crate::api;
|
use crate::api;
|
||||||
use crate::controller;
|
use crate::controller;
|
||||||
use crate::core::libtx::slate::Slate;
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::{Error, ErrorKind};
|
use crate::libwallet::{Error, ErrorKind};
|
||||||
use crate::{instantiate_wallet, HTTPNodeClient, WalletCommAdapter, WalletConfig};
|
use crate::{instantiate_wallet, HTTPNodeClient, WalletCommAdapter, WalletConfig};
|
||||||
/// HTTP Wallet 'plugin' implementation
|
/// HTTP Wallet 'plugin' implementation
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
// Keybase Wallet Plugin
|
// Keybase Wallet Plugin
|
||||||
|
|
||||||
use crate::controller;
|
use crate::controller;
|
||||||
use crate::core::libtx::slate::Slate;
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::{Error, ErrorKind};
|
use crate::libwallet::{Error, ErrorKind};
|
||||||
use crate::{instantiate_wallet, HTTPNodeClient, WalletCommAdapter, WalletConfig};
|
use crate::{instantiate_wallet, HTTPNodeClient, WalletCommAdapter, WalletConfig};
|
||||||
use failure::ResultExt;
|
use failure::ResultExt;
|
||||||
|
|
|
@ -22,7 +22,7 @@ pub use self::http::HTTPWalletCommAdapter;
|
||||||
pub use self::keybase::KeybaseWalletCommAdapter;
|
pub use self::keybase::KeybaseWalletCommAdapter;
|
||||||
pub use self::null::NullWalletCommAdapter;
|
pub use self::null::NullWalletCommAdapter;
|
||||||
|
|
||||||
use crate::core::libtx::slate::Slate;
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::Error;
|
use crate::libwallet::Error;
|
||||||
use crate::WalletConfig;
|
use crate::WalletConfig;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
/// Null Output 'plugin' implementation
|
/// Null Output 'plugin' implementation
|
||||||
use crate::core::libtx::slate::Slate;
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::Error;
|
use crate::libwallet::Error;
|
||||||
use crate::{WalletCommAdapter, WalletConfig};
|
use crate::{WalletCommAdapter, WalletConfig};
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,9 @@ use crate::adapters::{FileWalletCommAdapter, HTTPWalletCommAdapter, KeybaseWalle
|
||||||
use crate::api::{ApiServer, BasicAuthMiddleware, Handler, ResponseFuture, Router, TLSConfig};
|
use crate::api::{ApiServer, BasicAuthMiddleware, Handler, ResponseFuture, Router, TLSConfig};
|
||||||
use crate::core::core;
|
use crate::core::core;
|
||||||
use crate::core::core::Transaction;
|
use crate::core::core::Transaction;
|
||||||
use crate::core::libtx::slate::Slate;
|
|
||||||
use crate::keychain::Keychain;
|
use crate::keychain::Keychain;
|
||||||
use crate::libwallet::api::{APIForeign, APIOwner};
|
use crate::libwallet::api::{APIForeign, APIOwner};
|
||||||
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::types::{
|
use crate::libwallet::types::{
|
||||||
CbData, NodeClient, OutputData, SendTXArgs, TxLogEntry, WalletBackend, WalletInfo,
|
CbData, NodeClient, OutputData, SendTXArgs, TxLogEntry, WalletBackend, WalletInfo,
|
||||||
};
|
};
|
||||||
|
@ -344,8 +344,7 @@ where
|
||||||
match e.kind() {
|
match e.kind() {
|
||||||
// user errors, don't backtrace
|
// user errors, don't backtrace
|
||||||
ErrorKind::NotEnoughFunds { .. } => {}
|
ErrorKind::NotEnoughFunds { .. } => {}
|
||||||
ErrorKind::FeeDispute { .. } => {}
|
ErrorKind::Fee { .. } => {}
|
||||||
ErrorKind::FeeExceedsAmount { .. } => {}
|
|
||||||
_ => {
|
_ => {
|
||||||
// otherwise give full dump
|
// otherwise give full dump
|
||||||
error!("Backtrace: {}", e.backtrace().unwrap());
|
error!("Backtrace: {}", e.backtrace().unwrap());
|
||||||
|
|
|
@ -46,6 +46,7 @@ pub use crate::adapters::{
|
||||||
WalletCommAdapter,
|
WalletCommAdapter,
|
||||||
};
|
};
|
||||||
pub use crate::error::{Error, ErrorKind};
|
pub use crate::error::{Error, ErrorKind};
|
||||||
|
pub use crate::libwallet::slate::Slate;
|
||||||
pub use crate::libwallet::types::{
|
pub use crate::libwallet::types::{
|
||||||
BlockFees, CbData, NodeClient, WalletBackend, WalletInfo, WalletInst,
|
BlockFees, CbData, NodeClient, WalletBackend, WalletInfo, WalletInst,
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,10 +36,10 @@ use uuid::Uuid;
|
||||||
|
|
||||||
use crate::core::core::hash::Hashed;
|
use crate::core::core::hash::Hashed;
|
||||||
use crate::core::core::Transaction;
|
use crate::core::core::Transaction;
|
||||||
use crate::core::libtx::slate::Slate;
|
|
||||||
use crate::core::ser;
|
use crate::core::ser;
|
||||||
use crate::keychain::{Identifier, Keychain};
|
use crate::keychain::{Identifier, Keychain};
|
||||||
use crate::libwallet::internal::{keys, tx, updater};
|
use crate::libwallet::internal::{keys, tx, updater};
|
||||||
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::types::{
|
use crate::libwallet::types::{
|
||||||
AcctPathMapping, BlockFees, CbData, NodeClient, OutputData, OutputLockFn, TxLogEntry,
|
AcctPathMapping, BlockFees, CbData, NodeClient, OutputData, OutputLockFn, TxLogEntry,
|
||||||
TxLogEntryType, TxWrapper, WalletBackend, WalletInfo,
|
TxLogEntryType, TxWrapper, WalletBackend, WalletInfo,
|
||||||
|
|
|
@ -14,9 +14,10 @@
|
||||||
|
|
||||||
//! Error types for libwallet
|
//! Error types for libwallet
|
||||||
|
|
||||||
use crate::core::core::transaction;
|
use crate::core::core::{committed, transaction};
|
||||||
use crate::core::libtx;
|
use crate::core::libtx;
|
||||||
use crate::keychain;
|
use crate::keychain;
|
||||||
|
use crate::util::secp;
|
||||||
use failure::{Backtrace, Context, Fail};
|
use failure::{Backtrace, Context, Fail};
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fmt::{self, Display};
|
use std::fmt::{self, Display};
|
||||||
|
@ -47,37 +48,9 @@ pub enum ErrorKind {
|
||||||
needed_disp: String,
|
needed_disp: String,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Fee dispute
|
/// Fee error
|
||||||
#[fail(
|
#[fail(display = "Fee Error: {}", _0)]
|
||||||
display = "Fee dispute: sender fee {}, recipient fee {}",
|
Fee(String),
|
||||||
sender_fee_disp, recipient_fee_disp
|
|
||||||
)]
|
|
||||||
FeeDispute {
|
|
||||||
/// sender fee
|
|
||||||
sender_fee: u64,
|
|
||||||
/// display friendly
|
|
||||||
sender_fee_disp: String,
|
|
||||||
/// recipient fee
|
|
||||||
recipient_fee: u64,
|
|
||||||
/// display friendly
|
|
||||||
recipient_fee_disp: String,
|
|
||||||
},
|
|
||||||
|
|
||||||
/// Fee Exceeds amount
|
|
||||||
#[fail(
|
|
||||||
display = "Fee exceeds amount: sender amount {}, recipient fee {}",
|
|
||||||
sender_amount_disp, recipient_fee
|
|
||||||
)]
|
|
||||||
FeeExceedsAmount {
|
|
||||||
/// sender amount
|
|
||||||
sender_amount: u64,
|
|
||||||
/// display friendly
|
|
||||||
sender_amount_disp: String,
|
|
||||||
/// recipient fee
|
|
||||||
recipient_fee: u64,
|
|
||||||
/// display friendly
|
|
||||||
recipient_fee_disp: String,
|
|
||||||
},
|
|
||||||
|
|
||||||
/// LibTX Error
|
/// LibTX Error
|
||||||
#[fail(display = "LibTx Error")]
|
#[fail(display = "LibTx Error")]
|
||||||
|
@ -97,7 +70,7 @@ pub enum ErrorKind {
|
||||||
|
|
||||||
/// Secp Error
|
/// Secp Error
|
||||||
#[fail(display = "Secp error")]
|
#[fail(display = "Secp error")]
|
||||||
Secp,
|
Secp(secp::Error),
|
||||||
|
|
||||||
/// Callback implementation error conversion
|
/// Callback implementation error conversion
|
||||||
#[fail(display = "Trait Implementation error")]
|
#[fail(display = "Trait Implementation error")]
|
||||||
|
@ -140,8 +113,8 @@ pub enum ErrorKind {
|
||||||
Uri,
|
Uri,
|
||||||
|
|
||||||
/// Signature error
|
/// Signature error
|
||||||
#[fail(display = "Signature error")]
|
#[fail(display = "Signature error: {}", _0)]
|
||||||
Signature(&'static str),
|
Signature(String),
|
||||||
|
|
||||||
/// Attempt to use duplicate transaction id in separate transactions
|
/// Attempt to use duplicate transaction id in separate transactions
|
||||||
#[fail(display = "Duplicate transaction ID error")]
|
#[fail(display = "Duplicate transaction ID error")]
|
||||||
|
@ -199,6 +172,10 @@ pub enum ErrorKind {
|
||||||
#[fail(display = "Unknown Account Label '{}'", _0)]
|
#[fail(display = "Unknown Account Label '{}'", _0)]
|
||||||
UnknownAccountLabel(String),
|
UnknownAccountLabel(String),
|
||||||
|
|
||||||
|
/// Error from summing commitments via committed trait.
|
||||||
|
#[fail(display = "Committed Error")]
|
||||||
|
Committed(committed::Error),
|
||||||
|
|
||||||
/// Other
|
/// Other
|
||||||
#[fail(display = "Generic error: {}", _0)]
|
#[fail(display = "Generic error: {}", _0)]
|
||||||
GenericError(String),
|
GenericError(String),
|
||||||
|
@ -305,3 +282,19 @@ impl From<crate::core::ser::Error> for Error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<secp::Error> for Error {
|
||||||
|
fn from(error: secp::Error) -> Error {
|
||||||
|
Error {
|
||||||
|
inner: Context::new(ErrorKind::Secp(error)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<committed::Error> for Error {
|
||||||
|
fn from(error: committed::Error) -> Error {
|
||||||
|
Error {
|
||||||
|
inner: Context::new(ErrorKind::Committed(error)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -15,10 +15,11 @@
|
||||||
//! Selection of inputs for building transactions
|
//! Selection of inputs for building transactions
|
||||||
|
|
||||||
use crate::core::core::{amount_to_hr_string, Transaction};
|
use crate::core::core::{amount_to_hr_string, Transaction};
|
||||||
use crate::core::libtx::{build, slate::Slate, tx_fee};
|
use crate::core::libtx::{build, tx_fee};
|
||||||
use crate::keychain::{Identifier, Keychain};
|
use crate::keychain::{Identifier, Keychain};
|
||||||
use crate::libwallet::error::{Error, ErrorKind};
|
use crate::libwallet::error::{Error, ErrorKind};
|
||||||
use crate::libwallet::internal::keys;
|
use crate::libwallet::internal::keys;
|
||||||
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::types::*;
|
use crate::libwallet::types::*;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
|
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::core::libtx::slate::Slate;
|
|
||||||
use crate::keychain::{Identifier, Keychain};
|
use crate::keychain::{Identifier, Keychain};
|
||||||
use crate::libwallet::internal::{selection, updater};
|
use crate::libwallet::internal::{selection, updater};
|
||||||
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::types::{Context, NodeClient, OutputLockFn, TxLogEntryType, WalletBackend};
|
use crate::libwallet::types::{Context, NodeClient, OutputLockFn, TxLogEntryType, WalletBackend};
|
||||||
use crate::libwallet::{Error, ErrorKind};
|
use crate::libwallet::{Error, ErrorKind};
|
||||||
|
|
||||||
|
@ -149,10 +149,7 @@ where
|
||||||
participant_id,
|
participant_id,
|
||||||
)?;
|
)?;
|
||||||
// Final transaction can be built by anyone at this stage
|
// Final transaction can be built by anyone at this stage
|
||||||
let res = slate.finalize(wallet.keychain());
|
slate.finalize(wallet.keychain())?;
|
||||||
if let Err(e) = res {
|
|
||||||
Err(ErrorKind::LibTX(e.kind()))?
|
|
||||||
}
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
pub mod api;
|
pub mod api;
|
||||||
mod error;
|
mod error;
|
||||||
pub mod internal;
|
pub mod internal;
|
||||||
|
pub mod slate;
|
||||||
pub mod types;
|
pub mod types;
|
||||||
|
|
||||||
pub use crate::libwallet::error::{Error, ErrorKind};
|
pub use crate::libwallet::error::{Error, ErrorKind};
|
||||||
|
|
|
@ -16,17 +16,17 @@
|
||||||
//! around during an interactive wallet exchange
|
//! around during an interactive wallet exchange
|
||||||
|
|
||||||
use crate::blake2::blake2b::blake2b;
|
use crate::blake2::blake2b::blake2b;
|
||||||
use crate::core::amount_to_hr_string;
|
|
||||||
use crate::core::committed::Committed;
|
|
||||||
use crate::core::transaction::{kernel_features, kernel_sig_msg, Transaction, Weighting};
|
|
||||||
use crate::core::verifier_cache::LruVerifierCache;
|
|
||||||
use crate::keychain::{BlindSum, BlindingFactor, Keychain};
|
use crate::keychain::{BlindSum, BlindingFactor, Keychain};
|
||||||
use crate::libtx::error::{Error, ErrorKind};
|
use crate::libwallet::error::{Error, ErrorKind};
|
||||||
use crate::libtx::{aggsig, build, secp_ser, tx_fee};
|
|
||||||
use crate::util::secp;
|
use crate::util::secp;
|
||||||
use crate::util::secp::key::{PublicKey, SecretKey};
|
use crate::util::secp::key::{PublicKey, SecretKey};
|
||||||
use crate::util::secp::Signature;
|
use crate::util::secp::Signature;
|
||||||
use crate::util::RwLock;
|
use crate::util::RwLock;
|
||||||
|
use grin_core::core::amount_to_hr_string;
|
||||||
|
use grin_core::core::committed::Committed;
|
||||||
|
use grin_core::core::transaction::{kernel_features, kernel_sig_msg, Transaction, Weighting};
|
||||||
|
use grin_core::core::verifier_cache::LruVerifierCache;
|
||||||
|
use grin_core::libtx::{aggsig, build, secp_ser, tx_fee};
|
||||||
use rand::thread_rng;
|
use rand::thread_rng;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
|
@ -21,11 +21,11 @@ use crate::core::libtx::aggsig;
|
||||||
use crate::core::ser;
|
use crate::core::ser;
|
||||||
use crate::keychain::{Identifier, Keychain};
|
use crate::keychain::{Identifier, Keychain};
|
||||||
use crate::libwallet::error::{Error, ErrorKind};
|
use crate::libwallet::error::{Error, ErrorKind};
|
||||||
|
use crate::libwallet::slate::ParticipantMessages;
|
||||||
use crate::util::secp::key::{PublicKey, SecretKey};
|
use crate::util::secp::key::{PublicKey, SecretKey};
|
||||||
use crate::util::secp::{self, pedersen, Secp256k1};
|
use crate::util::secp::{self, pedersen, Secp256k1};
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use failure::ResultExt;
|
use failure::ResultExt;
|
||||||
use grin_core::libtx::slate::ParticipantMessages;
|
|
||||||
use serde;
|
use serde;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
|
@ -21,12 +21,12 @@ use self::chain::Chain;
|
||||||
use self::core::core::verifier_cache::LruVerifierCache;
|
use self::core::core::verifier_cache::LruVerifierCache;
|
||||||
use self::core::core::Transaction;
|
use self::core::core::Transaction;
|
||||||
use self::core::global::{set_mining_mode, ChainTypes};
|
use self::core::global::{set_mining_mode, ChainTypes};
|
||||||
use self::core::libtx::slate::Slate;
|
|
||||||
use self::core::{pow, ser};
|
use self::core::{pow, ser};
|
||||||
use self::keychain::Keychain;
|
use self::keychain::Keychain;
|
||||||
use self::util::secp::pedersen;
|
use self::util::secp::pedersen;
|
||||||
use self::util::secp::pedersen::Commitment;
|
use self::util::secp::pedersen::Commitment;
|
||||||
use self::util::{Mutex, RwLock, StopState};
|
use self::util::{Mutex, RwLock, StopState};
|
||||||
|
use crate::libwallet::slate::Slate;
|
||||||
use crate::libwallet::types::*;
|
use crate::libwallet::types::*;
|
||||||
use crate::{controller, libwallet, WalletCommAdapter, WalletConfig};
|
use crate::{controller, libwallet, WalletCommAdapter, WalletConfig};
|
||||||
use failure::ResultExt;
|
use failure::ResultExt;
|
||||||
|
|
|
@ -17,8 +17,8 @@ extern crate log;
|
||||||
|
|
||||||
use self::core::global;
|
use self::core::global;
|
||||||
use self::core::global::ChainTypes;
|
use self::core::global::ChainTypes;
|
||||||
use self::core::libtx::slate::Slate;
|
|
||||||
use self::keychain::ExtKeychain;
|
use self::keychain::ExtKeychain;
|
||||||
|
use self::libwallet::slate::Slate;
|
||||||
use self::wallet::test_framework::{self, LocalWalletClient, WalletProxy};
|
use self::wallet::test_framework::{self, LocalWalletClient, WalletProxy};
|
||||||
use self::wallet::{libwallet, FileWalletCommAdapter};
|
use self::wallet::{libwallet, FileWalletCommAdapter};
|
||||||
use grin_core as core;
|
use grin_core as core;
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
extern crate log;
|
extern crate log;
|
||||||
use self::core::global;
|
use self::core::global;
|
||||||
use self::core::global::ChainTypes;
|
use self::core::global::ChainTypes;
|
||||||
use self::core::libtx::slate::Slate;
|
|
||||||
use self::keychain::{ExtKeychain, Identifier, Keychain};
|
use self::keychain::{ExtKeychain, Identifier, Keychain};
|
||||||
|
use self::libwallet::slate::Slate;
|
||||||
use self::wallet::libwallet;
|
use self::wallet::libwallet;
|
||||||
use self::wallet::libwallet::types::AcctPathMapping;
|
use self::wallet::libwallet::types::AcctPathMapping;
|
||||||
use self::wallet::test_framework::{self, LocalWalletClient, WalletProxy};
|
use self::wallet::test_framework::{self, LocalWalletClient, WalletProxy};
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
extern crate log;
|
extern crate log;
|
||||||
use self::core::global;
|
use self::core::global;
|
||||||
use self::core::global::ChainTypes;
|
use self::core::global::ChainTypes;
|
||||||
use self::core::libtx::slate::Slate;
|
|
||||||
use self::keychain::ExtKeychain;
|
use self::keychain::ExtKeychain;
|
||||||
|
use self::libwallet::slate::Slate;
|
||||||
use self::wallet::libwallet;
|
use self::wallet::libwallet;
|
||||||
use self::wallet::libwallet::types::OutputStatus;
|
use self::wallet::libwallet::types::OutputStatus;
|
||||||
use self::wallet::test_framework::{self, LocalWalletClient, WalletProxy};
|
use self::wallet::test_framework::{self, LocalWalletClient, WalletProxy};
|
||||||
|
|
Loading…
Reference in a new issue