@apexfusionfoundation/blockfrost-js
Version:
A JavaScript/TypeScript SDK for interacting with the https://blockfrost.io API
198 lines (197 loc) • 8.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addressesUtxosAssetAll = exports.addressesUtxosAsset = exports.addressesUtxosAll = exports.addressesUtxos = exports.addressesTransactionsAll = exports.addressesTransactions = exports.addressesExtended = exports.addressesTotal = exports.addresses = void 0;
const utils_1 = require("../../../utils");
const errors_1 = require("../../../utils/errors");
/**
* Obtains information about a specific address.
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D/get | API docs for Specific address}
*
* @param address - Bech32 address
* @returns Information about a specific stake account.
*
*/
async function addresses(address) {
return new Promise((resolve, reject) => {
this.instance(`addresses/${address}`)
.then(resp => {
resolve(resp.body);
})
.catch(err => reject((0, errors_1.handleError)(err)));
});
}
exports.addresses = addresses;
/**
* Obtains aggregated details about transactions for a specific address
* (received assets, sent assets, number of transactions).
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1total/get | API docs for Address details}
*
* @param address - Bech32 address
* @returns Aggregated details about an address (received assets, sent assets, number of transactions)
*
*/
async function addressesTotal(address) {
return new Promise((resolve, reject) => {
this.instance(`addresses/${address}/total`)
.then(resp => {
resolve(resp.body);
})
.catch(err => reject((0, errors_1.handleError)(err)));
});
}
exports.addressesTotal = addressesTotal;
/**
* Obtains extended information about a specific address.
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~extended/get | API docs for Extended information of a specific address}
* @remarks Similar to `addresses` with the addition of `has_nft_onchain_metadata` and `decimals` fields in asset amounts.
*
* @param address - Bech32 address
* @returns Extended information about a specific address
*
*/
async function addressesExtended(address) {
return new Promise((resolve, reject) => {
this.instance(`addresses/${address}/extended`)
.then(resp => {
resolve(resp.body);
})
.catch(err => reject((0, errors_1.handleError)(err)));
});
}
exports.addressesExtended = addressesExtended;
/**
* Obtains transactions on the address.
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1transactions/get | API docs for Address transactions}
*
* @param address - Bech32 address
* @param pagination - Optional, Pagination options
* @param additionalOptions - Optional, Additional options such as cursor pagination
* @returns Extended information about a specific address
*
*/
async function addressesTransactions(address, pagination, additionalOptions) {
const additionalParams = (0, utils_1.getAdditionalParams)(additionalOptions);
const paginationOptions = (0, utils_1.getPaginationOptions)(pagination);
return new Promise((resolve, reject) => {
this.instance(`addresses/${address}/transactions`, {
searchParams: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
from: additionalParams.from,
to: additionalParams.to,
},
})
.then(resp => {
resolve(resp.body);
})
.catch(err => {
if (err && err.response && err.response.statusCode === 404) {
resolve([]);
}
reject((0, errors_1.handleError)(err));
});
});
}
exports.addressesTransactions = addressesTransactions;
/**
* Obtains all transactions on the address.
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1transactions/get | API docs for Address transactions}
* @remarks
* Variant of `addressesTransactions` method for fetching all pages with built-in requests batching
*
* @param address - Bech32 address
* @param allMethodOptions - Optional, Options for request batching
* @param additionalOptions - Optional, Additional options such as cursor pagination
* @returns Extended information about a specific address
*
*/
async function addressesTransactionsAll(address, allMethodOptions, additionalOptions) {
return (0, utils_1.paginateMethod)((pagination, additionalOptions) => this.addressesTransactions(address, pagination, additionalOptions), allMethodOptions, additionalOptions);
}
exports.addressesTransactionsAll = addressesTransactionsAll;
/**
* Obtains UTXOs of the address
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1utxos/get | API docs for Address UTXOs}
*
* @param address - Bech32 address
* @param pagination - Optional, Pagination options
* @returns UTXOs of the address
*
*/
async function addressesUtxos(address, pagination) {
const paginationOptions = (0, utils_1.getPaginationOptions)(pagination);
return new Promise((resolve, reject) => {
this.instance(`addresses/${address}/utxos`, {
searchParams: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.body);
})
.catch(err => reject((0, errors_1.handleError)(err)));
});
}
exports.addressesUtxos = addressesUtxos;
/**
* Obtains all UTXOs of the address
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1utxos/get | API docs for Address UTXOs}
* @remarks
* Variant of `addressesUtxos` method for fetching all pages with built-in requests batching
*
* @param address - Bech32 address
* @param allMethodOptions - Optional, Options for request batching
* @returns UTXOs of the address
*
*/
async function addressesUtxosAll(address, allMethodOptions) {
return (0, utils_1.paginateMethod)(pagination => this.addressesUtxos(address, pagination), allMethodOptions);
}
exports.addressesUtxosAll = addressesUtxosAll;
/**
* Obtains address's UTXOs containing a given asset (paginated)
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1utxos~1%7Basset%7D/get | API docs for Address UTXOs of a given asset}
*
* @param address - Bech32 address
* @param asset - Concatenation of the policy ID and hex-encoded asset name
* @param pagination - Optional, Pagination options
* @returns List of the address's utxos containing a given asset
*
*/
async function addressesUtxosAsset(address, asset, pagination) {
// TODO: test is missing since we can't guarantee that list of address's utxos won't change in the future
const paginationOptions = (0, utils_1.getPaginationOptions)(pagination);
return new Promise((resolve, reject) => {
this.instance(`addresses/${address}/utxos/${asset}`, {
searchParams: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.body);
})
.catch(err => reject((0, errors_1.handleError)(err)));
});
}
exports.addressesUtxosAsset = addressesUtxosAsset;
/**
* Obtains all address's UTXOs containing a given asset
* @see {@link https://docs.blockfrost.io/#tag/Cardano-Addresses/paths/~1addresses~1%7Baddress%7D~1utxos~1%7Basset%7D/get | API docs for Address UTXOs of a given asset}
* @remarks
* Variant of `addressesUtxosAsset` method for fetching all pages with built-in requests batching
*
* @param address - Bech32 address
* @param asset - Concatenation of the policy ID and hex-encoded asset name
* @param allMethodOptions - Optional, Options for request batching
* @returns List of the address's utxos containing a given asset
*
*/
async function addressesUtxosAssetAll(address, asset, allMethodOptions) {
return (0, utils_1.paginateMethod)(pagination => this.addressesUtxosAsset(address, asset, pagination), allMethodOptions);
}
exports.addressesUtxosAssetAll = addressesUtxosAssetAll;