Skip to content

Documentation / @cashconnect-js/templates-dev / blockchain/base-blockchain

BlockchainEvents

ts
type BlockchainEvents = object;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:19

Properties

isConnectedUpdated

ts
isConnectedUpdated: boolean;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:20

blockHeightUpdated

ts
blockHeightUpdated: number | undefined;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:21


abstract BaseBlockchain

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:35

Abstract base class representing a blockchain interface implementation. Extends EventEmitter to provide blockchain-specific event handling capabilities.

This class serves as a template for concrete blockchain implementations, providing a standardized interface for common blockchain operations such as fetching transactions, managing UTXOs, and handling blockchain subscriptions.

Extends

Extended by

Type Parameters

Type ParameterDefault type
AddressNotificationPayloadundefined
TransactionNotificationPayloadundefined

Constructors

Constructor

ts
new BaseBlockchain<AddressNotificationPayload, TransactionNotificationPayload>(): BaseBlockchain<AddressNotificationPayload, TransactionNotificationPayload>;
Returns

BaseBlockchain<AddressNotificationPayload, TransactionNotificationPayload>

Inherited from
ts
EventEmitter<BlockchainEvents>.constructor

Methods

start()

ts
abstract start(): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:56

Initializes the blockchain connection and required resources. Should be called before performing any blockchain operations.

Returns

Promise<void>

A promise that resolves when the blockchain connection is established

Throws

If the connection cannot be established

stop()

ts
abstract stop(): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:64

Gracefully terminates the blockchain connection and cleans up resources. Should be called when blockchain operations are no longer needed.

Returns

Promise<void>

A promise that resolves when the shutdown is complete

fetchUTXO()

ts
abstract fetchUTXO(outpoint): Promise<Output>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:70

Parameters
ParameterType
outpointstring | Outpoint
Returns

Promise<Output>

fetchUTXOs()

ts
abstract fetchUTXOs(address): Promise<BlockchainUTXOs>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:79

Retrieves all unspent transaction outputs (UTXOs) for a given address.

Parameters
ParameterTypeDescription
addressstringThe blockchain address to query
Returns

Promise<BlockchainUTXOs>

A promise that resolves with the unspent outputs

Throws

If the address is invalid or the query fails

fetchAddressHistory()

ts
abstract fetchAddressHistory(address): Promise<BlockchainTransactions>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:88

Retrieves all transactions associated with a specific address.

Parameters
ParameterTypeDescription
addressstringThe blockchain address to query
Returns

Promise<BlockchainTransactions>

A promise that resolves with the list of transactions

Throws

If the address is invalid or the query fails

fetchBlockHeader()

ts
abstract fetchBlockHeader(blockHeight): Promise<BlockHeader>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:99

Retrieves the Block Header at the given height.

Parameters
ParameterTypeDescription
blockHeightnumberThe block height of the header to retrieve
Returns

Promise<BlockHeader>

A promise that resolves with the Block Header

Throws

If the block number is invalid or the query fails

fetchChainTip()

ts
abstract fetchChainTip(): Promise<BlockchainChainTip>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:107

Retrieves the current chain tip block.

Returns

Promise<BlockchainChainTip>

A promise that resolves with the current chain tip

Throws

If the chain tip cannot be retrieved

fetchTransaction()

ts
abstract fetchTransaction(txHash): Promise<Transaction>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:116

Retrieves detailed information about a specific transaction.

Parameters
ParameterTypeDescription
txHashstring | Uint8Array<ArrayBufferLike>The transaction hash/ID to look up
Returns

Promise<Transaction>

A promise that resolves with the transaction details

Throws

If the transaction cannot be found or the query fails

broadcastTransaction()

ts
abstract broadcastTransaction(transaction): Promise<Transaction>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:125

Broadcasts a raw transaction to the blockchain network.

Parameters
ParameterTypeDescription
transaction| string | Transaction | Uint8Array<ArrayBufferLike> | TransactionBCHThe serialized transaction data to broadcast
Returns

Promise<Transaction>

A promise that resolves when the transaction is successfully broadcast

Throws

If the transaction is invalid or broadcasting fails

subscribeLockscript()

ts
abstract subscribeLockscript(lockscript, callback): Promise<BlockchainUnsubscribeCallback>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:138

Subscribes to updates for a specific lockscript. The provided callback will be invoked when relevant events occur for the address.

Parameters
ParameterTypeDescription
lockscriptstring | Uint8Array<ArrayBufferLike>The blockchain lockscript to monitor
callbackBlockchainCallback<AddressNotificationPayload>The callback function to handle address-related events
Returns

Promise<BlockchainUnsubscribeCallback>

A promise that resolves when the subscription is established

Throws

If the subscription cannot be created

unsubscribeLockscript()

ts
abstract unsubscribeLockscript(lockscript, callback): Promise<boolean>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:151

Removes a subscription for a specific blockchain address.

Parameters
ParameterTypeDescription
lockscriptstring | Uint8Array<ArrayBufferLike>The blockchain lockscript to unsubscribe from
callbackBlockchainCallback<AddressNotificationPayload>The callback function to remove
Returns

Promise<boolean>

A promise that resolves when the subscription is removed

Throws

If the subscription cannot be removed

subscribeAddress()

ts
abstract subscribeAddress(address, callback): Promise<BlockchainUnsubscribeCallback>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:165

Subscribes to updates for a specific blockchain address. The provided callback will be invoked when relevant events occur for the address.

Parameters
ParameterTypeDescription
addressstringThe blockchain address to monitor
callbackBlockchainCallback<AddressNotificationPayload>The callback function to handle address-related events
Returns

Promise<BlockchainUnsubscribeCallback>

A promise that resolves when the subscription is established

Throws

If the subscription cannot be created

unsubscribeAddress()

ts
abstract unsubscribeAddress(address, callback): Promise<boolean>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:178

Removes a subscription for a specific blockchain address.

Parameters
ParameterTypeDescription
addressstringThe blockchain address to unsubscribe from
callbackBlockchainCallback<AddressNotificationPayload>The callback function to remove
Returns

Promise<boolean>

A promise that resolves when the subscription is removed

Throws

If the subscription cannot be removed

subscribeTransaction()

ts
abstract subscribeTransaction(transactionHash, callback): Promise<BlockchainUnsubscribeCallback>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:192

Subscribes to updates for a specific transaction. The provided callback will be invoked when relevant events occur for the transaction.

Parameters
ParameterTypeDescription
transactionHashstringThe transaction hash to monitor
callbackBlockchainCallback<TransactionNotificationPayload>The callback function to handle transaction-related events
Returns

Promise<BlockchainUnsubscribeCallback>

A promise that resolves when the subscription is established

Throws

If the subscription cannot be created

unsubscribeTransaction()

ts
abstract unsubscribeTransaction(transactionHash, callback): Promise<boolean>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:205

Removes a subscription for a specific transaction.

Parameters
ParameterTypeDescription
transactionHashstringThe transaction hash to unsubscribe from
callbackBlockchainCallback<TransactionNotificationPayload>The callback function to remove
Returns

Promise<boolean>

A promise that resolves when the subscription is removed

Throws

If the subscription cannot be removed

broadcastTransactions()

ts
broadcastTransactions(transactions): Promise<Transaction[]>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:210

Parameters
ParameterType
transactions( | string | Transaction | Uint8Array<ArrayBufferLike> | TransactionBCH)[]
Returns

Promise<Transaction[]>

waitForTransaction()

ts
waitForTransaction(tx, timeoutMs): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:232

Waits for a transaction to be seen by the node.

Parameters
ParameterTypeDefault valueDescription
tx| string | Transaction | Uint8Array<ArrayBufferLike> | TransactionBCHundefinedThe transaction to wait for. Can be a Uint8Array, Transaction instance, or a string.
timeoutMsnumber10_000The maximum time to wait in milliseconds before timing out. Defaults to 10,000ms (10 seconds).
Returns

Promise<void>

A Promise that resolves when the transaction is seen by the node or rejects if the timeout is reached.

Throws

Error if the transaction is not seen by the node within the specified timeout.

waitForTransactionHash()

ts
waitForTransactionHash(txHash, timeoutMs): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:242

Parameters
ParameterTypeDefault value
txHashstring | TransactionHash | Uint8Array<ArrayBufferLike>undefined
timeoutMsnumber10_000
Returns

Promise<void>

on()

ts
on<K>(
   type, 
   listener, 
   debounceMilliseconds?): OffCallback;

Defined in: packages/core/dist/primitives.d.ts:593

Registers a listener for the specified event type.

Type Parameters
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to listen for
listenerListener<BlockchainEvents[K]>The function to call when the event is emitted
debounceMilliseconds?numberOptional debounce time in milliseconds
Returns

OffCallback

A callback function that can be used to unregister this listener

Example
typescript
const off = emitter.on('data-change', (data) => {
  console.log('Data updated:', data);
}, 300); // Debounce for 300ms

// Later, unregister the listener
off();
Inherited from
ts
EventEmitter.on

once()

ts
once<K>(
   type, 
   listener, 
   debounceMilliseconds?): OffCallback;

Defined in: packages/core/dist/primitives.d.ts:611

Registers a one-time listener for the specified event type. The listener will be automatically removed after being called once.

Type Parameters
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to listen for
listenerListener<BlockchainEvents[K]>The function to call when the event is emitted
debounceMilliseconds?numberOptional debounce time in milliseconds
Returns

OffCallback

A callback function that can be used to unregister this listener before it fires

Example
typescript
emitter.once('user-login', ({ userId }) => {
  console.log(`Welcome ${userId}! This will only show once.`);
});
Inherited from
ts
EventEmitter.once

off()

ts
off<K>(type, listener): void;

Defined in: packages/core/dist/primitives.d.ts:626

Removes a specific listener for the given event type.

Type Parameters
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to remove the listener from
listenerListener<BlockchainEvents[K]>The listener function to remove
Returns

void

Example
typescript
const handler = (data) => console.log(data);
emitter.on('test', handler);
emitter.off('test', handler); // Removes the listener
Inherited from
ts
EventEmitter.off

emit()

ts
emit<K>(type, payload): boolean;

Defined in: packages/core/dist/primitives.d.ts:648

Emits an event of the specified type with the given payload. All registered listeners for this event type will be called.

Type Parameters
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to emit
payloadBlockchainEvents[K]The data to pass to all listeners
Returns

boolean

true if there were listeners for this event, false otherwise

Example
typescript
const hasListeners = emitter.emit('user-login', {
  userId: '123',
  timestamp: Date.now()
});

if (!hasListeners) {
  console.log('No one was listening for user-login events');
}
Inherited from
ts
EventEmitter.emit

removeAllListeners()

ts
removeAllListeners(): void;

Defined in: packages/core/dist/primitives.d.ts:659

Removes all listeners for all events. This effectively resets the EventEmitter to its initial state.

Returns

void

Example
typescript
emitter.removeAllListeners();
// All previously registered listeners are now gone
Inherited from
ts
EventEmitter.removeAllListeners

waitFor()

ts
waitFor<K>(
   type, 
   predicate, 
   timeoutMs?): Promise<BlockchainEvents[K]>;

Defined in: packages/core/dist/primitives.d.ts:685

Returns a Promise that resolves when an event of the specified type is emitted and matches the given predicate.

Type Parameters
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to wait for
predicate(payload) => booleanA function that determines if the event payload matches what we're waiting for
timeoutMs?numberOptional timeout in milliseconds. If specified, the promise will reject after this time
Returns

Promise<BlockchainEvents[K]>

A Promise that resolves with the event payload when the condition is met

Throws

If the timeout is reached before a matching event occurs

Example
typescript
try {
  const loginData = await emitter.waitFor(
    'user-login',
    ({ userId }) => userId === 'admin',
    5000 // Wait up to 5 seconds
  );
  console.log('Admin logged in:', loginData);
} catch (error) {
  console.log('Timeout: Admin never logged in');
}
Inherited from
ts
EventEmitter.waitFor