@ -100,6 +100,30 @@ struct PendingTransaction
virtual uint64_t txCount ( ) const = 0 ;
virtual uint64_t txCount ( ) const = 0 ;
virtual std : : vector < uint32_t > subaddrAccount ( ) const = 0 ;
virtual std : : vector < uint32_t > subaddrAccount ( ) const = 0 ;
virtual std : : vector < std : : set < uint32_t > > subaddrIndices ( ) const = 0 ;
virtual std : : vector < std : : set < uint32_t > > subaddrIndices ( ) const = 0 ;
/**
* @ brief multisigSignData
* @ return encoded multisig transaction with signers ' keys .
* Transfer this data to another wallet participant to sign it .
* Assumed use case is :
* 1. Initiator :
* auto data = pendingTransaction - > multisigSignData ( ) ;
* 2. Signer1 :
* pendingTransaction = wallet - > restoreMultisigTransaction ( data ) ;
* pendingTransaction - > signMultisigTx ( ) ;
* auto signed = pendingTransaction - > multisigSignData ( ) ;
* 3. Signer2 :
* pendingTransaction = wallet - > restoreMultisigTransaction ( signed ) ;
* pendingTransaction - > signMultisigTx ( ) ;
* pendingTransaction - > commit ( ) ;
*/
virtual std : : string multisigSignData ( ) = 0 ;
virtual void signMultisigTx ( ) = 0 ;
/**
* @ brief signersKeys
* @ return vector of base58 - encoded signers ' public keys
*/
virtual std : : vector < std : : string > signersKeys ( ) const = 0 ;
} ;
} ;
/**
/**
@ -291,6 +315,15 @@ struct SubaddressAccount
virtual void refresh ( ) = 0 ;
virtual void refresh ( ) = 0 ;
} ;
} ;
struct MultisigState {
MultisigState ( ) : isMultisig ( false ) , isReady ( false ) , threshold ( 0 ) , total ( 0 ) { }
bool isMultisig ;
bool isReady ;
uint32_t threshold ;
uint32_t total ;
} ;
struct WalletListener
struct WalletListener
{
{
virtual ~ WalletListener ( ) = 0 ;
virtual ~ WalletListener ( ) = 0 ;
@ -358,9 +391,11 @@ struct Wallet
virtual std : : string getSeedLanguage ( ) const = 0 ;
virtual std : : string getSeedLanguage ( ) const = 0 ;
virtual void setSeedLanguage ( const std : : string & arg ) = 0 ;
virtual void setSeedLanguage ( const std : : string & arg ) = 0 ;
//! returns wallet status (Status_Ok | Status_Error)
//! returns wallet status (Status_Ok | Status_Error)
virtual int status ( ) const = 0 ;
virtual int status ( ) const = 0 ; //deprecated: use safe alternative statusWithErrorString
//! in case error status, returns error string
//! in case error status, returns error string
virtual std : : string errorString ( ) const = 0 ;
virtual std : : string errorString ( ) const = 0 ; //deprecated: use safe alternative statusWithErrorString
//! returns both error and error string atomically. suggested to use in instead of status() and errorString()
virtual void statusWithErrorString ( int & status , std : : string & errorString ) const = 0 ;
virtual bool setPassword ( const std : : string & password ) = 0 ;
virtual bool setPassword ( const std : : string & password ) = 0 ;
virtual std : : string address ( uint32_t accountIndex = 0 , uint32_t addressIndex = 0 ) const = 0 ;
virtual std : : string address ( uint32_t accountIndex = 0 , uint32_t addressIndex = 0 ) const = 0 ;
std : : string mainAddress ( ) const { return address ( 0 , 0 ) ; }
std : : string mainAddress ( ) const { return address ( 0 , 0 ) ; }
@ -629,6 +664,48 @@ struct Wallet
*/
*/
virtual void setSubaddressLabel ( uint32_t accountIndex , uint32_t addressIndex , const std : : string & label ) = 0 ;
virtual void setSubaddressLabel ( uint32_t accountIndex , uint32_t addressIndex , const std : : string & label ) = 0 ;
/**
* @ brief multisig - returns current state of multisig wallet creation process
* @ return MultisigState struct
*/
virtual MultisigState multisig ( ) const = 0 ;
/**
* @ brief getMultisigInfo
* @ return serialized and signed multisig info string
*/
virtual std : : string getMultisigInfo ( ) const = 0 ;
/**
* @ brief makeMultisig - switches wallet in multisig state . The one and only creation phase for N / N wallets
* @ param info - vector of multisig infos from other participants obtained with getMulitisInfo call
* @ param threshold - number of required signers to make valid transaction . Must be equal to number of participants ( N ) or N - 1
* @ return in case of N / N wallets returns empty string since no more key exchanges needed . For N - 1 / N wallets returns base58 encoded extra multisig info
*/
virtual std : : string makeMultisig ( const std : : vector < std : : string > & info , uint32_t threshold ) = 0 ;
/**
* @ brief finalizeMultisig - finalizes N - 1 / N multisig wallets creation
* @ param extraMultisigInfo - wallet participants ' extra multisig info obtained with makeMultisig call
* @ return true if success
*/
virtual bool finalizeMultisig ( const std : : vector < std : : string > & extraMultisigInfo ) = 0 ;
/**
* @ brief exportMultisigImages - exports transfers ' key images
* @ param images - output paramter for hex encoded array of images
* @ return true if success
*/
virtual bool exportMultisigImages ( std : : string & images ) = 0 ;
/**
* @ brief importMultisigImages - imports other participants ' multisig images
* @ param images - array of hex encoded arrays of images obtained with exportMultisigImages
* @ return number of imported images
*/
virtual size_t importMultisigImages ( const std : : vector < std : : string > & images ) = 0 ;
/**
* @ brief restoreMultisigTransaction creates PendingTransaction from signData
* @ param signData encrypted unsigned transaction . Obtained with PendingTransaction : : multisigSignData
* @ return PendingTransaction
*/
virtual PendingTransaction * restoreMultisigTransaction ( const std : : string & signData ) = 0 ;
/*!
/*!
* \ brief createTransaction creates transaction . if dst_addr is an integrated address , payment_id is ignored
* \ brief createTransaction creates transaction . if dst_addr is an integrated address , payment_id is ignored
* \ param dst_addr destination address as string
* \ param dst_addr destination address as string