@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 +182 -0
- package/dist/index.d.mts +615 -0
- package/dist/index.d.ts +615 -0
- package/dist/index.js +1154 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1000 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +40 -0
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
|
+
```
|