mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 06:44:22 +01:00
add wallet deposit/transfer
This commit is contained in:
@@ -192,8 +192,10 @@ class _RestPublicEndpoints(_Requests):
|
||||
data = self._GET(f"candles/trade:{tf}:{symbol}/last", params=params)
|
||||
return serializers.Candle.parse(*data)
|
||||
|
||||
def get_derivatives_status(self, symbols: Union[List[str], Literal["ALL"]]) -> List[DerivativesStatus]:
|
||||
params = { "keys": ",".join(symbols) if type(symbols) == List else "ALL" }
|
||||
def get_derivatives_status(self, keys: Union[List[str], Literal["ALL"]]) -> List[DerivativesStatus]:
|
||||
if keys == "ALL":
|
||||
params = { "keys": "ALL" }
|
||||
else: params = { "keys": ",".join(keys) }
|
||||
|
||||
data = self._GET(f"status/deriv", params=params)
|
||||
|
||||
@@ -405,4 +407,50 @@ class _RestAuthenticatedEndpoints(_Requests):
|
||||
"limit": limit
|
||||
}
|
||||
|
||||
return [ serializers.FundingCredit.parse(*subdata) for subdata in self._POST(endpoint, data=data) ]
|
||||
return [ serializers.FundingCredit.parse(*subdata) for subdata in self._POST(endpoint, data=data) ]
|
||||
|
||||
def submit_wallet_transfer(self, from_wallet: str, to_wallet: str, currency: str, currency_to: str, amount: Union[Decimal, str]) -> Notification[Transfer]:
|
||||
data = {
|
||||
"from": from_wallet, "to": to_wallet,
|
||||
"currency": currency, "currency_to": currency_to,
|
||||
"amount": amount
|
||||
}
|
||||
|
||||
return serializers._Notification[Transfer](serializer=serializers.Transfer).parse(*self._POST("auth/w/transfer", data=data))
|
||||
|
||||
def submit_wallet_withdraw(self, wallet: str, method: str, address: str, amount: Union[Decimal, str]) -> Notification[Withdrawal]:
|
||||
data = {
|
||||
"wallet": wallet, "method": method,
|
||||
"address": address, "amount": amount,
|
||||
}
|
||||
|
||||
return serializers._Notification[Withdrawal](serializer=serializers.Withdrawal).parse(*self._POST("auth/w/withdraw", data=data))
|
||||
|
||||
def get_deposit_address(self, wallet: str, method: str, renew: bool = False) -> Notification[DepositAddress]:
|
||||
data = {
|
||||
"wallet": wallet,
|
||||
"method": method,
|
||||
"renew": int(renew)
|
||||
}
|
||||
|
||||
return serializers._Notification[DepositAddress](serializer=serializers.DepositAddress).parse(*self._POST("auth/w/deposit/address", data=data))
|
||||
|
||||
def get_deposit_invoice(self, wallet: str, currency: str, amount: Union[Decimal, str]) -> Invoice:
|
||||
data = {
|
||||
"wallet": wallet, "currency": currency,
|
||||
"amount": amount
|
||||
}
|
||||
|
||||
return serializers.Invoice.parse(*self._POST("auth/w/deposit/invoice", data=data))
|
||||
|
||||
def get_movements(self, currency: Optional[str] = None, start: Optional[str] = None, end: Optional[str] = None, limit: Optional[int] = None) -> List[Movement]:
|
||||
if currency == None:
|
||||
endpoint = "auth/r/movements/hist"
|
||||
else: endpoint = f"auth/r/movements/{currency}/hist"
|
||||
|
||||
data = {
|
||||
"start": start, "end": end,
|
||||
"limit": limit
|
||||
}
|
||||
|
||||
return [ serializers.Movement.parse(*subdata) for subdata in self._POST(endpoint, data=data) ]
|
||||
@@ -348,4 +348,69 @@ FundingCredit = generate_labeler_serializer("FundingCredit", klass=types.Funding
|
||||
"POSITION_PAIR"
|
||||
])
|
||||
|
||||
Transfer = generate_labeler_serializer("Transfer", klass=types.Transfer, labels=[
|
||||
"MTS",
|
||||
"WALLET_FROM",
|
||||
"WALLET_TO",
|
||||
"_PLACEHOLDER",
|
||||
"CURRENCY",
|
||||
"CURRENCY_TO",
|
||||
"_PLACEHOLDER",
|
||||
"AMOUNT"
|
||||
])
|
||||
|
||||
Withdrawal = generate_labeler_serializer("Withdrawal", klass=types.Withdrawal, labels=[
|
||||
"WITHDRAWAL_ID",
|
||||
"_PLACEHOLDER",
|
||||
"METHOD",
|
||||
"PAYMENT_ID",
|
||||
"WALLET",
|
||||
"AMOUNT",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"WITHDRAWAL_FEE"
|
||||
])
|
||||
|
||||
DepositAddress = generate_labeler_serializer("DepositAddress", klass=types.DepositAddress, labels=[
|
||||
"_PLACEHOLDER",
|
||||
"METHOD",
|
||||
"CURRENCY_CODE",
|
||||
"_PLACEHOLDER",
|
||||
"ADDRESS",
|
||||
"POOL_ADDRESS"
|
||||
])
|
||||
|
||||
Invoice = generate_labeler_serializer("Invoice", klass=types.Invoice, labels=[
|
||||
"INVOICE_HASH",
|
||||
"INVOICE",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"AMOUNT"
|
||||
])
|
||||
|
||||
Movement = generate_labeler_serializer("Movement", klass=types.Movement, labels=[
|
||||
"ID",
|
||||
"CURRENCY",
|
||||
"CURRENCY_NAME",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"MTS_STARTED",
|
||||
"MTS_UPDATED",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"STATUS",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"AMOUNT",
|
||||
"FEES",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"DESTINATION_ADDRESS",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"_PLACEHOLDER",
|
||||
"TRANSACTION_ID",
|
||||
"WITHDRAW_TRANSACTION_NOTE"
|
||||
])
|
||||
|
||||
#endregion
|
||||
@@ -286,4 +286,49 @@ class FundingCredit(_Type):
|
||||
NO_CLOSE: int
|
||||
POSITION_PAIR: str
|
||||
|
||||
@dataclass
|
||||
class Transfer(_Type):
|
||||
MTS: int
|
||||
WALLET_FROM: str
|
||||
WALLET_TO: str
|
||||
CURRENCY: str
|
||||
CURRENCY_TO: str
|
||||
AMOUNT: int
|
||||
|
||||
@dataclass
|
||||
class Withdrawal(_Type):
|
||||
WITHDRAWAL_ID: int
|
||||
METHOD: str
|
||||
PAYMENT_ID: str
|
||||
WALLET: str
|
||||
AMOUNT: float
|
||||
WITHDRAWAL_FEE: float
|
||||
|
||||
@dataclass
|
||||
class DepositAddress(_Type):
|
||||
METHOD: str
|
||||
CURRENCY_CODE: str
|
||||
ADDRESS: str
|
||||
POOL_ADDRESS: str
|
||||
|
||||
@dataclass
|
||||
class Invoice(_Type):
|
||||
INVOICE_HASH: str
|
||||
INVOICE: str
|
||||
AMOUNT: str
|
||||
|
||||
@dataclass
|
||||
class Movement(_Type):
|
||||
ID: str
|
||||
CURRENCY: str
|
||||
CURRENCY_NAME: str
|
||||
MTS_STARTED: int
|
||||
MTS_UPDATED: int
|
||||
STATUS: str
|
||||
AMOUNT: int
|
||||
FEES: int
|
||||
DESTINATION_ADDRESS: str
|
||||
TRANSACTION_ID: str
|
||||
WITHDRAW_TRANSACTION_NOTE: str
|
||||
|
||||
#endregion
|
||||
@@ -1,15 +0,0 @@
|
||||
# python -c "from examples.rest.get_seed_candles import *"
|
||||
|
||||
import time
|
||||
|
||||
from bfxapi.client import Client, Constants
|
||||
|
||||
bfx = Client(
|
||||
REST_HOST=Constants.REST_HOST
|
||||
)
|
||||
|
||||
print(f"Candles: {bfx.rest.public.get_seed_candles(symbol='tBTCUSD')}")
|
||||
|
||||
# Be sure to specify a period or aggregated period when retrieving funding candles.
|
||||
# If you wish to mimic the candles found in the UI, use the following setup to aggregate all funding candles: a30:p2:p30
|
||||
print(f"Candles: {bfx.rest.public.get_seed_candles(symbol='fUSD:a30:p2:p30', tf='15m')}")
|
||||
46
examples/rest/transfer_wallet.py
Normal file
46
examples/rest/transfer_wallet.py
Normal file
@@ -0,0 +1,46 @@
|
||||
# python -c "from examples.rest.transfer_wallet import *"
|
||||
|
||||
import os
|
||||
|
||||
from bfxapi.client import Client, Constants
|
||||
|
||||
bfx = Client(
|
||||
REST_HOST=Constants.REST_HOST,
|
||||
API_KEY=os.getenv("BFX_API_KEY"),
|
||||
API_SECRET=os.getenv("BFX_API_SECRET")
|
||||
)
|
||||
|
||||
def transfer_wallet():
|
||||
response = bfx.rest.auth.submit_wallet_transfer(from_wallet="exchange", to_wallet="funding", from_currency="ETH", to_currency="ETH", amount=0.001)
|
||||
print("Transfer:", response.NOTIFY_INFO)
|
||||
|
||||
def get_existing_deposit_address():
|
||||
response = bfx.rest.auth.get_deposit_address(wallet="exchange", method="bitcoin", renew=False)
|
||||
print("Address:", response.NOTIFY_INFO)
|
||||
|
||||
def create_new_deposit_address():
|
||||
response = bfx.rest.auth.get_deposit_address(wallet="exchange", method="bitcoin", renew=True)
|
||||
print("Address:", response.NOTIFY_INFO)
|
||||
|
||||
def withdraw():
|
||||
# tetheruse = Tether (ERC20)
|
||||
response = bfx.rest.auth.submit_wallet_withdraw(wallet="exchange", method="tetheruse", amount=1, address="0x742d35Cc6634C0532925a3b844Bc454e4438f44e")
|
||||
print("Address:", response.NOTIFY_INFO)
|
||||
|
||||
def create_lighting_network_deposit_address():
|
||||
invoice = bfx.rest.auth.get_deposit_invoice(wallet="funding", currency="LNX", amount=0.001)
|
||||
print("Invoice:", invoice)
|
||||
|
||||
def get_movements():
|
||||
movements = bfx.rest.auth.get_movements(currency="BTC")
|
||||
print("Movements:", movements)
|
||||
|
||||
def run():
|
||||
transfer_wallet()
|
||||
get_existing_deposit_address()
|
||||
create_new_deposit_address()
|
||||
withdraw()
|
||||
create_lighting_network_deposit_address()
|
||||
get_movements()
|
||||
|
||||
run()
|
||||
Reference in New Issue
Block a user