@yoroi/api
Version:
The API package of Yoroi SDK
41 lines (40 loc) • 1.19 kB
JavaScript
;
import { createTypeGuardFromSchema, fetcher } from '@yoroi/common';
import { z } from 'zod';
export const getUtxoData = (baseUrl, request = fetcher) => async ({
txHash,
txIndex
}) => {
return request({
url: `${baseUrl}/api/txs/io/${txHash}/o/${txIndex}`,
data: undefined,
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
}).then(response => {
const parsedResponse = parseUtxoDataResponse(response);
if (!parsedResponse) return Promise.reject(new Error('Invalid utxo data response'));
return Promise.resolve(parsedResponse);
});
};
export const parseUtxoDataResponse = data => {
return isUtxosDataResponse(data) ? data : undefined;
};
const AssetSchema = z.object({
assetId: z.string(),
policyId: z.string(),
name: z.string(),
amount: z.string()
});
const UtxoDataSchema = z.object({
output: z.object({
address: z.string(),
amount: z.string(),
dataHash: z.string().nullable(),
assets: z.array(AssetSchema)
}),
spendingTxHash: z.string().nullable().optional()
});
export const isUtxosDataResponse = createTypeGuardFromSchema(UtxoDataSchema);
//# sourceMappingURL=utxo-data.js.map