Firefly Client Library
Python Client for the Firefly Exchange API and Smart Contracts.
Install
The package can be installed from PyPi using pip:
pip install firefly-exchange-client
The package currently supports python >=3.8. Find complete documentation on the library at https://docs.firefly.exchange/.
Getting Started
When initializing the client, users must accept terms and conditions and define network object containing the following values:
{
"url": "https://goerli-rollup.arbitrum.io/rpc",
"chainId": 421613,
"apiGateway": "https://dapi-testnet.firefly.exchange",
"socketURL": "wss://dapi-testnet.firefly.exchange",
"webSocketURL": "",
"onboardingUrl": "https://testnet.firefly.exchange",
},
Users can import predefined networks from constants:
from constants import Networks
For testing purposes use Networks[TESTNET_ARBITRUM] and for production please use Networks[MAINNET_ARBITRUM]
from firefly_exchange_client import FireflyClient
from constants import Networks
from pprint import pprint
import asyncio
# initialize client
client = FireflyClient(
True, # agree to terms and conditions
Networks["TESTNET_ARBITRUM"], # network to connect with e.g. TESTNET_ARBITRUM | MAINNET_ARBITRUM
"0x.....", # PK for the account
True, # on boards user on firefly. Must be set to true for first time use
)
print('Account Address:', client.get_public_address());
# # gets user account data on-chain
# if running in async method
data = await client.get_user_account_data()
# if running in a sync method
# data = asyncio.run(client.get_user_account_data())
pprint(data)
Placing Orders:
from firefly_exchange_client import FireflyClient
from constants import Networks
from enumerations import MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE
from interfaces import OrderSignatureRequest
import asyncio
# initialize
client = FireflyClient(....)
# creates a LIMIT order to be signed
signature_request = OrderSignatureRequest(
symbol=MARKET_SYMBOLS.ETH, # market symbol
price=0, # price at which you want to place order
quantity=0.01, # quantity
side=ORDER_SIDE.BUY,
orderType=ORDER_TYPE.MARKET,
leverage=user_leverage
)
# create signed order
signed_order = client.create_signed_order(signature_request);
print("Placing a market order")
# place signed order on orderbook
resp = await client.post_signed_order(signed_order)
# returned order with PENDING state
print(resp)
Listening To Events Using Socket.io:
from firefly_exchange_client import FireflyClient
from constants import Networks
from enumerations import MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE
from interfaces import OrderSignatureRequest
def callback(event):
print("Event data:", event)
# initialize
client = FireflyClient(....)
# make connection with firefly exchange
await client.socket.open()
# subscribe to local user events
await client.socket.subscribe_user_update_by_token()
# listen to user order updates and trigger callback
await client.socket.listen(SOCKET_EVENTS.ORDER_UPDATE.value, callback)
#
# place some orders to exchange, that will trigger callback
# resp = client.post_signed_order(signed_order)
#
time.sleep(10)
# unsubscribe from user events
await client.socket.unsubscribe_user_update_by_token()
# close socket connection
await client.socket.close()
Look at the example directory to see more examples on how to use this library.
Listening To Events Using Web Sockets:
from firefly_exchange_client import FireflyClient
from constants import Networks
from enumerations import MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE, SOCKET_EVENTS
from interfaces import OrderSignatureRequest
import time
def callback(event):
print("Event data:", event)
# initialize
client = FireflyClient(....)
# make connection with firefly exchange
client.webSocketClient.initialize_socket(on_open=on_open)
def on_open(ws):
# subscribe to local user events
client.webSocketClient.subscribe_user_update_by_token()
# listen to user order updates and trigger callback
client.webSocketClient.listen(SOCKET_EVENTS.ORDER_UPDATE.value, callback)
#
# place some orders to exchange, that will trigger callback
# resp = client.post_signed_order(signed_order)
#
time.sleep(10)
# unsubscribe from user events
client.webSocketClient.unsubscribe_user_update_by_token()
# close socket connection
client.webSocketClient.stop()
Metadata
Release files for firefly-exchange-client 0.0.20
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| firefly_exchange_client-0.0.20.tar.gz | 30.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| firefly_exchange_client-0.0.20-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.8 kB
Release files / firefly_exchange_client-0.0.20.tar.gz
| Download URL | firefly_exchange_client-0.0.20.tar.gz |
|---|---|
| Size | 30.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1679ff16794a79ce8057c134a46f14cbc2086c7e60d36b1c356913be97aba8e
|
|
BLAKE2b-256 checksum How to use checksums |
e551dc9fba13cabd9a2b9ae17533b80143fae8529af31a52fd46c12fcc18966a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.11.2
|
Release files / firefly_exchange_client-0.0.20-py3-none-any.whl
| Download URL | firefly_exchange_client-0.0.20-py3-none-any.whl |
|---|---|
| Size | 32.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
adfe83b5526d45a8553fb9e77fb0b060c4b1c4a8b1920644c8390c89b79376a3
|
|
BLAKE2b-256 checksum How to use checksums |
b542811fcffa24b32899d80224d0ca58973b7c97d33571e09a3e6e3d8aba8150
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.11.2
|