Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 19x 19x 19x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { BlockfrostClient } from '../blockfrost/BlockfrostClient';
import { BlockfrostProvider } from '../blockfrost/BlockfrostProvider';
import { Cardano, DRepInfo, DRepProvider, GetDRepInfoArgs, GetDRepsInfoArgs } from '@cardano-sdk/core';
import { Logger } from 'ts-log';
import type { Responses } from '@blockfrost/blockfrost-js';
export class BlockfrostDRepProvider extends BlockfrostProvider implements DRepProvider {
constructor(client: BlockfrostClient, logger: Logger) {
super(client, logger);
}
async getDRepInfo({ id }: GetDRepInfoArgs): Promise<DRepInfo> {
try {
const cip129DRepId = Cardano.DRepID.toCip129DRepID(id).toString();
const response = await this.request<Responses['drep']>(`governance/dreps/${cip129DRepId}`);
const amount = BigInt(response.amount);
const activeEpoch = response.active_epoch ? Cardano.EpochNo(response.active_epoch) : undefined;
const active = response.active;
const hasScript = response.has_script;
return {
active,
activeEpoch,
amount,
hasScript,
id
};
} catch (error) {
this.logger.error('getDRep failed', id);
throw this.toProviderError(error);
}
}
getDRepsInfo({ ids }: GetDRepsInfoArgs): Promise<DRepInfo[]> {
return Promise.all(ids.map((id) => this.getDRepInfo({ id })));
}
}
|