phygital-token-sdk 0.5.3 → 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 -9
  7. package/dist/instructions/transfer.d.ts.map +1 -1
  8. package/dist/instructions/transfer.js +7 -28
  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 +8 -5
  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
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # phygital-token-sdk
2
+
3
+ TypeScript client for the Phygital Token Solana program. Mint tokenized assets bound to passkeys, verify ownership via WebAuthn, transfer credentials, and gate experiences based on what the asset owner holds on-chain.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm add phygital-token-sdk @solana/kit
9
+ ```
10
+
11
+ Requires a Solana RPC. Gating and rich asset metadata need a DAS-capable provider (e.g. [Helius](https://helius.dev)).
12
+
13
+ ## Quick start
14
+
15
+ ```ts
16
+ import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";
17
+ import {
18
+ evaluateAssetGating,
19
+ Gating,
20
+ GatingTraitValue,
21
+ verifyWithChallengeResponse,
22
+ } from "phygital-token-sdk";
23
+
24
+ const rpc = createSolanaRpc("https://mainnet.helius-rpc.com/?api-key=...");
25
+ ```
26
+
27
+ ### Verify a phygital asset
28
+
29
+ ```ts
30
+ const verified = await verifyWithChallengeResponse({
31
+ rpc,
32
+ assetPublicKey, // base64url secp256r1 public key
33
+ // ... WebAuthn options
34
+ });
35
+ ```
36
+
37
+ ### Gate access by wallet holdings
38
+
39
+ ```ts
40
+ const result = await evaluateAssetGating({
41
+ assetPublicKey,
42
+ rpc,
43
+ tiers: [
44
+ Gating.tier("bronze", Gating.count(1, {
45
+ collection: Gating.eq("CollectionMint..."),
46
+ })),
47
+ Gating.tier("gold", Gating.count(1, {
48
+ collection: Gating.eq("CollectionMint..."),
49
+ traits: Gating.traitsAll(
50
+ Gating.trait("Rarity", GatingTraitValue.eq("Gold")),
51
+ ),
52
+ })),
53
+ ],
54
+ });
55
+
56
+ if (result.passedTierIds.includes("gold")) {
57
+ // unlock premium experience
58
+ }
59
+ ```
60
+
61
+ ## Features
62
+
63
+ | Area | Exports |
64
+ |------|---------|
65
+ | **Mint** | `buildCreateMintInstructions`, `buildMintTokenInstructions`, `parseSecp256r1Pubkey` |
66
+ | **Verify** | `verifyWithChallengeResponse`, `verifyDynamicUrl`, `verifyWithChallengeResponseOverNfc` |
67
+ | **Transfer** | `beginTransfer`, `completeTransfer`, `authenticatePasskey` |
68
+ | **Metadata** | `fetchAssetDisplayInfo`, `resolveMedia` |
69
+ | **Gating** | `evaluateAssetGating`, `Gating`, `GatingTraitValue` |
70
+ | **Generated** | Program instructions, accounts, types (Codama) |
71
+
72
+ ## Gating documentation
73
+
74
+ Wallet-based gating lets you segment users by collection, mint, NFT traits, and token balances. Full guides:
75
+
76
+ - **[Gating overview](./docs/gating/README.md)** — start here
77
+ - [Overview & mental model](./docs/gating/overview.md)
78
+ - [Predicates](./docs/gating/predicates.md) — `collection`, `mint`, `traits`, `balance`
79
+ - [Filters & composition](./docs/gating/filters-and-composition.md) — `count`, `totalBalance`, `and` / `or` / `not`
80
+ - [Tiers](./docs/gating/tiers.md) — bronze / silver / gold patterns
81
+ - [Evaluation & errors](./docs/gating/evaluation-and-errors.md) — debugging and failure messages
82
+ - [Recipes](./docs/gating/recipes.md) — copy-paste examples
83
+
84
+ ## Development
85
+
86
+ ```bash
87
+ pnpm install
88
+ pnpm build
89
+ pnpm test
90
+ ```
91
+
92
+ ## License
93
+
94
+ ISC
package/dist/index.d.ts CHANGED
@@ -1,12 +1,10 @@
1
- export { authenticateDiscoverablePasskey, authenticatePasskey, authenticateToken, beginTransfer, completeTransfer, type TransferSession, } from "./instructions/transfer.js";
2
- export { buildSecp256r1VerifyInstructionFromWebAuthnResponse, buildTransferChallenge, buildVerifyChallenge, buildVerifyMessage, type WebAuthnSecp256r1Verification, } from "./utils/passkey/secp256r1.js";
3
- export { getLatestSlotHash } from "./utils/slotHash.js";
4
- export { findAssociatedTokenAddress } from "./utils/associatedToken.js";
5
- export { TOKEN_2022_PROGRAM_ADDRESS } from "./utils/consts.js";
6
- export { buildCreateMintInstructions, buildMintTokenInstructions, MAX_METADATA_NAME_LEN, MAX_METADATA_SYMBOL_LEN, MAX_METADATA_URI_LEN, parseSecp256r1Pubkey, parseCredentialId, validateMetadataFields, type MetadataFields, } from "./instructions/mint.js";
1
+ export { beginTransfer, completeTransfer, authenticatePasskeyForTransfer, type TransferSession, } from "./instructions/transfer.js";
2
+ export { beginVerifyAsset, completeVerifyAsset, buildVerifyAssetArgs, authenticatePasskeyForVerifyAsset, type VerifyAssetSession, } from "./instructions/verifyAsset.js";
3
+ export { buildCreateMintInstructions, buildMintTokenInstructions, parseSecp256r1Pubkey, parseCredentialId, validateMetadataFields, type MetadataFields, } from "./instructions/mint.js";
7
4
  export { fetchAssetDisplayInfo, resolveMedia, type AssetDisplayInfo, type MediaCategory, type ResolvedMedia, type Shortcut, type TokenJsonMetadata, type TokenMediaFile, } from "./utils/metadata.js";
8
- export { fetchAssetCredentialFromCredentialId, fetchAllAssetsFromOwner, } from "./utils/assetCredential.js";
9
- export { verifyDynamicUrlWithoutCounterCheck, verifyDynamicUrl, verifyWithChallengeResponse, verifyWithChallengeResponseOverNfc, type VerifyDynamicUrlCallback, type VerifyDynamicUrlResult, type VerifyWithChallengeResponseResult, type VerifyWithChallengeResponseOptions, type GetPublicKeyFromCredentialIdCallback, } from "./utils/verify.js";
5
+ export { fetchAssetFromCredentialId, fetchAllAssetsFromOwner, } from "./utils/assetCredential.js";
6
+ export { verifyDynamicUrl, verifyDynamicUrlWithoutCounterCheck, verifyWithChallengeResponse, verifyWithChallengeResponseOverNfc, type VerifyDynamicUrlCallback, type VerifyDynamicUrlResult, type VerifyWithChallengeResponseResult, type VerifyWithChallengeResponseOptions, type GetPublicKeyFromCredentialIdCallback, } from "./utils/verify.js";
10
7
  export { findAssetPda } from "./utils/pdas/index.js";
8
+ export { evaluateAssetGating, evaluateGatingTiers, evaluateGatingFilter, assetMatchesPredicate, Gating, GatingTraitValue, formatGatingPredicate, summarizeGatingEvaluationFailure, summarizeGatingFailure, summarizeGatingTierFailure, type EvaluateAssetGatingOptions, type GatingAssetPredicate, type GatingEvaluationResult, type GatingFilter, type GatingFilterResult, type GatingTier, type GatingTierEvaluationResult, type GatingTiersEvaluationResult, } from "./utils/gating.js";
11
9
  export * from "./generated/index.js";
12
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,mDAAmD,EACnD,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,6BAA6B,GACnC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,mCAAmC,EACnC,gBAAgB,EAChB,2BAA2B,EAC3B,kCAAkC,EAClC,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,KAAK,oCAAoC,GAC1C,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,8BAA8B,EAC9B,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,gBAAgB,EAChB,mCAAmC,EACnC,2BAA2B,EAC3B,kCAAkC,EAClC,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,KAAK,oCAAoC,GAC1C,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,EACN,gBAAgB,EAChB,qBAAqB,EACrB,gCAAgC,EAChC,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,mBAAmB,CAAC;AAE3B,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,10 @@
1
- export { authenticateDiscoverablePasskey, authenticatePasskey, authenticateToken, beginTransfer, completeTransfer, } from "./instructions/transfer.js";
2
- export { buildSecp256r1VerifyInstructionFromWebAuthnResponse, buildTransferChallenge, buildVerifyChallenge, buildVerifyMessage, } from "./utils/passkey/secp256r1.js";
3
- export { getLatestSlotHash } from "./utils/slotHash.js";
4
- export { findAssociatedTokenAddress } from "./utils/associatedToken.js";
5
- export { TOKEN_2022_PROGRAM_ADDRESS } from "./utils/consts.js";
6
- export { buildCreateMintInstructions, buildMintTokenInstructions, MAX_METADATA_NAME_LEN, MAX_METADATA_SYMBOL_LEN, MAX_METADATA_URI_LEN, parseSecp256r1Pubkey, parseCredentialId, validateMetadataFields, } from "./instructions/mint.js";
1
+ export { beginTransfer, completeTransfer, authenticatePasskeyForTransfer, } from "./instructions/transfer.js";
2
+ export { beginVerifyAsset, completeVerifyAsset, buildVerifyAssetArgs, authenticatePasskeyForVerifyAsset, } from "./instructions/verifyAsset.js";
3
+ export { buildCreateMintInstructions, buildMintTokenInstructions, parseSecp256r1Pubkey, parseCredentialId, validateMetadataFields, } from "./instructions/mint.js";
7
4
  export { fetchAssetDisplayInfo, resolveMedia, } from "./utils/metadata.js";
8
- export { fetchAssetCredentialFromCredentialId, fetchAllAssetsFromOwner, } from "./utils/assetCredential.js";
9
- export { verifyDynamicUrlWithoutCounterCheck, verifyDynamicUrl, verifyWithChallengeResponse, verifyWithChallengeResponseOverNfc, } from "./utils/verify.js";
5
+ export { fetchAssetFromCredentialId, fetchAllAssetsFromOwner, } from "./utils/assetCredential.js";
6
+ export { verifyDynamicUrl, verifyDynamicUrlWithoutCounterCheck, verifyWithChallengeResponse, verifyWithChallengeResponseOverNfc, } from "./utils/verify.js";
10
7
  export { findAssetPda } from "./utils/pdas/index.js";
8
+ export { evaluateAssetGating, evaluateGatingTiers, evaluateGatingFilter, assetMatchesPredicate, Gating, GatingTraitValue, formatGatingPredicate, summarizeGatingEvaluationFailure, summarizeGatingFailure, summarizeGatingTierFailure, } from "./utils/gating.js";
11
9
  export * from "./generated/index.js";
12
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GAEjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,mDAAmD,EACnD,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,YAAY,GAOb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,mCAAmC,EACnC,gBAAgB,EAChB,2BAA2B,EAC3B,kCAAkC,GAMnC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,8BAA8B,GAE/B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,GAElC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,YAAY,GAOb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,gBAAgB,EAChB,mCAAmC,EACnC,2BAA2B,EAC3B,kCAAkC,GAMnC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,EACN,gBAAgB,EAChB,qBAAqB,EACrB,gCAAgC,EAChC,sBAAsB,EACtB,0BAA0B,GAS3B,MAAM,mBAAmB,CAAC;AAE3B,cAAc,sBAAsB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { type Instruction, type Rpc, type SolanaRpcApi, type TransactionSigner } from "@solana/kit";
2
2
  import { type AuthenticationResponseJSON } from "@simplewebauthn/browser";
3
3
  import { type AssetDisplayInfo } from "../utils/metadata.js";
4
+ import { type Secp256r1VerifyInput } from "../utils/passkey/secp256r1.js";
4
5
  export type TransferSession = {
5
6
  rpc: Rpc<SolanaRpcApi>;
6
7
  displayInfo: AssetDisplayInfo;
@@ -12,13 +13,6 @@ export declare function beginTransfer(input: {
12
13
  rpc: Rpc<SolanaRpcApi>;
13
14
  displayInfo: AssetDisplayInfo;
14
15
  }): Promise<TransferSession>;
15
- export declare function authenticateDiscoverablePasskey(input: {
16
- challenge: Uint8Array;
17
- }): Promise<AuthenticationResponseJSON>;
18
- export declare function authenticatePasskey(input: {
19
- challenge: Uint8Array;
20
- credentialId: string;
21
- }): Promise<AuthenticationResponseJSON>;
22
- export declare function authenticateToken(session: TransferSession): Promise<AuthenticationResponseJSON>;
23
- export declare function completeTransfer(session: TransferSession, response: AuthenticationResponseJSON, recipient: TransactionSigner): Promise<Instruction[]>;
16
+ export declare function authenticatePasskeyForTransfer(session: TransferSession): Promise<AuthenticationResponseJSON>;
17
+ export declare function completeTransfer(session: TransferSession, response: AuthenticationResponseJSON, recipient: TransactionSigner, existingSecp256r1VerifyInputs?: Secp256r1VerifyInput[]): Promise<Instruction[]>;
24
18
  //# sourceMappingURL=transfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/instructions/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAS7D,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAOF,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,WAAW,EAAE,gBAAgB,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAc3B;AAMD,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,SAAS,EAAE,UAAU,CAAC;CACvB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAiBtC;AAGD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAiBtC;AAGD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,0BAA0B,CAAC,CAKrC;AAGD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,0BAA0B,EACpC,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,WAAW,EAAE,CAAC,CAoCxB"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/instructions/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAKvC,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAOF,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,WAAW,EAAE,gBAAgB,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAc3B;AAGD,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,0BAA0B,CAAC,CAiBrC;AAGD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,0BAA0B,EACpC,SAAS,EAAE,iBAAiB,EAC5B,6BAA6B,CAAC,EAAE,oBAAoB,EAAE,GACrD,OAAO,CAAC,WAAW,EAAE,CAAC,CAqCxB"}
@@ -20,15 +20,15 @@ export async function beginTransfer(input) {
20
20
  challenge,
21
21
  };
22
22
  }
23
- export async function authenticateDiscoverablePasskey(input) {
23
+ export async function authenticatePasskeyForTransfer(session) {
24
24
  return startAuthentication({
25
25
  optionsJSON: {
26
- challenge: bufferToBase64URLString(new Uint8Array(input.challenge).buffer),
26
+ challenge: bufferToBase64URLString(new Uint8Array(session.challenge).buffer),
27
27
  rpId: window.location.hostname,
28
28
  userVerification: "preferred",
29
29
  allowCredentials: [
30
30
  {
31
- id: "",
31
+ id: session.displayInfo.credentialId,
32
32
  type: "public-key",
33
33
  transports: ["nfc"],
34
34
  },
@@ -36,33 +36,12 @@ export async function authenticateDiscoverablePasskey(input) {
36
36
  },
37
37
  });
38
38
  }
39
- export async function authenticatePasskey(input) {
40
- return startAuthentication({
41
- optionsJSON: {
42
- challenge: bufferToBase64URLString(new Uint8Array(input.challenge).buffer),
43
- rpId: window.location.hostname,
44
- userVerification: "preferred",
45
- allowCredentials: [
46
- {
47
- id: input.credentialId,
48
- type: "public-key",
49
- transports: ["nfc"],
50
- },
51
- ],
52
- },
53
- });
54
- }
55
- export async function authenticateToken(session) {
56
- return authenticatePasskey({
57
- challenge: session.challenge,
58
- credentialId: session.displayInfo.credentialId,
59
- });
60
- }
61
- export async function completeTransfer(session, response, recipient) {
39
+ export async function completeTransfer(session, response, recipient, existingSecp256r1VerifyInputs) {
62
40
  const tokenProgram = TOKEN_2022_PROGRAM_ADDRESS;
63
- const { secp256r1Verify, clientDataJson } = await buildSecp256r1VerifyInstructionFromWebAuthnResponse({
41
+ const { secp256r1Verify, signedMessageIndex, clientDataJson } = await buildSecp256r1VerifyInstructionFromWebAuthnResponse({
64
42
  response,
65
43
  publicKey: session.displayInfo.publicKey,
44
+ existingSecp256r1VerifyInputs,
66
45
  });
67
46
  const recipientTokenAccount = await findAssociatedTokenAddress(recipient.address, session.displayInfo.mint, tokenProgram);
68
47
  const senderTokenAccount = await findAssociatedTokenAddress(session.displayInfo.currentOwner, session.displayInfo.mint, tokenProgram);
@@ -75,7 +54,7 @@ export async function completeTransfer(session, response, recipient) {
75
54
  recipientTokenAccount,
76
55
  tokenProgram,
77
56
  secp256r1VerifyArgs: {
78
- signedMessageIndex: 0,
57
+ signedMessageIndex,
79
58
  slotNumber: session.slotNumber,
80
59
  clientDataJson,
81
60
  },
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/instructions/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/instructions/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GAEpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAyB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,mDAAmD,EACnD,sBAAsB,GAEvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAezE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAGnC;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC;QAC7C,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;QAC9B,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ;QACR,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAwB;IAExB,OAAO,mBAAmB,CAAC;QACzB,WAAW,EAAE;YACX,SAAS,EAAE,uBAAuB,CAChC,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAqB,CACxD;YACD,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;YAC9B,gBAAgB,EAAE,WAAW;YAC7B,gBAAgB,EAAE;gBAChB;oBACE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,YAAY;oBACpC,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE,CAAC,KAAK,CAAC;iBACpB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAwB,EACxB,QAAoC,EACpC,SAA4B,EAC5B,6BAAsD;IAEtD,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAEhD,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAC3D,MAAM,mDAAmD,CAAC;QACxD,QAAQ;QACR,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS;QACxC,6BAA6B;KAC9B,CAAC,CAAC;IAEL,MAAM,qBAAqB,GAAG,MAAM,0BAA0B,CAC5D,SAAS,CAAC,OAAO,EACjB,OAAO,CAAC,WAAW,CAAC,IAAI,EACxB,YAAY,CACb,CAAC;IACF,MAAM,kBAAkB,GAAG,MAAM,0BAA0B,CACzD,OAAO,CAAC,WAAW,CAAC,YAAY,EAChC,OAAO,CAAC,WAAW,CAAC,IAAI,EACxB,YAAY,CACb,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,kCAAkC,CAAC;QAC/D,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,YAAY;QACxC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK;QAChC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI;QAC9B,kBAAkB;QAClB,qBAAqB;QACrB,YAAY;QACZ,mBAAmB,EAAE;YACnB,kBAAkB;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,cAAc;SACf;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,20 +1,25 @@
1
- import { type Address, type Instruction, type Rpc, type SolanaRpcApi } from "@solana/kit";
2
1
  import { type AuthenticationResponseJSON } from "@simplewebauthn/browser";
2
+ import type { Address, Instruction, Rpc, SolanaRpcApi } from "@solana/kit";
3
+ import { type Secp256r1VerifyInput } from "../utils/passkey/secp256r1.js";
4
+ import { type Asset } from "../generated/index.js";
3
5
  export type VerifyAssetSession = {
4
6
  rpc: Rpc<SolanaRpcApi>;
5
- asset: Address;
6
- publicKey: string;
7
- message: string;
8
7
  slotHash: Uint8Array;
9
8
  slotNumber: bigint;
10
9
  challenge: Uint8Array;
10
+ message: Uint8Array;
11
11
  };
12
12
  export declare function beginVerifyAsset(input: {
13
13
  rpc: Rpc<SolanaRpcApi>;
14
- asset: Address;
15
- publicKey: string;
16
- message: string;
14
+ message: Uint8Array;
17
15
  }): Promise<VerifyAssetSession>;
18
- export declare function verifyAssetChallengeBase64Url(session: VerifyAssetSession): string;
19
- export declare function completeVerifyAsset(session: VerifyAssetSession, response: AuthenticationResponseJSON): Promise<Instruction[]>;
16
+ export declare function authenticatePasskeyForVerifyAsset(session: VerifyAssetSession): Promise<AuthenticationResponseJSON>;
17
+ export declare function buildVerifyAssetArgs(session: VerifyAssetSession, response: AuthenticationResponseJSON, existingSecp256r1VerifyInputs?: Secp256r1VerifyInput[]): Promise<{
18
+ asset: Asset;
19
+ assetPda: Address;
20
+ secp256r1Verify: Instruction;
21
+ signedMessageIndex: number;
22
+ clientDataJson: Uint8Array;
23
+ }>;
24
+ export declare function completeVerifyAsset(session: VerifyAssetSession, response: AuthenticationResponseJSON, existingSecp256r1VerifyInputs?: Secp256r1VerifyInput[]): Promise<Instruction[]>;
20
25
  //# sourceMappingURL=verifyAsset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyAsset.d.ts","sourceRoot":"","sources":["../../src/instructions/verifyAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,GAAG,EACR,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAQjC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAOF,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc9B;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,kBAAkB,GAC1B,MAAM,CAIR;AAGD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,0BAA0B,GACnC,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxB"}
1
+ {"version":3,"file":"verifyAsset.d.ts","sourceRoot":"","sources":["../../src/instructions/verifyAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAK9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAMF,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc9B;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,0BAA0B,CAAC,CAiBrC;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,0BAA0B,EACpC,6BAA6B,CAAC,EAAE,oBAAoB,EAAE,GACrD,OAAO,CAAC;IACT,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,WAAW,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,UAAU,CAAC;CAC5B,CAAC,CAkBD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,0BAA0B,EACpC,6BAA6B,CAAC,EAAE,oBAAoB,EAAE,GACrD,OAAO,CAAC,WAAW,EAAE,CAAC,CAmBxB"}
@@ -1,41 +1,66 @@
1
- import {} from "@solana/kit";
2
- import { bufferToBase64URLString, } from "@simplewebauthn/browser";
3
- import { getVerifyAssetInstruction } from "../generated/index.js";
4
- import { buildSecp256r1VerifyInstructionFromWebAuthnResponse, buildVerifyMessage, } from "../utils/passkey/secp256r1.js";
1
+ import { startAuthentication, bufferToBase64URLString, } from "@simplewebauthn/browser";
2
+ import { buildSecp256r1VerifyInstructionFromWebAuthnResponse, buildVerifyAssetChallenge, } from "../utils/passkey/secp256r1.js";
5
3
  import { getLatestSlotHash } from "../utils/slotHash.js";
4
+ import { getVerifyAssetInstruction } from "../generated/index.js";
5
+ import { findAssetPda } from "../utils/pdas/index.js";
6
+ import { parseSecp256r1Pubkey } from "./mint.js";
7
+ import { fetchAssetFromCredentialId } from "../utils/assetCredential.js";
6
8
  export async function beginVerifyAsset(input) {
7
9
  const { slotHash, slotNumber } = await getLatestSlotHash(input.rpc);
8
- const challenge = await buildVerifyMessage({
9
- asset: input.asset,
10
+ const challenge = await buildVerifyAssetChallenge({
10
11
  message: input.message,
11
12
  slotHash,
12
13
  });
13
14
  return {
14
- ...input,
15
+ rpc: input.rpc,
15
16
  slotHash,
16
17
  slotNumber,
17
18
  challenge,
19
+ message: input.message,
18
20
  };
19
21
  }
20
- export function verifyAssetChallengeBase64Url(session) {
21
- return bufferToBase64URLString(new Uint8Array(session.challenge).buffer);
22
+ export async function authenticatePasskeyForVerifyAsset(session) {
23
+ return startAuthentication({
24
+ optionsJSON: {
25
+ challenge: bufferToBase64URLString(new Uint8Array(session.challenge).buffer),
26
+ rpId: window.location.hostname,
27
+ userVerification: "preferred",
28
+ allowCredentials: [
29
+ {
30
+ id: "",
31
+ type: "public-key",
32
+ transports: ["nfc"],
33
+ },
34
+ ],
35
+ },
36
+ });
22
37
  }
23
- export async function completeVerifyAsset(session, response) {
24
- const { secp256r1Verify, origin, crossOrigin, truncatedClientDataJson } = await buildSecp256r1VerifyInstructionFromWebAuthnResponse({
25
- publicKey: session.publicKey,
38
+ export async function buildVerifyAssetArgs(session, response, existingSecp256r1VerifyInputs) {
39
+ const { asset, publicKey } = await fetchAssetFromCredentialId(response.id, session.rpc);
40
+ const { secp256r1Verify, signedMessageIndex, clientDataJson } = await buildSecp256r1VerifyInstructionFromWebAuthnResponse({
41
+ publicKey,
26
42
  response,
43
+ existingSecp256r1VerifyInputs,
27
44
  });
28
- const verifyAsset = getVerifyAssetInstruction({
29
- asset: session.asset,
45
+ return {
46
+ asset,
47
+ assetPda: await findAssetPda(parseSecp256r1Pubkey(publicKey)),
48
+ secp256r1Verify,
49
+ signedMessageIndex,
50
+ clientDataJson,
51
+ };
52
+ }
53
+ export async function completeVerifyAsset(session, response, existingSecp256r1VerifyInputs) {
54
+ const { assetPda, secp256r1Verify, signedMessageIndex, clientDataJson } = await buildVerifyAssetArgs(session, response, existingSecp256r1VerifyInputs);
55
+ const verifyAssetInstruction = getVerifyAssetInstruction({
56
+ asset: assetPda,
30
57
  secp256r1VerifyArgs: {
31
- signedMessageIndex: 0,
58
+ signedMessageIndex,
32
59
  slotNumber: session.slotNumber,
33
- origin,
34
- crossOrigin,
35
- truncatedClientDataJson,
60
+ clientDataJson,
36
61
  },
37
62
  message: session.message,
38
63
  });
39
- return [secp256r1Verify, verifyAsset];
64
+ return [secp256r1Verify, verifyAssetInstruction];
40
65
  }
41
66
  //# sourceMappingURL=verifyAsset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyAsset.js","sourceRoot":"","sources":["../../src/instructions/verifyAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,mDAAmD,EACnD,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAiBzD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAKtC;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC;QACzC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,KAAK;QACR,QAAQ;QACR,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAA2B;IAE3B,OAAO,uBAAuB,CAC5B,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAqB,CACxD,CAAC;AACJ,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA2B,EAC3B,QAAoC;IAEpC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,GACrE,MAAM,mDAAmD,CAAC;QACxD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ;KACT,CAAC,CAAC;IAEL,MAAM,WAAW,GAAG,yBAAyB,CAAC;QAC5C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,mBAAmB,EAAE;YACnB,kBAAkB,EAAE,CAAC;YACrB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM;YACN,WAAW;YACX,uBAAuB;SACxB;QACD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"verifyAsset.js","sourceRoot":"","sources":["../../src/instructions/verifyAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mDAAmD,EACnD,yBAAyB,GAE1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAc,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAczE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAGtC;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC;QAChD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ;QACR,UAAU;QACV,SAAS;QACT,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAA2B;IAE3B,OAAO,mBAAmB,CAAC;QACzB,WAAW,EAAE;YACX,SAAS,EAAE,uBAAuB,CAChC,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAqB,CACxD;YACD,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;YAC9B,gBAAgB,EAAE,WAAW;YAC7B,gBAAgB,EAAE;gBAChB;oBACE,EAAE,EAAE,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE,CAAC,KAAK,CAAC;iBACpB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA2B,EAC3B,QAAoC,EACpC,6BAAsD;IAQtD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,0BAA0B,CAC3D,QAAQ,CAAC,EAAE,EACX,OAAO,CAAC,GAAG,CACZ,CAAC;IACF,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAC3D,MAAM,mDAAmD,CAAC;QACxD,SAAS;QACT,QAAQ;QACR,6BAA6B;KAC9B,CAAC,CAAC;IACL,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,MAAM,YAAY,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC7D,eAAe;QACf,kBAAkB;QAClB,cAAc;KACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA2B,EAC3B,QAAoC,EACpC,6BAAsD;IAEtD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,GACrE,MAAM,oBAAoB,CACxB,OAAO,EACP,QAAQ,EACR,6BAA6B,CAC9B,CAAC;IAEJ,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;QACvD,KAAK,EAAE,QAAQ;QACf,mBAAmB,EAAE;YACnB,kBAAkB;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,cAAc;SACf;QACD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,OAAO,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;AACnD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { type Address, type Rpc, type SolanaRpcApi } from "@solana/kit";
2
2
  import { type Base64URLString } from "@simplewebauthn/browser";
3
3
  import { type Asset } from "../generated/index.js";
4
- export declare function fetchAssetCredentialFromCredentialId(credentialId: Base64URLString, rpc: Rpc<SolanaRpcApi>): Promise<{
4
+ export declare function fetchAssetFromCredentialId(credentialId: Base64URLString, rpc: Rpc<SolanaRpcApi>): Promise<{
5
5
  publicKey: Base64URLString;
6
6
  asset: Asset;
7
7
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"assetCredential.d.ts","sourceRoot":"","sources":["../../src/utils/assetCredential.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EAEZ,KAAK,GAAG,EACR,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,KAAK,EACX,MAAM,uBAAuB,CAAC;AAc/B,wBAAsB,oCAAoC,CACxD,YAAY,EAAE,eAAe,EAC7B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GACrB,OAAO,CAAC;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAgCvD;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GACrB,OAAO,CAAC,KAAK,EAAE,CAAC,CA2BlB"}
1
+ {"version":3,"file":"assetCredential.d.ts","sourceRoot":"","sources":["../../src/utils/assetCredential.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EAEZ,KAAK,GAAG,EACR,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,KAAK,EACX,MAAM,uBAAuB,CAAC;AAc/B,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,eAAe,EAC7B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GACrB,OAAO,CAAC;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAgCvD;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GACrB,OAAO,CAAC,KAAK,EAAE,CAAC,CA2BlB"}
@@ -1,11 +1,11 @@
1
- import { getAddressDecoder, getAddressEncoder, getBase64Decoder, getBase64Encoder, } from "@solana/kit";
1
+ import { getAddressEncoder, getBase64Decoder, getBase64Encoder, } from "@solana/kit";
2
2
  import { bufferToBase64URLString, } from "@simplewebauthn/browser";
3
3
  import { getAssetDecoder, PHYGITAL_TOKEN_PROGRAM_ADDRESS, } from "../generated/index.js";
4
4
  import { base64URLStringToBuffer } from "./passkey/internal.js";
5
5
  const ASSET_ACCOUNT_DATA_SIZE = 179;
6
6
  const ASSET_CREDENTIAL_ID_OFFSET = 115;
7
7
  const ASSET_OWNER_OFF_SET = 41;
8
- export async function fetchAssetCredentialFromCredentialId(credentialId, rpc) {
8
+ export async function fetchAssetFromCredentialId(credentialId, rpc) {
9
9
  const data = await rpc
10
10
  .getProgramAccounts(PHYGITAL_TOKEN_PROGRAM_ADDRESS, {
11
11
  encoding: "base64",
@@ -1 +1 @@
1
- {"version":3,"file":"assetCredential.js","sourceRoot":"","sources":["../../src/utils/assetCredential.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GAKjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,8BAA8B,GAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAGpC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAK/B,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,YAA6B,EAC7B,GAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,GAAG;SACnB,kBAAkB,CAAC,8BAA8B,EAAE;QAClD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP,EAAE,QAAQ,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE;YAC7C;gBACE,MAAM,EAAE;oBACN,QAAQ,EAAE,QAAiB;oBAC3B,MAAM,EAAE,MAAM,CAAC,0BAA0B,CAAC;oBAC1C,KAAK,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAC9B,uBAAuB,CAAC,YAAY,CAAC,CAChB;iBACxB;aACF;SACF;KACF,CAAC;SACD,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,MAAM,CACpC,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;IACF,OAAO;QACL,SAAS,EAAE,uBAAuB,CAChC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAC1C;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAc,EACd,GAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,GAAG;SACnB,kBAAkB,CAAC,8BAA8B,EAAE;QAClD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP,EAAE,QAAQ,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE;YAC7C;gBACE,MAAM,EAAE;oBACN,QAAQ,EAAE,QAAiB;oBAC3B,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC;oBACnC,KAAK,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAC9B,iBAAiB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CACZ;iBACxB;aACF;SACF;KACF,CAAC;SACD,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,eAAe,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACvE,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"assetCredential.js","sourceRoot":"","sources":["../../src/utils/assetCredential.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GAKjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,8BAA8B,GAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAGpC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAK/B,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,YAA6B,EAC7B,GAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,GAAG;SACnB,kBAAkB,CAAC,8BAA8B,EAAE;QAClD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP,EAAE,QAAQ,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE;YAC7C;gBACE,MAAM,EAAE;oBACN,QAAQ,EAAE,QAAiB;oBAC3B,MAAM,EAAE,MAAM,CAAC,0BAA0B,CAAC;oBAC1C,KAAK,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAC9B,uBAAuB,CAAC,YAAY,CAAC,CAChB;iBACxB;aACF;SACF;KACF,CAAC;SACD,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,MAAM,CACpC,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;IACF,OAAO;QACL,SAAS,EAAE,uBAAuB,CAChC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAC1C;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAc,EACd,GAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,GAAG;SACnB,kBAAkB,CAAC,8BAA8B,EAAE;QAClD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP,EAAE,QAAQ,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE;YAC7C;gBACE,MAAM,EAAE;oBACN,QAAQ,EAAE,QAAiB;oBAC3B,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC;oBACnC,KAAK,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAC9B,iBAAiB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CACZ;iBACxB;aACF;SACF;KACF,CAAC;SACD,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,eAAe,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACvE,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -3,5 +3,5 @@ export declare const ASSOCIATED_TOKEN_PROGRAM_ADDRESS: import("@solana/kit").Add
3
3
  export declare const SECP256R1_PROGRAM_ADDRESS: import("@solana/kit").Address<"Secp256r1SigVerify1111111111111111111111111">;
4
4
  export declare const SLOT_HASHES_SYSVAR_ADDRESS: import("@solana/kit").Address<"SysvarS1otHashes111111111111111111111111111">;
5
5
  export declare const TRANSFER_ACTION_BYTES: Uint8Array<ArrayBuffer>;
6
- export declare const VERIFY_ACTION_BYTES: Uint8Array<ArrayBuffer>;
6
+ export declare const VERIFY_ASSET_ACTION_BYTES: Uint8Array<ArrayBuffer>;
7
7
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/utils/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,8EAEtC,CAAC;AAEF,eAAO,MAAM,gCAAgC,+EAE5C,CAAC;AAEF,eAAO,MAAM,yBAAyB,8EAErC,CAAC;AAEF,eAAO,MAAM,0BAA0B,8EAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAAuC,CAAC;AAE1E,eAAO,MAAM,mBAAmB,yBAA6C,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/utils/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,8EAEtC,CAAC;AAEF,eAAO,MAAM,gCAAgC,+EAE5C,CAAC;AAEF,eAAO,MAAM,yBAAyB,8EAErC,CAAC;AAEF,eAAO,MAAM,0BAA0B,8EAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAAuC,CAAC;AAE1E,eAAO,MAAM,yBAAyB,yBAA2C,CAAC"}
@@ -4,5 +4,5 @@ export const ASSOCIATED_TOKEN_PROGRAM_ADDRESS = address("ATokenGPvbdGVxr1b2hvZbs
4
4
  export const SECP256R1_PROGRAM_ADDRESS = address("Secp256r1SigVerify1111111111111111111111111");
5
5
  export const SLOT_HASHES_SYSVAR_ADDRESS = address("SysvarS1otHashes111111111111111111111111111");
6
6
  export const TRANSFER_ACTION_BYTES = new TextEncoder().encode("transfer");
7
- export const VERIFY_ACTION_BYTES = new TextEncoder().encode("verify_message");
7
+ export const VERIFY_ASSET_ACTION_BYTES = new TextEncoder().encode("verify_asset");
8
8
  //# sourceMappingURL=consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/utils/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAC/C,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CACrD,8CAA8C,CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAC9C,6CAA6C,CAC9C,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,mBAAmB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/utils/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAC/C,6CAA6C,CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CACrD,8CAA8C,CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAC9C,6CAA6C,CAC9C,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,yBAAyB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC"}