@standard-crypto/farcaster-js-neynar
Version:
A tool for interacting with Farcaster via Neynar APIs.
65 lines • 2.64 kB
JavaScript
;
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