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