import 'dotenv/config';
import { RWA, Chain,
type SDKInit,
type GetIdentity,
type IssueKycClaim,
type AddClaimToIdentity } from '@peaq-network/rwa';
import { JsonRpcProvider, Wallet } from 'ethers';
async function main() {
// 0. Create RWA instance and provider
const provider = new JsonRpcProvider(process.env.HTTPS_BASE_URL);
const init: SDKInit = { chainId: Chain.AGUNG, provider: provider };
const rwa_sdk = new RWA(init);
// 1. Claim Issuer admin wallet
const claimIssuer = new Wallet(process.env.CLAIM_ISSUER_PRIVATE_KEY!, provider);
// 2. Get User to KYC
const getIdentity: GetIdentity = { subject: process.env.ALICE_PUBLIC_ADDRESS! };
const alice = await rwa_sdk.onchainid.getIdentity(getIdentity);
// 3. Create claim + signature
const issueKycClaim: IssueKycClaim = {
claimIssuerSigner: claimIssuer,
claimIssuerContract: process.env.CLAIM_ISSUER_CONTRACT_ADDRESS!,
subjectIdentity: alice.identity,
name: 'Alice',
lastName: 'Doe',
dateOfBirth: '1990-01-01',
placeOfBirth: 'New York',
uri: 'https://example.com/kyc'
}
const { claim, signature } = await rwa_sdk.onchainid.issueKycClaim(issueKycClaim);
// 4. Identity owner signs and submits addClaim
const aliceSigner = new Wallet(process.env.ALICE_PRIVATE_KEY!, provider);
const addClaimToIdentity: AddClaimToIdentity = {
subjectIdentity: alice.identity,
identityController: aliceSigner,
claim: claim,
claimSignature: signature,
}
const { receipt, status, claimId } = await rwa_sdk.onchainid.addClaimToIdentity(addClaimToIdentity);
console.log('Add claim result:', { status, claimId, receipt });
}
main().catch((err) => {
console.error(err);
process.exit(1);
});