adamant-api
Advanced tools
Changelog
[2.4.0] - 2024-05-30
api.voteForDelegate()
methodapi.voteForDelegate()
api.voteForDelegate()
Changelog
[2.3.1] - 2024-04-26
Changelog
[2.3.0] - 2024-03-01
transformTransactionQuery
function:
const transformed = transformTransactionQuery({
fromHeight: 7585271,
and: {
toHeight: 7586280,
},
or: {
senderId: 'U18132012621449491414',
},
});
/**
* {
* and:fromHeight: 7585271,
* and:toHeight: 7586280,
* or:senderId: 'U18132012621449491414'
* }
*/
console.log(transformed);
TypeScript: id
should have string
type in the methods: api.getTransaction()
, api.getQueuedTransaction()
, api.getUnconfirmedTransaction()
Global installation of packages that use adamant-api
as its dependency
Transaction query methods:
const blocks = await api.getTransactions({
fromHeight: 7585271,
and: {
toHeight: 7586280,
},
or: {
senderId: 'U18132012621449491414',
},
});
Changelog
[2.2.0] - 2023-12-01
Export validator utils:
function isPassphrase(passphrase: unknown): passphrase is string;
function isAdmAddress(address: unknown): address is AdamantAddress;
function isAdmPublicKey(publicKey: unknown): publicKey is string;
function isAdmVoteForPublicKey(publicKey: unknown): publicKey is string;
function isAdmVoteForAddress(address: unknown): boolean;
function isAdmVoteForDelegateName(
delegateName: unknown
): delegateName is string;
function validateMessage(
message: string,
messageType: MessageType = MessageType.Chat
): {success: false; error: string} | {success: true};
function isDelegateName(name: unknown): name is string;
function admToSats(amount: number): number;
Changelog
[2.1.0] - 2023-11-17
api.initSocket()
now accepts an instance of WebSocketClient
as an argument:
const socket = new WebSocketClient({
/* ... */
});
api.initSocket(socket);
// instead of
api.socket = socket;
Improved the encodeMessage()
and decodeMessage()
functions to accept public keys as Uint8Array or Buffer
import {encodeMessage, createKeypairFromPassphrase} from 'adamant-api'
const {publicKey} = createKeypairFromPassphrase('...')
const message = encodeMessage(,, publicKey) // No need to convert public key to string
decodeMessage()
allows passing a key pair instead of a passphrase:
import {decodeMessage, createKeypairFromPassphrase} from 'adamant-api'
const keyPair = createKeypairFromPassphrase('...')
const message = decodeMessage(,, keyPair,) // <- It won't create a key pair from passphrase again
TypeScript: Export transaction handlers TypeScript utils: SingleTransactionHandler
, AnyTransactionHandler
, TransactionHandler<T extends AnyTransaction>
TypeScript: Fixed typing for AdamantApiOptions
by adding LogLevelName
as possible value for logLevel
property.
For example, you can now use 'log'
instead of LogLevel.Log
in TypeScript:
const api = new AdamantApi({/* ... */ logLevel: 'log'});
TypeScript: Added missing declaration modules to npm that led to the error:
Could not find a declaration file for module 'coininfo'.
/// <reference path="../../types/coininfo.d.ts" />
TypeScript: amount
property in ChatTransactionData
(createChatTransaction()
argument) is now truly optional:
- amount: number | undefined;
+ amount?: number;
Changelog
[2.0.0] - 2023-10-12
TypeScript support
The project was fully rewritten in TypeScript, which means it supports typings now.
See examples directory.
More API methods
Added more API methods:
// before
const block = await api.get('blocks/get', {id});
// after
const block = await api.getBlock(id);
and post()
method:
await api.post('transactions/process', {transaction});
getTransactionId() method
Pass signed transaction with signature to get a transaction id as a string:
import {getTransactionId} from 'adamant-api';
const id = getTransactionId(signedTransaction);
See documentation for more information.
Creating multiple instances
Previously, it was not possible to create multiple instances due to the storage of Logger and "Node Manager" data in the modules.
Importing module several times
Fixed a bug where importing adamant-api-jsclient caused issues when it was also imported as a dependency.
API Initialization
Now you will create new instances of adamant-api
using keyword new
:
import {AdamantApi} from 'adamant-api';
const api = new AdamantApi({
nodes: [
/* ... */
],
});
Socket Initialization
Replace api.socket.initSocket()
with api.initSocket()
.
Use api.socket.on()
instead of .initSocket({ onNewMessage() {} })
.
// before
api.socket.initSocket({
admAddress: 'U1234..',
onNewMessage(transaction) {
// ...
},
});
// after
api.initSocket({admAddress: 'U1234..'});
api.socket.on((transaction: AnyTransaction) => {
// ...
});
Or specify socket
option when initializing API:
// socket.ts
import {WebSocketClient, TransactionType} from 'adamant-api';
const socket = new WebSocketClient({admAddress: 'U1234..'});
socket.on(
[TransactionType.CHAT_MESSAGE, TransactionType.SEND],
transaction => {
// handle chat messages and transfer tokens transactions
}
);
socket.on(TransactionType.VOTE, transaction => {
// handle vote for delegate transaction
});
export {socket};
// api.ts
import {AdamantApi} from 'adamant-api';
import {socket} from './socket';
export const api = new AdamantApi({
socket,
nodes: [
/* ... */
],
});
createTransaction()
Use createSendTransaction
, createStateTransaction
, createChatTransaction
, createDelegateTransaction
, createVoteTransaction
methods instead.