@awarizon/sdk 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,182 @@
1
+ # @awarizon/sdk
2
+
3
+ TypeScript SDK for the Awarizon Layer 1 blockchain.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @awarizon/sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { connect, getNetworkStats, formatRiz } from '@awarizon/sdk'
15
+
16
+ const client = await connect('ws://127.0.0.1:9944')
17
+ const api = client.getApi()
18
+
19
+ const stats = await getNetworkStats(api)
20
+ console.log('Active campaigns:', stats.active_campaigns)
21
+
22
+ const balance = await client.getBalance('5GrwvaEF5zXb26Fz9rcQpDWS57...')
23
+ console.log('Balance:', formatRiz(balance), 'RIZ')
24
+
25
+ await client.disconnect()
26
+ ```
27
+
28
+ ## Constants Reference
29
+
30
+ | Constant | Value | Description |
31
+ |---|---|---|
32
+ | `RIZ` | `1_000_000_000_000n` | 1 RIZ in planck units |
33
+ | `MILLI_RIZ` | `1_000_000_000n` | 0.001 RIZ |
34
+ | `MICRO_RIZ` | `1_000_000n` | 0.000001 RIZ |
35
+ | `BLOCK_TIME_SECONDS` | `3` | Target block time |
36
+ | `EPOCH_LENGTH_BLOCKS` | `28_800` | Blocks per epoch (~1 day) |
37
+ | `MIN_SESSION_SECONDS` | `120` | Minimum engagement session |
38
+ | `MIN_INTERACTIONS` | `5` | Minimum engagement interactions |
39
+ | `MIN_CAMPAIGN_DURATION_DAYS` | `1` | Minimum campaign duration |
40
+ | `MAX_CAMPAIGN_DURATION_DAYS` | `90` | Maximum campaign duration |
41
+ | `DEVELOPER_MIN_TENURE_DAYS` | `30` | Minimum developer tenure |
42
+
43
+ ## Utility Functions
44
+
45
+ ```typescript
46
+ import { formatRiz, parseRiz, blocksToTime, generateCampaignId } from '@awarizon/sdk'
47
+
48
+ formatRiz(1_000_000_000_000n) // "1.0000"
49
+ formatRiz(1_500_000_000_000n, 2) // "1.50"
50
+ parseRiz("1.5") // 1_500_000_000_000n
51
+ blocksToTime(28800) // "1d"
52
+ generateCampaignId('0xabc...') // "0x<hash_prefix><timestamp>"
53
+ ```
54
+
55
+ ## RPC Methods
56
+
57
+ All 15 custom Awarizon RPC methods are available as typed async functions.
58
+
59
+ ```typescript
60
+ import {
61
+ getNetworkStats, // () → NetworkStats
62
+ getTokenStats, // () → TokenStats
63
+ getActiveCampaignCount, // () → bigint
64
+ getActiveValidators, // () → string[]
65
+ getValidatorCount, // () → number
66
+ getValidatorPerformance,// (account) → ValidatorPerformanceResponse | null
67
+ getDeveloperProfile, // (account) → DeveloperProfile | null
68
+ getDeveloperCampaigns, // (account) → string[]
69
+ getDeveloperManifests, // (account) → string[]
70
+ getCampaign, // (campaignId) → Campaign | null
71
+ getCampaignDeliveryStatus, // (campaignId) → CampaignDeliveryStatus | null
72
+ getInboxCount, // (wallet) → number
73
+ getInboxRecord, // (wallet, recordId) → InboxRecord | null
74
+ getWalletTargetingProfile, // (wallet) → WalletTargetingProfile
75
+ checkCampaignMatch, // (campaignId, wallet) → boolean
76
+ } from '@awarizon/sdk'
77
+ ```
78
+
79
+ ## Extrinsic Builders
80
+
81
+ ```typescript
82
+ import {
83
+ buildRegisterDeveloper, // () → SubmittableExtrinsic
84
+ buildStakeRiz, // (amount: bigint) → SubmittableExtrinsic
85
+ buildRegisterManifest, // (hash, category, uri) → SubmittableExtrinsic
86
+ buildCreateCampaign, // (id, hash, targeting, days, maxDeliveries)
87
+ buildTerminateCampaign, // (campaignId)
88
+ buildExpireCampaign, // (campaignId)
89
+ buildDeliverToInbox, // (wallet, campaignId, recordId)
90
+ buildDismissInboxRecord, // (recordId)
91
+ buildSubmitEngagement, // (recordId, sessionSecs, interactions)
92
+ buildClaimReward, // (recordId)
93
+ buildUpdateWalletIndex, // (ageDays, activity, categories, region)
94
+ buildBloomFilter, // (campaignId)
95
+ buildCheckWalletMatch, // (campaignId, wallet)
96
+ buildRunTargetingBatch, // (campaignId, wallets[])
97
+ buildRegisterValidator, // (selfStake, region, country)
98
+ buildDelegateStake, // (validator, amount)
99
+ buildUndelegateStake, // (validator)
100
+ buildUpdatePerformance, // (validator, uptime, finality, blocks)
101
+ buildRunEpochElection, // (epoch)
102
+ buildSlashValidator, // (validator, reason) — root only
103
+ buildCreateAsset, // (id, admin, minBalance)
104
+ buildMintAsset, // (id, beneficiary, amount)
105
+ buildTransferAsset, // (id, target, amount)
106
+ } from '@awarizon/sdk'
107
+ ```
108
+
109
+ ## Wallet Helpers
110
+
111
+ ```typescript
112
+ import { aliceKeypair, keypairFromMnemonic, signAndSend } from '@awarizon/sdk'
113
+ import { buildRegisterDeveloper } from '@awarizon/sdk'
114
+
115
+ const signer = aliceKeypair() // dev chain only
116
+ const tx = buildRegisterDeveloper(api)
117
+ const { blockHash, txHash } = await signAndSend(api, tx, signer)
118
+ ```
119
+
120
+ ## Error Handling
121
+
122
+ ```typescript
123
+ import { parseChainError, DeveloperNotFoundError } from '@awarizon/sdk'
124
+
125
+ try {
126
+ await signAndSend(api, tx, signer)
127
+ } catch (err) {
128
+ const sdkError = parseChainError(err)
129
+ if (sdkError instanceof DeveloperNotFoundError) {
130
+ console.log('Register as developer first')
131
+ }
132
+ }
133
+ ```
134
+
135
+ ## End-to-End Example
136
+
137
+ ```typescript
138
+ import {
139
+ connect, aliceKeypair, signAndSend,
140
+ buildRegisterDeveloper, buildStakeRiz, buildRegisterManifest,
141
+ buildCreateCampaign, buildDeliverToInbox,
142
+ buildSubmitEngagement, buildClaimReward,
143
+ generateCampaignId, parseRiz,
144
+ } from '@awarizon/sdk'
145
+
146
+ const client = await connect()
147
+ const api = client.getApi()
148
+ const alice = aliceKeypair()
149
+
150
+ // 1. Register as developer
151
+ await signAndSend(api, buildRegisterDeveloper(api), alice)
152
+
153
+ // 2. Stake RIZ to get verified
154
+ await signAndSend(api, buildStakeRiz(api, parseRiz('1000')), alice)
155
+
156
+ // 3. Register an app manifest
157
+ const manifestHash = '0x' + '01'.repeat(32)
158
+ await signAndSend(api, buildRegisterManifest(api, manifestHash, 'DeFi', 'ipfs://...'), alice)
159
+
160
+ // 4. Create a campaign
161
+ const campaignId = generateCampaignId(manifestHash)
162
+ await signAndSend(api, buildCreateCampaign(api, campaignId, manifestHash, {
163
+ wallet_age_min: 30, wallet_age_max: null,
164
+ riz_balance_min: null, riz_balance_max: null,
165
+ activity_min: null, activity_max: null,
166
+ region_codes: [], category_history: [],
167
+ custom_logic_hash: null,
168
+ }, 7, 1000n), alice)
169
+
170
+ // 5. Deliver to a wallet inbox
171
+ const bob = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty'
172
+ const recordId = '0x' + '02'.repeat(32)
173
+ await signAndSend(api, buildDeliverToInbox(api, bob, campaignId, recordId), alice)
174
+
175
+ // 6. User engages (signed by Bob's key)
176
+ // await signAndSend(api, buildSubmitEngagement(api, recordId, 120, 5), bob)
177
+
178
+ // 7. User claims reward
179
+ // await signAndSend(api, buildClaimReward(api, recordId), bob)
180
+
181
+ await client.disconnect()
182
+ ```