@pnsdomains/safe-service-client
v2.0.3
Published
Safe Service Client
Downloads
1
Readme
Safe Service Client
Software development kit that facilitates the interaction with the Safe Transaction Service API.
Table of contents
Installation
Install the package with yarn or npm:
yarn install
npm install
Build
Build the package with yarn or npm:
yarn build
npm build
Initialization
Instantiate an EthAdapter
First of all, we need to create an EthAdapter
, which contains all the required utilities for the SDKs to interact with the blockchain. It acts as a wrapper for web3.js or ethers.js Ethereum libraries.
Depending on the library used by the Dapp, there are two options:
Once the instance of EthersAdapter
or Web3Adapter
is created, it can be used in the SDK initialization.
Initialize the SafeServiceClient
import SafeServiceClient from '@pnsdomains/safe-service-client'
const safeService = new SafeServiceClient({
txServiceUrl: 'https://safe-transaction-mainnet.safe.global',
ethAdapter
})
API Reference
getServiceInfo
Returns the information and configuration of the service.
const serviceInfo: SafeServiceInfoResponse = await safeService.getServiceInfo()
getServiceMasterCopiesInfo
Returns the list of Safe master copies.
const masterCopies: MasterCopyResponse = await safeService.getServiceMasterCopiesInfo()
decodeData
Decodes the specified Safe transaction data.
const decodedData = await safeService.decodeData(data)
getSafesByOwner
Returns the list of Safes where the address provided is an owner.
const safes: OwnerResponse = await safeService.getSafesByOwner(ownerAddress)
getSafesByModule
Returns the list of Safes where the module address provided is enabled.
const safes: ModulesResponse = await getSafesByModule(moduleAddress)
getTransaction
Returns all the information of a Safe transaction.
const tx: SafeMultisigTransactionResponse = await safeService.getTransaction(safeTxHash)
getTransactionConfirmations
Returns the list of confirmations for a given a Safe transaction.
const confirmations: SafeMultisigConfirmationListResponse = await safeService.getTransactionConfirmations(safeTxHash)
confirmTransaction
Adds a confirmation for a Safe transaction.
const signature: SignatureResponse = await safeService.confirmTransaction(safeTxHash, signature)
getSafeInfo
Returns the information and configuration of the provided Safe address.
const safeInfo: SafeInfoResponse = await safeService.getSafeInfo(safeAddress)
getSafeDelegates
Returns the list of delegates for a given Safe address.
const delegates: SafeDelegateListResponse = await safeService.getSafeDelegates(safeAddress)
addSafeDelegate
Adds a new delegate for a given Safe address.
const delegateConfig: SafeDelegateConfig = {
safe,
delegate,
label,
signer
}
await safeService.addSafeDelegate(delegateConfig)
removeAllSafeDelegates
Removes all delegates for a given Safe address.
await safeService.removeAllSafeDelegates(safeAddress, signer)
removeSafeDelegate
Removes a delegate for a given Safe address.
const delegateConfig: SafeDelegateDeleteConfig = {
safe,
delegate,
signer
}
await safeService.removeSafeDelegate(delegateConfig)
getSafeCreationInfo
Returns the creation information of a Safe.
const safeCreationInfo: SafeCreationInfoResponse = await safeService.getSafeCreationInfo(safeAddress)
estimateSafeTransaction
Estimates the safeTxGas for a given Safe multi-signature transaction.
const estimateTx: SafeMultisigTransactionEstimateResponse = await safeService.estimateSafeTransaction(
safeAddress,
safeTransaction
)
proposeTransaction
Creates a new multi-signature transaction and stores it in the Safe Transaction Service.
const transactionConfig: ProposeTransactionProps = {
safeAddress,
safeTxHash,
safeTransactionData,
senderAddress,
senderSignature,
origin
}
await safeService.proposeTransaction(transactionConfig)
getIncomingTransactions
Returns the history of incoming transactions of a Safe account.
const incomingTxs: TransferListResponse = await safeService.getIncomingTransactions(safeAddress)
getModuleTransactions
Returns the history of module transactions of a Safe account.
const moduleTxs: SafeModuleTransactionListResponse = await safeService.getModuleTransactions(safeAddress)
getMultisigTransactions
Returns the history of multi-signature transactions of a Safe account.
const multisigTxs: SafeMultisigTransactionListResponse = await safeService.getMultisigTransactions(safeAddress)
getPendingTransactions
Returns the list of multi-signature transactions that are waiting for the confirmation of the Safe owners.
const pendingTxs: SafeMultisigTransactionListResponse = await safeService.getPendingTransactions(safeAddress)
const pendingTxs: SafeMultisigTransactionListResponse = await safeService.getPendingTransactions(
safeAddress,
currentNonce
)
getAllTransactions
Returns a list of transactions for a Safe. The list has different structures depending on the transaction type.
const allTxs: SafeMultisigTransactionListResponse = await safeService.getAllTransactions(safeAddress)
const allTxsOptions: AllTransactionsOptions = {
executed,
queued,
trusted
}
const allTxs: SafeMultisigTransactionListResponse = await safeService.getAllTransactions(
safeAddress,
allTxsOptions
)
getNextNonce
Returns the right nonce to propose a new transaction right after the last pending transaction.
const nextNonce = await safeService.getNextNonce(safeAddress)
getBalances
Returns the balances for Ether and ERC20 tokens of a Safe.
const balances: SafeBalanceResponse[] = await safeService.getBalances(safeAddress)
This method can optionally receive the options
parameter:
const options: SafeBalancesOptions = {
excludeSpamTokens // Optional. Default value is `true`.
}
const balances: SafeBalanceResponse[] = await safeService.getBalances(safeAddress, options)
getUsdBalances
Returns the balances for Ether and ERC20 tokens of a Safe with USD fiat conversion.
const usdBalances: SafeBalanceUsdResponse[] = await safeService.getUsdBalances(safeAddress)
This method can optionally receive the options
parameter:
const options: SafeBalancesUsdOptions = {
excludeSpamTokens // Optional. Default value is `true`.
}
const usdBalances: SafeBalanceUsdResponse[] = await safeService.getUsdBalances(safeAddress, options)
getCollectibles
Returns the collectibles (ERC721 tokens) owned by the given Safe and information about them.
const collectibles: SafeCollectibleListResponse = await safeService.getCollectibles(safeAddress)
This method can optionally receive the options
parameter:
const options: SafeCollectiblesOptions = {
limit // Optional. Default value is 10. This limit is the maximum available value per service limitation.
offset // Optional. Default value is 0.
excludeSpamTokens // Optional. Default value is `true`.
}
const collectibles: SafeCollectibleListResponse = await safeService.getCollectibles(safeAddress, options)
getTokenList
Returns the list of all the ERC20 tokens handled by the Safe.
const tokens: TokenInfoListResponse = await safeService.getTokenList()
getToken
Returns the information of a given ERC20 token.
const token: TokenInfoResponse = await safeService.getToken(tokenAddress)
License
This library is released under MIT.
Contributors
- Germán Martínez (germartinez)