@awarizon/sdk 2.0.1 → 2.1.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/dist/index.d.mts +54 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +52 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +52 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -405,6 +405,59 @@ declare const awarizonRpc: {
|
|
|
405
405
|
params: never[];
|
|
406
406
|
type: string;
|
|
407
407
|
};
|
|
408
|
+
getRecentTransactions: {
|
|
409
|
+
description: string;
|
|
410
|
+
params: never[];
|
|
411
|
+
type: string;
|
|
412
|
+
};
|
|
413
|
+
getBlockTransactions: {
|
|
414
|
+
description: string;
|
|
415
|
+
params: {
|
|
416
|
+
name: string;
|
|
417
|
+
type: string;
|
|
418
|
+
}[];
|
|
419
|
+
type: string;
|
|
420
|
+
};
|
|
421
|
+
getIdentity: {
|
|
422
|
+
description: string;
|
|
423
|
+
params: {
|
|
424
|
+
name: string;
|
|
425
|
+
type: string;
|
|
426
|
+
}[];
|
|
427
|
+
type: string;
|
|
428
|
+
};
|
|
429
|
+
lookupName: {
|
|
430
|
+
description: string;
|
|
431
|
+
params: {
|
|
432
|
+
name: string;
|
|
433
|
+
type: string;
|
|
434
|
+
}[];
|
|
435
|
+
type: string;
|
|
436
|
+
};
|
|
437
|
+
isNameAvailable: {
|
|
438
|
+
description: string;
|
|
439
|
+
params: {
|
|
440
|
+
name: string;
|
|
441
|
+
type: string;
|
|
442
|
+
}[];
|
|
443
|
+
type: string;
|
|
444
|
+
};
|
|
445
|
+
getTotalIdentities: {
|
|
446
|
+
description: string;
|
|
447
|
+
params: {
|
|
448
|
+
name: string;
|
|
449
|
+
type: string;
|
|
450
|
+
}[];
|
|
451
|
+
type: string;
|
|
452
|
+
};
|
|
453
|
+
getLinkedAddresses: {
|
|
454
|
+
description: string;
|
|
455
|
+
params: {
|
|
456
|
+
name: string;
|
|
457
|
+
type: string;
|
|
458
|
+
}[];
|
|
459
|
+
type: string;
|
|
460
|
+
};
|
|
408
461
|
};
|
|
409
462
|
};
|
|
410
463
|
|
|
@@ -498,6 +551,7 @@ declare function bobKeypair(): KeyringPair;
|
|
|
498
551
|
declare function signAndSend(api: ApiPromise, extrinsic: SubmittableExtrinsic<'promise', ISubmittableResult>, signer: KeyringPair): Promise<{
|
|
499
552
|
blockHash: string;
|
|
500
553
|
txHash: string;
|
|
554
|
+
blockNumber: number;
|
|
501
555
|
}>;
|
|
502
556
|
|
|
503
557
|
declare class AwarizonError extends Error {
|
package/dist/index.d.ts
CHANGED
|
@@ -405,6 +405,59 @@ declare const awarizonRpc: {
|
|
|
405
405
|
params: never[];
|
|
406
406
|
type: string;
|
|
407
407
|
};
|
|
408
|
+
getRecentTransactions: {
|
|
409
|
+
description: string;
|
|
410
|
+
params: never[];
|
|
411
|
+
type: string;
|
|
412
|
+
};
|
|
413
|
+
getBlockTransactions: {
|
|
414
|
+
description: string;
|
|
415
|
+
params: {
|
|
416
|
+
name: string;
|
|
417
|
+
type: string;
|
|
418
|
+
}[];
|
|
419
|
+
type: string;
|
|
420
|
+
};
|
|
421
|
+
getIdentity: {
|
|
422
|
+
description: string;
|
|
423
|
+
params: {
|
|
424
|
+
name: string;
|
|
425
|
+
type: string;
|
|
426
|
+
}[];
|
|
427
|
+
type: string;
|
|
428
|
+
};
|
|
429
|
+
lookupName: {
|
|
430
|
+
description: string;
|
|
431
|
+
params: {
|
|
432
|
+
name: string;
|
|
433
|
+
type: string;
|
|
434
|
+
}[];
|
|
435
|
+
type: string;
|
|
436
|
+
};
|
|
437
|
+
isNameAvailable: {
|
|
438
|
+
description: string;
|
|
439
|
+
params: {
|
|
440
|
+
name: string;
|
|
441
|
+
type: string;
|
|
442
|
+
}[];
|
|
443
|
+
type: string;
|
|
444
|
+
};
|
|
445
|
+
getTotalIdentities: {
|
|
446
|
+
description: string;
|
|
447
|
+
params: {
|
|
448
|
+
name: string;
|
|
449
|
+
type: string;
|
|
450
|
+
}[];
|
|
451
|
+
type: string;
|
|
452
|
+
};
|
|
453
|
+
getLinkedAddresses: {
|
|
454
|
+
description: string;
|
|
455
|
+
params: {
|
|
456
|
+
name: string;
|
|
457
|
+
type: string;
|
|
458
|
+
}[];
|
|
459
|
+
type: string;
|
|
460
|
+
};
|
|
408
461
|
};
|
|
409
462
|
};
|
|
410
463
|
|
|
@@ -498,6 +551,7 @@ declare function bobKeypair(): KeyringPair;
|
|
|
498
551
|
declare function signAndSend(api: ApiPromise, extrinsic: SubmittableExtrinsic<'promise', ISubmittableResult>, signer: KeyringPair): Promise<{
|
|
499
552
|
blockHash: string;
|
|
500
553
|
txHash: string;
|
|
554
|
+
blockNumber: number;
|
|
501
555
|
}>;
|
|
502
556
|
|
|
503
557
|
declare class AwarizonError extends Error {
|
package/dist/index.js
CHANGED
|
@@ -350,6 +350,55 @@ var awarizonRpc = {
|
|
|
350
350
|
description: "Get token issuance and engagement pool statistics",
|
|
351
351
|
params: [],
|
|
352
352
|
type: "Json"
|
|
353
|
+
},
|
|
354
|
+
getRecentTransactions: {
|
|
355
|
+
description: "Get recent transactions across the chain",
|
|
356
|
+
params: [],
|
|
357
|
+
type: "Json"
|
|
358
|
+
},
|
|
359
|
+
getBlockTransactions: {
|
|
360
|
+
description: "Get all transactions in a specific block",
|
|
361
|
+
params: [{ name: "block_number", type: "u32" }],
|
|
362
|
+
type: "Json"
|
|
363
|
+
},
|
|
364
|
+
// Identity endpoints
|
|
365
|
+
getIdentity: {
|
|
366
|
+
description: "Get identity record for an account",
|
|
367
|
+
params: [
|
|
368
|
+
{ name: "account", type: "Text" },
|
|
369
|
+
{ name: "at", type: "Option<Hash>" }
|
|
370
|
+
],
|
|
371
|
+
type: "Json"
|
|
372
|
+
},
|
|
373
|
+
lookupName: {
|
|
374
|
+
description: "Resolve a .riz name to an account and identity",
|
|
375
|
+
params: [
|
|
376
|
+
{ name: "name", type: "Text" },
|
|
377
|
+
{ name: "at", type: "Option<Hash>" }
|
|
378
|
+
],
|
|
379
|
+
type: "Json"
|
|
380
|
+
},
|
|
381
|
+
isNameAvailable: {
|
|
382
|
+
description: "Check if a .riz name is available to register",
|
|
383
|
+
params: [
|
|
384
|
+
{ name: "name", type: "Text" },
|
|
385
|
+
{ name: "at", type: "Option<Hash>" }
|
|
386
|
+
],
|
|
387
|
+
type: "bool"
|
|
388
|
+
},
|
|
389
|
+
getTotalIdentities: {
|
|
390
|
+
description: "Get total number of registered identities",
|
|
391
|
+
params: [{ name: "at", type: "Option<Hash>" }],
|
|
392
|
+
type: "u32"
|
|
393
|
+
},
|
|
394
|
+
// Links endpoints
|
|
395
|
+
getLinkedAddresses: {
|
|
396
|
+
description: "Get all linked external addresses for an account",
|
|
397
|
+
params: [
|
|
398
|
+
{ name: "account", type: "Text" },
|
|
399
|
+
{ name: "at", type: "Option<Hash>" }
|
|
400
|
+
],
|
|
401
|
+
type: "Json"
|
|
353
402
|
}
|
|
354
403
|
}
|
|
355
404
|
};
|
|
@@ -1011,10 +1060,9 @@ async function signAndSend(api, extrinsic, signer) {
|
|
|
1011
1060
|
if (dispatchError) {
|
|
1012
1061
|
reject(parseChainError(dispatchError.toString()));
|
|
1013
1062
|
} else {
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
});
|
|
1063
|
+
const blockHash = status.isInBlock ? status.asInBlock.toHex() : status.asFinalized.toHex();
|
|
1064
|
+
const txHash = extrinsic.hash.toHex();
|
|
1065
|
+
api.rpc.chain.getHeader(blockHash).then((header) => resolve({ blockHash, txHash, blockNumber: header.number.toNumber() })).catch(() => resolve({ blockHash, txHash, blockNumber: 0 }));
|
|
1018
1066
|
}
|
|
1019
1067
|
}
|
|
1020
1068
|
}).catch(reject);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/customTypes.ts","../src/constants.ts","../src/utils.ts","../src/rpc.ts","../src/extrinsics/developer.ts","../src/extrinsics/manifests.ts","../src/extrinsics/campaigns.ts","../src/extrinsics/inbox.ts","../src/extrinsics/targeting.ts","../src/extrinsics/validators.ts","../src/extrinsics/assets.ts","../src/wallet.ts","../src/errors.ts"],"sourcesContent":["// @awarizon/sdk — main entry point\n\n// Client\nexport { AwarizonClient, connect } from './client'\n\n// Types\nexport type {\n AppCategory,\n CampaignStatus,\n InboxRecordStatus,\n DeveloperStatus,\n TransactionType,\n TargetingCriteria,\n DeveloperProfile,\n AppManifest,\n Campaign,\n InboxRecord,\n ValidatorInfo,\n Delegation,\n ValidatorPerformance,\n EngagementEvent,\n NetworkStats,\n CampaignDeliveryStatus,\n TransactionSummary,\n WalletTargetingProfile,\n ValidatorPerformanceResponse,\n TokenStats,\n VestingSchedule,\n ChainType,\n LinkStatus,\n LinkedAddress,\n IdentityRecord,\n NameLookup,\n} from './types'\n\n// Constants\nexport {\n PLANCK,\n RIZ,\n MICRO_RIZ,\n MILLI_RIZ,\n DEFAULT_ENDPOINT,\n CHAIN_NAME,\n BLOCK_TIME_SECONDS,\n EPOCH_LENGTH_BLOCKS,\n MIN_SESSION_SECONDS,\n MIN_INTERACTIONS,\n ENGAGEMENT_COOLDOWN_HOURS,\n MAX_ENGAGEMENT_EVENTS_PER_DAY,\n MIN_CAMPAIGN_DURATION_DAYS,\n MAX_CAMPAIGN_DURATION_DAYS,\n DEFAULT_CAMPAIGN_DURATION_DAYS,\n DEVELOPER_MIN_TENURE_DAYS,\n MAX_TARGETING_DIMENSIONS,\n MAX_REGION_CODES_PER_CAMPAIGN,\n MAX_CATEGORY_HISTORY_ENTRIES,\n GENESIS_VALIDATORS,\n TARGET_VALIDATORS,\n PERF_WEIGHT_UPTIME_BPS,\n PERF_WEIGHT_FINALITY_BPS,\n PERF_WEIGHT_BLOCKS_BPS,\n PERF_WEIGHT_SLASH_BPS,\n} from './constants'\n\n// Utils\nexport {\n formatRiz,\n parseRiz,\n hexToBytes,\n bytesToHex,\n generateCampaignId,\n isValidAddress,\n blocksToTime,\n parsePlanckString,\n} from './utils'\n\n// Custom types registry (for advanced usage)\nexport { awarizonTypes, awarizonRpc } from './customTypes'\n\n// RPC\nexport {\n getDeveloperProfile,\n getDeveloperCampaigns,\n getDeveloperManifests,\n getCampaign,\n getActiveCampaignCount,\n getCampaignDeliveryStatus,\n getInboxCount,\n getInboxRecord,\n getWalletTargetingProfile,\n checkCampaignMatch,\n getActiveValidators,\n getValidatorCount,\n getValidatorPerformance,\n getNetworkStats,\n getTokenStats,\n getRecentTransactions,\n getBlockTransactions,\n getVestingSchedule,\n getIdentity,\n lookupName,\n getLinkedAddresses,\n isNameAvailable,\n getTotalIdentities,\n} from './rpc'\n\n// Extrinsics\nexport * from './extrinsics'\n\n// Wallet helpers\nexport {\n createKeyring,\n keypairFromMnemonic,\n keypairFromSeed,\n aliceKeypair,\n bobKeypair,\n signAndSend,\n} from './wallet'\n\n// Errors\nexport {\n AwarizonError,\n DeveloperNotFoundError,\n DeveloperAlreadyRegisteredError,\n DeveloperNotVerifiedError,\n DeveloperSuspendedError,\n ManifestNotFoundError,\n ManifestAlreadyRegisteredError,\n ManifestLimitReachedError,\n CampaignNotFoundError,\n CampaignNotActiveError,\n CampaignExpiredError,\n CampaignDeliveryLimitReachedError,\n InboxRecordNotFoundError,\n InboxAlreadyDeliveredError,\n InboxFullError,\n EngagementCooldownActiveError,\n EngagementDailyLimitReachedError,\n EngagementInvalidError,\n InsufficientStakeError,\n InsufficientBalanceError,\n TargetingDimensionLimitExceededError,\n InvalidManifestHashError,\n InvalidCampaignIdError,\n UnauthorizedError,\n EpochNotReadyError,\n NotExpiredYetError,\n ResetNotReadyError,\n ValidatorAlreadyRegisteredError,\n ValidatorNotFoundError,\n RegionCapExceededError,\n CountryCapExceededError,\n DelegationNotFoundError,\n CannotDelegateToSelfError,\n ValidatorNotActiveError,\n AlreadyDelegatedError,\n MaxValidatorsReachedError,\n parseChainError,\n} from './errors'\n","import { ApiPromise, WsProvider } from '@polkadot/api'\nimport { awarizonRpc, awarizonTypes } from './customTypes'\nimport { DEFAULT_ENDPOINT } from './constants'\n\nexport class AwarizonClient {\n private api: ApiPromise | null = null\n private endpoint: string\n\n constructor(endpoint: string = DEFAULT_ENDPOINT) {\n this.endpoint = endpoint\n }\n\n async connect(): Promise<ApiPromise> {\n if (this.api?.isConnected) return this.api\n\n const provider = new WsProvider(this.endpoint)\n this.api = await ApiPromise.create({\n provider,\n types: awarizonTypes,\n rpc: awarizonRpc,\n })\n\n await this.api.isReady\n return this.api\n }\n\n async disconnect(): Promise<void> {\n if (this.api) {\n await this.api.disconnect()\n this.api = null\n }\n }\n\n getApi(): ApiPromise {\n if (!this.api?.isConnected) {\n throw new Error('Not connected. Call connect() first.')\n }\n return this.api\n }\n\n async subscribeNewBlocks(\n callback: (blockNumber: number, blockHash: string) => void\n ): Promise<() => void> {\n const api = this.getApi()\n const unsub = await api.rpc.chain.subscribeNewHeads((header) => {\n callback(header.number.toNumber(), header.hash.toHex())\n })\n return unsub as unknown as () => void\n }\n\n async getBalance(address: string): Promise<bigint> {\n const api = this.getApi()\n const account = await api.query.system.account(address)\n return BigInt((account as any).data.free.toString())\n }\n}\n\nexport async function connect(\n endpoint: string = DEFAULT_ENDPOINT\n): Promise<AwarizonClient> {\n const client = new AwarizonClient(endpoint)\n await client.connect()\n return client\n}\n","// Custom SCALE type registry and RPC definitions for @polkadot/api.\n// Enum variants and struct field names derived from:\n// pallets/awarizon-types/src/lib.rs\n// pallets/awarizon-consensus/src/lib.rs\n// node/src/awarizon_rpc.rs\n\nexport const awarizonTypes = {\n // pallets/awarizon-types/src/lib.rs — enum AppCategory\n AppCategory: {\n _enum: [\n 'DeFi',\n 'Gaming',\n 'Social',\n 'Productivity',\n 'Infrastructure',\n 'DigitalAssets',\n 'DeveloperTools',\n 'Education',\n ],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum CampaignStatus\n CampaignStatus: {\n _enum: ['Pending', 'Active', 'Expired', 'Terminated'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum InboxRecordStatus\n InboxRecordStatus: {\n _enum: ['Pending', 'Delivered', 'Dismissed', 'Engaged'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum DeveloperStatus\n DeveloperStatus: {\n _enum: ['Unverified', 'Verified', 'Suspended'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum TransactionType\n TransactionType: {\n _enum: ['Financial', 'Distribution', 'System'],\n },\n\n // pallets/awarizon-types/src/lib.rs — struct TargetingCriteria\n TargetingCriteria: {\n wallet_age_min: 'Option<u32>',\n wallet_age_max: 'Option<u32>',\n riz_balance_min: 'Option<u128>',\n riz_balance_max: 'Option<u128>',\n activity_min: 'Option<u32>',\n activity_max: 'Option<u32>',\n region_codes: 'Vec<u8>',\n category_history: 'Vec<AppCategory>',\n custom_logic_hash: 'Option<H256>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct DeveloperProfile<AccountId, BlockNumber>\n DeveloperProfile: {\n account: 'AccountId',\n staked_riz: 'u128',\n status: 'DeveloperStatus',\n first_distribution_block: 'Option<u32>',\n violation_count: 'u32',\n total_campaigns: 'u32',\n total_deliveries: 'u64',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct AppManifest<AccountId, BlockNumber>\n AppManifest: {\n manifest_hash: 'H256',\n developer: 'AccountId',\n category: 'AppCategory',\n registered_at: 'u32',\n metadata_uri: 'Vec<u8>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct Campaign<AccountId, BlockNumber>\n Campaign: {\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n targeting: 'TargetingCriteria',\n status: 'CampaignStatus',\n created_at: 'u32',\n expires_at: 'u32',\n max_deliveries: 'u64',\n current_deliveries: 'u64',\n storage_fee_paid: 'u128',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct InboxRecord<AccountId, BlockNumber>\n InboxRecord: {\n record_id: 'H256',\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n category: 'AppCategory',\n status: 'InboxRecordStatus',\n delivered_at: 'u32',\n engaged_at: 'Option<u32>',\n reward_claimed: 'bool',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct ValidatorInfo<AccountId>\n ValidatorInfo: {\n account: 'AccountId',\n self_stake: 'u128',\n delegated_stake: 'u128',\n region_code: 'u8',\n country_code: 'u8',\n uptime_bps: 'u32',\n finality_bps: 'u32',\n blocks_bps: 'u32',\n slash_count: 'u32',\n is_active: 'bool',\n epoch_registered: 'u64',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct Delegation<AccountId>\n Delegation: {\n delegator: 'AccountId',\n validator: 'AccountId',\n amount: 'u128',\n epoch_delegated: 'u64',\n },\n}\n\n// RPC method definitions for @polkadot/api.\n// All methods are in the \"awarizon\" namespace and return JSON (not SCALE).\n// Wire names from: node/src/awarizon_rpc.rs #[method(name = \"...\")]\nexport const awarizonRpc = {\n awarizon: {\n // Developer endpoints\n getDeveloperProfile: {\n description: 'Get developer profile by SS58 account address',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n getDeveloperCampaigns: {\n description: 'Get all campaign IDs for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n getDeveloperManifests: {\n description: 'Get all manifest hashes for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n\n // Campaign endpoints\n getCampaign: {\n description: 'Get campaign details by campaign ID (0x hex)',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n getActiveCampaignCount: {\n description: 'Get the number of currently active campaigns',\n params: [],\n type: 'u64',\n },\n getCampaignDeliveryStatus: {\n description: 'Get delivery progress for a campaign',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n\n // Inbox endpoints\n getInboxCount: {\n description: 'Get number of inbox records for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'u32',\n },\n getInboxRecord: {\n description: 'Get a specific inbox record by wallet and record ID',\n params: [\n { name: 'wallet', type: 'Text' },\n { name: 'record_id', type: 'Text' },\n ],\n type: 'Json',\n },\n\n // Targeting endpoints\n getWalletTargetingProfile: {\n description: 'Get pre-computed targeting profile for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'Json',\n },\n checkCampaignMatch: {\n description: 'Check cached targeting match result for (campaign, wallet)',\n params: [\n { name: 'campaign_id', type: 'Text' },\n { name: 'wallet', type: 'Text' },\n ],\n type: 'bool',\n },\n\n // Validator endpoints\n getActiveValidators: {\n description: 'Get SS58 addresses of all active validators',\n params: [],\n type: 'Vec<Text>',\n },\n getValidatorCount: {\n description: 'Get total number of active validators',\n params: [],\n type: 'u32',\n },\n getValidatorPerformance: {\n description: 'Get performance metrics for a validator',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n\n // Network stats endpoints\n getNetworkStats: {\n description: 'Get Awarizon network statistics',\n params: [],\n type: 'Json',\n },\n getTokenStats: {\n description: 'Get token issuance and engagement pool statistics',\n params: [],\n type: 'Json',\n },\n },\n}\n","// Protocol constants derived from pallets/awarizon-types/src/constants.rs\n\n// ----------------------------------------------------------------\n// Token denomination\n// ----------------------------------------------------------------\nexport const PLANCK = 1n\nexport const RIZ = 1_000_000_000_000n // 10^12 planck\nexport const MICRO_RIZ = 1_000_000n // 10^6 planck\nexport const MILLI_RIZ = 1_000_000_000n // 10^9 planck\n\n// ----------------------------------------------------------------\n// Network defaults\n// ----------------------------------------------------------------\nexport const DEFAULT_ENDPOINT = 'wss://rpc.awarizon.com'\nexport const DEFAULT_HTTP_ENDPOINT = 'https://rpc.awarizon.com'\nexport const CHAIN_NAME = 'Awarizon'\n\n// ----------------------------------------------------------------\n// Consensus\n// ----------------------------------------------------------------\nexport const GENESIS_VALIDATORS = 51\nexport const TARGET_VALIDATORS = 121\nexport const BLOCK_TIME_SECONDS = 3\nexport const EPOCH_LENGTH_BLOCKS = 28_800\n\n// ----------------------------------------------------------------\n// Campaign rules\n// ----------------------------------------------------------------\nexport const MIN_CAMPAIGN_DURATION_DAYS = 1\nexport const MAX_CAMPAIGN_DURATION_DAYS = 90\nexport const DEFAULT_CAMPAIGN_DURATION_DAYS = 30\n\n// ----------------------------------------------------------------\n// Engagement rules\n// ----------------------------------------------------------------\nexport const MIN_SESSION_SECONDS = 120\nexport const MIN_INTERACTIONS = 5\nexport const ENGAGEMENT_COOLDOWN_HOURS = 24\nexport const MAX_ENGAGEMENT_EVENTS_PER_DAY = 10\n\n// ----------------------------------------------------------------\n// Targeting limits\n// ----------------------------------------------------------------\nexport const MAX_TARGETING_DIMENSIONS = 6\nexport const MAX_REGION_CODES_PER_CAMPAIGN = 64\nexport const MAX_CATEGORY_HISTORY_ENTRIES = 8\n\n// ----------------------------------------------------------------\n// Developer verification\n// ----------------------------------------------------------------\nexport const DEVELOPER_MIN_TENURE_DAYS = 30\n\n// ----------------------------------------------------------------\n// Validator performance weights (basis points, sum = 10000)\n// ----------------------------------------------------------------\nexport const PERF_WEIGHT_UPTIME_BPS = 5_000\nexport const PERF_WEIGHT_FINALITY_BPS = 2_500\nexport const PERF_WEIGHT_BLOCKS_BPS = 1_500\nexport const PERF_WEIGHT_SLASH_BPS = 1_000\nexport const PERF_MULTIPLIER_MIN_BPS = 5_000\nexport const PERF_MULTIPLIER_MAX_BPS = 12_500\n\n// ----------------------------------------------------------------\n// Geographic caps (basis points)\n// ----------------------------------------------------------------\nexport const MAX_VALIDATORS_PER_REGION_BPS = 2_000 // 20%\nexport const MAX_VALIDATORS_PER_COUNTRY_BPS = 1_000 // 10%\n","import { RIZ } from './constants'\n\n// Convert planck to RIZ display string e.g. 1_000_000_000_000n → \"1.0000\"\nexport function formatRiz(planck: bigint, decimals = 4): string {\n const whole = planck / RIZ\n const remainder = planck % RIZ\n const decStr = remainder.toString().padStart(12, '0').slice(0, decimals)\n return `${whole}.${decStr}`\n}\n\n// Convert RIZ amount string to planck bigint e.g. \"1.5\" → 1_500_000_000_000n\nexport function parseRiz(riz: string): bigint {\n const [whole, decimal = ''] = riz.split('.')\n const paddedDecimal = decimal.padEnd(12, '0').slice(0, 12)\n return BigInt(whole) * RIZ + BigInt(paddedDecimal)\n}\n\n// Convert hex string to Uint8Array\nexport function hexToBytes(hex: string): Uint8Array {\n const clean = hex.replace('0x', '')\n return new Uint8Array(\n clean.match(/.{1,2}/g)?.map(b => parseInt(b, 16)) ?? []\n )\n}\n\n// Convert Uint8Array to hex string with 0x prefix\nexport function bytesToHex(bytes: Uint8Array): string {\n return '0x' + Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n// Generate a campaign ID from manifest hash + current timestamp\nexport function generateCampaignId(manifestHash: string): string {\n const timestamp = Date.now().toString(16).padStart(16, '0')\n const hashPart = manifestHash.replace('0x', '').slice(0, 48)\n return '0x' + hashPart + timestamp\n}\n\n// Basic SS58 address length check\nexport function isValidAddress(address: string): boolean {\n return address.length >= 46 && address.length <= 48\n}\n\n// Format a block count to a human-readable time estimate (3s block time)\nexport function blocksToTime(blocks: number): string {\n const seconds = blocks * 3\n if (seconds < 60) return `${seconds}s`\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`\n return `${Math.floor(seconds / 86400)}d`\n}\n\n// Parse a u128-as-string from RPC into bigint\nexport function parsePlanckString(value: string): bigint {\n return BigInt(value)\n}\n","// Typed wrappers for all 15 Awarizon custom RPC methods.\n// Wire names and return shapes derived from node/src/awarizon_rpc.rs.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type {\n NetworkStats,\n CampaignDeliveryStatus,\n WalletTargetingProfile,\n ValidatorPerformanceResponse,\n TokenStats,\n DeveloperProfile,\n Campaign,\n InboxRecord,\n TransactionSummary,\n VestingSchedule,\n IdentityRecord,\n NameLookup,\n LinkedAddress,\n ChainType,\n LinkStatus,\n} from './types'\n\n// ----------------------------------------------------------------\n// Developer endpoints\n// ----------------------------------------------------------------\n\nexport async function getDeveloperProfile(\n api: ApiPromise,\n account: string\n): Promise<DeveloperProfile | null> {\n const result = await (api.rpc as any).awarizon.getDeveloperProfile(account)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n staked_riz: BigInt(json.staked_riz ?? '0'),\n total_deliveries: BigInt(json.total_deliveries ?? '0'),\n } as DeveloperProfile\n}\n\nexport async function getDeveloperCampaigns(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperCampaigns(account)\n return result.toJSON() as string[]\n}\n\nexport async function getDeveloperManifests(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperManifests(account)\n return result.toJSON() as string[]\n}\n\n// ----------------------------------------------------------------\n// Campaign endpoints\n// ----------------------------------------------------------------\n\nexport async function getCampaign(\n api: ApiPromise,\n campaignId: string\n): Promise<Campaign | null> {\n const result = await (api.rpc as any).awarizon.getCampaign(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n storage_fee_paid: BigInt(json.storage_fee_paid ?? '0'),\n } as Campaign\n}\n\nexport async function getActiveCampaignCount(api: ApiPromise): Promise<bigint> {\n const result = await (api.rpc as any).awarizon.getActiveCampaignCount()\n return BigInt(result.toString())\n}\n\nexport async function getCampaignDeliveryStatus(\n api: ApiPromise,\n campaignId: string\n): Promise<CampaignDeliveryStatus | null> {\n const result = await (api.rpc as any).awarizon.getCampaignDeliveryStatus(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n remaining: BigInt(json.remaining ?? '0'),\n percentage_used: json.percentage_used as number,\n }\n}\n\n// ----------------------------------------------------------------\n// Inbox endpoints\n// ----------------------------------------------------------------\n\nexport async function getInboxCount(\n api: ApiPromise,\n wallet: string\n): Promise<number> {\n const result = await (api.rpc as any).awarizon.getInboxCount(wallet)\n return result.toNumber()\n}\n\nexport async function getInboxRecord(\n api: ApiPromise,\n wallet: string,\n recordId: string\n): Promise<InboxRecord | null> {\n const result = await (api.rpc as any).awarizon.getInboxRecord(wallet, recordId)\n const json = result.toJSON()\n if (!json) return null\n return json as InboxRecord\n}\n\n// ----------------------------------------------------------------\n// Targeting endpoints\n// ----------------------------------------------------------------\n\nexport async function getWalletTargetingProfile(\n api: ApiPromise,\n wallet: string\n): Promise<WalletTargetingProfile> {\n const result = await (api.rpc as any).awarizon.getWalletTargetingProfile(wallet)\n return result.toJSON() as WalletTargetingProfile\n}\n\nexport async function checkCampaignMatch(\n api: ApiPromise,\n campaignId: string,\n wallet: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.checkCampaignMatch(campaignId, wallet)\n return result.isTrue\n}\n\n// ----------------------------------------------------------------\n// Validator endpoints\n// ----------------------------------------------------------------\n\nexport async function getActiveValidators(api: ApiPromise): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getActiveValidators()\n return result.toJSON() as string[]\n}\n\nexport async function getValidatorCount(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getValidatorCount()\n return result.toNumber()\n}\n\nexport async function getValidatorPerformance(\n api: ApiPromise,\n account: string\n): Promise<ValidatorPerformanceResponse | null> {\n const result = await (api.rpc as any).awarizon.getValidatorPerformance(account)\n return result.toJSON() as ValidatorPerformanceResponse | null\n}\n\n// ----------------------------------------------------------------\n// Network stats endpoints\n// ----------------------------------------------------------------\n\nexport async function getNetworkStats(api: ApiPromise): Promise<NetworkStats> {\n const result = await (api.rpc as any).awarizon.getNetworkStats()\n const json = result.toJSON() as Record<string, unknown>\n return {\n total_wallets: BigInt(String(json.total_wallets ?? '0')),\n total_deliveries: BigInt(String(json.total_deliveries ?? '0')),\n active_campaigns: BigInt(String(json.active_campaigns ?? '0')),\n total_staked: String(json.total_staked ?? '0'),\n current_epoch: BigInt(String(json.current_epoch ?? '0')),\n inbox_reserve_balance: String(json.inbox_reserve_balance ?? '0'),\n total_extrinsics: Number(json.total_extrinsics ?? 0),\n circulating_supply: String(json.circulating_supply ?? '0'),\n non_circulating_supply: String(json.non_circulating_supply ?? '0'),\n }\n}\n\nexport async function getTokenStats(api: ApiPromise): Promise<TokenStats> {\n const result = await (api.rpc as any).awarizon.getTokenStats()\n return result.toJSON() as TokenStats\n}\n\nexport async function getRecentTransactions(\n api: ApiPromise\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getRecentTransactions()\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getBlockTransactions(\n api: ApiPromise,\n blockNumber: number\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getBlockTransactions(blockNumber)\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getVestingSchedule(\n api: ApiPromise,\n account: string\n): Promise<VestingSchedule[]> {\n const result = await (api.query as any).vesting.vesting(account)\n const json = result.toJSON()\n if (!json || !Array.isArray(json)) return []\n return json.map((v: any) => ({\n locked: String(v.locked ?? v.Locked ?? '0'),\n per_block: String(v.perBlock ?? v.per_block ?? '0'),\n starting_block: Number(v.startingBlock ?? v.starting_block ?? 0),\n }))\n}\n\n// ----------------------------------------------------------------\n// Identity endpoints\n// ----------------------------------------------------------------\n\nexport async function getIdentity(\n api: ApiPromise,\n account: string\n): Promise<IdentityRecord | null> {\n const result = await (api.rpc as any).awarizon.getIdentity(account, null)\n const json = result.toJSON()\n if (!json) return null\n return {\n account: json.account,\n rizName: json.riz_name ?? null,\n rizNameFull: json.riz_name ? json.riz_name + '.riz' : null,\n displayName: json.display_name ?? null,\n bio: json.bio ?? null,\n avatarUri: json.avatar_uri ?? null,\n website: json.website ?? null,\n registeredAt: Number(json.registered_at ?? 0),\n verified: Boolean(json.verified),\n reputationScore: Number(json.reputation_score ?? 0),\n linkedAddresses: (json.linked_addresses ?? []).map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n })),\n }\n}\n\nexport async function lookupName(\n api: ApiPromise,\n name: string\n): Promise<NameLookup | null> {\n const result = await (api.rpc as any).awarizon.lookupName(name, null)\n const json = result.toJSON()\n if (!json) return null\n const identity = json.identity ? await getIdentity(api, json.account) : null\n return {\n rizName: json.riz_name as string,\n account: json.account as string,\n identity,\n }\n}\n\nexport async function getLinkedAddresses(\n api: ApiPromise,\n account: string\n): Promise<LinkedAddress[]> {\n const result = await (api.rpc as any).awarizon.getLinkedAddresses(account, null)\n const arr = result.toJSON() as any[]\n if (!Array.isArray(arr)) return []\n return arr.map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n }))\n}\n\nexport async function isNameAvailable(\n api: ApiPromise,\n name: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.isNameAvailable(name, null)\n return Boolean(result.toJSON())\n}\n\nexport async function getTotalIdentities(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getTotalIdentities(null)\n return result.toNumber()\n}\n","// AwarizonState pallet — developer extrinsics\n// Pallet index: 8 (runtime/src/lib.rs #[runtime::pallet_index(8)])\n// call_index 0: register_developer()\n// call_index 1: stake_riz(amount: BalanceOf<T>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterDeveloper(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerDeveloper()\n}\n\nexport function buildStakeRiz(\n api: ApiPromise,\n amount: bigint\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.stakeRiz(amount)\n}\n","// AwarizonState pallet — manifest extrinsics\n// call_index 2: register_manifest(manifest_hash: [u8;32], category: AppCategory, metadata_uri: BoundedVec<u8, 256>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { AppCategory } from '../types'\n\nexport function buildRegisterManifest(\n api: ApiPromise,\n manifestHash: string, // 0x-prefixed 32-byte hex\n category: AppCategory,\n metadataUri: string | Uint8Array // UTF-8 string or raw bytes, max 256 bytes\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerManifest(manifestHash, category, metadataUri)\n}\n","// AwarizonState pallet — campaign extrinsics\n// call_index 3: create_campaign(campaign_id, manifest_hash, targeting, duration_days, max_deliveries)\n// call_index 5: terminate_campaign(campaign_id)\n// call_index 10: advance_epoch()\n// call_index 11: expire_campaign(campaign_id)\n// call_index 12: reset_daily_engagement()\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { TargetingCriteria } from '../types'\n\nexport function buildCreateCampaign(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n manifestHash: string, // [u8; 32] 0x hex\n targeting: TargetingCriteria,\n durationDays: number, // u32, 1–90\n maxDeliveries: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.createCampaign(\n campaignId,\n manifestHash,\n targeting,\n durationDays,\n maxDeliveries\n )\n}\n\nexport function buildTerminateCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.terminateCampaign(campaignId)\n}\n\nexport function buildExpireCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.expireCampaign(campaignId)\n}\n\nexport function buildAdvanceEpoch(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.advanceEpoch()\n}\n\nexport function buildResetDailyEngagement(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.resetDailyEngagement()\n}\n","// AwarizonState pallet — inbox extrinsics\n// call_index 4: deliver_to_inbox(wallet, campaign_id, record_id)\n// call_index 6: dismiss_inbox_record(record_id)\n// call_index 7: submit_engagement(record_id, session_duration_seconds, interaction_count)\n// call_index 8: claim_reward(record_id)\n// call_index 9: update_wallet_index(wallet_age_days, activity_count, category_history, region_code)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildDeliverToInbox(\n api: ApiPromise,\n wallet: string, // SS58 address of target wallet\n campaignId: string, // [u8; 32] 0x hex\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.deliverToInbox(wallet, campaignId, recordId)\n}\n\nexport function buildDismissInboxRecord(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.dismissInboxRecord(recordId)\n}\n\nexport function buildSubmitEngagement(\n api: ApiPromise,\n recordId: string, // [u8; 32] 0x hex\n sessionDurationSeconds: number, // u32, must be >= MIN_SESSION_SECONDS (120)\n interactionCount: number // u32, must be >= MIN_INTERACTIONS (5)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.submitEngagement(\n recordId,\n sessionDurationSeconds,\n interactionCount\n )\n}\n\nexport function buildClaimReward(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.claimReward(recordId)\n}\n\nexport function buildUpdateWalletIndex(\n api: ApiPromise,\n walletAgeDays: number, // u32\n activityCount: number, // u32\n categoryHistory: number[], // BoundedVec<u8, 8> — AppCategory IDs\n regionCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.updateWalletIndex(\n walletAgeDays,\n activityCount,\n categoryHistory,\n regionCode\n )\n}\n","// AwarizonTargeting pallet — targeting extrinsics\n// Pallet index: 9 (runtime/src/lib.rs #[runtime::pallet_index(9)])\n// call_index 0: build_bloom_filter(campaign_id)\n// call_index 1: check_wallet_match(campaign_id, wallet)\n// call_index 2: run_targeting_batch(campaign_id, wallets)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildBloomFilter(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.buildBloomFilter(campaignId)\n}\n\nexport function buildCheckWalletMatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallet: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.checkWalletMatch(campaignId, wallet)\n}\n\nexport function buildRunTargetingBatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallets: string[] // SS58 addresses, max 100 (BoundedVec<AccountId, 100>)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.runTargetingBatch(campaignId, wallets)\n}\n","// AwarizonConsensus pallet — validator extrinsics\n// Pallet index: 10 (runtime/src/lib.rs #[runtime::pallet_index(10)])\n// call_index 0: register_validator(self_stake: u128, region_code: u8, country_code: u8)\n// call_index 1: delegate_stake(validator: AccountId, amount: u128)\n// call_index 2: undelegate_stake(validator: AccountId)\n// call_index 3: update_performance(validator, uptime_bps, finality_bps, blocks_bps)\n// call_index 4: run_epoch_election(epoch: u64)\n// call_index 5: slash_validator(validator: AccountId, reason: u8) — root only\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterValidator(\n api: ApiPromise,\n selfStake: bigint, // u128 — must be >= MinValidatorStake\n regionCode: number, // u8\n countryCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.registerValidator(selfStake, regionCode, countryCode)\n}\n\nexport function buildDelegateStake(\n api: ApiPromise,\n validator: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.delegateStake(validator, amount)\n}\n\nexport function buildUndelegateStake(\n api: ApiPromise,\n validator: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.undelegateStake(validator)\n}\n\nexport function buildUpdatePerformance(\n api: ApiPromise,\n validator: string, // SS58 address\n uptimeBps: number, // u32, 0–10000\n finalityBps: number, // u32, 0–10000\n blocksBps: number // u32, 0–10000\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.updatePerformance(\n validator,\n uptimeBps,\n finalityBps,\n blocksBps\n )\n}\n\nexport function buildRunEpochElection(\n api: ApiPromise,\n epoch: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.runEpochElection(epoch)\n}\n\nexport function buildSlashValidator(\n api: ApiPromise,\n validator: string, // SS58 address\n reason: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.slashValidator(validator, reason)\n}\n","// pallet_assets extrinsics\n// Pallet index: 11 (runtime/src/lib.rs #[runtime::pallet_index(11)] pub type Assets = pallet_assets)\n// Method names follow @polkadot/api camelCase conversion of pallet_assets extrinsics.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildCreateAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n admin: string, // SS58 address — asset admin account\n minBalance: bigint // minimum balance (u128)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.create(id, admin, minBalance)\n}\n\nexport function buildMintAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n beneficiary: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.mint(id, beneficiary, amount)\n}\n\nexport function buildTransferAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n target: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.transfer(id, target, amount)\n}\n","import { Keyring } from '@polkadot/keyring'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport { parseChainError } from './errors'\n\n// Create a Keyring instance for sr25519 (Substrate default)\nexport function createKeyring(): Keyring {\n return new Keyring({ type: 'sr25519' })\n}\n\n// Load a keypair from a mnemonic (BIP39)\nexport function keypairFromMnemonic(mnemonic: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromMnemonic(mnemonic)\n}\n\n// Load a keypair from a seed hex (0x...)\nexport function keypairFromSeed(seed: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromSeed(Buffer.from(seed.replace('0x', ''), 'hex'))\n}\n\n// Dev/test keypairs (only available on --dev chains)\nexport function aliceKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Alice')\n}\n\nexport function bobKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Bob')\n}\n\n// Sign and submit an extrinsic, returning the final status\nexport async function signAndSend(\n api: ApiPromise,\n extrinsic: SubmittableExtrinsic<'promise', ISubmittableResult>,\n signer: KeyringPair\n): Promise<{ blockHash: string; txHash: string }> {\n return new Promise((resolve, reject) => {\n extrinsic\n .signAndSend(signer, ({ status, dispatchError }: ISubmittableResult) => {\n if (status.isInBlock || status.isFinalized) {\n if (dispatchError) {\n reject(parseChainError(dispatchError.toString()))\n } else {\n resolve({\n blockHash: status.isInBlock\n ? status.asInBlock.toHex()\n : status.asFinalized.toHex(),\n txHash: extrinsic.hash.toHex(),\n })\n }\n }\n })\n .catch(reject)\n })\n}\n","// Typed error classes matching on-chain error variants.\n// Error names derived from:\n// pallets/awarizon-state/src/lib.rs — Error<T> enum\n// pallets/awarizon-consensus/src/lib.rs — Error<T> enum\n\nexport class AwarizonError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly details?: unknown\n ) {\n super(message)\n this.name = 'AwarizonError'\n }\n}\n\n// ----------------------------------------------------------------\n// awarizon-state errors\n// ----------------------------------------------------------------\n\nexport class DeveloperNotFoundError extends AwarizonError {\n constructor() { super('Developer not found', 'DeveloperNotFound') }\n}\nexport class DeveloperAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Developer already registered', 'DeveloperAlreadyRegistered') }\n}\nexport class DeveloperNotVerifiedError extends AwarizonError {\n constructor() { super('Developer not verified', 'DeveloperNotVerified') }\n}\nexport class DeveloperSuspendedError extends AwarizonError {\n constructor() { super('Developer is suspended', 'DeveloperSuspended') }\n}\nexport class ManifestNotFoundError extends AwarizonError {\n constructor() { super('Manifest not found', 'ManifestNotFound') }\n}\nexport class ManifestAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Manifest already registered', 'ManifestAlreadyRegistered') }\n}\nexport class ManifestLimitReachedError extends AwarizonError {\n constructor() { super('Manifest limit reached', 'ManifestLimitReached') }\n}\nexport class CampaignNotFoundError extends AwarizonError {\n constructor() { super('Campaign not found', 'CampaignNotFound') }\n}\nexport class CampaignNotActiveError extends AwarizonError {\n constructor() { super('Campaign is not active', 'CampaignNotActive') }\n}\nexport class CampaignExpiredError extends AwarizonError {\n constructor() { super('Campaign has expired', 'CampaignExpired') }\n}\nexport class CampaignDeliveryLimitReachedError extends AwarizonError {\n constructor() { super('Campaign delivery limit reached', 'CampaignDeliveryLimitReached') }\n}\nexport class InboxRecordNotFoundError extends AwarizonError {\n constructor() { super('Inbox record not found', 'InboxRecordNotFound') }\n}\nexport class InboxAlreadyDeliveredError extends AwarizonError {\n constructor() { super('Already delivered to this inbox', 'InboxAlreadyDelivered') }\n}\nexport class InboxFullError extends AwarizonError {\n constructor() { super('Inbox is full (1000 records)', 'InboxFull') }\n}\nexport class EngagementCooldownActiveError extends AwarizonError {\n constructor() { super('Engagement cooldown is active (24h)', 'EngagementCooldownActive') }\n}\nexport class EngagementDailyLimitReachedError extends AwarizonError {\n constructor() { super('Daily engagement limit reached (10/day)', 'EngagementDailyLimitReached') }\n}\nexport class EngagementInvalidError extends AwarizonError {\n constructor() { super('Engagement does not meet minimum requirements', 'EngagementInvalid') }\n}\nexport class InsufficientStakeError extends AwarizonError {\n constructor() { super('Insufficient stake', 'InsufficientStake') }\n}\nexport class InsufficientBalanceError extends AwarizonError {\n constructor() { super('Insufficient balance', 'InsufficientBalance') }\n}\nexport class TargetingDimensionLimitExceededError extends AwarizonError {\n constructor() { super('Targeting dimension limit exceeded (max 6)', 'TargetingDimensionLimitExceeded') }\n}\nexport class InvalidManifestHashError extends AwarizonError {\n constructor() { super('Invalid manifest hash', 'InvalidManifestHash') }\n}\nexport class InvalidCampaignIdError extends AwarizonError {\n constructor() { super('Invalid campaign ID', 'InvalidCampaignId') }\n}\nexport class UnauthorizedError extends AwarizonError {\n constructor() { super('Unauthorized', 'Unauthorized') }\n}\nexport class EpochNotReadyError extends AwarizonError {\n constructor() { super('Epoch is not ready to advance', 'EpochNotReady') }\n}\nexport class NotExpiredYetError extends AwarizonError {\n constructor() { super('Campaign has not expired yet', 'NotExpiredYet') }\n}\nexport class ResetNotReadyError extends AwarizonError {\n constructor() { super('Daily reset is not ready yet', 'ResetNotReady') }\n}\n\n// ----------------------------------------------------------------\n// awarizon-consensus errors\n// ----------------------------------------------------------------\n\nexport class ValidatorAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Validator already registered', 'ValidatorAlreadyRegistered') }\n}\nexport class ValidatorNotFoundError extends AwarizonError {\n constructor() { super('Validator not found', 'ValidatorNotFound') }\n}\nexport class RegionCapExceededError extends AwarizonError {\n constructor() { super('Region validator cap exceeded (20%)', 'RegionCapExceeded') }\n}\nexport class CountryCapExceededError extends AwarizonError {\n constructor() { super('Country validator cap exceeded (10%)', 'CountryCapExceeded') }\n}\nexport class DelegationNotFoundError extends AwarizonError {\n constructor() { super('Delegation not found', 'DelegationNotFound') }\n}\nexport class CannotDelegateToSelfError extends AwarizonError {\n constructor() { super('Cannot delegate stake to yourself', 'CannotDelegateToSelf') }\n}\nexport class ValidatorNotActiveError extends AwarizonError {\n constructor() { super('Validator is not active', 'ValidatorNotActive') }\n}\nexport class AlreadyDelegatedError extends AwarizonError {\n constructor() { super('Already delegated to this validator', 'AlreadyDelegated') }\n}\nexport class MaxValidatorsReachedError extends AwarizonError {\n constructor() { super('Maximum validator count reached', 'MaxValidatorsReached') }\n}\n\n// ----------------------------------------------------------------\n// Error mapping\n// ----------------------------------------------------------------\n\nconst ERROR_MAP: Record<string, () => AwarizonError> = {\n DeveloperNotFound: () => new DeveloperNotFoundError(),\n DeveloperAlreadyRegistered: () => new DeveloperAlreadyRegisteredError(),\n DeveloperNotVerified: () => new DeveloperNotVerifiedError(),\n DeveloperSuspended: () => new DeveloperSuspendedError(),\n ManifestNotFound: () => new ManifestNotFoundError(),\n ManifestAlreadyRegistered: () => new ManifestAlreadyRegisteredError(),\n ManifestLimitReached: () => new ManifestLimitReachedError(),\n CampaignNotFound: () => new CampaignNotFoundError(),\n CampaignNotActive: () => new CampaignNotActiveError(),\n CampaignExpired: () => new CampaignExpiredError(),\n CampaignDeliveryLimitReached: () => new CampaignDeliveryLimitReachedError(),\n InboxRecordNotFound: () => new InboxRecordNotFoundError(),\n InboxAlreadyDelivered: () => new InboxAlreadyDeliveredError(),\n InboxFull: () => new InboxFullError(),\n EngagementCooldownActive: () => new EngagementCooldownActiveError(),\n EngagementDailyLimitReached: () => new EngagementDailyLimitReachedError(),\n EngagementInvalid: () => new EngagementInvalidError(),\n InsufficientStake: () => new InsufficientStakeError(),\n InsufficientBalance: () => new InsufficientBalanceError(),\n TargetingDimensionLimitExceeded: () => new TargetingDimensionLimitExceededError(),\n InvalidManifestHash: () => new InvalidManifestHashError(),\n InvalidCampaignId: () => new InvalidCampaignIdError(),\n Unauthorized: () => new UnauthorizedError(),\n EpochNotReady: () => new EpochNotReadyError(),\n NotExpiredYet: () => new NotExpiredYetError(),\n ResetNotReady: () => new ResetNotReadyError(),\n ValidatorAlreadyRegistered: () => new ValidatorAlreadyRegisteredError(),\n ValidatorNotFound: () => new ValidatorNotFoundError(),\n RegionCapExceeded: () => new RegionCapExceededError(),\n CountryCapExceeded: () => new CountryCapExceededError(),\n DelegationNotFound: () => new DelegationNotFoundError(),\n CannotDelegateToSelf: () => new CannotDelegateToSelfError(),\n ValidatorNotActive: () => new ValidatorNotActiveError(),\n AlreadyDelegated: () => new AlreadyDelegatedError(),\n MaxValidatorsReached: () => new MaxValidatorsReachedError(),\n}\n\nexport function parseChainError(error: unknown): AwarizonError {\n const errorStr = String(error)\n for (const [key, factory] of Object.entries(ERROR_MAP)) {\n if (errorStr.includes(key)) return factory()\n }\n return new AwarizonError(errorStr, 'UnknownError', error)\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/customTypes.ts","../src/constants.ts","../src/utils.ts","../src/rpc.ts","../src/extrinsics/developer.ts","../src/extrinsics/manifests.ts","../src/extrinsics/campaigns.ts","../src/extrinsics/inbox.ts","../src/extrinsics/targeting.ts","../src/extrinsics/validators.ts","../src/extrinsics/assets.ts","../src/wallet.ts","../src/errors.ts"],"sourcesContent":["// @awarizon/sdk — main entry point\n\n// Client\nexport { AwarizonClient, connect } from './client'\n\n// Types\nexport type {\n AppCategory,\n CampaignStatus,\n InboxRecordStatus,\n DeveloperStatus,\n TransactionType,\n TargetingCriteria,\n DeveloperProfile,\n AppManifest,\n Campaign,\n InboxRecord,\n ValidatorInfo,\n Delegation,\n ValidatorPerformance,\n EngagementEvent,\n NetworkStats,\n CampaignDeliveryStatus,\n TransactionSummary,\n WalletTargetingProfile,\n ValidatorPerformanceResponse,\n TokenStats,\n VestingSchedule,\n ChainType,\n LinkStatus,\n LinkedAddress,\n IdentityRecord,\n NameLookup,\n} from './types'\n\n// Constants\nexport {\n PLANCK,\n RIZ,\n MICRO_RIZ,\n MILLI_RIZ,\n DEFAULT_ENDPOINT,\n CHAIN_NAME,\n BLOCK_TIME_SECONDS,\n EPOCH_LENGTH_BLOCKS,\n MIN_SESSION_SECONDS,\n MIN_INTERACTIONS,\n ENGAGEMENT_COOLDOWN_HOURS,\n MAX_ENGAGEMENT_EVENTS_PER_DAY,\n MIN_CAMPAIGN_DURATION_DAYS,\n MAX_CAMPAIGN_DURATION_DAYS,\n DEFAULT_CAMPAIGN_DURATION_DAYS,\n DEVELOPER_MIN_TENURE_DAYS,\n MAX_TARGETING_DIMENSIONS,\n MAX_REGION_CODES_PER_CAMPAIGN,\n MAX_CATEGORY_HISTORY_ENTRIES,\n GENESIS_VALIDATORS,\n TARGET_VALIDATORS,\n PERF_WEIGHT_UPTIME_BPS,\n PERF_WEIGHT_FINALITY_BPS,\n PERF_WEIGHT_BLOCKS_BPS,\n PERF_WEIGHT_SLASH_BPS,\n} from './constants'\n\n// Utils\nexport {\n formatRiz,\n parseRiz,\n hexToBytes,\n bytesToHex,\n generateCampaignId,\n isValidAddress,\n blocksToTime,\n parsePlanckString,\n} from './utils'\n\n// Custom types registry (for advanced usage)\nexport { awarizonTypes, awarizonRpc } from './customTypes'\n\n// RPC\nexport {\n getDeveloperProfile,\n getDeveloperCampaigns,\n getDeveloperManifests,\n getCampaign,\n getActiveCampaignCount,\n getCampaignDeliveryStatus,\n getInboxCount,\n getInboxRecord,\n getWalletTargetingProfile,\n checkCampaignMatch,\n getActiveValidators,\n getValidatorCount,\n getValidatorPerformance,\n getNetworkStats,\n getTokenStats,\n getRecentTransactions,\n getBlockTransactions,\n getVestingSchedule,\n getIdentity,\n lookupName,\n getLinkedAddresses,\n isNameAvailable,\n getTotalIdentities,\n} from './rpc'\n\n// Extrinsics\nexport * from './extrinsics'\n\n// Wallet helpers\nexport {\n createKeyring,\n keypairFromMnemonic,\n keypairFromSeed,\n aliceKeypair,\n bobKeypair,\n signAndSend,\n} from './wallet'\n\n// Errors\nexport {\n AwarizonError,\n DeveloperNotFoundError,\n DeveloperAlreadyRegisteredError,\n DeveloperNotVerifiedError,\n DeveloperSuspendedError,\n ManifestNotFoundError,\n ManifestAlreadyRegisteredError,\n ManifestLimitReachedError,\n CampaignNotFoundError,\n CampaignNotActiveError,\n CampaignExpiredError,\n CampaignDeliveryLimitReachedError,\n InboxRecordNotFoundError,\n InboxAlreadyDeliveredError,\n InboxFullError,\n EngagementCooldownActiveError,\n EngagementDailyLimitReachedError,\n EngagementInvalidError,\n InsufficientStakeError,\n InsufficientBalanceError,\n TargetingDimensionLimitExceededError,\n InvalidManifestHashError,\n InvalidCampaignIdError,\n UnauthorizedError,\n EpochNotReadyError,\n NotExpiredYetError,\n ResetNotReadyError,\n ValidatorAlreadyRegisteredError,\n ValidatorNotFoundError,\n RegionCapExceededError,\n CountryCapExceededError,\n DelegationNotFoundError,\n CannotDelegateToSelfError,\n ValidatorNotActiveError,\n AlreadyDelegatedError,\n MaxValidatorsReachedError,\n parseChainError,\n} from './errors'\n","import { ApiPromise, WsProvider } from '@polkadot/api'\nimport { awarizonRpc, awarizonTypes } from './customTypes'\nimport { DEFAULT_ENDPOINT } from './constants'\n\nexport class AwarizonClient {\n private api: ApiPromise | null = null\n private endpoint: string\n\n constructor(endpoint: string = DEFAULT_ENDPOINT) {\n this.endpoint = endpoint\n }\n\n async connect(): Promise<ApiPromise> {\n if (this.api?.isConnected) return this.api\n\n const provider = new WsProvider(this.endpoint)\n this.api = await ApiPromise.create({\n provider,\n types: awarizonTypes,\n rpc: awarizonRpc,\n })\n\n await this.api.isReady\n return this.api\n }\n\n async disconnect(): Promise<void> {\n if (this.api) {\n await this.api.disconnect()\n this.api = null\n }\n }\n\n getApi(): ApiPromise {\n if (!this.api?.isConnected) {\n throw new Error('Not connected. Call connect() first.')\n }\n return this.api\n }\n\n async subscribeNewBlocks(\n callback: (blockNumber: number, blockHash: string) => void\n ): Promise<() => void> {\n const api = this.getApi()\n const unsub = await api.rpc.chain.subscribeNewHeads((header) => {\n callback(header.number.toNumber(), header.hash.toHex())\n })\n return unsub as unknown as () => void\n }\n\n async getBalance(address: string): Promise<bigint> {\n const api = this.getApi()\n const account = await api.query.system.account(address)\n return BigInt((account as any).data.free.toString())\n }\n}\n\nexport async function connect(\n endpoint: string = DEFAULT_ENDPOINT\n): Promise<AwarizonClient> {\n const client = new AwarizonClient(endpoint)\n await client.connect()\n return client\n}\n","// Custom SCALE type registry and RPC definitions for @polkadot/api.\n// Enum variants and struct field names derived from:\n// pallets/awarizon-types/src/lib.rs\n// pallets/awarizon-consensus/src/lib.rs\n// node/src/awarizon_rpc.rs\n\nexport const awarizonTypes = {\n // pallets/awarizon-types/src/lib.rs — enum AppCategory\n AppCategory: {\n _enum: [\n 'DeFi',\n 'Gaming',\n 'Social',\n 'Productivity',\n 'Infrastructure',\n 'DigitalAssets',\n 'DeveloperTools',\n 'Education',\n ],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum CampaignStatus\n CampaignStatus: {\n _enum: ['Pending', 'Active', 'Expired', 'Terminated'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum InboxRecordStatus\n InboxRecordStatus: {\n _enum: ['Pending', 'Delivered', 'Dismissed', 'Engaged'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum DeveloperStatus\n DeveloperStatus: {\n _enum: ['Unverified', 'Verified', 'Suspended'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum TransactionType\n TransactionType: {\n _enum: ['Financial', 'Distribution', 'System'],\n },\n\n // pallets/awarizon-types/src/lib.rs — struct TargetingCriteria\n TargetingCriteria: {\n wallet_age_min: 'Option<u32>',\n wallet_age_max: 'Option<u32>',\n riz_balance_min: 'Option<u128>',\n riz_balance_max: 'Option<u128>',\n activity_min: 'Option<u32>',\n activity_max: 'Option<u32>',\n region_codes: 'Vec<u8>',\n category_history: 'Vec<AppCategory>',\n custom_logic_hash: 'Option<H256>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct DeveloperProfile<AccountId, BlockNumber>\n DeveloperProfile: {\n account: 'AccountId',\n staked_riz: 'u128',\n status: 'DeveloperStatus',\n first_distribution_block: 'Option<u32>',\n violation_count: 'u32',\n total_campaigns: 'u32',\n total_deliveries: 'u64',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct AppManifest<AccountId, BlockNumber>\n AppManifest: {\n manifest_hash: 'H256',\n developer: 'AccountId',\n category: 'AppCategory',\n registered_at: 'u32',\n metadata_uri: 'Vec<u8>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct Campaign<AccountId, BlockNumber>\n Campaign: {\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n targeting: 'TargetingCriteria',\n status: 'CampaignStatus',\n created_at: 'u32',\n expires_at: 'u32',\n max_deliveries: 'u64',\n current_deliveries: 'u64',\n storage_fee_paid: 'u128',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct InboxRecord<AccountId, BlockNumber>\n InboxRecord: {\n record_id: 'H256',\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n category: 'AppCategory',\n status: 'InboxRecordStatus',\n delivered_at: 'u32',\n engaged_at: 'Option<u32>',\n reward_claimed: 'bool',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct ValidatorInfo<AccountId>\n ValidatorInfo: {\n account: 'AccountId',\n self_stake: 'u128',\n delegated_stake: 'u128',\n region_code: 'u8',\n country_code: 'u8',\n uptime_bps: 'u32',\n finality_bps: 'u32',\n blocks_bps: 'u32',\n slash_count: 'u32',\n is_active: 'bool',\n epoch_registered: 'u64',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct Delegation<AccountId>\n Delegation: {\n delegator: 'AccountId',\n validator: 'AccountId',\n amount: 'u128',\n epoch_delegated: 'u64',\n },\n}\n\n// RPC method definitions for @polkadot/api.\n// All methods are in the \"awarizon\" namespace and return JSON (not SCALE).\n// Wire names from: node/src/awarizon_rpc.rs #[method(name = \"...\")]\nexport const awarizonRpc = {\n awarizon: {\n // Developer endpoints\n getDeveloperProfile: {\n description: 'Get developer profile by SS58 account address',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n getDeveloperCampaigns: {\n description: 'Get all campaign IDs for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n getDeveloperManifests: {\n description: 'Get all manifest hashes for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n\n // Campaign endpoints\n getCampaign: {\n description: 'Get campaign details by campaign ID (0x hex)',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n getActiveCampaignCount: {\n description: 'Get the number of currently active campaigns',\n params: [],\n type: 'u64',\n },\n getCampaignDeliveryStatus: {\n description: 'Get delivery progress for a campaign',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n\n // Inbox endpoints\n getInboxCount: {\n description: 'Get number of inbox records for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'u32',\n },\n getInboxRecord: {\n description: 'Get a specific inbox record by wallet and record ID',\n params: [\n { name: 'wallet', type: 'Text' },\n { name: 'record_id', type: 'Text' },\n ],\n type: 'Json',\n },\n\n // Targeting endpoints\n getWalletTargetingProfile: {\n description: 'Get pre-computed targeting profile for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'Json',\n },\n checkCampaignMatch: {\n description: 'Check cached targeting match result for (campaign, wallet)',\n params: [\n { name: 'campaign_id', type: 'Text' },\n { name: 'wallet', type: 'Text' },\n ],\n type: 'bool',\n },\n\n // Validator endpoints\n getActiveValidators: {\n description: 'Get SS58 addresses of all active validators',\n params: [],\n type: 'Vec<Text>',\n },\n getValidatorCount: {\n description: 'Get total number of active validators',\n params: [],\n type: 'u32',\n },\n getValidatorPerformance: {\n description: 'Get performance metrics for a validator',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n\n // Network stats endpoints\n getNetworkStats: {\n description: 'Get Awarizon network statistics',\n params: [],\n type: 'Json',\n },\n getTokenStats: {\n description: 'Get token issuance and engagement pool statistics',\n params: [],\n type: 'Json',\n },\n getRecentTransactions: {\n description: 'Get recent transactions across the chain',\n params: [],\n type: 'Json',\n },\n getBlockTransactions: {\n description: 'Get all transactions in a specific block',\n params: [{ name: 'block_number', type: 'u32' }],\n type: 'Json',\n },\n\n // Identity endpoints\n getIdentity: {\n description: 'Get identity record for an account',\n params: [\n { name: 'account', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'Json',\n },\n lookupName: {\n description: 'Resolve a .riz name to an account and identity',\n params: [\n { name: 'name', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'Json',\n },\n isNameAvailable: {\n description: 'Check if a .riz name is available to register',\n params: [\n { name: 'name', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'bool',\n },\n getTotalIdentities: {\n description: 'Get total number of registered identities',\n params: [{ name: 'at', type: 'Option<Hash>' }],\n type: 'u32',\n },\n\n // Links endpoints\n getLinkedAddresses: {\n description: 'Get all linked external addresses for an account',\n params: [\n { name: 'account', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'Json',\n },\n },\n}\n","// Protocol constants derived from pallets/awarizon-types/src/constants.rs\n\n// ----------------------------------------------------------------\n// Token denomination\n// ----------------------------------------------------------------\nexport const PLANCK = 1n\nexport const RIZ = 1_000_000_000_000n // 10^12 planck\nexport const MICRO_RIZ = 1_000_000n // 10^6 planck\nexport const MILLI_RIZ = 1_000_000_000n // 10^9 planck\n\n// ----------------------------------------------------------------\n// Network defaults\n// ----------------------------------------------------------------\nexport const DEFAULT_ENDPOINT = 'wss://rpc.awarizon.com'\nexport const DEFAULT_HTTP_ENDPOINT = 'https://rpc.awarizon.com'\nexport const CHAIN_NAME = 'Awarizon'\n\n// ----------------------------------------------------------------\n// Consensus\n// ----------------------------------------------------------------\nexport const GENESIS_VALIDATORS = 51\nexport const TARGET_VALIDATORS = 121\nexport const BLOCK_TIME_SECONDS = 3\nexport const EPOCH_LENGTH_BLOCKS = 28_800\n\n// ----------------------------------------------------------------\n// Campaign rules\n// ----------------------------------------------------------------\nexport const MIN_CAMPAIGN_DURATION_DAYS = 1\nexport const MAX_CAMPAIGN_DURATION_DAYS = 90\nexport const DEFAULT_CAMPAIGN_DURATION_DAYS = 30\n\n// ----------------------------------------------------------------\n// Engagement rules\n// ----------------------------------------------------------------\nexport const MIN_SESSION_SECONDS = 120\nexport const MIN_INTERACTIONS = 5\nexport const ENGAGEMENT_COOLDOWN_HOURS = 24\nexport const MAX_ENGAGEMENT_EVENTS_PER_DAY = 10\n\n// ----------------------------------------------------------------\n// Targeting limits\n// ----------------------------------------------------------------\nexport const MAX_TARGETING_DIMENSIONS = 6\nexport const MAX_REGION_CODES_PER_CAMPAIGN = 64\nexport const MAX_CATEGORY_HISTORY_ENTRIES = 8\n\n// ----------------------------------------------------------------\n// Developer verification\n// ----------------------------------------------------------------\nexport const DEVELOPER_MIN_TENURE_DAYS = 30\n\n// ----------------------------------------------------------------\n// Validator performance weights (basis points, sum = 10000)\n// ----------------------------------------------------------------\nexport const PERF_WEIGHT_UPTIME_BPS = 5_000\nexport const PERF_WEIGHT_FINALITY_BPS = 2_500\nexport const PERF_WEIGHT_BLOCKS_BPS = 1_500\nexport const PERF_WEIGHT_SLASH_BPS = 1_000\nexport const PERF_MULTIPLIER_MIN_BPS = 5_000\nexport const PERF_MULTIPLIER_MAX_BPS = 12_500\n\n// ----------------------------------------------------------------\n// Geographic caps (basis points)\n// ----------------------------------------------------------------\nexport const MAX_VALIDATORS_PER_REGION_BPS = 2_000 // 20%\nexport const MAX_VALIDATORS_PER_COUNTRY_BPS = 1_000 // 10%\n","import { RIZ } from './constants'\n\n// Convert planck to RIZ display string e.g. 1_000_000_000_000n → \"1.0000\"\nexport function formatRiz(planck: bigint, decimals = 4): string {\n const whole = planck / RIZ\n const remainder = planck % RIZ\n const decStr = remainder.toString().padStart(12, '0').slice(0, decimals)\n return `${whole}.${decStr}`\n}\n\n// Convert RIZ amount string to planck bigint e.g. \"1.5\" → 1_500_000_000_000n\nexport function parseRiz(riz: string): bigint {\n const [whole, decimal = ''] = riz.split('.')\n const paddedDecimal = decimal.padEnd(12, '0').slice(0, 12)\n return BigInt(whole) * RIZ + BigInt(paddedDecimal)\n}\n\n// Convert hex string to Uint8Array\nexport function hexToBytes(hex: string): Uint8Array {\n const clean = hex.replace('0x', '')\n return new Uint8Array(\n clean.match(/.{1,2}/g)?.map(b => parseInt(b, 16)) ?? []\n )\n}\n\n// Convert Uint8Array to hex string with 0x prefix\nexport function bytesToHex(bytes: Uint8Array): string {\n return '0x' + Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n// Generate a campaign ID from manifest hash + current timestamp\nexport function generateCampaignId(manifestHash: string): string {\n const timestamp = Date.now().toString(16).padStart(16, '0')\n const hashPart = manifestHash.replace('0x', '').slice(0, 48)\n return '0x' + hashPart + timestamp\n}\n\n// Basic SS58 address length check\nexport function isValidAddress(address: string): boolean {\n return address.length >= 46 && address.length <= 48\n}\n\n// Format a block count to a human-readable time estimate (3s block time)\nexport function blocksToTime(blocks: number): string {\n const seconds = blocks * 3\n if (seconds < 60) return `${seconds}s`\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`\n return `${Math.floor(seconds / 86400)}d`\n}\n\n// Parse a u128-as-string from RPC into bigint\nexport function parsePlanckString(value: string): bigint {\n return BigInt(value)\n}\n","// Typed wrappers for all 15 Awarizon custom RPC methods.\n// Wire names and return shapes derived from node/src/awarizon_rpc.rs.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type {\n NetworkStats,\n CampaignDeliveryStatus,\n WalletTargetingProfile,\n ValidatorPerformanceResponse,\n TokenStats,\n DeveloperProfile,\n Campaign,\n InboxRecord,\n TransactionSummary,\n VestingSchedule,\n IdentityRecord,\n NameLookup,\n LinkedAddress,\n ChainType,\n LinkStatus,\n} from './types'\n\n// ----------------------------------------------------------------\n// Developer endpoints\n// ----------------------------------------------------------------\n\nexport async function getDeveloperProfile(\n api: ApiPromise,\n account: string\n): Promise<DeveloperProfile | null> {\n const result = await (api.rpc as any).awarizon.getDeveloperProfile(account)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n staked_riz: BigInt(json.staked_riz ?? '0'),\n total_deliveries: BigInt(json.total_deliveries ?? '0'),\n } as DeveloperProfile\n}\n\nexport async function getDeveloperCampaigns(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperCampaigns(account)\n return result.toJSON() as string[]\n}\n\nexport async function getDeveloperManifests(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperManifests(account)\n return result.toJSON() as string[]\n}\n\n// ----------------------------------------------------------------\n// Campaign endpoints\n// ----------------------------------------------------------------\n\nexport async function getCampaign(\n api: ApiPromise,\n campaignId: string\n): Promise<Campaign | null> {\n const result = await (api.rpc as any).awarizon.getCampaign(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n storage_fee_paid: BigInt(json.storage_fee_paid ?? '0'),\n } as Campaign\n}\n\nexport async function getActiveCampaignCount(api: ApiPromise): Promise<bigint> {\n const result = await (api.rpc as any).awarizon.getActiveCampaignCount()\n return BigInt(result.toString())\n}\n\nexport async function getCampaignDeliveryStatus(\n api: ApiPromise,\n campaignId: string\n): Promise<CampaignDeliveryStatus | null> {\n const result = await (api.rpc as any).awarizon.getCampaignDeliveryStatus(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n remaining: BigInt(json.remaining ?? '0'),\n percentage_used: json.percentage_used as number,\n }\n}\n\n// ----------------------------------------------------------------\n// Inbox endpoints\n// ----------------------------------------------------------------\n\nexport async function getInboxCount(\n api: ApiPromise,\n wallet: string\n): Promise<number> {\n const result = await (api.rpc as any).awarizon.getInboxCount(wallet)\n return result.toNumber()\n}\n\nexport async function getInboxRecord(\n api: ApiPromise,\n wallet: string,\n recordId: string\n): Promise<InboxRecord | null> {\n const result = await (api.rpc as any).awarizon.getInboxRecord(wallet, recordId)\n const json = result.toJSON()\n if (!json) return null\n return json as InboxRecord\n}\n\n// ----------------------------------------------------------------\n// Targeting endpoints\n// ----------------------------------------------------------------\n\nexport async function getWalletTargetingProfile(\n api: ApiPromise,\n wallet: string\n): Promise<WalletTargetingProfile> {\n const result = await (api.rpc as any).awarizon.getWalletTargetingProfile(wallet)\n return result.toJSON() as WalletTargetingProfile\n}\n\nexport async function checkCampaignMatch(\n api: ApiPromise,\n campaignId: string,\n wallet: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.checkCampaignMatch(campaignId, wallet)\n return result.isTrue\n}\n\n// ----------------------------------------------------------------\n// Validator endpoints\n// ----------------------------------------------------------------\n\nexport async function getActiveValidators(api: ApiPromise): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getActiveValidators()\n return result.toJSON() as string[]\n}\n\nexport async function getValidatorCount(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getValidatorCount()\n return result.toNumber()\n}\n\nexport async function getValidatorPerformance(\n api: ApiPromise,\n account: string\n): Promise<ValidatorPerformanceResponse | null> {\n const result = await (api.rpc as any).awarizon.getValidatorPerformance(account)\n return result.toJSON() as ValidatorPerformanceResponse | null\n}\n\n// ----------------------------------------------------------------\n// Network stats endpoints\n// ----------------------------------------------------------------\n\nexport async function getNetworkStats(api: ApiPromise): Promise<NetworkStats> {\n const result = await (api.rpc as any).awarizon.getNetworkStats()\n const json = result.toJSON() as Record<string, unknown>\n return {\n total_wallets: BigInt(String(json.total_wallets ?? '0')),\n total_deliveries: BigInt(String(json.total_deliveries ?? '0')),\n active_campaigns: BigInt(String(json.active_campaigns ?? '0')),\n total_staked: String(json.total_staked ?? '0'),\n current_epoch: BigInt(String(json.current_epoch ?? '0')),\n inbox_reserve_balance: String(json.inbox_reserve_balance ?? '0'),\n total_extrinsics: Number(json.total_extrinsics ?? 0),\n circulating_supply: String(json.circulating_supply ?? '0'),\n non_circulating_supply: String(json.non_circulating_supply ?? '0'),\n }\n}\n\nexport async function getTokenStats(api: ApiPromise): Promise<TokenStats> {\n const result = await (api.rpc as any).awarizon.getTokenStats()\n return result.toJSON() as TokenStats\n}\n\nexport async function getRecentTransactions(\n api: ApiPromise\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getRecentTransactions()\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getBlockTransactions(\n api: ApiPromise,\n blockNumber: number\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getBlockTransactions(blockNumber)\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getVestingSchedule(\n api: ApiPromise,\n account: string\n): Promise<VestingSchedule[]> {\n const result = await (api.query as any).vesting.vesting(account)\n const json = result.toJSON()\n if (!json || !Array.isArray(json)) return []\n return json.map((v: any) => ({\n locked: String(v.locked ?? v.Locked ?? '0'),\n per_block: String(v.perBlock ?? v.per_block ?? '0'),\n starting_block: Number(v.startingBlock ?? v.starting_block ?? 0),\n }))\n}\n\n// ----------------------------------------------------------------\n// Identity endpoints\n// ----------------------------------------------------------------\n\nexport async function getIdentity(\n api: ApiPromise,\n account: string\n): Promise<IdentityRecord | null> {\n const result = await (api.rpc as any).awarizon.getIdentity(account, null)\n const json = result.toJSON()\n if (!json) return null\n return {\n account: json.account,\n rizName: json.riz_name ?? null,\n rizNameFull: json.riz_name ? json.riz_name + '.riz' : null,\n displayName: json.display_name ?? null,\n bio: json.bio ?? null,\n avatarUri: json.avatar_uri ?? null,\n website: json.website ?? null,\n registeredAt: Number(json.registered_at ?? 0),\n verified: Boolean(json.verified),\n reputationScore: Number(json.reputation_score ?? 0),\n linkedAddresses: (json.linked_addresses ?? []).map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n })),\n }\n}\n\nexport async function lookupName(\n api: ApiPromise,\n name: string\n): Promise<NameLookup | null> {\n const result = await (api.rpc as any).awarizon.lookupName(name, null)\n const json = result.toJSON()\n if (!json) return null\n const identity = json.identity ? await getIdentity(api, json.account) : null\n return {\n rizName: json.riz_name as string,\n account: json.account as string,\n identity,\n }\n}\n\nexport async function getLinkedAddresses(\n api: ApiPromise,\n account: string\n): Promise<LinkedAddress[]> {\n const result = await (api.rpc as any).awarizon.getLinkedAddresses(account, null)\n const arr = result.toJSON() as any[]\n if (!Array.isArray(arr)) return []\n return arr.map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n }))\n}\n\nexport async function isNameAvailable(\n api: ApiPromise,\n name: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.isNameAvailable(name, null)\n return Boolean(result.toJSON())\n}\n\nexport async function getTotalIdentities(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getTotalIdentities(null)\n return result.toNumber()\n}\n","// AwarizonState pallet — developer extrinsics\n// Pallet index: 8 (runtime/src/lib.rs #[runtime::pallet_index(8)])\n// call_index 0: register_developer()\n// call_index 1: stake_riz(amount: BalanceOf<T>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterDeveloper(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerDeveloper()\n}\n\nexport function buildStakeRiz(\n api: ApiPromise,\n amount: bigint\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.stakeRiz(amount)\n}\n","// AwarizonState pallet — manifest extrinsics\n// call_index 2: register_manifest(manifest_hash: [u8;32], category: AppCategory, metadata_uri: BoundedVec<u8, 256>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { AppCategory } from '../types'\n\nexport function buildRegisterManifest(\n api: ApiPromise,\n manifestHash: string, // 0x-prefixed 32-byte hex\n category: AppCategory,\n metadataUri: string | Uint8Array // UTF-8 string or raw bytes, max 256 bytes\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerManifest(manifestHash, category, metadataUri)\n}\n","// AwarizonState pallet — campaign extrinsics\n// call_index 3: create_campaign(campaign_id, manifest_hash, targeting, duration_days, max_deliveries)\n// call_index 5: terminate_campaign(campaign_id)\n// call_index 10: advance_epoch()\n// call_index 11: expire_campaign(campaign_id)\n// call_index 12: reset_daily_engagement()\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { TargetingCriteria } from '../types'\n\nexport function buildCreateCampaign(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n manifestHash: string, // [u8; 32] 0x hex\n targeting: TargetingCriteria,\n durationDays: number, // u32, 1–90\n maxDeliveries: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.createCampaign(\n campaignId,\n manifestHash,\n targeting,\n durationDays,\n maxDeliveries\n )\n}\n\nexport function buildTerminateCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.terminateCampaign(campaignId)\n}\n\nexport function buildExpireCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.expireCampaign(campaignId)\n}\n\nexport function buildAdvanceEpoch(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.advanceEpoch()\n}\n\nexport function buildResetDailyEngagement(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.resetDailyEngagement()\n}\n","// AwarizonState pallet — inbox extrinsics\n// call_index 4: deliver_to_inbox(wallet, campaign_id, record_id)\n// call_index 6: dismiss_inbox_record(record_id)\n// call_index 7: submit_engagement(record_id, session_duration_seconds, interaction_count)\n// call_index 8: claim_reward(record_id)\n// call_index 9: update_wallet_index(wallet_age_days, activity_count, category_history, region_code)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildDeliverToInbox(\n api: ApiPromise,\n wallet: string, // SS58 address of target wallet\n campaignId: string, // [u8; 32] 0x hex\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.deliverToInbox(wallet, campaignId, recordId)\n}\n\nexport function buildDismissInboxRecord(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.dismissInboxRecord(recordId)\n}\n\nexport function buildSubmitEngagement(\n api: ApiPromise,\n recordId: string, // [u8; 32] 0x hex\n sessionDurationSeconds: number, // u32, must be >= MIN_SESSION_SECONDS (120)\n interactionCount: number // u32, must be >= MIN_INTERACTIONS (5)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.submitEngagement(\n recordId,\n sessionDurationSeconds,\n interactionCount\n )\n}\n\nexport function buildClaimReward(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.claimReward(recordId)\n}\n\nexport function buildUpdateWalletIndex(\n api: ApiPromise,\n walletAgeDays: number, // u32\n activityCount: number, // u32\n categoryHistory: number[], // BoundedVec<u8, 8> — AppCategory IDs\n regionCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.updateWalletIndex(\n walletAgeDays,\n activityCount,\n categoryHistory,\n regionCode\n )\n}\n","// AwarizonTargeting pallet — targeting extrinsics\n// Pallet index: 9 (runtime/src/lib.rs #[runtime::pallet_index(9)])\n// call_index 0: build_bloom_filter(campaign_id)\n// call_index 1: check_wallet_match(campaign_id, wallet)\n// call_index 2: run_targeting_batch(campaign_id, wallets)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildBloomFilter(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.buildBloomFilter(campaignId)\n}\n\nexport function buildCheckWalletMatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallet: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.checkWalletMatch(campaignId, wallet)\n}\n\nexport function buildRunTargetingBatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallets: string[] // SS58 addresses, max 100 (BoundedVec<AccountId, 100>)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.runTargetingBatch(campaignId, wallets)\n}\n","// AwarizonConsensus pallet — validator extrinsics\n// Pallet index: 10 (runtime/src/lib.rs #[runtime::pallet_index(10)])\n// call_index 0: register_validator(self_stake: u128, region_code: u8, country_code: u8)\n// call_index 1: delegate_stake(validator: AccountId, amount: u128)\n// call_index 2: undelegate_stake(validator: AccountId)\n// call_index 3: update_performance(validator, uptime_bps, finality_bps, blocks_bps)\n// call_index 4: run_epoch_election(epoch: u64)\n// call_index 5: slash_validator(validator: AccountId, reason: u8) — root only\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterValidator(\n api: ApiPromise,\n selfStake: bigint, // u128 — must be >= MinValidatorStake\n regionCode: number, // u8\n countryCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.registerValidator(selfStake, regionCode, countryCode)\n}\n\nexport function buildDelegateStake(\n api: ApiPromise,\n validator: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.delegateStake(validator, amount)\n}\n\nexport function buildUndelegateStake(\n api: ApiPromise,\n validator: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.undelegateStake(validator)\n}\n\nexport function buildUpdatePerformance(\n api: ApiPromise,\n validator: string, // SS58 address\n uptimeBps: number, // u32, 0–10000\n finalityBps: number, // u32, 0–10000\n blocksBps: number // u32, 0–10000\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.updatePerformance(\n validator,\n uptimeBps,\n finalityBps,\n blocksBps\n )\n}\n\nexport function buildRunEpochElection(\n api: ApiPromise,\n epoch: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.runEpochElection(epoch)\n}\n\nexport function buildSlashValidator(\n api: ApiPromise,\n validator: string, // SS58 address\n reason: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.slashValidator(validator, reason)\n}\n","// pallet_assets extrinsics\n// Pallet index: 11 (runtime/src/lib.rs #[runtime::pallet_index(11)] pub type Assets = pallet_assets)\n// Method names follow @polkadot/api camelCase conversion of pallet_assets extrinsics.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildCreateAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n admin: string, // SS58 address — asset admin account\n minBalance: bigint // minimum balance (u128)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.create(id, admin, minBalance)\n}\n\nexport function buildMintAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n beneficiary: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.mint(id, beneficiary, amount)\n}\n\nexport function buildTransferAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n target: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.transfer(id, target, amount)\n}\n","import { Keyring } from '@polkadot/keyring'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport { parseChainError } from './errors'\n\n// Create a Keyring instance for sr25519 (Substrate default)\nexport function createKeyring(): Keyring {\n return new Keyring({ type: 'sr25519' })\n}\n\n// Load a keypair from a mnemonic (BIP39)\nexport function keypairFromMnemonic(mnemonic: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromMnemonic(mnemonic)\n}\n\n// Load a keypair from a seed hex (0x...)\nexport function keypairFromSeed(seed: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromSeed(Buffer.from(seed.replace('0x', ''), 'hex'))\n}\n\n// Dev/test keypairs (only available on --dev chains)\nexport function aliceKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Alice')\n}\n\nexport function bobKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Bob')\n}\n\n// Sign and submit an extrinsic, returning the final status\nexport async function signAndSend(\n api: ApiPromise,\n extrinsic: SubmittableExtrinsic<'promise', ISubmittableResult>,\n signer: KeyringPair\n): Promise<{ blockHash: string; txHash: string; blockNumber: number }> {\n return new Promise((resolve, reject) => {\n extrinsic\n .signAndSend(signer, ({ status, dispatchError }: ISubmittableResult) => {\n if (status.isInBlock || status.isFinalized) {\n if (dispatchError) {\n reject(parseChainError(dispatchError.toString()))\n } else {\n const blockHash = status.isInBlock\n ? status.asInBlock.toHex()\n : status.asFinalized.toHex()\n const txHash = extrinsic.hash.toHex()\n api.rpc.chain.getHeader(blockHash)\n .then(header => resolve({ blockHash, txHash, blockNumber: header.number.toNumber() }))\n .catch(() => resolve({ blockHash, txHash, blockNumber: 0 }))\n }\n }\n })\n .catch(reject)\n })\n}\n","// Typed error classes matching on-chain error variants.\n// Error names derived from:\n// pallets/awarizon-state/src/lib.rs — Error<T> enum\n// pallets/awarizon-consensus/src/lib.rs — Error<T> enum\n\nexport class AwarizonError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly details?: unknown\n ) {\n super(message)\n this.name = 'AwarizonError'\n }\n}\n\n// ----------------------------------------------------------------\n// awarizon-state errors\n// ----------------------------------------------------------------\n\nexport class DeveloperNotFoundError extends AwarizonError {\n constructor() { super('Developer not found', 'DeveloperNotFound') }\n}\nexport class DeveloperAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Developer already registered', 'DeveloperAlreadyRegistered') }\n}\nexport class DeveloperNotVerifiedError extends AwarizonError {\n constructor() { super('Developer not verified', 'DeveloperNotVerified') }\n}\nexport class DeveloperSuspendedError extends AwarizonError {\n constructor() { super('Developer is suspended', 'DeveloperSuspended') }\n}\nexport class ManifestNotFoundError extends AwarizonError {\n constructor() { super('Manifest not found', 'ManifestNotFound') }\n}\nexport class ManifestAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Manifest already registered', 'ManifestAlreadyRegistered') }\n}\nexport class ManifestLimitReachedError extends AwarizonError {\n constructor() { super('Manifest limit reached', 'ManifestLimitReached') }\n}\nexport class CampaignNotFoundError extends AwarizonError {\n constructor() { super('Campaign not found', 'CampaignNotFound') }\n}\nexport class CampaignNotActiveError extends AwarizonError {\n constructor() { super('Campaign is not active', 'CampaignNotActive') }\n}\nexport class CampaignExpiredError extends AwarizonError {\n constructor() { super('Campaign has expired', 'CampaignExpired') }\n}\nexport class CampaignDeliveryLimitReachedError extends AwarizonError {\n constructor() { super('Campaign delivery limit reached', 'CampaignDeliveryLimitReached') }\n}\nexport class InboxRecordNotFoundError extends AwarizonError {\n constructor() { super('Inbox record not found', 'InboxRecordNotFound') }\n}\nexport class InboxAlreadyDeliveredError extends AwarizonError {\n constructor() { super('Already delivered to this inbox', 'InboxAlreadyDelivered') }\n}\nexport class InboxFullError extends AwarizonError {\n constructor() { super('Inbox is full (1000 records)', 'InboxFull') }\n}\nexport class EngagementCooldownActiveError extends AwarizonError {\n constructor() { super('Engagement cooldown is active (24h)', 'EngagementCooldownActive') }\n}\nexport class EngagementDailyLimitReachedError extends AwarizonError {\n constructor() { super('Daily engagement limit reached (10/day)', 'EngagementDailyLimitReached') }\n}\nexport class EngagementInvalidError extends AwarizonError {\n constructor() { super('Engagement does not meet minimum requirements', 'EngagementInvalid') }\n}\nexport class InsufficientStakeError extends AwarizonError {\n constructor() { super('Insufficient stake', 'InsufficientStake') }\n}\nexport class InsufficientBalanceError extends AwarizonError {\n constructor() { super('Insufficient balance', 'InsufficientBalance') }\n}\nexport class TargetingDimensionLimitExceededError extends AwarizonError {\n constructor() { super('Targeting dimension limit exceeded (max 6)', 'TargetingDimensionLimitExceeded') }\n}\nexport class InvalidManifestHashError extends AwarizonError {\n constructor() { super('Invalid manifest hash', 'InvalidManifestHash') }\n}\nexport class InvalidCampaignIdError extends AwarizonError {\n constructor() { super('Invalid campaign ID', 'InvalidCampaignId') }\n}\nexport class UnauthorizedError extends AwarizonError {\n constructor() { super('Unauthorized', 'Unauthorized') }\n}\nexport class EpochNotReadyError extends AwarizonError {\n constructor() { super('Epoch is not ready to advance', 'EpochNotReady') }\n}\nexport class NotExpiredYetError extends AwarizonError {\n constructor() { super('Campaign has not expired yet', 'NotExpiredYet') }\n}\nexport class ResetNotReadyError extends AwarizonError {\n constructor() { super('Daily reset is not ready yet', 'ResetNotReady') }\n}\n\n// ----------------------------------------------------------------\n// awarizon-consensus errors\n// ----------------------------------------------------------------\n\nexport class ValidatorAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Validator already registered', 'ValidatorAlreadyRegistered') }\n}\nexport class ValidatorNotFoundError extends AwarizonError {\n constructor() { super('Validator not found', 'ValidatorNotFound') }\n}\nexport class RegionCapExceededError extends AwarizonError {\n constructor() { super('Region validator cap exceeded (20%)', 'RegionCapExceeded') }\n}\nexport class CountryCapExceededError extends AwarizonError {\n constructor() { super('Country validator cap exceeded (10%)', 'CountryCapExceeded') }\n}\nexport class DelegationNotFoundError extends AwarizonError {\n constructor() { super('Delegation not found', 'DelegationNotFound') }\n}\nexport class CannotDelegateToSelfError extends AwarizonError {\n constructor() { super('Cannot delegate stake to yourself', 'CannotDelegateToSelf') }\n}\nexport class ValidatorNotActiveError extends AwarizonError {\n constructor() { super('Validator is not active', 'ValidatorNotActive') }\n}\nexport class AlreadyDelegatedError extends AwarizonError {\n constructor() { super('Already delegated to this validator', 'AlreadyDelegated') }\n}\nexport class MaxValidatorsReachedError extends AwarizonError {\n constructor() { super('Maximum validator count reached', 'MaxValidatorsReached') }\n}\n\n// ----------------------------------------------------------------\n// Error mapping\n// ----------------------------------------------------------------\n\nconst ERROR_MAP: Record<string, () => AwarizonError> = {\n DeveloperNotFound: () => new DeveloperNotFoundError(),\n DeveloperAlreadyRegistered: () => new DeveloperAlreadyRegisteredError(),\n DeveloperNotVerified: () => new DeveloperNotVerifiedError(),\n DeveloperSuspended: () => new DeveloperSuspendedError(),\n ManifestNotFound: () => new ManifestNotFoundError(),\n ManifestAlreadyRegistered: () => new ManifestAlreadyRegisteredError(),\n ManifestLimitReached: () => new ManifestLimitReachedError(),\n CampaignNotFound: () => new CampaignNotFoundError(),\n CampaignNotActive: () => new CampaignNotActiveError(),\n CampaignExpired: () => new CampaignExpiredError(),\n CampaignDeliveryLimitReached: () => new CampaignDeliveryLimitReachedError(),\n InboxRecordNotFound: () => new InboxRecordNotFoundError(),\n InboxAlreadyDelivered: () => new InboxAlreadyDeliveredError(),\n InboxFull: () => new InboxFullError(),\n EngagementCooldownActive: () => new EngagementCooldownActiveError(),\n EngagementDailyLimitReached: () => new EngagementDailyLimitReachedError(),\n EngagementInvalid: () => new EngagementInvalidError(),\n InsufficientStake: () => new InsufficientStakeError(),\n InsufficientBalance: () => new InsufficientBalanceError(),\n TargetingDimensionLimitExceeded: () => new TargetingDimensionLimitExceededError(),\n InvalidManifestHash: () => new InvalidManifestHashError(),\n InvalidCampaignId: () => new InvalidCampaignIdError(),\n Unauthorized: () => new UnauthorizedError(),\n EpochNotReady: () => new EpochNotReadyError(),\n NotExpiredYet: () => new NotExpiredYetError(),\n ResetNotReady: () => new ResetNotReadyError(),\n ValidatorAlreadyRegistered: () => new ValidatorAlreadyRegisteredError(),\n ValidatorNotFound: () => new ValidatorNotFoundError(),\n RegionCapExceeded: () => new RegionCapExceededError(),\n CountryCapExceeded: () => new CountryCapExceededError(),\n DelegationNotFound: () => new DelegationNotFoundError(),\n CannotDelegateToSelf: () => new CannotDelegateToSelfError(),\n ValidatorNotActive: () => new ValidatorNotActiveError(),\n AlreadyDelegated: () => new AlreadyDelegatedError(),\n MaxValidatorsReached: () => new MaxValidatorsReachedError(),\n}\n\nexport function parseChainError(error: unknown): AwarizonError {\n const errorStr = String(error)\n for (const [key, factory] of Object.entries(ERROR_MAP)) {\n if (errorStr.includes(key)) return factory()\n }\n return new AwarizonError(errorStr, 'UnknownError', error)\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -197,6 +197,55 @@ var awarizonRpc = {
|
|
|
197
197
|
description: "Get token issuance and engagement pool statistics",
|
|
198
198
|
params: [],
|
|
199
199
|
type: "Json"
|
|
200
|
+
},
|
|
201
|
+
getRecentTransactions: {
|
|
202
|
+
description: "Get recent transactions across the chain",
|
|
203
|
+
params: [],
|
|
204
|
+
type: "Json"
|
|
205
|
+
},
|
|
206
|
+
getBlockTransactions: {
|
|
207
|
+
description: "Get all transactions in a specific block",
|
|
208
|
+
params: [{ name: "block_number", type: "u32" }],
|
|
209
|
+
type: "Json"
|
|
210
|
+
},
|
|
211
|
+
// Identity endpoints
|
|
212
|
+
getIdentity: {
|
|
213
|
+
description: "Get identity record for an account",
|
|
214
|
+
params: [
|
|
215
|
+
{ name: "account", type: "Text" },
|
|
216
|
+
{ name: "at", type: "Option<Hash>" }
|
|
217
|
+
],
|
|
218
|
+
type: "Json"
|
|
219
|
+
},
|
|
220
|
+
lookupName: {
|
|
221
|
+
description: "Resolve a .riz name to an account and identity",
|
|
222
|
+
params: [
|
|
223
|
+
{ name: "name", type: "Text" },
|
|
224
|
+
{ name: "at", type: "Option<Hash>" }
|
|
225
|
+
],
|
|
226
|
+
type: "Json"
|
|
227
|
+
},
|
|
228
|
+
isNameAvailable: {
|
|
229
|
+
description: "Check if a .riz name is available to register",
|
|
230
|
+
params: [
|
|
231
|
+
{ name: "name", type: "Text" },
|
|
232
|
+
{ name: "at", type: "Option<Hash>" }
|
|
233
|
+
],
|
|
234
|
+
type: "bool"
|
|
235
|
+
},
|
|
236
|
+
getTotalIdentities: {
|
|
237
|
+
description: "Get total number of registered identities",
|
|
238
|
+
params: [{ name: "at", type: "Option<Hash>" }],
|
|
239
|
+
type: "u32"
|
|
240
|
+
},
|
|
241
|
+
// Links endpoints
|
|
242
|
+
getLinkedAddresses: {
|
|
243
|
+
description: "Get all linked external addresses for an account",
|
|
244
|
+
params: [
|
|
245
|
+
{ name: "account", type: "Text" },
|
|
246
|
+
{ name: "at", type: "Option<Hash>" }
|
|
247
|
+
],
|
|
248
|
+
type: "Json"
|
|
200
249
|
}
|
|
201
250
|
}
|
|
202
251
|
};
|
|
@@ -858,10 +907,9 @@ async function signAndSend(api, extrinsic, signer) {
|
|
|
858
907
|
if (dispatchError) {
|
|
859
908
|
reject(parseChainError(dispatchError.toString()));
|
|
860
909
|
} else {
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
});
|
|
910
|
+
const blockHash = status.isInBlock ? status.asInBlock.toHex() : status.asFinalized.toHex();
|
|
911
|
+
const txHash = extrinsic.hash.toHex();
|
|
912
|
+
api.rpc.chain.getHeader(blockHash).then((header) => resolve({ blockHash, txHash, blockNumber: header.number.toNumber() })).catch(() => resolve({ blockHash, txHash, blockNumber: 0 }));
|
|
865
913
|
}
|
|
866
914
|
}
|
|
867
915
|
}).catch(reject);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/customTypes.ts","../src/constants.ts","../src/utils.ts","../src/rpc.ts","../src/extrinsics/developer.ts","../src/extrinsics/manifests.ts","../src/extrinsics/campaigns.ts","../src/extrinsics/inbox.ts","../src/extrinsics/targeting.ts","../src/extrinsics/validators.ts","../src/extrinsics/assets.ts","../src/wallet.ts","../src/errors.ts"],"sourcesContent":["import { ApiPromise, WsProvider } from '@polkadot/api'\nimport { awarizonRpc, awarizonTypes } from './customTypes'\nimport { DEFAULT_ENDPOINT } from './constants'\n\nexport class AwarizonClient {\n private api: ApiPromise | null = null\n private endpoint: string\n\n constructor(endpoint: string = DEFAULT_ENDPOINT) {\n this.endpoint = endpoint\n }\n\n async connect(): Promise<ApiPromise> {\n if (this.api?.isConnected) return this.api\n\n const provider = new WsProvider(this.endpoint)\n this.api = await ApiPromise.create({\n provider,\n types: awarizonTypes,\n rpc: awarizonRpc,\n })\n\n await this.api.isReady\n return this.api\n }\n\n async disconnect(): Promise<void> {\n if (this.api) {\n await this.api.disconnect()\n this.api = null\n }\n }\n\n getApi(): ApiPromise {\n if (!this.api?.isConnected) {\n throw new Error('Not connected. Call connect() first.')\n }\n return this.api\n }\n\n async subscribeNewBlocks(\n callback: (blockNumber: number, blockHash: string) => void\n ): Promise<() => void> {\n const api = this.getApi()\n const unsub = await api.rpc.chain.subscribeNewHeads((header) => {\n callback(header.number.toNumber(), header.hash.toHex())\n })\n return unsub as unknown as () => void\n }\n\n async getBalance(address: string): Promise<bigint> {\n const api = this.getApi()\n const account = await api.query.system.account(address)\n return BigInt((account as any).data.free.toString())\n }\n}\n\nexport async function connect(\n endpoint: string = DEFAULT_ENDPOINT\n): Promise<AwarizonClient> {\n const client = new AwarizonClient(endpoint)\n await client.connect()\n return client\n}\n","// Custom SCALE type registry and RPC definitions for @polkadot/api.\n// Enum variants and struct field names derived from:\n// pallets/awarizon-types/src/lib.rs\n// pallets/awarizon-consensus/src/lib.rs\n// node/src/awarizon_rpc.rs\n\nexport const awarizonTypes = {\n // pallets/awarizon-types/src/lib.rs — enum AppCategory\n AppCategory: {\n _enum: [\n 'DeFi',\n 'Gaming',\n 'Social',\n 'Productivity',\n 'Infrastructure',\n 'DigitalAssets',\n 'DeveloperTools',\n 'Education',\n ],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum CampaignStatus\n CampaignStatus: {\n _enum: ['Pending', 'Active', 'Expired', 'Terminated'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum InboxRecordStatus\n InboxRecordStatus: {\n _enum: ['Pending', 'Delivered', 'Dismissed', 'Engaged'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum DeveloperStatus\n DeveloperStatus: {\n _enum: ['Unverified', 'Verified', 'Suspended'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum TransactionType\n TransactionType: {\n _enum: ['Financial', 'Distribution', 'System'],\n },\n\n // pallets/awarizon-types/src/lib.rs — struct TargetingCriteria\n TargetingCriteria: {\n wallet_age_min: 'Option<u32>',\n wallet_age_max: 'Option<u32>',\n riz_balance_min: 'Option<u128>',\n riz_balance_max: 'Option<u128>',\n activity_min: 'Option<u32>',\n activity_max: 'Option<u32>',\n region_codes: 'Vec<u8>',\n category_history: 'Vec<AppCategory>',\n custom_logic_hash: 'Option<H256>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct DeveloperProfile<AccountId, BlockNumber>\n DeveloperProfile: {\n account: 'AccountId',\n staked_riz: 'u128',\n status: 'DeveloperStatus',\n first_distribution_block: 'Option<u32>',\n violation_count: 'u32',\n total_campaigns: 'u32',\n total_deliveries: 'u64',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct AppManifest<AccountId, BlockNumber>\n AppManifest: {\n manifest_hash: 'H256',\n developer: 'AccountId',\n category: 'AppCategory',\n registered_at: 'u32',\n metadata_uri: 'Vec<u8>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct Campaign<AccountId, BlockNumber>\n Campaign: {\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n targeting: 'TargetingCriteria',\n status: 'CampaignStatus',\n created_at: 'u32',\n expires_at: 'u32',\n max_deliveries: 'u64',\n current_deliveries: 'u64',\n storage_fee_paid: 'u128',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct InboxRecord<AccountId, BlockNumber>\n InboxRecord: {\n record_id: 'H256',\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n category: 'AppCategory',\n status: 'InboxRecordStatus',\n delivered_at: 'u32',\n engaged_at: 'Option<u32>',\n reward_claimed: 'bool',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct ValidatorInfo<AccountId>\n ValidatorInfo: {\n account: 'AccountId',\n self_stake: 'u128',\n delegated_stake: 'u128',\n region_code: 'u8',\n country_code: 'u8',\n uptime_bps: 'u32',\n finality_bps: 'u32',\n blocks_bps: 'u32',\n slash_count: 'u32',\n is_active: 'bool',\n epoch_registered: 'u64',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct Delegation<AccountId>\n Delegation: {\n delegator: 'AccountId',\n validator: 'AccountId',\n amount: 'u128',\n epoch_delegated: 'u64',\n },\n}\n\n// RPC method definitions for @polkadot/api.\n// All methods are in the \"awarizon\" namespace and return JSON (not SCALE).\n// Wire names from: node/src/awarizon_rpc.rs #[method(name = \"...\")]\nexport const awarizonRpc = {\n awarizon: {\n // Developer endpoints\n getDeveloperProfile: {\n description: 'Get developer profile by SS58 account address',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n getDeveloperCampaigns: {\n description: 'Get all campaign IDs for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n getDeveloperManifests: {\n description: 'Get all manifest hashes for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n\n // Campaign endpoints\n getCampaign: {\n description: 'Get campaign details by campaign ID (0x hex)',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n getActiveCampaignCount: {\n description: 'Get the number of currently active campaigns',\n params: [],\n type: 'u64',\n },\n getCampaignDeliveryStatus: {\n description: 'Get delivery progress for a campaign',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n\n // Inbox endpoints\n getInboxCount: {\n description: 'Get number of inbox records for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'u32',\n },\n getInboxRecord: {\n description: 'Get a specific inbox record by wallet and record ID',\n params: [\n { name: 'wallet', type: 'Text' },\n { name: 'record_id', type: 'Text' },\n ],\n type: 'Json',\n },\n\n // Targeting endpoints\n getWalletTargetingProfile: {\n description: 'Get pre-computed targeting profile for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'Json',\n },\n checkCampaignMatch: {\n description: 'Check cached targeting match result for (campaign, wallet)',\n params: [\n { name: 'campaign_id', type: 'Text' },\n { name: 'wallet', type: 'Text' },\n ],\n type: 'bool',\n },\n\n // Validator endpoints\n getActiveValidators: {\n description: 'Get SS58 addresses of all active validators',\n params: [],\n type: 'Vec<Text>',\n },\n getValidatorCount: {\n description: 'Get total number of active validators',\n params: [],\n type: 'u32',\n },\n getValidatorPerformance: {\n description: 'Get performance metrics for a validator',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n\n // Network stats endpoints\n getNetworkStats: {\n description: 'Get Awarizon network statistics',\n params: [],\n type: 'Json',\n },\n getTokenStats: {\n description: 'Get token issuance and engagement pool statistics',\n params: [],\n type: 'Json',\n },\n },\n}\n","// Protocol constants derived from pallets/awarizon-types/src/constants.rs\n\n// ----------------------------------------------------------------\n// Token denomination\n// ----------------------------------------------------------------\nexport const PLANCK = 1n\nexport const RIZ = 1_000_000_000_000n // 10^12 planck\nexport const MICRO_RIZ = 1_000_000n // 10^6 planck\nexport const MILLI_RIZ = 1_000_000_000n // 10^9 planck\n\n// ----------------------------------------------------------------\n// Network defaults\n// ----------------------------------------------------------------\nexport const DEFAULT_ENDPOINT = 'wss://rpc.awarizon.com'\nexport const DEFAULT_HTTP_ENDPOINT = 'https://rpc.awarizon.com'\nexport const CHAIN_NAME = 'Awarizon'\n\n// ----------------------------------------------------------------\n// Consensus\n// ----------------------------------------------------------------\nexport const GENESIS_VALIDATORS = 51\nexport const TARGET_VALIDATORS = 121\nexport const BLOCK_TIME_SECONDS = 3\nexport const EPOCH_LENGTH_BLOCKS = 28_800\n\n// ----------------------------------------------------------------\n// Campaign rules\n// ----------------------------------------------------------------\nexport const MIN_CAMPAIGN_DURATION_DAYS = 1\nexport const MAX_CAMPAIGN_DURATION_DAYS = 90\nexport const DEFAULT_CAMPAIGN_DURATION_DAYS = 30\n\n// ----------------------------------------------------------------\n// Engagement rules\n// ----------------------------------------------------------------\nexport const MIN_SESSION_SECONDS = 120\nexport const MIN_INTERACTIONS = 5\nexport const ENGAGEMENT_COOLDOWN_HOURS = 24\nexport const MAX_ENGAGEMENT_EVENTS_PER_DAY = 10\n\n// ----------------------------------------------------------------\n// Targeting limits\n// ----------------------------------------------------------------\nexport const MAX_TARGETING_DIMENSIONS = 6\nexport const MAX_REGION_CODES_PER_CAMPAIGN = 64\nexport const MAX_CATEGORY_HISTORY_ENTRIES = 8\n\n// ----------------------------------------------------------------\n// Developer verification\n// ----------------------------------------------------------------\nexport const DEVELOPER_MIN_TENURE_DAYS = 30\n\n// ----------------------------------------------------------------\n// Validator performance weights (basis points, sum = 10000)\n// ----------------------------------------------------------------\nexport const PERF_WEIGHT_UPTIME_BPS = 5_000\nexport const PERF_WEIGHT_FINALITY_BPS = 2_500\nexport const PERF_WEIGHT_BLOCKS_BPS = 1_500\nexport const PERF_WEIGHT_SLASH_BPS = 1_000\nexport const PERF_MULTIPLIER_MIN_BPS = 5_000\nexport const PERF_MULTIPLIER_MAX_BPS = 12_500\n\n// ----------------------------------------------------------------\n// Geographic caps (basis points)\n// ----------------------------------------------------------------\nexport const MAX_VALIDATORS_PER_REGION_BPS = 2_000 // 20%\nexport const MAX_VALIDATORS_PER_COUNTRY_BPS = 1_000 // 10%\n","import { RIZ } from './constants'\n\n// Convert planck to RIZ display string e.g. 1_000_000_000_000n → \"1.0000\"\nexport function formatRiz(planck: bigint, decimals = 4): string {\n const whole = planck / RIZ\n const remainder = planck % RIZ\n const decStr = remainder.toString().padStart(12, '0').slice(0, decimals)\n return `${whole}.${decStr}`\n}\n\n// Convert RIZ amount string to planck bigint e.g. \"1.5\" → 1_500_000_000_000n\nexport function parseRiz(riz: string): bigint {\n const [whole, decimal = ''] = riz.split('.')\n const paddedDecimal = decimal.padEnd(12, '0').slice(0, 12)\n return BigInt(whole) * RIZ + BigInt(paddedDecimal)\n}\n\n// Convert hex string to Uint8Array\nexport function hexToBytes(hex: string): Uint8Array {\n const clean = hex.replace('0x', '')\n return new Uint8Array(\n clean.match(/.{1,2}/g)?.map(b => parseInt(b, 16)) ?? []\n )\n}\n\n// Convert Uint8Array to hex string with 0x prefix\nexport function bytesToHex(bytes: Uint8Array): string {\n return '0x' + Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n// Generate a campaign ID from manifest hash + current timestamp\nexport function generateCampaignId(manifestHash: string): string {\n const timestamp = Date.now().toString(16).padStart(16, '0')\n const hashPart = manifestHash.replace('0x', '').slice(0, 48)\n return '0x' + hashPart + timestamp\n}\n\n// Basic SS58 address length check\nexport function isValidAddress(address: string): boolean {\n return address.length >= 46 && address.length <= 48\n}\n\n// Format a block count to a human-readable time estimate (3s block time)\nexport function blocksToTime(blocks: number): string {\n const seconds = blocks * 3\n if (seconds < 60) return `${seconds}s`\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`\n return `${Math.floor(seconds / 86400)}d`\n}\n\n// Parse a u128-as-string from RPC into bigint\nexport function parsePlanckString(value: string): bigint {\n return BigInt(value)\n}\n","// Typed wrappers for all 15 Awarizon custom RPC methods.\n// Wire names and return shapes derived from node/src/awarizon_rpc.rs.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type {\n NetworkStats,\n CampaignDeliveryStatus,\n WalletTargetingProfile,\n ValidatorPerformanceResponse,\n TokenStats,\n DeveloperProfile,\n Campaign,\n InboxRecord,\n TransactionSummary,\n VestingSchedule,\n IdentityRecord,\n NameLookup,\n LinkedAddress,\n ChainType,\n LinkStatus,\n} from './types'\n\n// ----------------------------------------------------------------\n// Developer endpoints\n// ----------------------------------------------------------------\n\nexport async function getDeveloperProfile(\n api: ApiPromise,\n account: string\n): Promise<DeveloperProfile | null> {\n const result = await (api.rpc as any).awarizon.getDeveloperProfile(account)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n staked_riz: BigInt(json.staked_riz ?? '0'),\n total_deliveries: BigInt(json.total_deliveries ?? '0'),\n } as DeveloperProfile\n}\n\nexport async function getDeveloperCampaigns(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperCampaigns(account)\n return result.toJSON() as string[]\n}\n\nexport async function getDeveloperManifests(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperManifests(account)\n return result.toJSON() as string[]\n}\n\n// ----------------------------------------------------------------\n// Campaign endpoints\n// ----------------------------------------------------------------\n\nexport async function getCampaign(\n api: ApiPromise,\n campaignId: string\n): Promise<Campaign | null> {\n const result = await (api.rpc as any).awarizon.getCampaign(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n storage_fee_paid: BigInt(json.storage_fee_paid ?? '0'),\n } as Campaign\n}\n\nexport async function getActiveCampaignCount(api: ApiPromise): Promise<bigint> {\n const result = await (api.rpc as any).awarizon.getActiveCampaignCount()\n return BigInt(result.toString())\n}\n\nexport async function getCampaignDeliveryStatus(\n api: ApiPromise,\n campaignId: string\n): Promise<CampaignDeliveryStatus | null> {\n const result = await (api.rpc as any).awarizon.getCampaignDeliveryStatus(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n remaining: BigInt(json.remaining ?? '0'),\n percentage_used: json.percentage_used as number,\n }\n}\n\n// ----------------------------------------------------------------\n// Inbox endpoints\n// ----------------------------------------------------------------\n\nexport async function getInboxCount(\n api: ApiPromise,\n wallet: string\n): Promise<number> {\n const result = await (api.rpc as any).awarizon.getInboxCount(wallet)\n return result.toNumber()\n}\n\nexport async function getInboxRecord(\n api: ApiPromise,\n wallet: string,\n recordId: string\n): Promise<InboxRecord | null> {\n const result = await (api.rpc as any).awarizon.getInboxRecord(wallet, recordId)\n const json = result.toJSON()\n if (!json) return null\n return json as InboxRecord\n}\n\n// ----------------------------------------------------------------\n// Targeting endpoints\n// ----------------------------------------------------------------\n\nexport async function getWalletTargetingProfile(\n api: ApiPromise,\n wallet: string\n): Promise<WalletTargetingProfile> {\n const result = await (api.rpc as any).awarizon.getWalletTargetingProfile(wallet)\n return result.toJSON() as WalletTargetingProfile\n}\n\nexport async function checkCampaignMatch(\n api: ApiPromise,\n campaignId: string,\n wallet: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.checkCampaignMatch(campaignId, wallet)\n return result.isTrue\n}\n\n// ----------------------------------------------------------------\n// Validator endpoints\n// ----------------------------------------------------------------\n\nexport async function getActiveValidators(api: ApiPromise): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getActiveValidators()\n return result.toJSON() as string[]\n}\n\nexport async function getValidatorCount(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getValidatorCount()\n return result.toNumber()\n}\n\nexport async function getValidatorPerformance(\n api: ApiPromise,\n account: string\n): Promise<ValidatorPerformanceResponse | null> {\n const result = await (api.rpc as any).awarizon.getValidatorPerformance(account)\n return result.toJSON() as ValidatorPerformanceResponse | null\n}\n\n// ----------------------------------------------------------------\n// Network stats endpoints\n// ----------------------------------------------------------------\n\nexport async function getNetworkStats(api: ApiPromise): Promise<NetworkStats> {\n const result = await (api.rpc as any).awarizon.getNetworkStats()\n const json = result.toJSON() as Record<string, unknown>\n return {\n total_wallets: BigInt(String(json.total_wallets ?? '0')),\n total_deliveries: BigInt(String(json.total_deliveries ?? '0')),\n active_campaigns: BigInt(String(json.active_campaigns ?? '0')),\n total_staked: String(json.total_staked ?? '0'),\n current_epoch: BigInt(String(json.current_epoch ?? '0')),\n inbox_reserve_balance: String(json.inbox_reserve_balance ?? '0'),\n total_extrinsics: Number(json.total_extrinsics ?? 0),\n circulating_supply: String(json.circulating_supply ?? '0'),\n non_circulating_supply: String(json.non_circulating_supply ?? '0'),\n }\n}\n\nexport async function getTokenStats(api: ApiPromise): Promise<TokenStats> {\n const result = await (api.rpc as any).awarizon.getTokenStats()\n return result.toJSON() as TokenStats\n}\n\nexport async function getRecentTransactions(\n api: ApiPromise\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getRecentTransactions()\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getBlockTransactions(\n api: ApiPromise,\n blockNumber: number\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getBlockTransactions(blockNumber)\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getVestingSchedule(\n api: ApiPromise,\n account: string\n): Promise<VestingSchedule[]> {\n const result = await (api.query as any).vesting.vesting(account)\n const json = result.toJSON()\n if (!json || !Array.isArray(json)) return []\n return json.map((v: any) => ({\n locked: String(v.locked ?? v.Locked ?? '0'),\n per_block: String(v.perBlock ?? v.per_block ?? '0'),\n starting_block: Number(v.startingBlock ?? v.starting_block ?? 0),\n }))\n}\n\n// ----------------------------------------------------------------\n// Identity endpoints\n// ----------------------------------------------------------------\n\nexport async function getIdentity(\n api: ApiPromise,\n account: string\n): Promise<IdentityRecord | null> {\n const result = await (api.rpc as any).awarizon.getIdentity(account, null)\n const json = result.toJSON()\n if (!json) return null\n return {\n account: json.account,\n rizName: json.riz_name ?? null,\n rizNameFull: json.riz_name ? json.riz_name + '.riz' : null,\n displayName: json.display_name ?? null,\n bio: json.bio ?? null,\n avatarUri: json.avatar_uri ?? null,\n website: json.website ?? null,\n registeredAt: Number(json.registered_at ?? 0),\n verified: Boolean(json.verified),\n reputationScore: Number(json.reputation_score ?? 0),\n linkedAddresses: (json.linked_addresses ?? []).map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n })),\n }\n}\n\nexport async function lookupName(\n api: ApiPromise,\n name: string\n): Promise<NameLookup | null> {\n const result = await (api.rpc as any).awarizon.lookupName(name, null)\n const json = result.toJSON()\n if (!json) return null\n const identity = json.identity ? await getIdentity(api, json.account) : null\n return {\n rizName: json.riz_name as string,\n account: json.account as string,\n identity,\n }\n}\n\nexport async function getLinkedAddresses(\n api: ApiPromise,\n account: string\n): Promise<LinkedAddress[]> {\n const result = await (api.rpc as any).awarizon.getLinkedAddresses(account, null)\n const arr = result.toJSON() as any[]\n if (!Array.isArray(arr)) return []\n return arr.map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n }))\n}\n\nexport async function isNameAvailable(\n api: ApiPromise,\n name: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.isNameAvailable(name, null)\n return Boolean(result.toJSON())\n}\n\nexport async function getTotalIdentities(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getTotalIdentities(null)\n return result.toNumber()\n}\n","// AwarizonState pallet — developer extrinsics\n// Pallet index: 8 (runtime/src/lib.rs #[runtime::pallet_index(8)])\n// call_index 0: register_developer()\n// call_index 1: stake_riz(amount: BalanceOf<T>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterDeveloper(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerDeveloper()\n}\n\nexport function buildStakeRiz(\n api: ApiPromise,\n amount: bigint\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.stakeRiz(amount)\n}\n","// AwarizonState pallet — manifest extrinsics\n// call_index 2: register_manifest(manifest_hash: [u8;32], category: AppCategory, metadata_uri: BoundedVec<u8, 256>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { AppCategory } from '../types'\n\nexport function buildRegisterManifest(\n api: ApiPromise,\n manifestHash: string, // 0x-prefixed 32-byte hex\n category: AppCategory,\n metadataUri: string | Uint8Array // UTF-8 string or raw bytes, max 256 bytes\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerManifest(manifestHash, category, metadataUri)\n}\n","// AwarizonState pallet — campaign extrinsics\n// call_index 3: create_campaign(campaign_id, manifest_hash, targeting, duration_days, max_deliveries)\n// call_index 5: terminate_campaign(campaign_id)\n// call_index 10: advance_epoch()\n// call_index 11: expire_campaign(campaign_id)\n// call_index 12: reset_daily_engagement()\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { TargetingCriteria } from '../types'\n\nexport function buildCreateCampaign(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n manifestHash: string, // [u8; 32] 0x hex\n targeting: TargetingCriteria,\n durationDays: number, // u32, 1–90\n maxDeliveries: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.createCampaign(\n campaignId,\n manifestHash,\n targeting,\n durationDays,\n maxDeliveries\n )\n}\n\nexport function buildTerminateCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.terminateCampaign(campaignId)\n}\n\nexport function buildExpireCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.expireCampaign(campaignId)\n}\n\nexport function buildAdvanceEpoch(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.advanceEpoch()\n}\n\nexport function buildResetDailyEngagement(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.resetDailyEngagement()\n}\n","// AwarizonState pallet — inbox extrinsics\n// call_index 4: deliver_to_inbox(wallet, campaign_id, record_id)\n// call_index 6: dismiss_inbox_record(record_id)\n// call_index 7: submit_engagement(record_id, session_duration_seconds, interaction_count)\n// call_index 8: claim_reward(record_id)\n// call_index 9: update_wallet_index(wallet_age_days, activity_count, category_history, region_code)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildDeliverToInbox(\n api: ApiPromise,\n wallet: string, // SS58 address of target wallet\n campaignId: string, // [u8; 32] 0x hex\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.deliverToInbox(wallet, campaignId, recordId)\n}\n\nexport function buildDismissInboxRecord(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.dismissInboxRecord(recordId)\n}\n\nexport function buildSubmitEngagement(\n api: ApiPromise,\n recordId: string, // [u8; 32] 0x hex\n sessionDurationSeconds: number, // u32, must be >= MIN_SESSION_SECONDS (120)\n interactionCount: number // u32, must be >= MIN_INTERACTIONS (5)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.submitEngagement(\n recordId,\n sessionDurationSeconds,\n interactionCount\n )\n}\n\nexport function buildClaimReward(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.claimReward(recordId)\n}\n\nexport function buildUpdateWalletIndex(\n api: ApiPromise,\n walletAgeDays: number, // u32\n activityCount: number, // u32\n categoryHistory: number[], // BoundedVec<u8, 8> — AppCategory IDs\n regionCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.updateWalletIndex(\n walletAgeDays,\n activityCount,\n categoryHistory,\n regionCode\n )\n}\n","// AwarizonTargeting pallet — targeting extrinsics\n// Pallet index: 9 (runtime/src/lib.rs #[runtime::pallet_index(9)])\n// call_index 0: build_bloom_filter(campaign_id)\n// call_index 1: check_wallet_match(campaign_id, wallet)\n// call_index 2: run_targeting_batch(campaign_id, wallets)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildBloomFilter(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.buildBloomFilter(campaignId)\n}\n\nexport function buildCheckWalletMatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallet: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.checkWalletMatch(campaignId, wallet)\n}\n\nexport function buildRunTargetingBatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallets: string[] // SS58 addresses, max 100 (BoundedVec<AccountId, 100>)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.runTargetingBatch(campaignId, wallets)\n}\n","// AwarizonConsensus pallet — validator extrinsics\n// Pallet index: 10 (runtime/src/lib.rs #[runtime::pallet_index(10)])\n// call_index 0: register_validator(self_stake: u128, region_code: u8, country_code: u8)\n// call_index 1: delegate_stake(validator: AccountId, amount: u128)\n// call_index 2: undelegate_stake(validator: AccountId)\n// call_index 3: update_performance(validator, uptime_bps, finality_bps, blocks_bps)\n// call_index 4: run_epoch_election(epoch: u64)\n// call_index 5: slash_validator(validator: AccountId, reason: u8) — root only\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterValidator(\n api: ApiPromise,\n selfStake: bigint, // u128 — must be >= MinValidatorStake\n regionCode: number, // u8\n countryCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.registerValidator(selfStake, regionCode, countryCode)\n}\n\nexport function buildDelegateStake(\n api: ApiPromise,\n validator: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.delegateStake(validator, amount)\n}\n\nexport function buildUndelegateStake(\n api: ApiPromise,\n validator: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.undelegateStake(validator)\n}\n\nexport function buildUpdatePerformance(\n api: ApiPromise,\n validator: string, // SS58 address\n uptimeBps: number, // u32, 0–10000\n finalityBps: number, // u32, 0–10000\n blocksBps: number // u32, 0–10000\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.updatePerformance(\n validator,\n uptimeBps,\n finalityBps,\n blocksBps\n )\n}\n\nexport function buildRunEpochElection(\n api: ApiPromise,\n epoch: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.runEpochElection(epoch)\n}\n\nexport function buildSlashValidator(\n api: ApiPromise,\n validator: string, // SS58 address\n reason: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.slashValidator(validator, reason)\n}\n","// pallet_assets extrinsics\n// Pallet index: 11 (runtime/src/lib.rs #[runtime::pallet_index(11)] pub type Assets = pallet_assets)\n// Method names follow @polkadot/api camelCase conversion of pallet_assets extrinsics.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildCreateAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n admin: string, // SS58 address — asset admin account\n minBalance: bigint // minimum balance (u128)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.create(id, admin, minBalance)\n}\n\nexport function buildMintAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n beneficiary: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.mint(id, beneficiary, amount)\n}\n\nexport function buildTransferAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n target: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.transfer(id, target, amount)\n}\n","import { Keyring } from '@polkadot/keyring'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport { parseChainError } from './errors'\n\n// Create a Keyring instance for sr25519 (Substrate default)\nexport function createKeyring(): Keyring {\n return new Keyring({ type: 'sr25519' })\n}\n\n// Load a keypair from a mnemonic (BIP39)\nexport function keypairFromMnemonic(mnemonic: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromMnemonic(mnemonic)\n}\n\n// Load a keypair from a seed hex (0x...)\nexport function keypairFromSeed(seed: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromSeed(Buffer.from(seed.replace('0x', ''), 'hex'))\n}\n\n// Dev/test keypairs (only available on --dev chains)\nexport function aliceKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Alice')\n}\n\nexport function bobKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Bob')\n}\n\n// Sign and submit an extrinsic, returning the final status\nexport async function signAndSend(\n api: ApiPromise,\n extrinsic: SubmittableExtrinsic<'promise', ISubmittableResult>,\n signer: KeyringPair\n): Promise<{ blockHash: string; txHash: string }> {\n return new Promise((resolve, reject) => {\n extrinsic\n .signAndSend(signer, ({ status, dispatchError }: ISubmittableResult) => {\n if (status.isInBlock || status.isFinalized) {\n if (dispatchError) {\n reject(parseChainError(dispatchError.toString()))\n } else {\n resolve({\n blockHash: status.isInBlock\n ? status.asInBlock.toHex()\n : status.asFinalized.toHex(),\n txHash: extrinsic.hash.toHex(),\n })\n }\n }\n })\n .catch(reject)\n })\n}\n","// Typed error classes matching on-chain error variants.\n// Error names derived from:\n// pallets/awarizon-state/src/lib.rs — Error<T> enum\n// pallets/awarizon-consensus/src/lib.rs — Error<T> enum\n\nexport class AwarizonError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly details?: unknown\n ) {\n super(message)\n this.name = 'AwarizonError'\n }\n}\n\n// ----------------------------------------------------------------\n// awarizon-state errors\n// ----------------------------------------------------------------\n\nexport class DeveloperNotFoundError extends AwarizonError {\n constructor() { super('Developer not found', 'DeveloperNotFound') }\n}\nexport class DeveloperAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Developer already registered', 'DeveloperAlreadyRegistered') }\n}\nexport class DeveloperNotVerifiedError extends AwarizonError {\n constructor() { super('Developer not verified', 'DeveloperNotVerified') }\n}\nexport class DeveloperSuspendedError extends AwarizonError {\n constructor() { super('Developer is suspended', 'DeveloperSuspended') }\n}\nexport class ManifestNotFoundError extends AwarizonError {\n constructor() { super('Manifest not found', 'ManifestNotFound') }\n}\nexport class ManifestAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Manifest already registered', 'ManifestAlreadyRegistered') }\n}\nexport class ManifestLimitReachedError extends AwarizonError {\n constructor() { super('Manifest limit reached', 'ManifestLimitReached') }\n}\nexport class CampaignNotFoundError extends AwarizonError {\n constructor() { super('Campaign not found', 'CampaignNotFound') }\n}\nexport class CampaignNotActiveError extends AwarizonError {\n constructor() { super('Campaign is not active', 'CampaignNotActive') }\n}\nexport class CampaignExpiredError extends AwarizonError {\n constructor() { super('Campaign has expired', 'CampaignExpired') }\n}\nexport class CampaignDeliveryLimitReachedError extends AwarizonError {\n constructor() { super('Campaign delivery limit reached', 'CampaignDeliveryLimitReached') }\n}\nexport class InboxRecordNotFoundError extends AwarizonError {\n constructor() { super('Inbox record not found', 'InboxRecordNotFound') }\n}\nexport class InboxAlreadyDeliveredError extends AwarizonError {\n constructor() { super('Already delivered to this inbox', 'InboxAlreadyDelivered') }\n}\nexport class InboxFullError extends AwarizonError {\n constructor() { super('Inbox is full (1000 records)', 'InboxFull') }\n}\nexport class EngagementCooldownActiveError extends AwarizonError {\n constructor() { super('Engagement cooldown is active (24h)', 'EngagementCooldownActive') }\n}\nexport class EngagementDailyLimitReachedError extends AwarizonError {\n constructor() { super('Daily engagement limit reached (10/day)', 'EngagementDailyLimitReached') }\n}\nexport class EngagementInvalidError extends AwarizonError {\n constructor() { super('Engagement does not meet minimum requirements', 'EngagementInvalid') }\n}\nexport class InsufficientStakeError extends AwarizonError {\n constructor() { super('Insufficient stake', 'InsufficientStake') }\n}\nexport class InsufficientBalanceError extends AwarizonError {\n constructor() { super('Insufficient balance', 'InsufficientBalance') }\n}\nexport class TargetingDimensionLimitExceededError extends AwarizonError {\n constructor() { super('Targeting dimension limit exceeded (max 6)', 'TargetingDimensionLimitExceeded') }\n}\nexport class InvalidManifestHashError extends AwarizonError {\n constructor() { super('Invalid manifest hash', 'InvalidManifestHash') }\n}\nexport class InvalidCampaignIdError extends AwarizonError {\n constructor() { super('Invalid campaign ID', 'InvalidCampaignId') }\n}\nexport class UnauthorizedError extends AwarizonError {\n constructor() { super('Unauthorized', 'Unauthorized') }\n}\nexport class EpochNotReadyError extends AwarizonError {\n constructor() { super('Epoch is not ready to advance', 'EpochNotReady') }\n}\nexport class NotExpiredYetError extends AwarizonError {\n constructor() { super('Campaign has not expired yet', 'NotExpiredYet') }\n}\nexport class ResetNotReadyError extends AwarizonError {\n constructor() { super('Daily reset is not ready yet', 'ResetNotReady') }\n}\n\n// ----------------------------------------------------------------\n// awarizon-consensus errors\n// ----------------------------------------------------------------\n\nexport class ValidatorAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Validator already registered', 'ValidatorAlreadyRegistered') }\n}\nexport class ValidatorNotFoundError extends AwarizonError {\n constructor() { super('Validator not found', 'ValidatorNotFound') }\n}\nexport class RegionCapExceededError extends AwarizonError {\n constructor() { super('Region validator cap exceeded (20%)', 'RegionCapExceeded') }\n}\nexport class CountryCapExceededError extends AwarizonError {\n constructor() { super('Country validator cap exceeded (10%)', 'CountryCapExceeded') }\n}\nexport class DelegationNotFoundError extends AwarizonError {\n constructor() { super('Delegation not found', 'DelegationNotFound') }\n}\nexport class CannotDelegateToSelfError extends AwarizonError {\n constructor() { super('Cannot delegate stake to yourself', 'CannotDelegateToSelf') }\n}\nexport class ValidatorNotActiveError extends AwarizonError {\n constructor() { super('Validator is not active', 'ValidatorNotActive') }\n}\nexport class AlreadyDelegatedError extends AwarizonError {\n constructor() { super('Already delegated to this validator', 'AlreadyDelegated') }\n}\nexport class MaxValidatorsReachedError extends AwarizonError {\n constructor() { super('Maximum validator count reached', 'MaxValidatorsReached') }\n}\n\n// ----------------------------------------------------------------\n// Error mapping\n// ----------------------------------------------------------------\n\nconst ERROR_MAP: Record<string, () => AwarizonError> = {\n DeveloperNotFound: () => new DeveloperNotFoundError(),\n DeveloperAlreadyRegistered: () => new DeveloperAlreadyRegisteredError(),\n DeveloperNotVerified: () => new DeveloperNotVerifiedError(),\n DeveloperSuspended: () => new DeveloperSuspendedError(),\n ManifestNotFound: () => new ManifestNotFoundError(),\n ManifestAlreadyRegistered: () => new ManifestAlreadyRegisteredError(),\n ManifestLimitReached: () => new ManifestLimitReachedError(),\n CampaignNotFound: () => new CampaignNotFoundError(),\n CampaignNotActive: () => new CampaignNotActiveError(),\n CampaignExpired: () => new CampaignExpiredError(),\n CampaignDeliveryLimitReached: () => new CampaignDeliveryLimitReachedError(),\n InboxRecordNotFound: () => new InboxRecordNotFoundError(),\n InboxAlreadyDelivered: () => new InboxAlreadyDeliveredError(),\n InboxFull: () => new InboxFullError(),\n EngagementCooldownActive: () => new EngagementCooldownActiveError(),\n EngagementDailyLimitReached: () => new EngagementDailyLimitReachedError(),\n EngagementInvalid: () => new EngagementInvalidError(),\n InsufficientStake: () => new InsufficientStakeError(),\n InsufficientBalance: () => new InsufficientBalanceError(),\n TargetingDimensionLimitExceeded: () => new TargetingDimensionLimitExceededError(),\n InvalidManifestHash: () => new InvalidManifestHashError(),\n InvalidCampaignId: () => new InvalidCampaignIdError(),\n Unauthorized: () => new UnauthorizedError(),\n EpochNotReady: () => new EpochNotReadyError(),\n NotExpiredYet: () => new NotExpiredYetError(),\n ResetNotReady: () => new ResetNotReadyError(),\n ValidatorAlreadyRegistered: () => new ValidatorAlreadyRegisteredError(),\n ValidatorNotFound: () => new ValidatorNotFoundError(),\n RegionCapExceeded: () => new RegionCapExceededError(),\n CountryCapExceeded: () => new CountryCapExceededError(),\n DelegationNotFound: () => new DelegationNotFoundError(),\n CannotDelegateToSelf: () => new CannotDelegateToSelfError(),\n ValidatorNotActive: () => new ValidatorNotActiveError(),\n AlreadyDelegated: () => new AlreadyDelegatedError(),\n MaxValidatorsReached: () => new MaxValidatorsReachedError(),\n}\n\nexport function parseChainError(error: unknown): AwarizonError {\n const errorStr = String(error)\n for (const [key, factory] of Object.entries(ERROR_MAP)) {\n if (errorStr.includes(key)) return factory()\n }\n return new AwarizonError(errorStr, 'UnknownError', error)\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/customTypes.ts","../src/constants.ts","../src/utils.ts","../src/rpc.ts","../src/extrinsics/developer.ts","../src/extrinsics/manifests.ts","../src/extrinsics/campaigns.ts","../src/extrinsics/inbox.ts","../src/extrinsics/targeting.ts","../src/extrinsics/validators.ts","../src/extrinsics/assets.ts","../src/wallet.ts","../src/errors.ts"],"sourcesContent":["import { ApiPromise, WsProvider } from '@polkadot/api'\nimport { awarizonRpc, awarizonTypes } from './customTypes'\nimport { DEFAULT_ENDPOINT } from './constants'\n\nexport class AwarizonClient {\n private api: ApiPromise | null = null\n private endpoint: string\n\n constructor(endpoint: string = DEFAULT_ENDPOINT) {\n this.endpoint = endpoint\n }\n\n async connect(): Promise<ApiPromise> {\n if (this.api?.isConnected) return this.api\n\n const provider = new WsProvider(this.endpoint)\n this.api = await ApiPromise.create({\n provider,\n types: awarizonTypes,\n rpc: awarizonRpc,\n })\n\n await this.api.isReady\n return this.api\n }\n\n async disconnect(): Promise<void> {\n if (this.api) {\n await this.api.disconnect()\n this.api = null\n }\n }\n\n getApi(): ApiPromise {\n if (!this.api?.isConnected) {\n throw new Error('Not connected. Call connect() first.')\n }\n return this.api\n }\n\n async subscribeNewBlocks(\n callback: (blockNumber: number, blockHash: string) => void\n ): Promise<() => void> {\n const api = this.getApi()\n const unsub = await api.rpc.chain.subscribeNewHeads((header) => {\n callback(header.number.toNumber(), header.hash.toHex())\n })\n return unsub as unknown as () => void\n }\n\n async getBalance(address: string): Promise<bigint> {\n const api = this.getApi()\n const account = await api.query.system.account(address)\n return BigInt((account as any).data.free.toString())\n }\n}\n\nexport async function connect(\n endpoint: string = DEFAULT_ENDPOINT\n): Promise<AwarizonClient> {\n const client = new AwarizonClient(endpoint)\n await client.connect()\n return client\n}\n","// Custom SCALE type registry and RPC definitions for @polkadot/api.\n// Enum variants and struct field names derived from:\n// pallets/awarizon-types/src/lib.rs\n// pallets/awarizon-consensus/src/lib.rs\n// node/src/awarizon_rpc.rs\n\nexport const awarizonTypes = {\n // pallets/awarizon-types/src/lib.rs — enum AppCategory\n AppCategory: {\n _enum: [\n 'DeFi',\n 'Gaming',\n 'Social',\n 'Productivity',\n 'Infrastructure',\n 'DigitalAssets',\n 'DeveloperTools',\n 'Education',\n ],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum CampaignStatus\n CampaignStatus: {\n _enum: ['Pending', 'Active', 'Expired', 'Terminated'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum InboxRecordStatus\n InboxRecordStatus: {\n _enum: ['Pending', 'Delivered', 'Dismissed', 'Engaged'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum DeveloperStatus\n DeveloperStatus: {\n _enum: ['Unverified', 'Verified', 'Suspended'],\n },\n\n // pallets/awarizon-types/src/lib.rs — enum TransactionType\n TransactionType: {\n _enum: ['Financial', 'Distribution', 'System'],\n },\n\n // pallets/awarizon-types/src/lib.rs — struct TargetingCriteria\n TargetingCriteria: {\n wallet_age_min: 'Option<u32>',\n wallet_age_max: 'Option<u32>',\n riz_balance_min: 'Option<u128>',\n riz_balance_max: 'Option<u128>',\n activity_min: 'Option<u32>',\n activity_max: 'Option<u32>',\n region_codes: 'Vec<u8>',\n category_history: 'Vec<AppCategory>',\n custom_logic_hash: 'Option<H256>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct DeveloperProfile<AccountId, BlockNumber>\n DeveloperProfile: {\n account: 'AccountId',\n staked_riz: 'u128',\n status: 'DeveloperStatus',\n first_distribution_block: 'Option<u32>',\n violation_count: 'u32',\n total_campaigns: 'u32',\n total_deliveries: 'u64',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct AppManifest<AccountId, BlockNumber>\n AppManifest: {\n manifest_hash: 'H256',\n developer: 'AccountId',\n category: 'AppCategory',\n registered_at: 'u32',\n metadata_uri: 'Vec<u8>',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct Campaign<AccountId, BlockNumber>\n Campaign: {\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n targeting: 'TargetingCriteria',\n status: 'CampaignStatus',\n created_at: 'u32',\n expires_at: 'u32',\n max_deliveries: 'u64',\n current_deliveries: 'u64',\n storage_fee_paid: 'u128',\n },\n\n // pallets/awarizon-types/src/lib.rs — struct InboxRecord<AccountId, BlockNumber>\n InboxRecord: {\n record_id: 'H256',\n campaign_id: 'H256',\n developer: 'AccountId',\n manifest_hash: 'H256',\n category: 'AppCategory',\n status: 'InboxRecordStatus',\n delivered_at: 'u32',\n engaged_at: 'Option<u32>',\n reward_claimed: 'bool',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct ValidatorInfo<AccountId>\n ValidatorInfo: {\n account: 'AccountId',\n self_stake: 'u128',\n delegated_stake: 'u128',\n region_code: 'u8',\n country_code: 'u8',\n uptime_bps: 'u32',\n finality_bps: 'u32',\n blocks_bps: 'u32',\n slash_count: 'u32',\n is_active: 'bool',\n epoch_registered: 'u64',\n },\n\n // pallets/awarizon-consensus/src/lib.rs — struct Delegation<AccountId>\n Delegation: {\n delegator: 'AccountId',\n validator: 'AccountId',\n amount: 'u128',\n epoch_delegated: 'u64',\n },\n}\n\n// RPC method definitions for @polkadot/api.\n// All methods are in the \"awarizon\" namespace and return JSON (not SCALE).\n// Wire names from: node/src/awarizon_rpc.rs #[method(name = \"...\")]\nexport const awarizonRpc = {\n awarizon: {\n // Developer endpoints\n getDeveloperProfile: {\n description: 'Get developer profile by SS58 account address',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n getDeveloperCampaigns: {\n description: 'Get all campaign IDs for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n getDeveloperManifests: {\n description: 'Get all manifest hashes for a developer',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Vec<Text>',\n },\n\n // Campaign endpoints\n getCampaign: {\n description: 'Get campaign details by campaign ID (0x hex)',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n getActiveCampaignCount: {\n description: 'Get the number of currently active campaigns',\n params: [],\n type: 'u64',\n },\n getCampaignDeliveryStatus: {\n description: 'Get delivery progress for a campaign',\n params: [{ name: 'campaign_id', type: 'Text' }],\n type: 'Json',\n },\n\n // Inbox endpoints\n getInboxCount: {\n description: 'Get number of inbox records for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'u32',\n },\n getInboxRecord: {\n description: 'Get a specific inbox record by wallet and record ID',\n params: [\n { name: 'wallet', type: 'Text' },\n { name: 'record_id', type: 'Text' },\n ],\n type: 'Json',\n },\n\n // Targeting endpoints\n getWalletTargetingProfile: {\n description: 'Get pre-computed targeting profile for a wallet',\n params: [{ name: 'wallet', type: 'Text' }],\n type: 'Json',\n },\n checkCampaignMatch: {\n description: 'Check cached targeting match result for (campaign, wallet)',\n params: [\n { name: 'campaign_id', type: 'Text' },\n { name: 'wallet', type: 'Text' },\n ],\n type: 'bool',\n },\n\n // Validator endpoints\n getActiveValidators: {\n description: 'Get SS58 addresses of all active validators',\n params: [],\n type: 'Vec<Text>',\n },\n getValidatorCount: {\n description: 'Get total number of active validators',\n params: [],\n type: 'u32',\n },\n getValidatorPerformance: {\n description: 'Get performance metrics for a validator',\n params: [{ name: 'account', type: 'Text' }],\n type: 'Json',\n },\n\n // Network stats endpoints\n getNetworkStats: {\n description: 'Get Awarizon network statistics',\n params: [],\n type: 'Json',\n },\n getTokenStats: {\n description: 'Get token issuance and engagement pool statistics',\n params: [],\n type: 'Json',\n },\n getRecentTransactions: {\n description: 'Get recent transactions across the chain',\n params: [],\n type: 'Json',\n },\n getBlockTransactions: {\n description: 'Get all transactions in a specific block',\n params: [{ name: 'block_number', type: 'u32' }],\n type: 'Json',\n },\n\n // Identity endpoints\n getIdentity: {\n description: 'Get identity record for an account',\n params: [\n { name: 'account', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'Json',\n },\n lookupName: {\n description: 'Resolve a .riz name to an account and identity',\n params: [\n { name: 'name', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'Json',\n },\n isNameAvailable: {\n description: 'Check if a .riz name is available to register',\n params: [\n { name: 'name', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'bool',\n },\n getTotalIdentities: {\n description: 'Get total number of registered identities',\n params: [{ name: 'at', type: 'Option<Hash>' }],\n type: 'u32',\n },\n\n // Links endpoints\n getLinkedAddresses: {\n description: 'Get all linked external addresses for an account',\n params: [\n { name: 'account', type: 'Text' },\n { name: 'at', type: 'Option<Hash>' },\n ],\n type: 'Json',\n },\n },\n}\n","// Protocol constants derived from pallets/awarizon-types/src/constants.rs\n\n// ----------------------------------------------------------------\n// Token denomination\n// ----------------------------------------------------------------\nexport const PLANCK = 1n\nexport const RIZ = 1_000_000_000_000n // 10^12 planck\nexport const MICRO_RIZ = 1_000_000n // 10^6 planck\nexport const MILLI_RIZ = 1_000_000_000n // 10^9 planck\n\n// ----------------------------------------------------------------\n// Network defaults\n// ----------------------------------------------------------------\nexport const DEFAULT_ENDPOINT = 'wss://rpc.awarizon.com'\nexport const DEFAULT_HTTP_ENDPOINT = 'https://rpc.awarizon.com'\nexport const CHAIN_NAME = 'Awarizon'\n\n// ----------------------------------------------------------------\n// Consensus\n// ----------------------------------------------------------------\nexport const GENESIS_VALIDATORS = 51\nexport const TARGET_VALIDATORS = 121\nexport const BLOCK_TIME_SECONDS = 3\nexport const EPOCH_LENGTH_BLOCKS = 28_800\n\n// ----------------------------------------------------------------\n// Campaign rules\n// ----------------------------------------------------------------\nexport const MIN_CAMPAIGN_DURATION_DAYS = 1\nexport const MAX_CAMPAIGN_DURATION_DAYS = 90\nexport const DEFAULT_CAMPAIGN_DURATION_DAYS = 30\n\n// ----------------------------------------------------------------\n// Engagement rules\n// ----------------------------------------------------------------\nexport const MIN_SESSION_SECONDS = 120\nexport const MIN_INTERACTIONS = 5\nexport const ENGAGEMENT_COOLDOWN_HOURS = 24\nexport const MAX_ENGAGEMENT_EVENTS_PER_DAY = 10\n\n// ----------------------------------------------------------------\n// Targeting limits\n// ----------------------------------------------------------------\nexport const MAX_TARGETING_DIMENSIONS = 6\nexport const MAX_REGION_CODES_PER_CAMPAIGN = 64\nexport const MAX_CATEGORY_HISTORY_ENTRIES = 8\n\n// ----------------------------------------------------------------\n// Developer verification\n// ----------------------------------------------------------------\nexport const DEVELOPER_MIN_TENURE_DAYS = 30\n\n// ----------------------------------------------------------------\n// Validator performance weights (basis points, sum = 10000)\n// ----------------------------------------------------------------\nexport const PERF_WEIGHT_UPTIME_BPS = 5_000\nexport const PERF_WEIGHT_FINALITY_BPS = 2_500\nexport const PERF_WEIGHT_BLOCKS_BPS = 1_500\nexport const PERF_WEIGHT_SLASH_BPS = 1_000\nexport const PERF_MULTIPLIER_MIN_BPS = 5_000\nexport const PERF_MULTIPLIER_MAX_BPS = 12_500\n\n// ----------------------------------------------------------------\n// Geographic caps (basis points)\n// ----------------------------------------------------------------\nexport const MAX_VALIDATORS_PER_REGION_BPS = 2_000 // 20%\nexport const MAX_VALIDATORS_PER_COUNTRY_BPS = 1_000 // 10%\n","import { RIZ } from './constants'\n\n// Convert planck to RIZ display string e.g. 1_000_000_000_000n → \"1.0000\"\nexport function formatRiz(planck: bigint, decimals = 4): string {\n const whole = planck / RIZ\n const remainder = planck % RIZ\n const decStr = remainder.toString().padStart(12, '0').slice(0, decimals)\n return `${whole}.${decStr}`\n}\n\n// Convert RIZ amount string to planck bigint e.g. \"1.5\" → 1_500_000_000_000n\nexport function parseRiz(riz: string): bigint {\n const [whole, decimal = ''] = riz.split('.')\n const paddedDecimal = decimal.padEnd(12, '0').slice(0, 12)\n return BigInt(whole) * RIZ + BigInt(paddedDecimal)\n}\n\n// Convert hex string to Uint8Array\nexport function hexToBytes(hex: string): Uint8Array {\n const clean = hex.replace('0x', '')\n return new Uint8Array(\n clean.match(/.{1,2}/g)?.map(b => parseInt(b, 16)) ?? []\n )\n}\n\n// Convert Uint8Array to hex string with 0x prefix\nexport function bytesToHex(bytes: Uint8Array): string {\n return '0x' + Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n// Generate a campaign ID from manifest hash + current timestamp\nexport function generateCampaignId(manifestHash: string): string {\n const timestamp = Date.now().toString(16).padStart(16, '0')\n const hashPart = manifestHash.replace('0x', '').slice(0, 48)\n return '0x' + hashPart + timestamp\n}\n\n// Basic SS58 address length check\nexport function isValidAddress(address: string): boolean {\n return address.length >= 46 && address.length <= 48\n}\n\n// Format a block count to a human-readable time estimate (3s block time)\nexport function blocksToTime(blocks: number): string {\n const seconds = blocks * 3\n if (seconds < 60) return `${seconds}s`\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`\n return `${Math.floor(seconds / 86400)}d`\n}\n\n// Parse a u128-as-string from RPC into bigint\nexport function parsePlanckString(value: string): bigint {\n return BigInt(value)\n}\n","// Typed wrappers for all 15 Awarizon custom RPC methods.\n// Wire names and return shapes derived from node/src/awarizon_rpc.rs.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type {\n NetworkStats,\n CampaignDeliveryStatus,\n WalletTargetingProfile,\n ValidatorPerformanceResponse,\n TokenStats,\n DeveloperProfile,\n Campaign,\n InboxRecord,\n TransactionSummary,\n VestingSchedule,\n IdentityRecord,\n NameLookup,\n LinkedAddress,\n ChainType,\n LinkStatus,\n} from './types'\n\n// ----------------------------------------------------------------\n// Developer endpoints\n// ----------------------------------------------------------------\n\nexport async function getDeveloperProfile(\n api: ApiPromise,\n account: string\n): Promise<DeveloperProfile | null> {\n const result = await (api.rpc as any).awarizon.getDeveloperProfile(account)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n staked_riz: BigInt(json.staked_riz ?? '0'),\n total_deliveries: BigInt(json.total_deliveries ?? '0'),\n } as DeveloperProfile\n}\n\nexport async function getDeveloperCampaigns(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperCampaigns(account)\n return result.toJSON() as string[]\n}\n\nexport async function getDeveloperManifests(\n api: ApiPromise,\n account: string\n): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getDeveloperManifests(account)\n return result.toJSON() as string[]\n}\n\n// ----------------------------------------------------------------\n// Campaign endpoints\n// ----------------------------------------------------------------\n\nexport async function getCampaign(\n api: ApiPromise,\n campaignId: string\n): Promise<Campaign | null> {\n const result = await (api.rpc as any).awarizon.getCampaign(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n ...json,\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n storage_fee_paid: BigInt(json.storage_fee_paid ?? '0'),\n } as Campaign\n}\n\nexport async function getActiveCampaignCount(api: ApiPromise): Promise<bigint> {\n const result = await (api.rpc as any).awarizon.getActiveCampaignCount()\n return BigInt(result.toString())\n}\n\nexport async function getCampaignDeliveryStatus(\n api: ApiPromise,\n campaignId: string\n): Promise<CampaignDeliveryStatus | null> {\n const result = await (api.rpc as any).awarizon.getCampaignDeliveryStatus(campaignId)\n const json = result.toJSON()\n if (!json) return null\n return {\n current_deliveries: BigInt(json.current_deliveries ?? '0'),\n max_deliveries: BigInt(json.max_deliveries ?? '0'),\n remaining: BigInt(json.remaining ?? '0'),\n percentage_used: json.percentage_used as number,\n }\n}\n\n// ----------------------------------------------------------------\n// Inbox endpoints\n// ----------------------------------------------------------------\n\nexport async function getInboxCount(\n api: ApiPromise,\n wallet: string\n): Promise<number> {\n const result = await (api.rpc as any).awarizon.getInboxCount(wallet)\n return result.toNumber()\n}\n\nexport async function getInboxRecord(\n api: ApiPromise,\n wallet: string,\n recordId: string\n): Promise<InboxRecord | null> {\n const result = await (api.rpc as any).awarizon.getInboxRecord(wallet, recordId)\n const json = result.toJSON()\n if (!json) return null\n return json as InboxRecord\n}\n\n// ----------------------------------------------------------------\n// Targeting endpoints\n// ----------------------------------------------------------------\n\nexport async function getWalletTargetingProfile(\n api: ApiPromise,\n wallet: string\n): Promise<WalletTargetingProfile> {\n const result = await (api.rpc as any).awarizon.getWalletTargetingProfile(wallet)\n return result.toJSON() as WalletTargetingProfile\n}\n\nexport async function checkCampaignMatch(\n api: ApiPromise,\n campaignId: string,\n wallet: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.checkCampaignMatch(campaignId, wallet)\n return result.isTrue\n}\n\n// ----------------------------------------------------------------\n// Validator endpoints\n// ----------------------------------------------------------------\n\nexport async function getActiveValidators(api: ApiPromise): Promise<string[]> {\n const result = await (api.rpc as any).awarizon.getActiveValidators()\n return result.toJSON() as string[]\n}\n\nexport async function getValidatorCount(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getValidatorCount()\n return result.toNumber()\n}\n\nexport async function getValidatorPerformance(\n api: ApiPromise,\n account: string\n): Promise<ValidatorPerformanceResponse | null> {\n const result = await (api.rpc as any).awarizon.getValidatorPerformance(account)\n return result.toJSON() as ValidatorPerformanceResponse | null\n}\n\n// ----------------------------------------------------------------\n// Network stats endpoints\n// ----------------------------------------------------------------\n\nexport async function getNetworkStats(api: ApiPromise): Promise<NetworkStats> {\n const result = await (api.rpc as any).awarizon.getNetworkStats()\n const json = result.toJSON() as Record<string, unknown>\n return {\n total_wallets: BigInt(String(json.total_wallets ?? '0')),\n total_deliveries: BigInt(String(json.total_deliveries ?? '0')),\n active_campaigns: BigInt(String(json.active_campaigns ?? '0')),\n total_staked: String(json.total_staked ?? '0'),\n current_epoch: BigInt(String(json.current_epoch ?? '0')),\n inbox_reserve_balance: String(json.inbox_reserve_balance ?? '0'),\n total_extrinsics: Number(json.total_extrinsics ?? 0),\n circulating_supply: String(json.circulating_supply ?? '0'),\n non_circulating_supply: String(json.non_circulating_supply ?? '0'),\n }\n}\n\nexport async function getTokenStats(api: ApiPromise): Promise<TokenStats> {\n const result = await (api.rpc as any).awarizon.getTokenStats()\n return result.toJSON() as TokenStats\n}\n\nexport async function getRecentTransactions(\n api: ApiPromise\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getRecentTransactions()\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getBlockTransactions(\n api: ApiPromise,\n blockNumber: number\n): Promise<TransactionSummary[]> {\n const result = await (api.rpc as any).awarizon.getBlockTransactions(blockNumber)\n return (result.toJSON() as any[]).map((r: any) => ({\n block_number: Number(r.block_number ?? 0),\n extrinsic_index: Number(r.extrinsic_index ?? 0),\n success: Boolean(r.success),\n }))\n}\n\nexport async function getVestingSchedule(\n api: ApiPromise,\n account: string\n): Promise<VestingSchedule[]> {\n const result = await (api.query as any).vesting.vesting(account)\n const json = result.toJSON()\n if (!json || !Array.isArray(json)) return []\n return json.map((v: any) => ({\n locked: String(v.locked ?? v.Locked ?? '0'),\n per_block: String(v.perBlock ?? v.per_block ?? '0'),\n starting_block: Number(v.startingBlock ?? v.starting_block ?? 0),\n }))\n}\n\n// ----------------------------------------------------------------\n// Identity endpoints\n// ----------------------------------------------------------------\n\nexport async function getIdentity(\n api: ApiPromise,\n account: string\n): Promise<IdentityRecord | null> {\n const result = await (api.rpc as any).awarizon.getIdentity(account, null)\n const json = result.toJSON()\n if (!json) return null\n return {\n account: json.account,\n rizName: json.riz_name ?? null,\n rizNameFull: json.riz_name ? json.riz_name + '.riz' : null,\n displayName: json.display_name ?? null,\n bio: json.bio ?? null,\n avatarUri: json.avatar_uri ?? null,\n website: json.website ?? null,\n registeredAt: Number(json.registered_at ?? 0),\n verified: Boolean(json.verified),\n reputationScore: Number(json.reputation_score ?? 0),\n linkedAddresses: (json.linked_addresses ?? []).map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n })),\n }\n}\n\nexport async function lookupName(\n api: ApiPromise,\n name: string\n): Promise<NameLookup | null> {\n const result = await (api.rpc as any).awarizon.lookupName(name, null)\n const json = result.toJSON()\n if (!json) return null\n const identity = json.identity ? await getIdentity(api, json.account) : null\n return {\n rizName: json.riz_name as string,\n account: json.account as string,\n identity,\n }\n}\n\nexport async function getLinkedAddresses(\n api: ApiPromise,\n account: string\n): Promise<LinkedAddress[]> {\n const result = await (api.rpc as any).awarizon.getLinkedAddresses(account, null)\n const arr = result.toJSON() as any[]\n if (!Array.isArray(arr)) return []\n return arr.map((la: any) => ({\n chain: la.chain as ChainType,\n address: la.address as string,\n status: la.status as LinkStatus,\n linkedAt: Number(la.linked_at ?? 0),\n }))\n}\n\nexport async function isNameAvailable(\n api: ApiPromise,\n name: string\n): Promise<boolean> {\n const result = await (api.rpc as any).awarizon.isNameAvailable(name, null)\n return Boolean(result.toJSON())\n}\n\nexport async function getTotalIdentities(api: ApiPromise): Promise<number> {\n const result = await (api.rpc as any).awarizon.getTotalIdentities(null)\n return result.toNumber()\n}\n","// AwarizonState pallet — developer extrinsics\n// Pallet index: 8 (runtime/src/lib.rs #[runtime::pallet_index(8)])\n// call_index 0: register_developer()\n// call_index 1: stake_riz(amount: BalanceOf<T>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterDeveloper(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerDeveloper()\n}\n\nexport function buildStakeRiz(\n api: ApiPromise,\n amount: bigint\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.stakeRiz(amount)\n}\n","// AwarizonState pallet — manifest extrinsics\n// call_index 2: register_manifest(manifest_hash: [u8;32], category: AppCategory, metadata_uri: BoundedVec<u8, 256>)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { AppCategory } from '../types'\n\nexport function buildRegisterManifest(\n api: ApiPromise,\n manifestHash: string, // 0x-prefixed 32-byte hex\n category: AppCategory,\n metadataUri: string | Uint8Array // UTF-8 string or raw bytes, max 256 bytes\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.registerManifest(manifestHash, category, metadataUri)\n}\n","// AwarizonState pallet — campaign extrinsics\n// call_index 3: create_campaign(campaign_id, manifest_hash, targeting, duration_days, max_deliveries)\n// call_index 5: terminate_campaign(campaign_id)\n// call_index 10: advance_epoch()\n// call_index 11: expire_campaign(campaign_id)\n// call_index 12: reset_daily_engagement()\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport type { TargetingCriteria } from '../types'\n\nexport function buildCreateCampaign(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n manifestHash: string, // [u8; 32] 0x hex\n targeting: TargetingCriteria,\n durationDays: number, // u32, 1–90\n maxDeliveries: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.createCampaign(\n campaignId,\n manifestHash,\n targeting,\n durationDays,\n maxDeliveries\n )\n}\n\nexport function buildTerminateCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.terminateCampaign(campaignId)\n}\n\nexport function buildExpireCampaign(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.expireCampaign(campaignId)\n}\n\nexport function buildAdvanceEpoch(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.advanceEpoch()\n}\n\nexport function buildResetDailyEngagement(\n api: ApiPromise\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.resetDailyEngagement()\n}\n","// AwarizonState pallet — inbox extrinsics\n// call_index 4: deliver_to_inbox(wallet, campaign_id, record_id)\n// call_index 6: dismiss_inbox_record(record_id)\n// call_index 7: submit_engagement(record_id, session_duration_seconds, interaction_count)\n// call_index 8: claim_reward(record_id)\n// call_index 9: update_wallet_index(wallet_age_days, activity_count, category_history, region_code)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildDeliverToInbox(\n api: ApiPromise,\n wallet: string, // SS58 address of target wallet\n campaignId: string, // [u8; 32] 0x hex\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.deliverToInbox(wallet, campaignId, recordId)\n}\n\nexport function buildDismissInboxRecord(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.dismissInboxRecord(recordId)\n}\n\nexport function buildSubmitEngagement(\n api: ApiPromise,\n recordId: string, // [u8; 32] 0x hex\n sessionDurationSeconds: number, // u32, must be >= MIN_SESSION_SECONDS (120)\n interactionCount: number // u32, must be >= MIN_INTERACTIONS (5)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.submitEngagement(\n recordId,\n sessionDurationSeconds,\n interactionCount\n )\n}\n\nexport function buildClaimReward(\n api: ApiPromise,\n recordId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.claimReward(recordId)\n}\n\nexport function buildUpdateWalletIndex(\n api: ApiPromise,\n walletAgeDays: number, // u32\n activityCount: number, // u32\n categoryHistory: number[], // BoundedVec<u8, 8> — AppCategory IDs\n regionCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonState.updateWalletIndex(\n walletAgeDays,\n activityCount,\n categoryHistory,\n regionCode\n )\n}\n","// AwarizonTargeting pallet — targeting extrinsics\n// Pallet index: 9 (runtime/src/lib.rs #[runtime::pallet_index(9)])\n// call_index 0: build_bloom_filter(campaign_id)\n// call_index 1: check_wallet_match(campaign_id, wallet)\n// call_index 2: run_targeting_batch(campaign_id, wallets)\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildBloomFilter(\n api: ApiPromise,\n campaignId: string // [u8; 32] 0x hex\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.buildBloomFilter(campaignId)\n}\n\nexport function buildCheckWalletMatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallet: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.checkWalletMatch(campaignId, wallet)\n}\n\nexport function buildRunTargetingBatch(\n api: ApiPromise,\n campaignId: string, // [u8; 32] 0x hex\n wallets: string[] // SS58 addresses, max 100 (BoundedVec<AccountId, 100>)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonTargeting.runTargetingBatch(campaignId, wallets)\n}\n","// AwarizonConsensus pallet — validator extrinsics\n// Pallet index: 10 (runtime/src/lib.rs #[runtime::pallet_index(10)])\n// call_index 0: register_validator(self_stake: u128, region_code: u8, country_code: u8)\n// call_index 1: delegate_stake(validator: AccountId, amount: u128)\n// call_index 2: undelegate_stake(validator: AccountId)\n// call_index 3: update_performance(validator, uptime_bps, finality_bps, blocks_bps)\n// call_index 4: run_epoch_election(epoch: u64)\n// call_index 5: slash_validator(validator: AccountId, reason: u8) — root only\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildRegisterValidator(\n api: ApiPromise,\n selfStake: bigint, // u128 — must be >= MinValidatorStake\n regionCode: number, // u8\n countryCode: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.registerValidator(selfStake, regionCode, countryCode)\n}\n\nexport function buildDelegateStake(\n api: ApiPromise,\n validator: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.delegateStake(validator, amount)\n}\n\nexport function buildUndelegateStake(\n api: ApiPromise,\n validator: string // SS58 address\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.undelegateStake(validator)\n}\n\nexport function buildUpdatePerformance(\n api: ApiPromise,\n validator: string, // SS58 address\n uptimeBps: number, // u32, 0–10000\n finalityBps: number, // u32, 0–10000\n blocksBps: number // u32, 0–10000\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.updatePerformance(\n validator,\n uptimeBps,\n finalityBps,\n blocksBps\n )\n}\n\nexport function buildRunEpochElection(\n api: ApiPromise,\n epoch: bigint // u64\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.runEpochElection(epoch)\n}\n\nexport function buildSlashValidator(\n api: ApiPromise,\n validator: string, // SS58 address\n reason: number // u8\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.awarizonConsensus.slashValidator(validator, reason)\n}\n","// pallet_assets extrinsics\n// Pallet index: 11 (runtime/src/lib.rs #[runtime::pallet_index(11)] pub type Assets = pallet_assets)\n// Method names follow @polkadot/api camelCase conversion of pallet_assets extrinsics.\n\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\n\nexport function buildCreateAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n admin: string, // SS58 address — asset admin account\n minBalance: bigint // minimum balance (u128)\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.create(id, admin, minBalance)\n}\n\nexport function buildMintAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n beneficiary: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.mint(id, beneficiary, amount)\n}\n\nexport function buildTransferAsset(\n api: ApiPromise,\n id: number, // AssetId (u32)\n target: string, // SS58 address\n amount: bigint // u128\n): SubmittableExtrinsic<'promise', ISubmittableResult> {\n return api.tx.assets.transfer(id, target, amount)\n}\n","import { Keyring } from '@polkadot/keyring'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { ApiPromise } from '@polkadot/api'\nimport type { SubmittableExtrinsic } from '@polkadot/api/types'\nimport type { ISubmittableResult } from '@polkadot/types/types'\nimport { parseChainError } from './errors'\n\n// Create a Keyring instance for sr25519 (Substrate default)\nexport function createKeyring(): Keyring {\n return new Keyring({ type: 'sr25519' })\n}\n\n// Load a keypair from a mnemonic (BIP39)\nexport function keypairFromMnemonic(mnemonic: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromMnemonic(mnemonic)\n}\n\n// Load a keypair from a seed hex (0x...)\nexport function keypairFromSeed(seed: string): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromSeed(Buffer.from(seed.replace('0x', ''), 'hex'))\n}\n\n// Dev/test keypairs (only available on --dev chains)\nexport function aliceKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Alice')\n}\n\nexport function bobKeypair(): KeyringPair {\n const keyring = createKeyring()\n return keyring.addFromUri('//Bob')\n}\n\n// Sign and submit an extrinsic, returning the final status\nexport async function signAndSend(\n api: ApiPromise,\n extrinsic: SubmittableExtrinsic<'promise', ISubmittableResult>,\n signer: KeyringPair\n): Promise<{ blockHash: string; txHash: string; blockNumber: number }> {\n return new Promise((resolve, reject) => {\n extrinsic\n .signAndSend(signer, ({ status, dispatchError }: ISubmittableResult) => {\n if (status.isInBlock || status.isFinalized) {\n if (dispatchError) {\n reject(parseChainError(dispatchError.toString()))\n } else {\n const blockHash = status.isInBlock\n ? status.asInBlock.toHex()\n : status.asFinalized.toHex()\n const txHash = extrinsic.hash.toHex()\n api.rpc.chain.getHeader(blockHash)\n .then(header => resolve({ blockHash, txHash, blockNumber: header.number.toNumber() }))\n .catch(() => resolve({ blockHash, txHash, blockNumber: 0 }))\n }\n }\n })\n .catch(reject)\n })\n}\n","// Typed error classes matching on-chain error variants.\n// Error names derived from:\n// pallets/awarizon-state/src/lib.rs — Error<T> enum\n// pallets/awarizon-consensus/src/lib.rs — Error<T> enum\n\nexport class AwarizonError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly details?: unknown\n ) {\n super(message)\n this.name = 'AwarizonError'\n }\n}\n\n// ----------------------------------------------------------------\n// awarizon-state errors\n// ----------------------------------------------------------------\n\nexport class DeveloperNotFoundError extends AwarizonError {\n constructor() { super('Developer not found', 'DeveloperNotFound') }\n}\nexport class DeveloperAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Developer already registered', 'DeveloperAlreadyRegistered') }\n}\nexport class DeveloperNotVerifiedError extends AwarizonError {\n constructor() { super('Developer not verified', 'DeveloperNotVerified') }\n}\nexport class DeveloperSuspendedError extends AwarizonError {\n constructor() { super('Developer is suspended', 'DeveloperSuspended') }\n}\nexport class ManifestNotFoundError extends AwarizonError {\n constructor() { super('Manifest not found', 'ManifestNotFound') }\n}\nexport class ManifestAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Manifest already registered', 'ManifestAlreadyRegistered') }\n}\nexport class ManifestLimitReachedError extends AwarizonError {\n constructor() { super('Manifest limit reached', 'ManifestLimitReached') }\n}\nexport class CampaignNotFoundError extends AwarizonError {\n constructor() { super('Campaign not found', 'CampaignNotFound') }\n}\nexport class CampaignNotActiveError extends AwarizonError {\n constructor() { super('Campaign is not active', 'CampaignNotActive') }\n}\nexport class CampaignExpiredError extends AwarizonError {\n constructor() { super('Campaign has expired', 'CampaignExpired') }\n}\nexport class CampaignDeliveryLimitReachedError extends AwarizonError {\n constructor() { super('Campaign delivery limit reached', 'CampaignDeliveryLimitReached') }\n}\nexport class InboxRecordNotFoundError extends AwarizonError {\n constructor() { super('Inbox record not found', 'InboxRecordNotFound') }\n}\nexport class InboxAlreadyDeliveredError extends AwarizonError {\n constructor() { super('Already delivered to this inbox', 'InboxAlreadyDelivered') }\n}\nexport class InboxFullError extends AwarizonError {\n constructor() { super('Inbox is full (1000 records)', 'InboxFull') }\n}\nexport class EngagementCooldownActiveError extends AwarizonError {\n constructor() { super('Engagement cooldown is active (24h)', 'EngagementCooldownActive') }\n}\nexport class EngagementDailyLimitReachedError extends AwarizonError {\n constructor() { super('Daily engagement limit reached (10/day)', 'EngagementDailyLimitReached') }\n}\nexport class EngagementInvalidError extends AwarizonError {\n constructor() { super('Engagement does not meet minimum requirements', 'EngagementInvalid') }\n}\nexport class InsufficientStakeError extends AwarizonError {\n constructor() { super('Insufficient stake', 'InsufficientStake') }\n}\nexport class InsufficientBalanceError extends AwarizonError {\n constructor() { super('Insufficient balance', 'InsufficientBalance') }\n}\nexport class TargetingDimensionLimitExceededError extends AwarizonError {\n constructor() { super('Targeting dimension limit exceeded (max 6)', 'TargetingDimensionLimitExceeded') }\n}\nexport class InvalidManifestHashError extends AwarizonError {\n constructor() { super('Invalid manifest hash', 'InvalidManifestHash') }\n}\nexport class InvalidCampaignIdError extends AwarizonError {\n constructor() { super('Invalid campaign ID', 'InvalidCampaignId') }\n}\nexport class UnauthorizedError extends AwarizonError {\n constructor() { super('Unauthorized', 'Unauthorized') }\n}\nexport class EpochNotReadyError extends AwarizonError {\n constructor() { super('Epoch is not ready to advance', 'EpochNotReady') }\n}\nexport class NotExpiredYetError extends AwarizonError {\n constructor() { super('Campaign has not expired yet', 'NotExpiredYet') }\n}\nexport class ResetNotReadyError extends AwarizonError {\n constructor() { super('Daily reset is not ready yet', 'ResetNotReady') }\n}\n\n// ----------------------------------------------------------------\n// awarizon-consensus errors\n// ----------------------------------------------------------------\n\nexport class ValidatorAlreadyRegisteredError extends AwarizonError {\n constructor() { super('Validator already registered', 'ValidatorAlreadyRegistered') }\n}\nexport class ValidatorNotFoundError extends AwarizonError {\n constructor() { super('Validator not found', 'ValidatorNotFound') }\n}\nexport class RegionCapExceededError extends AwarizonError {\n constructor() { super('Region validator cap exceeded (20%)', 'RegionCapExceeded') }\n}\nexport class CountryCapExceededError extends AwarizonError {\n constructor() { super('Country validator cap exceeded (10%)', 'CountryCapExceeded') }\n}\nexport class DelegationNotFoundError extends AwarizonError {\n constructor() { super('Delegation not found', 'DelegationNotFound') }\n}\nexport class CannotDelegateToSelfError extends AwarizonError {\n constructor() { super('Cannot delegate stake to yourself', 'CannotDelegateToSelf') }\n}\nexport class ValidatorNotActiveError extends AwarizonError {\n constructor() { super('Validator is not active', 'ValidatorNotActive') }\n}\nexport class AlreadyDelegatedError extends AwarizonError {\n constructor() { super('Already delegated to this validator', 'AlreadyDelegated') }\n}\nexport class MaxValidatorsReachedError extends AwarizonError {\n constructor() { super('Maximum validator count reached', 'MaxValidatorsReached') }\n}\n\n// ----------------------------------------------------------------\n// Error mapping\n// ----------------------------------------------------------------\n\nconst ERROR_MAP: Record<string, () => AwarizonError> = {\n DeveloperNotFound: () => new DeveloperNotFoundError(),\n DeveloperAlreadyRegistered: () => new DeveloperAlreadyRegisteredError(),\n DeveloperNotVerified: () => new DeveloperNotVerifiedError(),\n DeveloperSuspended: () => new DeveloperSuspendedError(),\n ManifestNotFound: () => new ManifestNotFoundError(),\n ManifestAlreadyRegistered: () => new ManifestAlreadyRegisteredError(),\n ManifestLimitReached: () => new ManifestLimitReachedError(),\n CampaignNotFound: () => new CampaignNotFoundError(),\n CampaignNotActive: () => new CampaignNotActiveError(),\n CampaignExpired: () => new CampaignExpiredError(),\n CampaignDeliveryLimitReached: () => new CampaignDeliveryLimitReachedError(),\n InboxRecordNotFound: () => new InboxRecordNotFoundError(),\n InboxAlreadyDelivered: () => new InboxAlreadyDeliveredError(),\n InboxFull: () => new InboxFullError(),\n EngagementCooldownActive: () => new EngagementCooldownActiveError(),\n EngagementDailyLimitReached: () => new EngagementDailyLimitReachedError(),\n EngagementInvalid: () => new EngagementInvalidError(),\n InsufficientStake: () => new InsufficientStakeError(),\n InsufficientBalance: () => new InsufficientBalanceError(),\n TargetingDimensionLimitExceeded: () => new TargetingDimensionLimitExceededError(),\n InvalidManifestHash: () => new InvalidManifestHashError(),\n InvalidCampaignId: () => new InvalidCampaignIdError(),\n Unauthorized: () => new UnauthorizedError(),\n EpochNotReady: () => new EpochNotReadyError(),\n NotExpiredYet: () => new NotExpiredYetError(),\n ResetNotReady: () => new ResetNotReadyError(),\n ValidatorAlreadyRegistered: () => new ValidatorAlreadyRegisteredError(),\n ValidatorNotFound: () => new ValidatorNotFoundError(),\n RegionCapExceeded: () => new RegionCapExceededError(),\n CountryCapExceeded: () => new CountryCapExceededError(),\n DelegationNotFound: () => new DelegationNotFoundError(),\n CannotDelegateToSelf: () => new CannotDelegateToSelfError(),\n ValidatorNotActive: () => new ValidatorNotActiveError(),\n AlreadyDelegated: () => new AlreadyDelegatedError(),\n MaxValidatorsReached: () => new MaxValidatorsReachedError(),\n}\n\nexport function parseChainError(error: unknown): AwarizonError {\n const errorStr = String(error)\n for (const [key, factory] of Object.entries(ERROR_MAP)) {\n if (errorStr.includes(key)) return factory()\n }\n return new AwarizonError(errorStr, 'UnknownError', error)\n}\n"],"mappings":"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","names":[]}
|