UNPKG

@standard-crypto/farcaster-js-neynar

Version:

A tool for interacting with Farcaster via Neynar APIs.

65 lines 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitForNeynarSignerApproval = exports.mnemonicToAddress = exports.generateSignature = void 0; /* eslint-disable eslint-comments/disable-enable-pair */ /* eslint-disable no-console */ const accounts_1 = require("viem/accounts"); const index_js_1 = require("./v2/index.js"); async function generateSignature(publicKey, appFid, accountMnemonic, deadline) { // DO NOT CHANGE ANY VALUES IN THIS CONSTANT const SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_DOMAIN = { name: 'Farcaster SignedKeyRequestValidator', version: '1', chainId: 10, verifyingContract: '0x00000000fc700472606ed4fa22623acf62c60553', }; // DO NOT CHANGE ANY VALUES IN THIS CONSTANT const SIGNED_KEY_REQUEST_TYPE = [ { name: 'requestFid', type: 'uint256' }, { name: 'key', type: 'bytes' }, { name: 'deadline', type: 'uint256' }, ]; const account = (0, accounts_1.mnemonicToAccount)(accountMnemonic); // Generates the signature const signature = await account.signTypedData({ domain: SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_DOMAIN, types: { SignedKeyRequest: SIGNED_KEY_REQUEST_TYPE, }, primaryType: 'SignedKeyRequest', message: { requestFid: BigInt(appFid), key: publicKey, deadline: BigInt(deadline), }, }); return signature; } exports.generateSignature = generateSignature; function mnemonicToAddress(mnemonic) { const account = (0, accounts_1.mnemonicToAccount)(mnemonic); return account.address; } exports.mnemonicToAddress = mnemonicToAddress; async function waitForNeynarSignerApproval(client, signerUuid) { let signerStatus = index_js_1.SignerStatusEnum.PendingApproval; while (signerStatus === index_js_1.SignerStatusEnum.PendingApproval) { const signer = await client.v2.fetchSigner(signerUuid); if (signer?.status === undefined) { break; } signerStatus = signer.status; // wait 10 seconds await new Promise(resolve => setTimeout(resolve, 10000)); } if (signerStatus === index_js_1.SignerStatusEnum.Approved) { console.log('Approved! Now you can start using this signer.'); console.log(`Signer UUID: ${signerUuid}`); } else { const signerStatusString = signerStatus.toString(); console.log(`Something went wrong. Signer ${signerUuid} has status ${signerStatusString}`); } } exports.waitForNeynarSignerApproval = waitForNeynarSignerApproval; //# sourceMappingURL=utils.js.map