Package: litewax
WAX donatelitewaxSimply python library for interact with WAX blockchainTODOCreate tests for ClientCreate tests for WCW clientCreate tests for Anchor clientCreate tests for MultiSig clientAdd supply private_keys and wcw both to MultiSigClientAdd PayWith for NeftyBlocksAdd PayWith for AtomicHubRefactor code, optimize WCW clientWrap Actions to class (for pretty print)Create tests for PayWithInstallationpip install litewaxClients examplesImportfrom litewax import Client, MultiSigClient, ContractClient setupAnchorclient = Client(private_key="PVT_KEY")Wax Cloud Walletclient = Client(cookie="TOKEN_SESSION")Anchor MultiSigClientclient = MultiSigClient(private_keys=["PVT_KEY1", "PVT_KEY2", ...])Wax Cloud Wallet MultiSigClientclient = MultiSigClient(cookies=["TOKEN_SESSION1", "TOKEN_SESSION2", ...])Contract examplesContract initializeDefaultcontract = Contract("name", actor="wallet")With clientcontract = client.Contract("name")

# In MultiSigClient:
# contract = client.Contract("name", client[0])
# contract = client[0].Contract("name")
# contract = client.Contract("name", actor=client[0].name)After once init you can import contract directly# Contract("res.pink")
from contracts.res_pink import res_pink

contract = res_pink("actor")TransactionsMake transactioncontract = client.Contract("res.pink")

trx = client.Transaction(
    contract.noop(),
    # or
    contract.call('noop', {})
)Push transactiontrx.push() # -> dict
# {"transaction_id": "0x0123abc...", ...}Examples(Anchor) Client exampleimport litewax

# Create client with private key(anchor)
client = litewax.Client(private_key=PVT_KEY)

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client.Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client.name) 

# easy make transaction
trx = client.Transaction(
        contract.noop()
    )

# easy push transaction
trx.push()
# {"transaction_id": "0x0123abc...", ...}(Wax Cloud Wallet) Client exampleimport litewax

# Create client with token session (wax cloud wallet)
client = litewax.Client(cookie=TOKEN_SESSION)

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client.Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client.name) 

# easy make transaction
trx = AnchorClient.Transaction(
        contract.noop()
    )

# easy push transaction
trx.push()
# {"transaction_id": "0x0123abc...", ...}(Anchor) MultiSigClient exampleimport litewax

# Create multisig client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiSigClient(
        private_keys=[PVT_KEY1, PVT_KEY2, ...]
    )

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client[i].Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client[i].name) 

# easy make transaction
trx = multiclient.Transaction(
        contract.transfer(
            _from=client[0].name,
            _to=client[1].name,
            amount="1.0000 WAX",
            memo="Send 1 WAX with multisig client"
        ),
        client[1].Contract("res.pink").noop() # for pay CPU
    )

# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)
trx.push()
# {"transaction_id": "0x0123abc...", ...}(Wax Cloud Wallet) MultiSigClient exampleimport litewax

# Create multisig client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiSigClient(
        cookies=[cookie1, cookie2, ...]
    )

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client[i].Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client[i].name) 

# easy make transaction
trx = multiclient.Transaction(
        contract.transfer(
            _from=client[0].name,
            _to=client[1].name,
            amount="1.0000 WAX",
            memo="Send 1 WAX with multisig client"
        ),
        client[1].Contract("res.pink").noop() # for pay CPU
    )

# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)
trx.push()
# {"transaction_id": "0x0123abc...", ...}Contract obj examplefrom litewax import Contract

contract = Contract("res.pink")
# contract = Contract("res.pink", actor="abuztradewax")
# contract = Contract("res.pink", actor="abuztradewax", force_recreate=True)
#
# After create contract once, abigen create folder "contracts" and you can import directly

from contracts.res_pink import res_pink 
# in contract name "." replace to "_"

contract = res_pink(actor="abuztradewax")
# contract = res_pink()
# contract.set_actor("abuztradewax")

# you can push transaction without initialize any clients (push work only for anchor accounts)
contract.push_actions(
        "PRIVATE_KEY",
        contract.noop()
    )
# {"transaction_id": "0x0123abc...", ...}

# also you can send multiply signed trx
contract1 = Contract("eosio.token", actor="wallet1")
contract2 = Contract("res.pink", actor="wallet2")

contract1.push_actions(
        ["PRIVATE_KEY1", "PRICATE_KEY2"],
        contract1.transfer(
            _from=contract1.actor,
            _to=contract2.actor,
            amount="1.0000 WAX",
            memo="send 1 WAX without any client (only Contract instance)"
        ),
        contract2.noop() # this action will pay for CPU
        
# {"transaction_id": "0x0123abc...", ...}