Python SDK for Privana - manage deposits, withdrawals, locks, and transfers
Project description
flexvaults-sdk
Python SDK for Flexvaults - manage deposits, withdrawals, locks, and transfers on the accounting module.
Installation
pip install flexvaults-sdk
Quick Start
import asyncio
from flexvaults import FlexvaultsClient, DepositCheckRequest
async def main():
async with FlexvaultsClient(base_url="https://api.example.com") as client:
# Get per-user deposit address
addr = await client.get_deposit_address()
print(f"Deposit to: {addr.deposit_address}")
# After sending tokens to the deposit address, verify the deposit
result = await client.check_deposit(
DepositCheckRequest(
chain_id=84532,
tx_hash="0xYourTxHash",
amount=1000000,
)
)
print(f"Deposit status: {result.status}")
asyncio.run(main())
Direct SIWE Private Reads
Private read endpoints such as balances, history, and locked funds use the backend's direct SIWE flow.
The Python SDK exposes the raw helpers and token setters rather than a hosted auth-code wrapper.
get_history(offset=-1, limit=50) returns one page; non-negative offsets count pages from the
oldest entries, negative offsets count from the end, each page is oldest-to-newest, and limit
must be between 0 and 100.
import asyncio
from flexvaults import FlexvaultsClient
async def main():
async with FlexvaultsClient(base_url="https://api.example.com") as client:
domain = await client.get_siwe_domain()
nonce = await client.get_siwe_nonce("0xYourAddress")
# Build and sign the SIWE message in your app, then submit it here.
login = await client.authenticate_private_reads(
siwe_message="your signed-in message",
signature="0xYourSignature",
)
balance = await client.get_balance("0xTokenId")
history = await client.get_history()
print(domain.domain, nonce.nonce, login.address, balance.balance, history.total)
asyncio.run(main())
EIP-712 Signing
from eth_account import Account
from flexvaults import (
sign_lock_message,
LockNonceResponse,
SignLockParams,
LockMessage,
get_accounting_contract,
create_lock_expiry,
)
account = Account.from_key("0xYourPrivateKey")
signature = sign_lock_message(
SignLockParams(
account=account,
network="testnet",
verifying_contract=get_accounting_contract("testnet"),
message=LockMessage(
service_address="0xServiceAddress",
token_id="0xTokenId",
amount=1000000,
expiry=create_lock_expiry(60),
nonce=0,
),
)
)
API Reference
Client
FlexvaultsClient(base_url, timeout=30.0, headers=None)- Main API clientget_deposit_address(request=None)- Get per-user deposit addresscheck_deposit(request)- Verify a deposit and trigger creditget_balance(token_id)- Get token balance for the authenticated userget_batch_balances(request)- Get multiple token balancesget_history(offset=-1, limit=50)- Get one authenticated history pageget_token_info(token_id)- Get token informationlock_funds(request)- Lock funds for a serviceget_lock_nonce(user_address)- Get next create-lock nonceget_modify_lock_nonce(user_address)- Get next modify-lock noncemodify_lock(request)- Modify an existing lock (add funds and/or extend expiry)unlock_funds(request)- Unlock specific lockunlock_all_expired(request)- Unlock all expired locksget_locked_funds(service_address=None)- Get locked funds for the authenticated userget_total_locked_balance(token_id)- Get total locked balance for the authenticated userget_expired_locks()- Get expired locks for the authenticated usertransfer_funds(request)- Transfer tokens (requires nonce)get_transfer_nonce(user_address)- Get next transfer noncetransfer_locked_funds(request)- Transfer locked tokensget_transfer_locked_nonce(service_address)- Get next transfer-from-lock noncerequest_withdrawal(request)- Request withdrawalget_withdrawal_nonce(user_address)- Get next withdrawal nonceget_pending_withdrawals(user_address)- Get pending withdrawalsget_withdrawal_info(index)- Get withdrawal infoget_siwe_domain()- Get the direct SIWE auth domainget_siwe_nonce(user_address)- Get a SIWE login noncelogin_with_siwe(siwe_message, signature)- Exchange a signed SIWE message for tokensauthenticate_private_reads(siwe_message, signature)- Login and storeX-SIWE-Tokenset_private_read_token(token)/clear_private_read_token()- ManageX-SIWE-Tokenset_bearer_token(token)/clear_bearer_token()- Manage bearer auth headers
Signing
sign_lock_message(params)- Sign lock messagesign_modify_lock_message(params)- Sign modify lock messagesign_transfer_message(params)- Sign transfer messagesign_transfer_locked_message(params)- Sign transfer locked messagesign_withdraw_message(params)- Sign withdrawal messagecreate_lock_expiry(minutes_from_now=60)- Create expiry timestamp
Utilities
format_token_amount(amount, decimals=18)- Format wei to human-readableparse_token_amount(amount, decimals=18)- Parse human-readable to weishorten_address(address, chars=4)- Shorten Ethereum addressformat_timestamp(timestamp)- Format Unix timestamp to readable stringis_expired(expiry)- Check if timestamp is expiredformat_time_remaining(expiry_timestamp)- Format time remainingformat_relative_time(timestamp)- Format relative time (e.g., "5m ago")
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oasis_privana-0.1.16.tar.gz.
File metadata
- Download URL: oasis_privana-0.1.16.tar.gz
- Upload date:
- Size: 108.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6a1263340f5b33bcf3312f2b9947b4d1cf28597013c6b0195ee8ca02e8155af
|
|
| MD5 |
5f915c8548d8966e3127442fe5aa28a5
|
|
| BLAKE2b-256 |
7cad54219eb8d1dbb69bc8add4b908675096ea99b9601802d0bce4adaf4266c3
|
File details
Details for the file oasis_privana-0.1.16-py3-none-any.whl.
File metadata
- Download URL: oasis_privana-0.1.16-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e8836e1690f93413143a9e86e5175f23a41c25f1e63ee5c722b2726e8c4d2bc
|
|
| MD5 |
ae9231f572d9032d9ca3939c5517930e
|
|
| BLAKE2b-256 |
739892bedcadbe7782c355411dd575fa14ce13044b895b27fef8f56ff54280fc
|