phygital-token-sdk 0.5.2 → 0.6.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.
Files changed (204) hide show
  1. package/README.md +94 -0
  2. package/dist/index.d.ts +6 -8
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -8
  5. package/dist/index.js.map +1 -1
  6. package/dist/instructions/transfer.d.ts +3 -11
  7. package/dist/instructions/transfer.d.ts.map +1 -1
  8. package/dist/instructions/transfer.js +10 -32
  9. package/dist/instructions/transfer.js.map +1 -1
  10. package/dist/instructions/verifyAsset.d.ts +14 -9
  11. package/dist/instructions/verifyAsset.d.ts.map +1 -1
  12. package/dist/instructions/verifyAsset.js +44 -19
  13. package/dist/instructions/verifyAsset.js.map +1 -1
  14. package/dist/utils/assetCredential.d.ts +1 -1
  15. package/dist/utils/assetCredential.d.ts.map +1 -1
  16. package/dist/utils/assetCredential.js +2 -2
  17. package/dist/utils/assetCredential.js.map +1 -1
  18. package/dist/utils/consts.d.ts +1 -1
  19. package/dist/utils/consts.d.ts.map +1 -1
  20. package/dist/utils/consts.js +1 -1
  21. package/dist/utils/consts.js.map +1 -1
  22. package/dist/utils/gating.d.ts +195 -0
  23. package/dist/utils/gating.d.ts.map +1 -0
  24. package/dist/utils/gating.js +481 -0
  25. package/dist/utils/gating.js.map +1 -0
  26. package/dist/utils/passkey/nfc/authDataExtensions.d.ts.map +1 -1
  27. package/dist/utils/passkey/nfc/authDataExtensions.js +2 -2
  28. package/dist/utils/passkey/nfc/authDataExtensions.js.map +1 -1
  29. package/dist/utils/passkey/secp256r1.d.ts +9 -6
  30. package/dist/utils/passkey/secp256r1.d.ts.map +1 -1
  31. package/dist/utils/passkey/secp256r1.js +14 -23
  32. package/dist/utils/passkey/secp256r1.js.map +1 -1
  33. package/dist/utils/slotHash.d.ts +1 -2
  34. package/dist/utils/slotHash.d.ts.map +1 -1
  35. package/dist/utils/slotHash.js +0 -12
  36. package/dist/utils/slotHash.js.map +1 -1
  37. package/dist/utils/verify.d.ts +2 -9
  38. package/dist/utils/verify.d.ts.map +1 -1
  39. package/dist/utils/verify.js +12 -104
  40. package/dist/utils/verify.js.map +1 -1
  41. package/docs/gating/README.md +83 -0
  42. package/docs/gating/evaluation-and-errors.md +134 -0
  43. package/docs/gating/filters-and-composition.md +120 -0
  44. package/docs/gating/overview.md +84 -0
  45. package/docs/gating/predicates.md +122 -0
  46. package/docs/gating/recipes.md +199 -0
  47. package/docs/gating/tiers.md +158 -0
  48. package/package.json +11 -10
  49. package/dist/__tests__/card-instance.test.d.ts +0 -2
  50. package/dist/__tests__/card-instance.test.d.ts.map +0 -1
  51. package/dist/__tests__/card-instance.test.js +0 -38
  52. package/dist/__tests__/card-instance.test.js.map +0 -1
  53. package/dist/__tests__/crypto-parity.test.d.ts +0 -2
  54. package/dist/__tests__/crypto-parity.test.d.ts.map +0 -1
  55. package/dist/__tests__/crypto-parity.test.js +0 -60
  56. package/dist/__tests__/crypto-parity.test.js.map +0 -1
  57. package/dist/__tests__/low-s-normalization.test.d.ts +0 -2
  58. package/dist/__tests__/low-s-normalization.test.d.ts.map +0 -1
  59. package/dist/__tests__/low-s-normalization.test.js +0 -44
  60. package/dist/__tests__/low-s-normalization.test.js.map +0 -1
  61. package/dist/__tests__/metadata-limits.test.d.ts +0 -2
  62. package/dist/__tests__/metadata-limits.test.d.ts.map +0 -1
  63. package/dist/__tests__/metadata-limits.test.js +0 -33
  64. package/dist/__tests__/metadata-limits.test.js.map +0 -1
  65. package/dist/__tests__/nfc-cbor.test.d.ts +0 -2
  66. package/dist/__tests__/nfc-cbor.test.d.ts.map +0 -1
  67. package/dist/__tests__/nfc-cbor.test.js +0 -72
  68. package/dist/__tests__/nfc-cbor.test.js.map +0 -1
  69. package/dist/consts.d.ts +0 -19
  70. package/dist/consts.d.ts.map +0 -1
  71. package/dist/consts.js +0 -19
  72. package/dist/consts.js.map +0 -1
  73. package/dist/generated/accounts/cardInstance.d.ts +0 -35
  74. package/dist/generated/accounts/cardInstance.d.ts.map +0 -1
  75. package/dist/generated/accounts/cardInstance.js +0 -61
  76. package/dist/generated/accounts/cardInstance.js.map +0 -1
  77. package/dist/generated/accounts/domainConfig.d.ts +0 -28
  78. package/dist/generated/accounts/domainConfig.d.ts.map +0 -1
  79. package/dist/generated/accounts/domainConfig.js +0 -58
  80. package/dist/generated/accounts/domainConfig.js.map +0 -1
  81. package/dist/generated/errors/phygitalNfts.d.ts +0 -62
  82. package/dist/generated/errors/phygitalNfts.d.ts.map +0 -1
  83. package/dist/generated/errors/phygitalNfts.js +0 -87
  84. package/dist/generated/errors/phygitalNfts.js.map +0 -1
  85. package/dist/generated/instructions/createCollectionMint.d.ts +0 -108
  86. package/dist/generated/instructions/createCollectionMint.d.ts.map +0 -1
  87. package/dist/generated/instructions/createCollectionMint.js +0 -175
  88. package/dist/generated/instructions/createCollectionMint.js.map +0 -1
  89. package/dist/generated/instructions/createDesignMint.d.ts +0 -97
  90. package/dist/generated/instructions/createDesignMint.d.ts.map +0 -1
  91. package/dist/generated/instructions/createDesignMint.js +0 -164
  92. package/dist/generated/instructions/createDesignMint.js.map +0 -1
  93. package/dist/generated/instructions/createDomainConfig.d.ts +0 -46
  94. package/dist/generated/instructions/createDomainConfig.d.ts.map +0 -1
  95. package/dist/generated/instructions/createDomainConfig.js +0 -83
  96. package/dist/generated/instructions/createDomainConfig.js.map +0 -1
  97. package/dist/generated/instructions/createGroupToken.d.ts +0 -94
  98. package/dist/generated/instructions/createGroupToken.d.ts.map +0 -1
  99. package/dist/generated/instructions/createGroupToken.js +0 -150
  100. package/dist/generated/instructions/createGroupToken.js.map +0 -1
  101. package/dist/generated/instructions/createToken.d.ts +0 -88
  102. package/dist/generated/instructions/createToken.d.ts.map +0 -1
  103. package/dist/generated/instructions/createToken.js +0 -182
  104. package/dist/generated/instructions/createToken.js.map +0 -1
  105. package/dist/generated/instructions/editDomainConfig.d.ts +0 -50
  106. package/dist/generated/instructions/editDomainConfig.d.ts.map +0 -1
  107. package/dist/generated/instructions/editDomainConfig.js +0 -90
  108. package/dist/generated/instructions/editDomainConfig.js.map +0 -1
  109. package/dist/generated/instructions/executeSpend.d.ts +0 -86
  110. package/dist/generated/instructions/executeSpend.d.ts.map +0 -1
  111. package/dist/generated/instructions/executeSpend.js +0 -187
  112. package/dist/generated/instructions/executeSpend.js.map +0 -1
  113. package/dist/generated/instructions/setTransferConfig.d.ts +0 -88
  114. package/dist/generated/instructions/setTransferConfig.d.ts.map +0 -1
  115. package/dist/generated/instructions/setTransferConfig.js +0 -188
  116. package/dist/generated/instructions/setTransferConfig.js.map +0 -1
  117. package/dist/generated/instructions/updateCounter.d.ts +0 -45
  118. package/dist/generated/instructions/updateCounter.d.ts.map +0 -1
  119. package/dist/generated/instructions/updateCounter.js +0 -84
  120. package/dist/generated/instructions/updateCounter.js.map +0 -1
  121. package/dist/generated/instructions/updateDomainConfig.d.ts +0 -43
  122. package/dist/generated/instructions/updateDomainConfig.d.ts.map +0 -1
  123. package/dist/generated/instructions/updateDomainConfig.js +0 -81
  124. package/dist/generated/instructions/updateDomainConfig.js.map +0 -1
  125. package/dist/generated/pdas/spendAuthority.d.ts +0 -8
  126. package/dist/generated/pdas/spendAuthority.d.ts.map +0 -1
  127. package/dist/generated/pdas/spendAuthority.js +0 -15
  128. package/dist/generated/pdas/spendAuthority.js.map +0 -1
  129. package/dist/generated/programs/phygitalNfts.d.ts +0 -72
  130. package/dist/generated/programs/phygitalNfts.d.ts.map +0 -1
  131. package/dist/generated/programs/phygitalNfts.js +0 -136
  132. package/dist/generated/programs/phygitalNfts.js.map +0 -1
  133. package/dist/instructions/collection.d.ts +0 -14
  134. package/dist/instructions/collection.d.ts.map +0 -1
  135. package/dist/instructions/collection.js +0 -59
  136. package/dist/instructions/collection.js.map +0 -1
  137. package/dist/instructions/index.d.ts +0 -2
  138. package/dist/instructions/index.d.ts.map +0 -1
  139. package/dist/instructions/index.js +0 -2
  140. package/dist/instructions/index.js.map +0 -1
  141. package/dist/instructions/secp256r1Verify.d.ts +0 -29
  142. package/dist/instructions/secp256r1Verify.d.ts.map +0 -1
  143. package/dist/instructions/secp256r1Verify.js +0 -132
  144. package/dist/instructions/secp256r1Verify.js.map +0 -1
  145. package/dist/instructions/setLockState.d.ts +0 -19
  146. package/dist/instructions/setLockState.d.ts.map +0 -1
  147. package/dist/instructions/setLockState.js +0 -17
  148. package/dist/instructions/setLockState.js.map +0 -1
  149. package/dist/instructions/setTransferConfig.d.ts +0 -25
  150. package/dist/instructions/setTransferConfig.d.ts.map +0 -1
  151. package/dist/instructions/setTransferConfig.js +0 -20
  152. package/dist/instructions/setTransferConfig.js.map +0 -1
  153. package/dist/instructions/updateCounter.d.ts +0 -15
  154. package/dist/instructions/updateCounter.d.ts.map +0 -1
  155. package/dist/instructions/updateCounter.js +0 -20
  156. package/dist/instructions/updateCounter.js.map +0 -1
  157. package/dist/mint-metadata.d.ts +0 -13
  158. package/dist/mint-metadata.d.ts.map +0 -1
  159. package/dist/mint-metadata.js +0 -127
  160. package/dist/mint-metadata.js.map +0 -1
  161. package/dist/passkeys/index.d.ts +0 -18
  162. package/dist/passkeys/index.d.ts.map +0 -1
  163. package/dist/passkeys/index.js +0 -30
  164. package/dist/passkeys/index.js.map +0 -1
  165. package/dist/passkeys/internal.d.ts +0 -15
  166. package/dist/passkeys/internal.d.ts.map +0 -1
  167. package/dist/passkeys/internal.js +0 -113
  168. package/dist/passkeys/internal.js.map +0 -1
  169. package/dist/secp256r1.d.ts +0 -24
  170. package/dist/secp256r1.d.ts.map +0 -1
  171. package/dist/secp256r1.js +0 -38
  172. package/dist/secp256r1.js.map +0 -1
  173. package/dist/transfer.d.ts +0 -28
  174. package/dist/transfer.d.ts.map +0 -1
  175. package/dist/transfer.js +0 -109
  176. package/dist/transfer.js.map +0 -1
  177. package/dist/utils/encoding.d.ts +0 -3
  178. package/dist/utils/encoding.d.ts.map +0 -1
  179. package/dist/utils/encoding.js +0 -14
  180. package/dist/utils/encoding.js.map +0 -1
  181. package/dist/utils/passkey/index.d.ts +0 -17
  182. package/dist/utils/passkey/index.d.ts.map +0 -1
  183. package/dist/utils/passkey/index.js +0 -21
  184. package/dist/utils/passkey/index.js.map +0 -1
  185. package/dist/utils/passkey/nfc/base64url.d.ts +0 -2
  186. package/dist/utils/passkey/nfc/base64url.d.ts.map +0 -1
  187. package/dist/utils/passkey/nfc/base64url.js +0 -13
  188. package/dist/utils/passkey/nfc/base64url.js.map +0 -1
  189. package/dist/utils/pdas/domainConfig.d.ts +0 -3
  190. package/dist/utils/pdas/domainConfig.d.ts.map +0 -1
  191. package/dist/utils/pdas/domainConfig.js +0 -15
  192. package/dist/utils/pdas/domainConfig.js.map +0 -1
  193. package/dist/utils/sendInstructions.d.ts +0 -7
  194. package/dist/utils/sendInstructions.d.ts.map +0 -1
  195. package/dist/utils/sendInstructions.js +0 -13
  196. package/dist/utils/sendInstructions.js.map +0 -1
  197. package/dist/utils/tokenOwner.d.ts +0 -7
  198. package/dist/utils/tokenOwner.d.ts.map +0 -1
  199. package/dist/utils/tokenOwner.js +0 -24
  200. package/dist/utils/tokenOwner.js.map +0 -1
  201. package/dist/utils.d.ts +0 -10
  202. package/dist/utils.d.ts.map +0 -1
  203. package/dist/utils.js +0 -42
  204. package/dist/utils.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ # Tiers
2
+
3
+ Use tiers when you want to **segment users** (bronze / silver / gold, basic / pro / enterprise) with separate criteria per level.
4
+
5
+ Each tier has an `id` and its own `GatingFilter`. All tiers are evaluated **independently** against the same wallet.
6
+
7
+ ## Defining tiers
8
+
9
+ ```ts
10
+ import { Gating, GatingTraitValue } from "phygital-token-sdk";
11
+
12
+ const COLLECTION = "CollectionMint...";
13
+ const REWARD_TOKEN = "RewardTokenMint...";
14
+
15
+ const tiers = [
16
+ Gating.tier("bronze", Gating.count(1, {
17
+ collection: Gating.eq(COLLECTION),
18
+ })),
19
+
20
+ Gating.tier("silver", Gating.count(3, {
21
+ collection: Gating.eq(COLLECTION),
22
+ })),
23
+
24
+ Gating.tier("gold", Gating.and(
25
+ Gating.count(1, {
26
+ collection: Gating.eq(COLLECTION),
27
+ traits: Gating.traitsAll(
28
+ Gating.trait("Rarity", GatingTraitValue.eq("Gold")),
29
+ Gating.trait("Level", GatingTraitValue.gte(5)),
30
+ ),
31
+ }),
32
+ Gating.totalBalance(REWARD_TOKEN, 1_000_000n),
33
+ )),
34
+ ] as const;
35
+ ```
36
+
37
+ ## Evaluating
38
+
39
+ ```ts
40
+ import { evaluateAssetGating } from "phygital-token-sdk";
41
+
42
+ const result = await evaluateAssetGating({
43
+ assetPublicKey, // base64url secp256r1 public key
44
+ rpc, // DAS-capable RPC (e.g. Helius)
45
+ tiers,
46
+ });
47
+ ```
48
+
49
+ ### Result shape
50
+
51
+ ```ts
52
+ type GatingEvaluationResult = {
53
+ owner: Address;
54
+ tiers: Array<{
55
+ id: string;
56
+ passed: boolean;
57
+ filterResult: GatingFilterResult;
58
+ }>;
59
+ passedTierIds: string[]; // all matching tiers, in declaration order
60
+ passed: boolean; // true if any tier passed
61
+ };
62
+ ```
63
+
64
+ The SDK does not pick a single "best" tier. Use `passedTierIds` or inspect `tiers` and apply your own priority logic.
65
+
66
+ ### Choosing a tier in your app
67
+
68
+ **Option A — highest declared tier that passed** (common for bronze → gold ladders):
69
+
70
+ ```ts
71
+ const TIER_ORDER = ["bronze", "silver", "gold"] as const;
72
+
73
+ const assignedTier = [...TIER_ORDER]
74
+ .reverse()
75
+ .find((id) => result.passedTierIds.includes(id));
76
+
77
+ switch (assignedTier) {
78
+ case "gold":
79
+ return unlockPremium();
80
+ case "silver":
81
+ return unlockStandard();
82
+ case "bronze":
83
+ return unlockBasic();
84
+ default:
85
+ return denyAccess();
86
+ }
87
+ ```
88
+
89
+ **Option B — grant every tier the user qualifies for**:
90
+
91
+ ```ts
92
+ for (const tierId of result.passedTierIds) {
93
+ await grantPerks(tierId);
94
+ }
95
+ ```
96
+
97
+ **Option C — check a specific tier**:
98
+
99
+ ```ts
100
+ if (result.passedTierIds.includes("gold")) {
101
+ return unlockPremium();
102
+ }
103
+ ```
104
+
105
+ A wallet that passes bronze, silver, and gold:
106
+
107
+ ```ts
108
+ result.passedTierIds // ["bronze", "silver", "gold"]
109
+ ```
110
+
111
+ ### Per-tier detail
112
+
113
+ ```ts
114
+ const gold = result.tiers.find((t) => t.id === "gold");
115
+ if (gold?.passed) {
116
+ // qualified for gold perks
117
+ }
118
+ ```
119
+
120
+ ## Sync evaluation (no RPC)
121
+
122
+ When you already have DAS assets (tests, caching layer):
123
+
124
+ ```ts
125
+ import { evaluateGatingTiers } from "phygital-token-sdk";
126
+
127
+ const result = evaluateGatingTiers(dasAssets, tiers);
128
+ ```
129
+
130
+ ## Alternative qualification paths per tier
131
+
132
+ Each tier's filter can use `Gating.or` internally:
133
+
134
+ ```ts
135
+ Gating.tier("vip", Gating.or(
136
+ Gating.count(1, { mint: Gating.eq("VIPPassMint...") }),
137
+ Gating.and(
138
+ Gating.count(5, { collection: Gating.eq(COLLECTION) }),
139
+ Gating.totalBalance(REWARD_TOKEN, 10_000_000n),
140
+ ),
141
+ ))
142
+ ```
143
+
144
+ ## Single-tier apps
145
+
146
+ A single-tier app is just one entry in the array:
147
+
148
+ ```ts
149
+ await evaluateAssetGating({
150
+ assetPublicKey,
151
+ rpc,
152
+ tiers: [
153
+ Gating.tier("default", Gating.count(1, {
154
+ collection: Gating.eq(COLLECTION),
155
+ })),
156
+ ],
157
+ });
158
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phygital-token-sdk",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "TypeScript client for the Phygital Token Solana program (generated via Codama)",
5
5
  "license": "ISC",
6
6
  "type": "module",
@@ -14,8 +14,15 @@
14
14
  }
15
15
  },
16
16
  "files": [
17
- "dist"
17
+ "dist",
18
+ "docs",
19
+ "README.md"
18
20
  ],
21
+ "scripts": {
22
+ "build": "tsc -p tsconfig.json",
23
+ "test": "vitest run",
24
+ "prepublishOnly": "pnpm build"
25
+ },
19
26
  "peerDependencies": {
20
27
  "@solana/kit": "^6.4.0"
21
28
  },
@@ -28,13 +35,7 @@
28
35
  "@noble/curves": "^2.0.1",
29
36
  "@noble/hashes": "^2.0.1",
30
37
  "@simplewebauthn/browser": "^13.3.0",
31
- "@solana-program/system": "^0.12.2",
32
38
  "@solana-program/token-2022": "^0.11.0",
33
- "@solana/program-client-core": "^6.4.0",
34
- "@solana/signers": "^6.4.0"
35
- },
36
- "scripts": {
37
- "build": "tsc -p tsconfig.json",
38
- "test": "vitest run"
39
+ "@solana/program-client-core": "^6.4.0"
39
40
  }
40
- }
41
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=card-instance.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-instance.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/card-instance.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { address } from "@solana/kit";
2
- import { describe, expect, it } from "vitest";
3
- import { fetchCardInstance, getCardInstanceEncoder, CARD_INSTANCE_DISCRIMINATOR, } from "../generated/accounts/cardInstance";
4
- import { PHYGITAL_NFTS_PROGRAM_ADDRESS } from "../generated/programs/phygitalNfts";
5
- describe("fetchCardInstance", () => {
6
- it("decodes owner and design mint from encoded account data", async () => {
7
- const cardInstance = address("11111111111111111111111111111112");
8
- const mint = address("11111111111111111111111111111113");
9
- const owner = address("11111111111111111111111111111114");
10
- const lastTransferSlot = 42n;
11
- const body = getCardInstanceEncoder().encode({
12
- mint,
13
- owner,
14
- lastTransferSlot,
15
- });
16
- const data = new Uint8Array(body);
17
- const rpc = {
18
- getAccountInfo: () => ({
19
- send: async () => ({
20
- value: {
21
- owner: PHYGITAL_NFTS_PROGRAM_ADDRESS,
22
- data: [Buffer.from(data).toString("base64"), "base64"],
23
- lamports: 1n,
24
- executable: false,
25
- rentEpoch: 0n,
26
- space: BigInt(data.length),
27
- },
28
- }),
29
- }),
30
- };
31
- const parsed = await fetchCardInstance(rpc, cardInstance);
32
- expect(parsed.data.mint).toBe(mint);
33
- expect(parsed.data.owner).toBe(owner);
34
- expect(parsed.data.lastTransferSlot).toBe(lastTransferSlot);
35
- expect(data.subarray(0, 8)).toEqual(CARD_INSTANCE_DISCRIMINATOR);
36
- });
37
- });
38
- //# sourceMappingURL=card-instance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-instance.test.js","sourceRoot":"","sources":["../../src/__tests__/card-instance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA+B,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,YAAY,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,GAAG,CAAC;QAE7B,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC,MAAM,CAAC;YAC3C,IAAI;YACJ,KAAK;YACL,gBAAgB;SACjB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,GAAG,GAAG;YACV,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,KAAK,EAAE;wBACL,KAAK,EAAE,6BAA6B;wBACpC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;wBACtD,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,KAAK;wBACjB,SAAS,EAAE,EAAE;wBACb,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;qBAC3B;iBACF,CAAC;aACH,CAAC;SAC6B,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=crypto-parity.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto-parity.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/crypto-parity.test.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { getAddressDecoder, getAddressEncoder } from "@solana/kit";
3
- import { describe, expect, it } from "vitest";
4
- import { findCardInstancePda } from "../instructions/mint";
5
- import { buildTransferChallenge, buildTransferMessageHash, } from "../utils/passkey/secp256r1";
6
- import { TRANSFER_ACTION_BYTES, TOKEN_2022_PROGRAM_ADDRESS } from "../utils/consts";
7
- function pubkeyFromByte(byte) {
8
- const bytes = new Uint8Array(32).fill(byte);
9
- return getAddressDecoder().decode(bytes);
10
- }
11
- function sha256(data) {
12
- return new Uint8Array(createHash("sha256").update(data).digest());
13
- }
14
- function concatBytes(...parts) {
15
- const total = parts.reduce((sum, part) => sum + part.length, 0);
16
- const out = new Uint8Array(total);
17
- let offset = 0;
18
- for (const part of parts) {
19
- out.set(part, offset);
20
- offset += part.length;
21
- }
22
- return out;
23
- }
24
- describe("buildTransferMessageHash", () => {
25
- it("matches Rust golden vector for fixed pubkeys", async () => {
26
- const cardInstance = pubkeyFromByte(1);
27
- const sender = pubkeyFromByte(2);
28
- const preimage = concatBytes(new Uint8Array(getAddressEncoder().encode(cardInstance)), new Uint8Array(getAddressEncoder().encode(sender)));
29
- const expected = sha256(preimage);
30
- const hash = await buildTransferMessageHash({ cardInstance, sender });
31
- expect(hash).toEqual(expected);
32
- });
33
- });
34
- describe("buildTransferChallenge", () => {
35
- it("matches Rust challenge layout", async () => {
36
- const cardInstance = pubkeyFromByte(1);
37
- const sender = pubkeyFromByte(2);
38
- const slotHash = new Uint8Array(32).fill(9);
39
- const messageHash = await buildTransferMessageHash({ cardInstance, sender });
40
- const expected = sha256(concatBytes(TRANSFER_ACTION_BYTES, new Uint8Array(getAddressEncoder().encode(TOKEN_2022_PROGRAM_ADDRESS)), messageHash, slotHash));
41
- const challenge = await buildTransferChallenge({
42
- tokenProgram: TOKEN_2022_PROGRAM_ADDRESS,
43
- cardInstance,
44
- sender,
45
- slotHash,
46
- });
47
- expect(challenge).toEqual(expected);
48
- });
49
- });
50
- describe("PDAs", () => {
51
- it("findCardInstancePda uses x-only secp256r1 seed", async () => {
52
- const compressed = new Uint8Array(33);
53
- compressed[0] = 0x02;
54
- compressed.fill(7, 1);
55
- const secp256r1Pubkey = [compressed];
56
- const cardInstance = await findCardInstancePda(secp256r1Pubkey);
57
- expect(cardInstance).toMatch(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/);
58
- });
59
- });
60
- //# sourceMappingURL=crypto-parity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/crypto-parity.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=low-s-normalization.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"low-s-normalization.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/low-s-normalization.test.ts"],"names":[],"mappings":""}
@@ -1,44 +0,0 @@
1
- import { p256 } from "@noble/curves/nist.js";
2
- import { describe, expect, it } from "vitest";
3
- import { base64URLStringToBuffer, normalizeSignatureToLowS, } from "../utils/passkey/internal";
4
- import { verifyLocal } from "../utils/verify";
5
- // Real tap from a card whose secure element emits a high-S signature.
6
- const TAP = {
7
- pk: "A9IZOfRZh8Uzm5bizLGzxfAL069sWyICJFYhkKAspkb_",
8
- c: "0000000015",
9
- n: "JbCaACihQK8",
10
- s: "IJDJZ5CMU2FgK_bAPkDLZ3kgM8cI4RhqPcXSN1p7zNb1qxZ-nK6DLGtiUfaGVxE78AppTFPOPA2yrsIzuDYbuQ",
11
- };
12
- function sValue(sig) {
13
- const hex = Array.from(sig.slice(32, 64))
14
- .map((b) => b.toString(16).padStart(2, "0"))
15
- .join("");
16
- return BigInt(`0x${hex}`);
17
- }
18
- describe("normalizeSignatureToLowS", () => {
19
- const halfOrder = p256.Point.CURVE().n >> 1n;
20
- it("flips a high-S signature into canonical low-S", () => {
21
- const raw = base64URLStringToBuffer(TAP.s);
22
- expect(sValue(raw) > halfOrder).toBe(true); // precondition: this tap is high-S
23
- const normalized = normalizeSignatureToLowS(raw);
24
- expect(sValue(normalized) <= halfOrder).toBe(true);
25
- // r is untouched
26
- expect(normalized.slice(0, 32)).toEqual(raw.slice(0, 32));
27
- });
28
- it("is idempotent and leaves an already-low-S signature unchanged", () => {
29
- const once = normalizeSignatureToLowS(base64URLStringToBuffer(TAP.s));
30
- expect(normalizeSignatureToLowS(once)).toEqual(once);
31
- });
32
- it("rejects non-64-byte input", () => {
33
- expect(() => normalizeSignatureToLowS(new Uint8Array(63))).toThrow();
34
- });
35
- });
36
- describe("verifyLocal with a high-S card signature", () => {
37
- it("verifies a genuine tap that emits a high-S signature", () => {
38
- const params = new URLSearchParams(TAP);
39
- const result = verifyLocal(params);
40
- expect(result.isVerified).toBe(true);
41
- expect(result.counter).toBe(15);
42
- });
43
- });
44
- //# sourceMappingURL=low-s-normalization.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"low-s-normalization.test.js","sourceRoot":"","sources":["../../src/__tests__/low-s-normalization.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,sEAAsE;AACtE,MAAM,GAAG,GAAG;IACV,EAAE,EAAE,8CAA8C;IAClD,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,wFAAwF;CAC5F,CAAC;AAEF,SAAS,MAAM,CAAC,GAAe;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;QAE/E,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,iBAAiB;QACjB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,IAAI,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=metadata-limits.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata-limits.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/metadata-limits.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { MAX_METADATA_NAME_LEN, MAX_METADATA_SYMBOL_LEN, MAX_METADATA_URI_LEN, validateMetadataFields, } from "../instructions/mint";
3
- describe("validateMetadataFields", () => {
4
- it("accepts fields at max length", () => {
5
- expect(() => validateMetadataFields({
6
- name: "n".repeat(MAX_METADATA_NAME_LEN),
7
- symbol: "s".repeat(MAX_METADATA_SYMBOL_LEN),
8
- uri: "u".repeat(MAX_METADATA_URI_LEN),
9
- })).not.toThrow();
10
- });
11
- it("rejects overlong name", () => {
12
- expect(() => validateMetadataFields({
13
- name: "n".repeat(MAX_METADATA_NAME_LEN + 1),
14
- symbol: "NFT",
15
- uri: "https://example.com/x.json",
16
- })).toThrow(/Name must be at most/);
17
- });
18
- it("rejects overlong symbol", () => {
19
- expect(() => validateMetadataFields({
20
- name: "nft",
21
- symbol: "s".repeat(MAX_METADATA_SYMBOL_LEN + 1),
22
- uri: "https://example.com/x.json",
23
- })).toThrow(/Symbol must be at most/);
24
- });
25
- it("rejects overlong uri", () => {
26
- expect(() => validateMetadataFields({
27
- name: "nft",
28
- symbol: "NFT",
29
- uri: "u".repeat(MAX_METADATA_URI_LEN + 1),
30
- })).toThrow(/URI must be at most/);
31
- });
32
- });
33
- //# sourceMappingURL=metadata-limits.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata-limits.test.js","sourceRoot":"","sources":["../../src/__tests__/metadata-limits.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,GAAG,EAAE,CACV,sBAAsB,CAAC;YACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC;YACvC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC;YAC3C,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC;SACtC,CAAC,CACH,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,GAAG,EAAE,CACV,sBAAsB,CAAC;YACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAC3C,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,4BAA4B;SAClC,CAAC,CACH,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,GAAG,EAAE,CACV,sBAAsB,CAAC;YACrB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,uBAAuB,GAAG,CAAC,CAAC;YAC/C,GAAG,EAAE,4BAA4B;SAClC,CAAC,CACH,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAG,EAAE,CACV,sBAAsB,CAAC;YACrB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC;SAC1C,CAAC,CACH,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=nfc-cbor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nfc-cbor.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/nfc-cbor.test.ts"],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { encodeCtapCbor, decodeCbor } from "../utils/passkey/nfc/cbor.js";
3
- const hex = (u) => Array.from(u)
4
- .map((b) => b.toString(16).padStart(2, "0"))
5
- .join("");
6
- describe("minimal CBOR", () => {
7
- it("encodes small unsigned ints", () => {
8
- expect(hex(encodeCtapCbor(0))).toBe("00");
9
- expect(hex(encodeCtapCbor(1))).toBe("01");
10
- expect(hex(encodeCtapCbor(23))).toBe("17");
11
- expect(hex(encodeCtapCbor(24))).toBe("1818");
12
- expect(hex(encodeCtapCbor(255))).toBe("18ff");
13
- expect(hex(encodeCtapCbor(256))).toBe("190100");
14
- });
15
- it("encodes RFC 8949 sample map {a:1,b:[2,3]} in canonical order", () => {
16
- expect(hex(encodeCtapCbor({ b: [2, 3], a: 1 }))).toBe("a26161016162820203");
17
- });
18
- it("orders integer map keys numerically", () => {
19
- const m = new Map([
20
- [2, new Uint8Array([0xaa])],
21
- [1, "rp"],
22
- ]);
23
- expect(hex(encodeCtapCbor(m))).toBe("a2016272700241aa");
24
- });
25
- it("orders string keys by CTAP rule (length, then lexical): id < type, up < uv", () => {
26
- const cred = encodeCtapCbor({ type: "public-key", id: new Uint8Array([1]) });
27
- expect(hex(cred).startsWith("a262696441016474797065")).toBe(true);
28
- const opts = encodeCtapCbor({ uv: true, up: true });
29
- expect(hex(opts)).toBe("a2627570f5627576f5");
30
- });
31
- it("roundtrips a getAssertion-style request map", () => {
32
- const clientDataHash = new Uint8Array(32).fill(7);
33
- const credId = new Uint8Array([1, 2, 3, 4]);
34
- const req = new Map();
35
- req.set(1, "revibase.com");
36
- req.set(2, clientDataHash);
37
- req.set(3, [{ id: credId, type: "public-key" }]);
38
- req.set(5, { up: true, uv: false });
39
- const decoded = decodeCbor(encodeCtapCbor(req));
40
- expect(decoded.get(1)).toBe("revibase.com");
41
- expect(hex(decoded.get(2))).toBe(hex(clientDataHash));
42
- const allow = decoded.get(3);
43
- expect(hex(allow[0].id)).toBe(hex(credId));
44
- expect(allow[0].type).toBe("public-key");
45
- const opts = decoded.get(5);
46
- expect(opts.up).toBe(true);
47
- expect(opts.uv).toBe(false);
48
- });
49
- it("decodes an assertion-style response map (int keys -> Map, nested -> object)", () => {
50
- const authData = new Uint8Array(37).fill(9);
51
- const sig = new Uint8Array([0x30, 0x44, 0x02]);
52
- const credId = new Uint8Array([5, 6, 7]);
53
- const resp = new Map();
54
- resp.set(1, { id: credId, type: "public-key" });
55
- resp.set(2, authData);
56
- resp.set(3, sig);
57
- resp.set(5, 1);
58
- const decoded = decodeCbor(encodeCtapCbor(resp));
59
- expect(decoded instanceof Map).toBe(true);
60
- const cred = decoded.get(1);
61
- expect(hex(cred.id)).toBe(hex(credId));
62
- expect(hex(decoded.get(2))).toBe(hex(authData));
63
- expect(hex(decoded.get(3))).toBe(hex(sig));
64
- expect(decoded.get(5)).toBe(1);
65
- });
66
- it("decodes large byte strings (>255) with 2-byte length", () => {
67
- const big = new Uint8Array(300).fill(0xab);
68
- const decoded = decodeCbor(encodeCtapCbor(big));
69
- expect(hex(decoded)).toBe(hex(big));
70
- });
71
- });
72
- //# sourceMappingURL=nfc-cbor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nfc-cbor.test.js","sourceRoot":"","sources":["../../src/__tests__/nfc-cbor.test.ts"],"names":[],"mappings":"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"}
package/dist/consts.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import { type Address } from "@solana/kit";
2
- export declare const RP_ID = "revibase.com";
3
- export declare const TOKEN_2022_PROGRAM_ADDRESS: Address<"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb">;
4
- export declare const SECP256R1_PROGRAM_ADDRESS: Address<"Secp256r1SigVerify1111111111111111111111111">;
5
- export declare const TRANSFER_HOOK_PROGRAM_ADDRESS: Address<"FCBG7gTThZ9hg4axra4UqWBerBhdjhdBLqxD1jicg84G">;
6
- export declare const SLOT_HASHES_SYSVAR_ADDRESS: Address<"SysvarS1otHashes111111111111111111111111111">;
7
- export declare const TRANSFER_ACTION_BYTES: Uint8Array<ArrayBuffer>;
8
- export declare const METADATA_KEY_DOMAIN_CONFIG = "dc";
9
- export declare const METADATA_KEY_ROYALTY_OWNER = "ro";
10
- export declare const METADATA_KEY_SECP256R1 = "s";
11
- export declare const METADATA_KEY_TRANSFER_PRICE = "p";
12
- export declare const METADATA_KEY_PAYMENT_TOKEN_MINT = "m";
13
- export declare const TOKEN_GROUP_MEMBER_EXTENSION_TYPE = 108;
14
- export declare const TOKEN_METADATA_EXTENSION_TYPE = 19;
15
- export declare const COMPRESSED_PUBKEY_SIZE = 33;
16
- export declare const SIGNATURE_SIZE = 64;
17
- export declare const SIGNATURE_OFFSETS_SIZE = 14;
18
- export declare const SIGNATURE_OFFSETS_START = 2;
19
- //# sourceMappingURL=consts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,KAAK,iBAAiB,CAAC;AAEpC,eAAO,MAAM,0BAA0B,wDAEtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,wDAErC,CAAC;AAEF,eAAO,MAAM,6BAA6B,yDAEzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,wDAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,IAAI,CAAC"}
package/dist/consts.js DELETED
@@ -1,19 +0,0 @@
1
- import { address } from "@solana/kit";
2
- export const RP_ID = "revibase.com";
3
- export const TOKEN_2022_PROGRAM_ADDRESS = address("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
4
- export const SECP256R1_PROGRAM_ADDRESS = address("Secp256r1SigVerify1111111111111111111111111");
5
- export const TRANSFER_HOOK_PROGRAM_ADDRESS = address("FCBG7gTThZ9hg4axra4UqWBerBhdjhdBLqxD1jicg84G");
6
- export const SLOT_HASHES_SYSVAR_ADDRESS = address("SysvarS1otHashes111111111111111111111111111");
7
- export const TRANSFER_ACTION_BYTES = new TextEncoder().encode("transfer");
8
- export const METADATA_KEY_DOMAIN_CONFIG = "dc";
9
- export const METADATA_KEY_ROYALTY_OWNER = "ro";
10
- export const METADATA_KEY_SECP256R1 = "s";
11
- export const METADATA_KEY_TRANSFER_PRICE = "p";
12
- export const METADATA_KEY_PAYMENT_TOKEN_MINT = "m";
13
- export const TOKEN_GROUP_MEMBER_EXTENSION_TYPE = 108;
14
- export const TOKEN_METADATA_EXTENSION_TYPE = 19;
15
- export const COMPRESSED_PUBKEY_SIZE = 33;
16
- export const SIGNATURE_SIZE = 64;
17
- export const SIGNATURE_OFFSETS_SIZE = 14;
18
- export const SIGNATURE_OFFSETS_START = 2;
19
- //# sourceMappingURL=consts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC;AAEpC,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAC/C,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAC9C,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,CAClD,8CAA8C,CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAC/C,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AACrD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * This code was AUTOGENERATED using the Codama library.
3
- * Please DO NOT EDIT THIS FILE, instead use visitors
4
- * to add features, then rerun Codama to update it.
5
- *
6
- * @see https://github.com/codama-idl/codama
7
- */
8
- import { fetchEncodedAccount, fetchEncodedAccounts, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array } from "@solana/kit";
9
- export declare const CARD_INSTANCE_DISCRIMINATOR: ReadonlyUint8Array;
10
- export declare function getCardInstanceDiscriminatorBytes(): ReadonlyUint8Array;
11
- export type CardInstance = {
12
- discriminator: ReadonlyUint8Array;
13
- mint: Address;
14
- owner: Address;
15
- lastTransferSlot: bigint;
16
- };
17
- export type CardInstanceArgs = {
18
- mint: Address;
19
- owner: Address;
20
- lastTransferSlot: number | bigint;
21
- };
22
- /** Gets the encoder for {@link CardInstanceArgs} account data. */
23
- export declare function getCardInstanceEncoder(): FixedSizeEncoder<CardInstanceArgs>;
24
- /** Gets the decoder for {@link CardInstance} account data. */
25
- export declare function getCardInstanceDecoder(): FixedSizeDecoder<CardInstance>;
26
- /** Gets the codec for {@link CardInstance} account data. */
27
- export declare function getCardInstanceCodec(): FixedSizeCodec<CardInstanceArgs, CardInstance>;
28
- export declare function decodeCardInstance<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<CardInstance, TAddress>;
29
- export declare function decodeCardInstance<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<CardInstance, TAddress>;
30
- export declare function fetchCardInstance<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<Account<CardInstance, TAddress>>;
31
- export declare function fetchMaybeCardInstance<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<MaybeAccount<CardInstance, TAddress>>;
32
- export declare function fetchAllCardInstance(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<Account<CardInstance>[]>;
33
- export declare function fetchAllMaybeCardInstance(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<MaybeAccount<CardInstance>[]>;
34
- export declare function getCardInstanceSize(): number;
35
- //# sourceMappingURL=cardInstance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cardInstance.d.ts","sourceRoot":"","sources":["../../../src/generated/accounts/cardInstance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAKL,mBAAmB,EACnB,oBAAoB,EAYpB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,2BAA2B,EAAE,kBAExC,CAAC;AAEH,wBAAgB,iCAAiC,IAAI,kBAAkB,CAItE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,EAAE,kBAAkB,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,sBAAsB,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAU3E;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAOvE;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,IAAI,cAAc,CACpD,gBAAgB,EAChB,YAAY,CACb,CAEA;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EACjE,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACnC,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EACjE,cAAc,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAC5C,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAUxC,wBAAsB,iBAAiB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EACtE,GAAG,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC9C,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAI1C;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAC3E,GAAG,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC9C,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAG/C;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAC/C,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EACzB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAIlC;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAC/C,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EACzB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAGvC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}