import type { BN } from '@project-serum/anchor';
import { utils } from '@project-serum/anchor';
import * as web3 from '@solana/web3.js';

import { BLAZE_ADDRESS, BLAZE_PREFIX, IDENTIFIER_PREFIX } from './constants';

/**
 * Finds the blaze id.
 * @returns
 */
export const findBlazeId = async (
  identifier: BN
): Promise<[web3.PublicKey, number]> => {
  return web3.PublicKey.findProgramAddress(
    [
      utils.bytes.utf8.encode(BLAZE_PREFIX),
      identifier.toArrayLike(Buffer, 'le', 8)
    ],
    BLAZE_ADDRESS
  );
};

/**
 * Finds the identifier id.
 * @returns
 */
export const findIdentifierId = async (): Promise<[web3.PublicKey, number]> => {
  return web3.PublicKey.findProgramAddress(
    [utils.bytes.utf8.encode(IDENTIFIER_PREFIX)],
    BLAZE_ADDRESS
  );
};
