JavaScriptimport { ProofportSDK } from '@zkproofport-app/sdk';
// Initialize SDK
const sdk = ProofportSDK.create();
// Set a wallet signer for challenge-signature auth
sdk.setSigner(yourWalletSigner);
// Create a proof request via relay
const relay = await sdk.createRelayRequest('coinbase_attestation', {
scope: 'myapp.com'
});
// Generate QR code for desktop users
const qrDataUrl = await sdk.generateQRCode(relay.deepLink);
// Wait over WebSocket. The relay always answers: completed,
// error, cancelled or expired (about 5 minutes after the request).
const result = await sdk.waitForProof(relay.requestId);
switch (result.status) {
case 'completed':
return verifyProof(result); // verify before trusting it
case 'error':
case 'failed': // older app versions
return showError(result.error, result.errorCode);
case 'cancelled': // declined in the app
return offerRetry();
case 'expired': // the app never answered
return offerRetry();
default:
throw new Error(`Unknown status ${result.status}`);
}