@inkd/sdk 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +288 -0
- package/dist/InkdClient.d.ts +89 -0
- package/dist/InkdClient.d.ts.map +1 -0
- package/dist/InkdClient.js +398 -0
- package/dist/InkdClient.js.map +1 -0
- package/dist/ProjectRegistry.d.ts +655 -0
- package/dist/ProjectRegistry.d.ts.map +1 -0
- package/dist/ProjectRegistry.js +708 -0
- package/dist/ProjectRegistry.js.map +1 -0
- package/dist/__tests__/InkdClient.advanced.test.d.ts +10 -0
- package/dist/__tests__/InkdClient.advanced.test.d.ts.map +1 -0
- package/dist/__tests__/InkdClient.advanced.test.js +588 -0
- package/dist/__tests__/InkdClient.advanced.test.js.map +1 -0
- package/dist/__tests__/InkdClient.connectArweave.test.d.ts +10 -0
- package/dist/__tests__/InkdClient.connectArweave.test.d.ts.map +1 -0
- package/dist/__tests__/InkdClient.connectArweave.test.js +132 -0
- package/dist/__tests__/InkdClient.connectArweave.test.js.map +1 -0
- package/dist/__tests__/InkdClient.test.d.ts +2 -0
- package/dist/__tests__/InkdClient.test.d.ts.map +1 -0
- package/dist/__tests__/InkdClient.test.js +259 -0
- package/dist/__tests__/InkdClient.test.js.map +1 -0
- package/dist/__tests__/ProjectRegistry.test.d.ts +8 -0
- package/dist/__tests__/ProjectRegistry.test.d.ts.map +1 -0
- package/dist/__tests__/ProjectRegistry.test.js +689 -0
- package/dist/__tests__/ProjectRegistry.test.js.map +1 -0
- package/dist/__tests__/arweave.test.d.ts +9 -0
- package/dist/__tests__/arweave.test.d.ts.map +1 -0
- package/dist/__tests__/arweave.test.js +353 -0
- package/dist/__tests__/arweave.test.js.map +1 -0
- package/dist/__tests__/encryption.test.d.ts +2 -0
- package/dist/__tests__/encryption.test.d.ts.map +1 -0
- package/dist/__tests__/encryption.test.js +154 -0
- package/dist/__tests__/encryption.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +136 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/events.test.d.ts +10 -0
- package/dist/__tests__/events.test.d.ts.map +1 -0
- package/dist/__tests__/events.test.js +380 -0
- package/dist/__tests__/events.test.js.map +1 -0
- package/dist/__tests__/index.InkdClient.test.d.ts +8 -0
- package/dist/__tests__/index.InkdClient.test.d.ts.map +1 -0
- package/dist/__tests__/index.InkdClient.test.js +422 -0
- package/dist/__tests__/index.InkdClient.test.js.map +1 -0
- package/dist/__tests__/multicall.test.d.ts +9 -0
- package/dist/__tests__/multicall.test.d.ts.map +1 -0
- package/dist/__tests__/multicall.test.js +362 -0
- package/dist/__tests__/multicall.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.js +35 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/abi.d.ts +2632 -0
- package/dist/abi.d.ts.map +1 -0
- package/dist/abi.js +3423 -0
- package/dist/abi.js.map +1 -0
- package/dist/arweave.d.ts +45 -0
- package/dist/arweave.d.ts.map +1 -0
- package/dist/arweave.js +154 -0
- package/dist/arweave.js.map +1 -0
- package/dist/encryption.d.ts +52 -0
- package/dist/encryption.d.ts.map +1 -0
- package/dist/encryption.js +80 -0
- package/dist/encryption.js.map +1 -0
- package/dist/errors.d.ts +63 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +124 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +136 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +131 -0
- package/dist/events.js.map +1 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +12 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useInkd.d.ts +24 -0
- package/dist/hooks/useInkd.d.ts.map +1 -0
- package/dist/hooks/useInkd.js +109 -0
- package/dist/hooks/useInkd.js.map +1 -0
- package/dist/hooks/useInkdHolder.d.ts +16 -0
- package/dist/hooks/useInkdHolder.d.ts.map +1 -0
- package/dist/hooks/useInkdHolder.js +45 -0
- package/dist/hooks/useInkdHolder.js.map +1 -0
- package/dist/hooks/useInscriptions.d.ts +17 -0
- package/dist/hooks/useInscriptions.d.ts.map +1 -0
- package/dist/hooks/useInscriptions.js +46 -0
- package/dist/hooks/useInscriptions.js.map +1 -0
- package/dist/hooks/useToken.d.ts +16 -0
- package/dist/hooks/useToken.d.ts.map +1 -0
- package/dist/hooks/useToken.js +45 -0
- package/dist/hooks/useToken.js.map +1 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +290 -0
- package/dist/index.js.map +1 -0
- package/dist/multicall.d.ts +134 -0
- package/dist/multicall.d.ts.map +1 -0
- package/dist/multicall.js +182 -0
- package/dist/multicall.js.map +1 -0
- package/dist/types.d.ts +187 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +32 -0
- package/dist/types.js.map +1 -0
- package/package.json +78 -0
package/dist/errors.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file errors.ts
|
|
4
|
+
* @description Custom error classes for the Inkd Protocol SDK.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.UploadError = exports.EncryptionError = exports.MaxSupplyReached = exports.TransactionFailed = exports.ArweaveNotConnected = exports.ClientNotConnected = exports.NotTokenOwner = exports.InscriptionNotFound = exports.TokenNotFound = exports.InsufficientFunds = exports.NotInkdHolder = exports.InkdError = void 0;
|
|
8
|
+
/** Base error class for all Inkd SDK errors. */
|
|
9
|
+
class InkdError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
constructor(message, code) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "InkdError";
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.InkdError = InkdError;
|
|
18
|
+
/** Thrown when a wallet does not hold any InkdToken. */
|
|
19
|
+
class NotInkdHolder extends InkdError {
|
|
20
|
+
address;
|
|
21
|
+
constructor(address) {
|
|
22
|
+
super(`Address ${address} does not hold any InkdToken. Mint or purchase one first.`, "NOT_INKD_HOLDER");
|
|
23
|
+
this.name = "NotInkdHolder";
|
|
24
|
+
this.address = address;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.NotInkdHolder = NotInkdHolder;
|
|
28
|
+
/** Thrown when there are insufficient funds for an operation. */
|
|
29
|
+
class InsufficientFunds extends InkdError {
|
|
30
|
+
required;
|
|
31
|
+
available;
|
|
32
|
+
constructor(required, available) {
|
|
33
|
+
super(`Insufficient funds: need ${required} wei, have ${available} wei`, "INSUFFICIENT_FUNDS");
|
|
34
|
+
this.name = "InsufficientFunds";
|
|
35
|
+
this.required = required;
|
|
36
|
+
this.available = available;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.InsufficientFunds = InsufficientFunds;
|
|
40
|
+
/** Thrown when a token ID does not exist. */
|
|
41
|
+
class TokenNotFound extends InkdError {
|
|
42
|
+
tokenId;
|
|
43
|
+
constructor(tokenId) {
|
|
44
|
+
super(`InkdToken #${tokenId} does not exist`, "TOKEN_NOT_FOUND");
|
|
45
|
+
this.name = "TokenNotFound";
|
|
46
|
+
this.tokenId = tokenId;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.TokenNotFound = TokenNotFound;
|
|
50
|
+
/** Thrown when an inscription index is out of bounds. */
|
|
51
|
+
class InscriptionNotFound extends InkdError {
|
|
52
|
+
tokenId;
|
|
53
|
+
index;
|
|
54
|
+
constructor(tokenId, index) {
|
|
55
|
+
super(`Inscription ${index} not found on InkdToken #${tokenId}`, "INSCRIPTION_NOT_FOUND");
|
|
56
|
+
this.name = "InscriptionNotFound";
|
|
57
|
+
this.tokenId = tokenId;
|
|
58
|
+
this.index = index;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.InscriptionNotFound = InscriptionNotFound;
|
|
62
|
+
/** Thrown when the caller is not the owner of the token. */
|
|
63
|
+
class NotTokenOwner extends InkdError {
|
|
64
|
+
tokenId;
|
|
65
|
+
caller;
|
|
66
|
+
constructor(tokenId, caller) {
|
|
67
|
+
super(`Address ${caller} is not the owner of InkdToken #${tokenId}`, "NOT_TOKEN_OWNER");
|
|
68
|
+
this.name = "NotTokenOwner";
|
|
69
|
+
this.tokenId = tokenId;
|
|
70
|
+
this.caller = caller;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.NotTokenOwner = NotTokenOwner;
|
|
74
|
+
/** Thrown when the client is not connected. */
|
|
75
|
+
class ClientNotConnected extends InkdError {
|
|
76
|
+
constructor() {
|
|
77
|
+
super("InkdClient is not connected. Call connect() first.", "CLIENT_NOT_CONNECTED");
|
|
78
|
+
this.name = "ClientNotConnected";
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ClientNotConnected = ClientNotConnected;
|
|
82
|
+
/** Thrown when the Arweave client is not connected. */
|
|
83
|
+
class ArweaveNotConnected extends InkdError {
|
|
84
|
+
constructor() {
|
|
85
|
+
super("Arweave client is not connected. Call connectArweave() first.", "ARWEAVE_NOT_CONNECTED");
|
|
86
|
+
this.name = "ArweaveNotConnected";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.ArweaveNotConnected = ArweaveNotConnected;
|
|
90
|
+
/** Thrown when a transaction fails on-chain. */
|
|
91
|
+
class TransactionFailed extends InkdError {
|
|
92
|
+
txHash;
|
|
93
|
+
constructor(message, txHash) {
|
|
94
|
+
super(message, "TRANSACTION_FAILED");
|
|
95
|
+
this.name = "TransactionFailed";
|
|
96
|
+
this.txHash = txHash;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.TransactionFailed = TransactionFailed;
|
|
100
|
+
/** Thrown when max supply has been reached. */
|
|
101
|
+
class MaxSupplyReached extends InkdError {
|
|
102
|
+
constructor() {
|
|
103
|
+
super("InkdToken max supply of 10,000 has been reached", "MAX_SUPPLY_REACHED");
|
|
104
|
+
this.name = "MaxSupplyReached";
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.MaxSupplyReached = MaxSupplyReached;
|
|
108
|
+
/** Thrown when encryption/decryption fails. */
|
|
109
|
+
class EncryptionError extends InkdError {
|
|
110
|
+
constructor(message) {
|
|
111
|
+
super(message, "ENCRYPTION_ERROR");
|
|
112
|
+
this.name = "EncryptionError";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.EncryptionError = EncryptionError;
|
|
116
|
+
/** Thrown when an Arweave upload fails. */
|
|
117
|
+
class UploadError extends InkdError {
|
|
118
|
+
constructor(message) {
|
|
119
|
+
super(message, "UPLOAD_ERROR");
|
|
120
|
+
this.name = "UploadError";
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.UploadError = UploadError;
|
|
124
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file events.ts
|
|
3
|
+
* @description viem watchContractEvent wrappers for InkdRegistry.sol events.
|
|
4
|
+
* Provides typed, reactive subscriptions to ProjectCreated and
|
|
5
|
+
* VersionPushed — the two core lifecycle events of the protocol.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { watchProjectCreated, watchVersionPushed } from "@inkd/sdk/events";
|
|
10
|
+
* import { createPublicClient, http } from "viem";
|
|
11
|
+
* import { baseSepolia } from "viem/chains";
|
|
12
|
+
*
|
|
13
|
+
* const publicClient = createPublicClient({
|
|
14
|
+
* chain: baseSepolia,
|
|
15
|
+
* transport: http(),
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // Subscribe to all new projects
|
|
19
|
+
* const unwatch = watchProjectCreated(publicClient, "0xRegistry...", (event) => {
|
|
20
|
+
* console.log("New project:", event.projectId, event.name, "by", event.owner);
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // Filter to a specific project's versions
|
|
24
|
+
* const unwatch2 = watchVersionPushed(
|
|
25
|
+
* publicClient,
|
|
26
|
+
* "0xRegistry...",
|
|
27
|
+
* (event) => console.log("Version pushed:", event.versionTag, event.arweaveHash),
|
|
28
|
+
* { projectId: 42n }
|
|
29
|
+
* );
|
|
30
|
+
*
|
|
31
|
+
* // Stop watching
|
|
32
|
+
* unwatch();
|
|
33
|
+
* unwatch2();
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
import type { PublicClient } from "viem";
|
|
37
|
+
import type { Address } from "./ProjectRegistry.js";
|
|
38
|
+
/**
|
|
39
|
+
* Decoded ProjectCreated event payload.
|
|
40
|
+
* Emitted by InkdRegistry.sol when a new project is registered.
|
|
41
|
+
*/
|
|
42
|
+
export interface ProjectCreatedEvent {
|
|
43
|
+
/** On-chain project identifier (auto-incrementing). */
|
|
44
|
+
projectId: bigint;
|
|
45
|
+
/** Initial project owner address. */
|
|
46
|
+
owner: Address;
|
|
47
|
+
/** Project name as stored on-chain. */
|
|
48
|
+
name: string;
|
|
49
|
+
/** SPDX license identifier (e.g. "MIT"). */
|
|
50
|
+
license: string;
|
|
51
|
+
/** Raw viem log metadata (block, tx hash, etc.). */
|
|
52
|
+
_log: unknown;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Decoded VersionPushed event payload.
|
|
56
|
+
* Emitted by InkdRegistry.sol when a new version is pushed to a project.
|
|
57
|
+
*/
|
|
58
|
+
export interface VersionPushedEvent {
|
|
59
|
+
/** ID of the project that received the new version. */
|
|
60
|
+
projectId: bigint;
|
|
61
|
+
/** Arweave transaction hash of the uploaded artifact. */
|
|
62
|
+
arweaveHash: string;
|
|
63
|
+
/** Human-readable version tag, e.g. "v1.2.0" or "checkpoint-42". */
|
|
64
|
+
versionTag: string;
|
|
65
|
+
/** Address that called pushVersion(). */
|
|
66
|
+
pushedBy: Address;
|
|
67
|
+
/** Raw viem log metadata (block, tx hash, etc.). */
|
|
68
|
+
_log: unknown;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Unsubscribe function returned by all watch* helpers.
|
|
72
|
+
* Call to stop polling / disconnect the underlying filter.
|
|
73
|
+
*/
|
|
74
|
+
export type Unwatch = () => void;
|
|
75
|
+
/**
|
|
76
|
+
* Optional filters for watchProjectCreated.
|
|
77
|
+
* Only indexed arguments can be filtered at the RPC level.
|
|
78
|
+
*/
|
|
79
|
+
export interface ProjectCreatedFilter {
|
|
80
|
+
/** Filter events by project owner address. */
|
|
81
|
+
owner?: Address;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Optional filters for watchVersionPushed.
|
|
85
|
+
* Only indexed arguments can be filtered at the RPC level.
|
|
86
|
+
*/
|
|
87
|
+
export interface VersionPushedFilter {
|
|
88
|
+
/** Filter events by project ID. */
|
|
89
|
+
projectId?: bigint;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Subscribe to ProjectCreated events from InkdRegistry.
|
|
93
|
+
*
|
|
94
|
+
* Uses viem's watchContractEvent under the hood, which polls getLogs
|
|
95
|
+
* on a configurable interval (default 4 s on most public RPCs).
|
|
96
|
+
*
|
|
97
|
+
* @param publicClient A connected viem PublicClient.
|
|
98
|
+
* @param registryAddress Address of the InkdRegistry proxy contract.
|
|
99
|
+
* @param onEvent Callback invoked for each matching event.
|
|
100
|
+
* @param filter Optional indexed-arg filters (owner).
|
|
101
|
+
* @returns An unsubscribe function — call it to stop watching.
|
|
102
|
+
*/
|
|
103
|
+
export declare function watchProjectCreated(publicClient: PublicClient, registryAddress: Address, onEvent: (_event: ProjectCreatedEvent) => void, filter?: ProjectCreatedFilter): Unwatch;
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to VersionPushed events from InkdRegistry.
|
|
106
|
+
*
|
|
107
|
+
* @param publicClient A connected viem PublicClient.
|
|
108
|
+
* @param registryAddress Address of the InkdRegistry proxy contract.
|
|
109
|
+
* @param onEvent Callback invoked for each matching event.
|
|
110
|
+
* @param filter Optional indexed-arg filters (projectId).
|
|
111
|
+
* @returns An unsubscribe function — call it to stop watching.
|
|
112
|
+
*/
|
|
113
|
+
export declare function watchVersionPushed(publicClient: PublicClient, registryAddress: Address, onEvent: (_event: VersionPushedEvent) => void, filter?: VersionPushedFilter): Unwatch;
|
|
114
|
+
/**
|
|
115
|
+
* Watch both ProjectCreated and VersionPushed in one call.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* const { unwatchAll } = watchRegistryEvents(publicClient, "0xRegistry...", {
|
|
120
|
+
* onProjectCreated: (e) => console.log("Created:", e.name),
|
|
121
|
+
* onVersionPushed: (e) => console.log("Version:", e.versionTag),
|
|
122
|
+
* });
|
|
123
|
+
*
|
|
124
|
+
* // Stop both
|
|
125
|
+
* unwatchAll();
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export declare function watchRegistryEvents(publicClient: PublicClient, registryAddress: Address, handlers: {
|
|
129
|
+
onProjectCreated?: (_event: ProjectCreatedEvent) => void;
|
|
130
|
+
onVersionPushed?: (_event: VersionPushedEvent) => void;
|
|
131
|
+
projectCreatedFilter?: ProjectCreatedFilter;
|
|
132
|
+
versionPushedFilter?: VersionPushedFilter;
|
|
133
|
+
}): {
|
|
134
|
+
unwatchAll: Unwatch;
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;AAEjC;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO,EACxB,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,EAC9C,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAmBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO,EACxB,OAAO,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,EAC7C,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAmBT;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO,EACxB,QAAQ,EAAE;IACR,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACzD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,GACA;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CA4BzB"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file events.ts
|
|
4
|
+
* @description viem watchContractEvent wrappers for InkdRegistry.sol events.
|
|
5
|
+
* Provides typed, reactive subscriptions to ProjectCreated and
|
|
6
|
+
* VersionPushed — the two core lifecycle events of the protocol.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { watchProjectCreated, watchVersionPushed } from "@inkd/sdk/events";
|
|
11
|
+
* import { createPublicClient, http } from "viem";
|
|
12
|
+
* import { baseSepolia } from "viem/chains";
|
|
13
|
+
*
|
|
14
|
+
* const publicClient = createPublicClient({
|
|
15
|
+
* chain: baseSepolia,
|
|
16
|
+
* transport: http(),
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Subscribe to all new projects
|
|
20
|
+
* const unwatch = watchProjectCreated(publicClient, "0xRegistry...", (event) => {
|
|
21
|
+
* console.log("New project:", event.projectId, event.name, "by", event.owner);
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Filter to a specific project's versions
|
|
25
|
+
* const unwatch2 = watchVersionPushed(
|
|
26
|
+
* publicClient,
|
|
27
|
+
* "0xRegistry...",
|
|
28
|
+
* (event) => console.log("Version pushed:", event.versionTag, event.arweaveHash),
|
|
29
|
+
* { projectId: 42n }
|
|
30
|
+
* );
|
|
31
|
+
*
|
|
32
|
+
* // Stop watching
|
|
33
|
+
* unwatch();
|
|
34
|
+
* unwatch2();
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.watchProjectCreated = watchProjectCreated;
|
|
39
|
+
exports.watchVersionPushed = watchVersionPushed;
|
|
40
|
+
exports.watchRegistryEvents = watchRegistryEvents;
|
|
41
|
+
const ProjectRegistry_js_1 = require("./ProjectRegistry.js");
|
|
42
|
+
// ─── Watchers ─────────────────────────────────────────────────────────────────
|
|
43
|
+
/**
|
|
44
|
+
* Subscribe to ProjectCreated events from InkdRegistry.
|
|
45
|
+
*
|
|
46
|
+
* Uses viem's watchContractEvent under the hood, which polls getLogs
|
|
47
|
+
* on a configurable interval (default 4 s on most public RPCs).
|
|
48
|
+
*
|
|
49
|
+
* @param publicClient A connected viem PublicClient.
|
|
50
|
+
* @param registryAddress Address of the InkdRegistry proxy contract.
|
|
51
|
+
* @param onEvent Callback invoked for each matching event.
|
|
52
|
+
* @param filter Optional indexed-arg filters (owner).
|
|
53
|
+
* @returns An unsubscribe function — call it to stop watching.
|
|
54
|
+
*/
|
|
55
|
+
function watchProjectCreated(publicClient, registryAddress, onEvent, filter) {
|
|
56
|
+
return publicClient.watchContractEvent({
|
|
57
|
+
address: registryAddress,
|
|
58
|
+
abi: ProjectRegistry_js_1.INKD_REGISTRY_ABI,
|
|
59
|
+
eventName: "ProjectCreated",
|
|
60
|
+
args: filter?.owner ? { owner: filter.owner } : undefined,
|
|
61
|
+
onLogs(logs) {
|
|
62
|
+
for (const log of logs) {
|
|
63
|
+
const args = log.args ?? {};
|
|
64
|
+
onEvent({
|
|
65
|
+
projectId: args.projectId ?? 0n,
|
|
66
|
+
owner: args.owner ?? "0x",
|
|
67
|
+
name: args.name ?? "",
|
|
68
|
+
license: args.license ?? "",
|
|
69
|
+
_log: log,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Subscribe to VersionPushed events from InkdRegistry.
|
|
77
|
+
*
|
|
78
|
+
* @param publicClient A connected viem PublicClient.
|
|
79
|
+
* @param registryAddress Address of the InkdRegistry proxy contract.
|
|
80
|
+
* @param onEvent Callback invoked for each matching event.
|
|
81
|
+
* @param filter Optional indexed-arg filters (projectId).
|
|
82
|
+
* @returns An unsubscribe function — call it to stop watching.
|
|
83
|
+
*/
|
|
84
|
+
function watchVersionPushed(publicClient, registryAddress, onEvent, filter) {
|
|
85
|
+
return publicClient.watchContractEvent({
|
|
86
|
+
address: registryAddress,
|
|
87
|
+
abi: ProjectRegistry_js_1.INKD_REGISTRY_ABI,
|
|
88
|
+
eventName: "VersionPushed",
|
|
89
|
+
args: filter?.projectId !== undefined ? { projectId: filter.projectId } : undefined,
|
|
90
|
+
onLogs(logs) {
|
|
91
|
+
for (const log of logs) {
|
|
92
|
+
const args = log.args ?? {};
|
|
93
|
+
onEvent({
|
|
94
|
+
projectId: args.projectId ?? 0n,
|
|
95
|
+
arweaveHash: args.arweaveHash ?? "",
|
|
96
|
+
versionTag: args.versionTag ?? "",
|
|
97
|
+
pushedBy: args.pushedBy ?? "0x",
|
|
98
|
+
_log: log,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// ─── Batch Helper ─────────────────────────────────────────────────────────────
|
|
105
|
+
/**
|
|
106
|
+
* Watch both ProjectCreated and VersionPushed in one call.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* const { unwatchAll } = watchRegistryEvents(publicClient, "0xRegistry...", {
|
|
111
|
+
* onProjectCreated: (e) => console.log("Created:", e.name),
|
|
112
|
+
* onVersionPushed: (e) => console.log("Version:", e.versionTag),
|
|
113
|
+
* });
|
|
114
|
+
*
|
|
115
|
+
* // Stop both
|
|
116
|
+
* unwatchAll();
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
function watchRegistryEvents(publicClient, registryAddress, handlers) {
|
|
120
|
+
const cleanups = [];
|
|
121
|
+
if (handlers.onProjectCreated) {
|
|
122
|
+
cleanups.push(watchProjectCreated(publicClient, registryAddress, handlers.onProjectCreated, handlers.projectCreatedFilter));
|
|
123
|
+
}
|
|
124
|
+
if (handlers.onVersionPushed) {
|
|
125
|
+
cleanups.push(watchVersionPushed(publicClient, registryAddress, handlers.onVersionPushed, handlers.versionPushedFilter));
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
unwatchAll: () => cleanups.forEach((fn) => fn()),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useInkdHolder = exports.useInscriptions = exports.useToken = exports.useInkd = void 0;
|
|
4
|
+
var useInkd_1 = require("./useInkd");
|
|
5
|
+
Object.defineProperty(exports, "useInkd", { enumerable: true, get: function () { return useInkd_1.useInkd; } });
|
|
6
|
+
var useToken_1 = require("./useToken");
|
|
7
|
+
Object.defineProperty(exports, "useToken", { enumerable: true, get: function () { return useToken_1.useToken; } });
|
|
8
|
+
var useInscriptions_1 = require("./useInscriptions");
|
|
9
|
+
Object.defineProperty(exports, "useInscriptions", { enumerable: true, get: function () { return useInscriptions_1.useInscriptions; } });
|
|
10
|
+
var useInkdHolder_1 = require("./useInkdHolder");
|
|
11
|
+
Object.defineProperty(exports, "useInkdHolder", { enumerable: true, get: function () { return useInkdHolder_1.useInkdHolder; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file useInkd.ts
|
|
3
|
+
* @description React hook for the Inkd Protocol client.
|
|
4
|
+
*/
|
|
5
|
+
import { InkdClient } from "../InkdClient";
|
|
6
|
+
import type { InkdClientConfig, InkdTokenData, Inscription, TransactionResult, InscribeOptions, InscribeResult, ProtocolStats, Address } from "../types";
|
|
7
|
+
import type { PublicClient, WalletClient, Account, Chain, Transport } from "viem";
|
|
8
|
+
interface UseInkdReturn {
|
|
9
|
+
client: InkdClient;
|
|
10
|
+
connected: boolean;
|
|
11
|
+
connect: (walletClient: WalletClient<Transport, Chain, Account>, publicClient: PublicClient) => void;
|
|
12
|
+
connectArweave: (privateKey: string) => Promise<void>;
|
|
13
|
+
mintToken: (quantity?: number) => Promise<TransactionResult>;
|
|
14
|
+
inscribe: (tokenId: bigint, data: Buffer | Uint8Array | string, options?: InscribeOptions) => Promise<InscribeResult>;
|
|
15
|
+
getToken: (tokenId: bigint) => Promise<InkdTokenData>;
|
|
16
|
+
getInscriptions: (tokenId: bigint) => Promise<Inscription[]>;
|
|
17
|
+
hasInkdToken: (address: Address) => Promise<boolean>;
|
|
18
|
+
getStats: () => Promise<ProtocolStats>;
|
|
19
|
+
error: Error | null;
|
|
20
|
+
}
|
|
21
|
+
/** Main React hook for Inkd Protocol interaction. */
|
|
22
|
+
export declare function useInkd(config: InkdClientConfig): UseInkdReturn;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=useInkd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInkd.d.ts","sourceRoot":"","sources":["../../src/hooks/useInkd.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,aAAa,EACb,OAAO,EACR,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAElF,UAAU,aAAa;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IACrG,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7D,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtH,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,QAAQ,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,qDAAqD;AACrD,wBAAgB,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAwG/D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
3
|
+
/**
|
|
4
|
+
* @file useInkd.ts
|
|
5
|
+
* @description React hook for the Inkd Protocol client.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.useInkd = useInkd;
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const InkdClient_1 = require("../InkdClient");
|
|
11
|
+
/** Main React hook for Inkd Protocol interaction. */
|
|
12
|
+
function useInkd(config) {
|
|
13
|
+
const clientRef = (0, react_1.useRef)(new InkdClient_1.InkdClient(config));
|
|
14
|
+
const [connected, setConnected] = (0, react_1.useState)(false);
|
|
15
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
16
|
+
const connect = (0, react_1.useCallback)((walletClient, publicClient) => {
|
|
17
|
+
clientRef.current.connect(walletClient, publicClient);
|
|
18
|
+
setConnected(true);
|
|
19
|
+
setError(null);
|
|
20
|
+
}, []);
|
|
21
|
+
const connectArweave = (0, react_1.useCallback)(async (privateKey) => {
|
|
22
|
+
try {
|
|
23
|
+
await clientRef.current.connectArweave(privateKey);
|
|
24
|
+
setError(null);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
28
|
+
throw err;
|
|
29
|
+
}
|
|
30
|
+
}, []);
|
|
31
|
+
const mintToken = (0, react_1.useCallback)(async (quantity) => {
|
|
32
|
+
try {
|
|
33
|
+
const result = await clientRef.current.mintToken({ quantity });
|
|
34
|
+
setError(null);
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const e = err instanceof Error ? err : new Error(String(err));
|
|
39
|
+
setError(e);
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
}, []);
|
|
43
|
+
const inscribe = (0, react_1.useCallback)(async (tokenId, data, options) => {
|
|
44
|
+
try {
|
|
45
|
+
const result = await clientRef.current.inscribe(tokenId, data, options);
|
|
46
|
+
setError(null);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const e = err instanceof Error ? err : new Error(String(err));
|
|
51
|
+
setError(e);
|
|
52
|
+
throw e;
|
|
53
|
+
}
|
|
54
|
+
}, []);
|
|
55
|
+
const getToken = (0, react_1.useCallback)(async (tokenId) => {
|
|
56
|
+
try {
|
|
57
|
+
return await clientRef.current.getToken(tokenId);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
const e = err instanceof Error ? err : new Error(String(err));
|
|
61
|
+
setError(e);
|
|
62
|
+
throw e;
|
|
63
|
+
}
|
|
64
|
+
}, []);
|
|
65
|
+
const getInscriptions = (0, react_1.useCallback)(async (tokenId) => {
|
|
66
|
+
try {
|
|
67
|
+
return await clientRef.current.getInscriptions(tokenId);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
const e = err instanceof Error ? err : new Error(String(err));
|
|
71
|
+
setError(e);
|
|
72
|
+
throw e;
|
|
73
|
+
}
|
|
74
|
+
}, []);
|
|
75
|
+
const hasInkdToken = (0, react_1.useCallback)(async (address) => {
|
|
76
|
+
try {
|
|
77
|
+
return await clientRef.current.hasInkdToken(address);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
const e = err instanceof Error ? err : new Error(String(err));
|
|
81
|
+
setError(e);
|
|
82
|
+
throw e;
|
|
83
|
+
}
|
|
84
|
+
}, []);
|
|
85
|
+
const getStats = (0, react_1.useCallback)(async () => {
|
|
86
|
+
try {
|
|
87
|
+
return await clientRef.current.getStats();
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
const e = err instanceof Error ? err : new Error(String(err));
|
|
91
|
+
setError(e);
|
|
92
|
+
throw e;
|
|
93
|
+
}
|
|
94
|
+
}, []);
|
|
95
|
+
return {
|
|
96
|
+
client: clientRef.current,
|
|
97
|
+
connected,
|
|
98
|
+
connect,
|
|
99
|
+
connectArweave,
|
|
100
|
+
mintToken,
|
|
101
|
+
inscribe,
|
|
102
|
+
getToken,
|
|
103
|
+
getInscriptions,
|
|
104
|
+
hasInkdToken,
|
|
105
|
+
getStats,
|
|
106
|
+
error,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=useInkd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInkd.js","sourceRoot":"","sources":["../../src/hooks/useInkd.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE;;;GAGG;;AA+BH,0BAwGC;AArID,iCAAsD;AACtD,8CAA2C;AA2B3C,qDAAqD;AACrD,SAAgB,OAAO,CAAC,MAAwB;IAC9C,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAA,mBAAW,EACzB,CAAC,YAAqD,EAAE,YAA0B,EAAE,EAAE;QACpF,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACtD,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,UAAkB,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,QAAiB,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAC1B,KAAK,EAAE,OAAe,EAAE,IAAkC,EAAE,OAAyB,EAAE,EAAE;QACvF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,OAAO;QACzB,SAAS;QACT,OAAO;QACP,cAAc;QACd,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file useInkdHolder.ts
|
|
3
|
+
* @description React hook to check if an address holds an InkdToken.
|
|
4
|
+
*/
|
|
5
|
+
import type { InkdClient } from "../InkdClient";
|
|
6
|
+
import type { Address } from "../types";
|
|
7
|
+
interface UseInkdHolderReturn {
|
|
8
|
+
isHolder: boolean;
|
|
9
|
+
loading: boolean;
|
|
10
|
+
error: Error | null;
|
|
11
|
+
refetch: () => void;
|
|
12
|
+
}
|
|
13
|
+
/** Check if a given address holds at least one InkdToken. */
|
|
14
|
+
export declare function useInkdHolder(client: InkdClient, address: Address): UseInkdHolderReturn;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=useInkdHolder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInkdHolder.d.ts","sourceRoot":"","sources":["../../src/hooks/useInkdHolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAsCvF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file useInkdHolder.ts
|
|
4
|
+
* @description React hook to check if an address holds an InkdToken.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.useInkdHolder = useInkdHolder;
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
/** Check if a given address holds at least one InkdToken. */
|
|
10
|
+
function useInkdHolder(client, address) {
|
|
11
|
+
const [isHolder, setIsHolder] = (0, react_1.useState)(false);
|
|
12
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
13
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
14
|
+
const [refetchKey, setRefetchKey] = (0, react_1.useState)(0);
|
|
15
|
+
(0, react_1.useEffect)(() => {
|
|
16
|
+
let cancelled = false;
|
|
17
|
+
async function checkHolder() {
|
|
18
|
+
setLoading(true);
|
|
19
|
+
setError(null);
|
|
20
|
+
try {
|
|
21
|
+
const result = await client.hasInkdToken(address);
|
|
22
|
+
if (!cancelled) {
|
|
23
|
+
setIsHolder(result);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
if (!cancelled) {
|
|
28
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
if (!cancelled) {
|
|
33
|
+
setLoading(false);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
void checkHolder();
|
|
38
|
+
return () => {
|
|
39
|
+
cancelled = true;
|
|
40
|
+
};
|
|
41
|
+
}, [client, address, refetchKey]);
|
|
42
|
+
const refetch = () => setRefetchKey((k) => k + 1);
|
|
43
|
+
return { isHolder, loading, error, refetch };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=useInkdHolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInkdHolder.js","sourceRoot":"","sources":["../../src/hooks/useInkdHolder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAcH,sCAsCC;AAlDD,iCAA4C;AAW5C,6DAA6D;AAC7D,SAAgB,aAAa,CAAC,MAAkB,EAAE,OAAgB;IAChE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEhD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,UAAU,WAAW;YACxB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,WAAW,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,WAAW,EAAE,CAAC;QAEnB,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAElD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC"}
|