High-level API reference for the ZNN TypeScript SDK.
All APIs are available on the zenon object.
zenon.ledger.getAccountInfoByAddress(address)- Get account balance and infozenon.ledger.getFrontierAccountBlock(address)- Get latest account blockzenon.ledger.getAccountBlockByHash(hash)- Get specific account blockzenon.ledger.getAccountBlocksByHeight(address, height, count)- Get blocks by heightzenon.ledger.getAccountBlocksByPage(address, pageIndex, pageSize)- Get blocks by pagezenon.ledger.getUnconfirmedBlocksByAddress(address, pageIndex, pageSize)- Get unconfirmed blockszenon.ledger.getUnreceivedBlocksByAddress(address, pageIndex, pageSize)- Get unreceived blockszenon.ledger.getFrontierMomentum()- Get latest momentumzenon.ledger.getMomentumBeforeTime(time)- Get momentum before timestampzenon.ledger.getMomentumByHash(hash)- Get momentum by hashzenon.ledger.getMomentumsByHeight(height, count)- Get momentums by heightzenon.ledger.getMomentumsByPage(pageIndex, pageSize)- Get momentums by pagezenon.ledger.getDetailedMomentumsByHeight(height, count)- Get detailed momentumszenon.ledger.publishRawTransaction(block)- Publish signed transaction
zenon.subscribe.toMomentums()- Subscribe to new momentumszenon.subscribe.toAllAccountBlocks()- Subscribe to all account blockszenon.subscribe.toAccountBlocksByAddress(address)- Subscribe to account blocks for addresszenon.subscribe.toUnreceivedAccountBlocksByAddress(address)- Subscribe to unreceived account blocks for address
zenon.stats.networkInfo()- Get network informationzenon.stats.osInfo()- Get node OS informationzenon.stats.processInfo()- Get node process informationzenon.stats.syncInfo()- Get sync status
zenon.embedded.accelerator.getAll(pageIndex, pageSize)- Get accelerator projects with paginationzenon.embedded.accelerator.getProjectById(id)- Get project details by idzenon.embedded.accelerator.getPhaseById(id)- Get phase details by idzenon.embedded.accelerator.getPillarVotes(name, hashes)- Get pillar votes for a list of phase idszenon.embedded.accelerator.getVoteBreakdown(id)- Get vote breakdown for a phasezenon.embedded.accelerator.createProject(name, description, url, znnFundsNeeded, qsrFundsNeeded)- Create a new accelerator projectzenon.embedded.accelerator.addPhase(id, name, description, url, znnFundsNeeded, qsrFundsNeeded)- Add a phase to an existing projectzenon.embedded.accelerator.updatePhase(id, name, description, url, znnFundsNeeded, qsrFundsNeeded)- Update an existing project phasezenon.embedded.accelerator.donate(amount, zts)- Donate to the accelerator contractzenon.embedded.accelerator.voteByName(id, pillarName, vote)- Vote on a phase by pillar namezenon.embedded.accelerator.voteByProdAddress(id, vote)- Vote on a phase by producer address
zenon.embedded.bridge.getBridgeInfo()- Get bridge configuration infozenon.embedded.bridge.getOrchestratorInfo()- Get orchestrator configurationzenon.embedded.bridge.getNetworkInfo(networkClass, chainId)- Get bridge network infozenon.embedded.bridge.getAllNetworks(pageIndex, pageSize)- Get all bridge networks with paginationzenon.embedded.bridge.getWrapTokenRequestById(id)- Get a wrap token request by idzenon.embedded.bridge.getAllWrapTokenRequests(pageIndex, pageSize)- Get all wrap token requests with paginationzenon.embedded.bridge.getAllWrapTokenRequestsByToAddress(toAddress, pageIndex, pageSize)- Get wrap requests by destination addresszenon.embedded.bridge.getAllWrapTokenRequestsByToAddressNetworkClassAndChainId(toAddress, networkClass, chainId, pageIndex, pageSize)- Get wrap requests by destination address and networkzenon.embedded.bridge.getAllUnsignedWrapTokenRequests(pageIndex, pageSize)- Get unsigned wrap token requests with paginationzenon.embedded.bridge.getUnwrapTokenRequestByHashAndLog(txHash, logIndex)- Get an unwrap token request by tx hash and log indexzenon.embedded.bridge.getAllUnwrapTokenRequests(pageIndex, pageSize)- Get all unwrap token requests with paginationzenon.embedded.bridge.getAllUnwrapTokenRequestsByToAddress(toAddress, pageIndex, pageSize)- Get unwrap requests by destination addresszenon.embedded.bridge.getFeeTokenPair(zts)- Get fee information for a token pairzenon.embedded.bridge.getSecurityInfo()- Get bridge security infozenon.embedded.bridge.getTimeChallengesInfo()- Get bridge time challenge infozenon.embedded.bridge.wrapToken(networkClass, chainId, toAddress, amount, tokenStandard)- Wrap tokens to another networkzenon.embedded.bridge.updateWrapRequest(id, signature)- Update a wrap request with signaturezenon.embedded.bridge.halt(signature)- Halt bridge operationszenon.embedded.bridge.changeTssECDSAPubKey(pubKey, oldPubKeySignature, newPubKeySignature)- Change TSS ECDSA public keyzenon.embedded.bridge.redeem(transactionHash, logIndex)- Redeem wrapped tokenszenon.embedded.bridge.unwrapToken(networkClass, chainId, transactionHash, logIndex, toAddress, tokenAddress, amount, signature)- Submit unwrap token requestzenon.embedded.bridge.proposeAdministrator(address)- Propose a new administratorzenon.embedded.bridge.setNetwork(networkClass, chainId, name, contractAddress, metadata)- Set a bridge networkzenon.embedded.bridge.removeNetwork(networkClass, chainId)- Remove a bridge networkzenon.embedded.bridge.setTokenPair(networkClass, chainId, tokenStandard, tokenAddress, bridgeable, redeemable, owned, minAmount, feePercentage, redeemDelay, metadata)- Set a token pair configurationzenon.embedded.bridge.setNetworkMetadata(networkClass, chainId, metadata)- Update bridge network metadatazenon.embedded.bridge.removeTokenPair(networkClass, chainId, tokenStandard, tokenAddress)- Remove a token pairzenon.embedded.bridge.unhalt()- Resume bridge operationszenon.embedded.bridge.emergency()- Trigger bridge emergency modezenon.embedded.bridge.changeAdministrator(administrator)- Change bridge administratorzenon.embedded.bridge.setAllowKeyGen(allowKeyGen)- Allow or disallow key generationzenon.embedded.bridge.setBridgeMetadata(metadata)- Update bridge metadatazenon.embedded.bridge.revokeUnwrapRequest(transactionHash, logIndex)- Revoke an unwrap requestzenon.embedded.bridge.nominateGuardians(guardians)- Nominate bridge guardianszenon.embedded.bridge.setOrchestratorInfo(windowSize, keyGenThreshold, confirmationsToFinality, estimatedMomentumTime)- Update orchestrator configuration
zenon.embedded.htlc.getById(id)- Get HTLC details by idzenon.embedded.htlc.getProxyUnlockStatus(address)- Get proxy unlock status for addresszenon.embedded.htlc.create(token, amount, hashLocked, expirationTime, hashType, keyMaxSize, hashLock)- Create an HTLCzenon.embedded.htlc.reclaim(id)- Reclaim an expired HTLCzenon.embedded.htlc.unlock(id, preimage)- Unlock an HTLC with preimagezenon.embedded.htlc.denyProxyUnlock()- Deny proxy unlockzenon.embedded.htlc.allowProxyUnlock()- Allow proxy unlock
zenon.embedded.liquidity.getLiquidityInfo()- Get liquidity contract infozenon.embedded.liquidity.getLiquidityStakeEntriesByAddress(address, pageIndex, pageSize)- Get liquidity stake entries for addresszenon.embedded.liquidity.getUncollectedReward(address)- Get uncollected liquidity rewardszenon.embedded.liquidity.getFrontierRewardByPage(address, pageIndex, pageSize)- Get liquidity reward history by pagezenon.embedded.liquidity.getSecurityInfo()- Get liquidity security infozenon.embedded.liquidity.getTimeChallengesInfo()- Get liquidity time challenge infozenon.embedded.liquidity.liquidityStake(durationInSec, amount, zts)- Stake liquidity for a durationzenon.embedded.liquidity.cancelLiquidityStake(id)- Cancel a liquidity stakezenon.embedded.liquidity.unlockLiquidityStakeEntries(zts)- Unlock liquidity stake entries for tokenzenon.embedded.liquidity.setTokenTuple(tokenStandards, znnPercentages, qsrPercentages, minAmounts)- Set liquidity token tuplezenon.embedded.liquidity.nominateGuardians(guardians)- Nominate liquidity guardianszenon.embedded.liquidity.proposeAdministrator(address)- Propose a new administratorzenon.embedded.liquidity.setIsHalted(isHalted)- Halt or resume the liquidity contractzenon.embedded.liquidity.setAdditionalReward(znnReward, qsrReward)- Set additional liquidity rewardszenon.embedded.liquidity.changeAdministrator(administrator)- Change liquidity administratorzenon.embedded.liquidity.collectReward()- Collect liquidity rewardszenon.embedded.liquidity.emergency()- Trigger liquidity emergency mode
zenon.embedded.pillar.getQsrRegistrationCost()- Get QSR registration costzenon.embedded.pillar.getAll(pageIndex, pageSize)- Get all pillars with paginationzenon.embedded.pillar.getByOwner(address)- Get pillars by owner addresszenon.embedded.pillar.getByName(name)- Get pillar details by namezenon.embedded.pillar.checkNameAvailability(name)- Check if a pillar name is availablezenon.embedded.pillar.getDelegatedPillar(address)- Get delegated pillar for addresszenon.embedded.pillar.getPillarEpochHistory(name, pageIndex, pageSize)- Get pillar epoch historyzenon.embedded.pillar.getPillarsHistoryByEpoch(epoch, pageIndex, pageSize)- Get pillars history by epochzenon.embedded.pillar.getDepositedQsr(address)- Get deposited QSRzenon.embedded.pillar.getUncollectedReward(address)- Get uncollected pillar rewardszenon.embedded.pillar.getFrontierRewardByPage(address, pageIndex, pageSize)- Get pillar reward history by pagezenon.embedded.pillar.register(name, producerAddress, rewardAddress, giveBlockRewardPercentage, giveDelegateRewardPercentage)- Register a pillarzenon.embedded.pillar.registerLegacy(name, producerAddress, rewardAddress, publicKey, signature, giveBlockRewardPercentage, giveDelegateRewardPercentage)- Register a legacy pillarzenon.embedded.pillar.updatePillar(name, producerAddress, rewardAddress, giveBlockRewardPercentage, giveDelegateRewardPercentage)- Update pillar settingszenon.embedded.pillar.revoke(name)- Revoke a pillarzenon.embedded.pillar.delegate(name)- Delegate to a pillarzenon.embedded.pillar.undelegate()- Undelegate from a pillarzenon.embedded.pillar.collectRewards()- Collect pillar rewardszenon.embedded.pillar.depositQsr(amount)- Deposit QSR for pillarzenon.embedded.pillar.withdrawQsr()- Withdraw deposited QSR
zenon.embedded.plasma.get(address)- Get plasma info for addresszenon.embedded.plasma.getEntriesByAddress(address, pageIndex, pageSize)- Get plasma entries for addresszenon.embedded.plasma.getRequiredPoWForAccountBlock(powParam)- Calculate PoW requirementszenon.embedded.plasma.fuse(address, amount)- Fuse QSR to the given addresszenon.embedded.plasma.cancel(hash)- Cancel the given fusion hash
zenon.embedded.sentinel.getAllActive(pageIndex, pageSize)- Get active sentinels with paginationzenon.embedded.sentinel.getByOwner(owner)- Get sentinel info by ownerzenon.embedded.sentinel.getDepositedQsr(address)- Get deposited QSRzenon.embedded.sentinel.getUncollectedReward(address)- Get uncollected sentinel rewardszenon.embedded.sentinel.getFrontierRewardByPage(address, pageIndex, pageSize)- Get sentinel reward history by pagezenon.embedded.sentinel.register()- Register a sentinelzenon.embedded.sentinel.revoke()- Revoke a sentinelzenon.embedded.sentinel.collectRewards()- Collect sentinel rewardszenon.embedded.sentinel.depositQsr(amount)- Deposit QSR for sentinelzenon.embedded.sentinel.withdrawQsr()- Withdraw deposited QSR
zenon.embedded.spork.getAll(pageIndex, pageSize)- Get sporks with paginationzenon.embedded.spork.createSpork(name, description)- Create a new sporkzenon.embedded.spork.activateSpork(id)- Activate a spork
zenon.embedded.stake.getEntriesByAddress(address, pageIndex, pageSize)- Get stake entries for addresszenon.embedded.stake.getUncollectedReward(address)- Get uncollected stake rewardszenon.embedded.stake.getFrontierRewardByPage(address, pageIndex, pageSize)- Get stake reward history by pagezenon.embedded.stake.stake(durationInSec, amount)- Stake ZNN for a durationzenon.embedded.stake.cancel(id)- Cancel a stake entryzenon.embedded.stake.collectReward()- Collect stake rewards
zenon.embedded.swap.getAssetsByKeyIdHash(keyIdHash)- Get swap assets by key id hashzenon.embedded.swap.getAssets()- Get all swap assetszenon.embedded.swap.getLegacyPillars()- Get legacy pillar swap listzenon.embedded.swap.retrieveAssets(pubKey, signature)- Retrieve swap assets
zenon.embedded.token.getAll(pageIndex, pageSize)- Get all tokens with paginationzenon.embedded.token.getByOwner(address, pageIndex, pageSize)- Get tokens by owner with paginationzenon.embedded.token.getByZts(tokenStandard)- Get token by standardzenon.embedded.token.issueToken(tokenName, tokenSymbol, tokenDomain, totalSupply, maxSupply, decimals, mintable, burnable, utility)- Issue a new tokenzenon.embedded.token.mint(tokenStandard, amount, receiveAddress)- Mint tokens to addresszenon.embedded.token.burnToken(tokenStandard, amount)- Burn tokenszenon.embedded.token.updateToken(tokenStandard, owner, isMintable, isBurnable)- Update token settings
All async methods may throw errors. Always use try/catch:
try {
const info = await zenon.ledger.getAccountInfoByAddress(address);
console.log(info);
} catch (error) {
console.error('Error:', error.message);
}Access blockchain data via zenon.ledger.
getUnconfirmedBlocksByAddress(address: Address, pageIndex: number, pageSize: number): Promise<AccountBlockList>
Get unconfirmed blocks (memory pool) for an address.
const unconfirmed = await zenon.ledger.getUnconfirmedBlocksByAddress(address, 0, 10);
for (const block of unconfirmed.list) {
console.log('Unconfirmed:', block.hash.toString());
}getUnreceivedBlocksByAddress(address: Address, pageIndex: number, pageSize: number): Promise<AccountBlockList>
Get unreceived blocks (pending incoming transactions) for an address.
const unreceived = await zenon.ledger.getUnreceivedBlocksByAddress(address, 0, 10);
for (const block of unreceived.list) {
console.log('Unreceived:', block.hash.toString());
}Get the most recent account block for an address.
const address = Address.parse('z1qr...');
const block = await zenon.ledger.getFrontierAccountBlock(address);
console.log('Height:', block.height);
console.log('Hash:', block.hash.toString());Get a specific account block by its hash.
const hash = Hash.parse('abc123...');
const block = await zenon.ledger.getAccountBlockByHash(hash);getAccountBlocksByHeight(address: Address, height: number, count: number): Promise<AccountBlockList>
Get account blocks for an address starting at a specific height.
const blocks = await zenon.ledger.getAccountBlocksByHeight(address, 1, 10);
console.log('Retrieved', blocks.list.length, 'blocks');getAccountBlocksByPage(address: Address, pageIndex: number, pageSize: number): Promise<AccountBlockList>
Get account blocks for an address using pagination.
const blocks = await zenon.ledger.getAccountBlocksByPage(address, 0, 10);
console.log('Retrieved', blocks.list.length, 'blocks');Get account balance and information.
const address = Address.parse('z1qr...');
const info = await zenon.ledger.getAccountInfoByAddress(address);
console.log('Address:', info.address.toString());
console.log('Tokens:', info.balanceInfoMap);Get the latest momentum (block of blocks).
const momentum = await zenon.ledger.getFrontierMomentum();
console.log('Height:', momentum.height);
console.log('Hash:', momentum.hash.toString());
console.log('Timestamp:', momentum.timestamp);Get the most recent momentum before a Unix timestamp.
const momentum = await zenon.ledger.getMomentumBeforeTime(1710000000);
console.log(momentum?.height);Get a momentum by its hash.
const hash = Hash.parse('abc123...');
const momentum = await zenon.ledger.getMomentumByHash(hash);
console.log(momentum?.height);Get momentums starting at a specific height.
const momentums = await zenon.ledger.getMomentumsByHeight(100000, 10);
for (const m of momentums.list) {
console.log('Momentum:', m.height, m.hash.toString());
}Get momentums using pagination.
const momentums = await zenon.ledger.getMomentumsByPage(0, 10);
console.log('Retrieved', momentums.list.length, 'momentums');Get detailed momentums (includes account blocks).
const detailed = await zenon.ledger.getDetailedMomentumsByHeight(100000, 2);
console.log('Retrieved', detailed?.list.length);Publish a signed transaction to the network.
// Usually you use zenon.send() instead
const published = await zenon.ledger.publishRawTransaction(signedBlock);
console.log('Published:', published.hash.toString());Real-time subscriptions via WebSocket. Available on zenon.subscribe.
Note: Requires WebSocket connection (wss:// or ws://).
Subscribe to new momentums.
const stream = await zenon.subscribe.toMomentums();
stream.onNotification((data) => {
const momentum = data[0];
console.log('New momentum:', momentum);
});Subscribe to all account blocks on the network.
const stream = await zenon.subscribe.toAllAccountBlocks();
stream.onNotification((data) => {
const block = data[0];
console.log('New block:', block);
});Subscribe to account blocks for a specific address.
const address = Address.parse('z1qr...');
const stream = await zenon.subscribe.toAccountBlocksByAddress(address);
stream.onNotification((data) => {
const block = data[0];
console.log('Block for address:', block);
});Subscribe to unreceived blocks for a specific address.
const stream = await zenon.subscribe.toUnreceivedAccountBlocksByAddress(address);
stream.onNotification((data) => {
const block = data[0];
console.log('Incoming transaction:', block);
// Auto-receive
const receiveBlock = AccountBlockTemplate.receive(block.hash);
zenon.send(receiveBlock, keyPair);
});Get node statistics via zenon.stats.
Get network information.
const info = await zenon.stats.networkInfo();
console.log('Network ID:', info.networkId);
console.log('Chain ID:', info.chainId);Get node operating system information.
const osInfo = await zenon.stats.osInfo();
console.log('OS:', osInfo.os);
console.log('Platform:', osInfo.platform);Get node process information.
const processInfo = await zenon.stats.processInfo();
console.log('Version:', processInfo.version);
console.log('Commit:', processInfo.commit);Get sync status.
const syncInfo = await zenon.stats.syncInfo();
console.log('State:', syncInfo.state);
console.log('Current height:', syncInfo.currentHeight);
console.log('Target height:', syncInfo.targetHeight);- Examples – Complete working examples
- Utilities – Utilities and constants for common tasks
- CLI Tool - Command-line interface
- Wallet Management – Creating and managing wallets
- Building WASM – Rebuilding the PoW module from source