veilioexchange 0.1.0 → 0.2.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 (42) hide show
  1. package/README.md +48 -1
  2. package/dist/cjs/solana/auction.d.ts +180 -0
  3. package/dist/cjs/solana/auction.d.ts.map +1 -0
  4. package/dist/cjs/solana/auction.js +457 -0
  5. package/dist/cjs/solana/auction.js.map +1 -0
  6. package/dist/cjs/solana/client.d.ts +75 -0
  7. package/dist/cjs/solana/client.d.ts.map +1 -0
  8. package/dist/cjs/solana/client.js +281 -0
  9. package/dist/cjs/solana/client.js.map +1 -0
  10. package/dist/cjs/solana/escrow.d.ts +140 -0
  11. package/dist/cjs/solana/escrow.d.ts.map +1 -0
  12. package/dist/cjs/solana/escrow.js +354 -0
  13. package/dist/cjs/solana/escrow.js.map +1 -0
  14. package/dist/cjs/solana/index.d.ts +9 -0
  15. package/dist/cjs/solana/index.d.ts.map +1 -0
  16. package/dist/cjs/solana/index.js +32 -0
  17. package/dist/cjs/solana/index.js.map +1 -0
  18. package/dist/cjs/solana/registry.d.ts +100 -0
  19. package/dist/cjs/solana/registry.d.ts.map +1 -0
  20. package/dist/cjs/solana/registry.js +278 -0
  21. package/dist/cjs/solana/registry.js.map +1 -0
  22. package/dist/esm/solana/auction.d.ts +180 -0
  23. package/dist/esm/solana/auction.d.ts.map +1 -0
  24. package/dist/esm/solana/auction.js +438 -0
  25. package/dist/esm/solana/auction.js.map +1 -0
  26. package/dist/esm/solana/client.d.ts +75 -0
  27. package/dist/esm/solana/client.d.ts.map +1 -0
  28. package/dist/esm/solana/client.js +274 -0
  29. package/dist/esm/solana/client.js.map +1 -0
  30. package/dist/esm/solana/escrow.d.ts +140 -0
  31. package/dist/esm/solana/escrow.d.ts.map +1 -0
  32. package/dist/esm/solana/escrow.js +339 -0
  33. package/dist/esm/solana/escrow.js.map +1 -0
  34. package/dist/esm/solana/index.d.ts +9 -0
  35. package/dist/esm/solana/index.d.ts.map +1 -0
  36. package/dist/esm/solana/index.js +9 -0
  37. package/dist/esm/solana/index.js.map +1 -0
  38. package/dist/esm/solana/registry.d.ts +100 -0
  39. package/dist/esm/solana/registry.d.ts.map +1 -0
  40. package/dist/esm/solana/registry.js +264 -0
  41. package/dist/esm/solana/registry.js.map +1 -0
  42. package/package.json +30 -4
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  TypeScript SDK for **VEILIO**: sealed-bid auctions for digital assets and milestone service escrow, built on [viem](https://viem.sh).
4
4
 
5
- - **Networks:** BNB Smart Chain Testnet (97) and Base Sepolia (84532). Testnet only.
5
+ - **Networks:** BNB Smart Chain Testnet (97), Base Sepolia (84532) and Solana Devnet. Testnet only.
6
6
  - **Formats:** ESM and CommonJS, with TypeScript types.
7
7
  - **Runtime:** Node.js 18+ or any modern browser.
8
8
 
@@ -90,6 +90,53 @@ await fetch(`https://your-veilio-host/api/orders/${orderId}/verify-deposit`, {
90
90
  });
91
91
  ```
92
92
 
93
+ ## Solana Devnet
94
+
95
+ Solana lives in its own entry point so EVM-only users never load `@solana/web3.js`:
96
+
97
+ ```sh
98
+ npm install veilioexchange @solana/web3.js
99
+ ```
100
+
101
+ ```ts
102
+ import { Connection, Keypair, clusterApiUrl } from '@solana/web3.js';
103
+ import { createVeilioSolanaClient, keypairSigner } from 'veilioexchange/solana';
104
+
105
+ const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');
106
+ const agentKey = Keypair.fromSecretKey(/* load your devnet key from a secret store */);
107
+
108
+ const solana = createVeilioSolanaClient({
109
+ connection,
110
+ signer: keypairSigner(agentKey), // or a Phantom provider: window.phantom.solana
111
+ });
112
+
113
+ // Sealed-bid auction
114
+ const auctions = await solana.listAuctions();
115
+ const bid = solana.prepareBid(auctions[0].auctionId, '0.25'); // max bid in SOL
116
+ // Store `bid` (salt included) in encrypted storage before committing.
117
+ await solana.commitBid(bid, '0.3');
118
+ await solana.revealBid(bid);
119
+
120
+ // Service escrow
121
+ await solana.deposit({
122
+ orderId: 'ord-1739-abc12', // up to 32 bytes, or 32-byte hex
123
+ seller: 'SellerBase58...',
124
+ reviewer: 'ReviewerWallet...', // a wallet that can sign, never a program ID
125
+ feeRecipient: 'FeeWallet...',
126
+ amountSol: '1.5',
127
+ deadline: Math.floor(Date.now() / 1000) + 3 * 86400,
128
+ });
129
+ await solana.submitDelivery('ord-1739-abc12', 'ipfs://QmProof'); // seller
130
+ await solana.releaseFunds('ord-1739-abc12'); // buyer
131
+ ```
132
+
133
+ Solana support needs Node.js 18+ (it uses `node:crypto`). Base58 addresses are case-sensitive; never lowercase them.
134
+
135
+ | Program (Devnet) | ID |
136
+ |---|---|
137
+ | Auction | `5Tw1iJGN1hhyRzepbD5eLoaRoZTEiKcqrh2HoZYhYEta` |
138
+ | Service escrow | `5Vj4y8BT74PDe5VwLuDp9agTR5ak4vtZdwxnBfRW3R8s` |
139
+
93
140
  ## Contract addresses
94
141
 
95
142
  Defaults live in `VEILIO_DEPLOYMENTS`. Every client takes a `contractAddress` option to point at your own deployment.
@@ -0,0 +1,180 @@
1
+ /**
2
+ * VEILIO Solana Auction Client & Instruction Interface
3
+ *
4
+ * Implements client-side PDA derivation, Anchor instruction encoding,
5
+ * domain-separated sealed commitment calculation, and account deserialization
6
+ * for the on-chain Solana Devnet Veilio Auction program.
7
+ */
8
+ import { type SolanaCompiledInstruction } from './registry.js';
9
+ export declare const AUCTION_SEED: Buffer<ArrayBuffer>;
10
+ export declare const BID_COMMITMENT_SEED: Buffer<ArrayBuffer>;
11
+ export declare const COMMITMENT_DOMAIN_TAG: Buffer<ArrayBuffer>;
12
+ export declare const DEFAULT_SOLANA_AUCTION_PROGRAM_ID = "5Tw1iJGN1hhyRzepbD5eLoaRoZTEiKcqrh2HoZYhYEta";
13
+ export declare const MAX_ITEM_NAME_LEN = 64;
14
+ export declare const MAX_DESC_LEN = 128;
15
+ export declare const MAX_IMAGE_URI_LEN = 200;
16
+ export declare const MAX_REVIEW_REASON_LEN = 100;
17
+ export declare enum SolanaAuctionState {
18
+ Created = 0,
19
+ Bidding = 1,
20
+ Revealing = 2,
21
+ Inspection = 3,
22
+ RefundRequested = 4,
23
+ UnderReview = 5,
24
+ Completed = 6,
25
+ Refunded = 7,
26
+ Cancelled = 8
27
+ }
28
+ export declare function getSolanaAuctionProgramId(): string;
29
+ /**
30
+ * Derives the deterministic PDA for an Auction on Solana.
31
+ * Seeds: [b"auction", auction_id: u64 LE]
32
+ */
33
+ export declare function findAuctionPda(auctionId: bigint | number, programId?: string): {
34
+ pda: string;
35
+ bump: number;
36
+ };
37
+ /**
38
+ * Derives the deterministic PDA for a Bidder's Commitment on Solana.
39
+ * Seeds: [b"bid_commitment", auction_pubkey, bidder_pubkey]
40
+ */
41
+ export declare function findBidCommitmentPda(auctionPubkey: string, bidderPubkey: string, programId?: string): {
42
+ pda: string;
43
+ bump: number;
44
+ };
45
+ /**
46
+ * Computes domain-separated sealed bid commitment:
47
+ * SHA-256(b"VEILIO_AUCTION_COMMITMENT_V1" || auction_key || bidder_key || max_bid_le || salt)
48
+ */
49
+ export declare function computeSealedBidCommitment(params: {
50
+ auctionPubkey: string;
51
+ bidderPubkey: string;
52
+ maxBidLamports: bigint | number;
53
+ salt: Uint8Array | Buffer;
54
+ }): Buffer;
55
+ export interface DecodedAuctionState {
56
+ seller: string;
57
+ reviewer: string;
58
+ auctionId: bigint;
59
+ itemName: string;
60
+ description: string;
61
+ imageUri: string;
62
+ startingPrice: bigint;
63
+ commitEndTime: number;
64
+ revealEndTime: number;
65
+ inspectionDuration: number;
66
+ inspectionEndTime: number;
67
+ refundRequestedAt: number;
68
+ state: SolanaAuctionState;
69
+ highestBidder: string;
70
+ highestBid: bigint;
71
+ bidderCount: number;
72
+ revealedCount: number;
73
+ evidenceHash: string;
74
+ reviewReason: string;
75
+ bump: number;
76
+ }
77
+ export interface DecodedBidCommitment {
78
+ auction: string;
79
+ bidder: string;
80
+ commitment: string;
81
+ deposit: bigint;
82
+ maxBid: bigint;
83
+ revealed: boolean;
84
+ bump: number;
85
+ }
86
+ /**
87
+ * Builds `create_auction` instruction.
88
+ */
89
+ export declare function createCreateAuctionInstruction(params: {
90
+ programId?: string;
91
+ seller: string;
92
+ reviewer: string;
93
+ auctionId: bigint | number;
94
+ itemName: string;
95
+ description: string;
96
+ imageUri: string;
97
+ startingPriceLamports: bigint | number;
98
+ commitDurationSeconds: number;
99
+ revealDurationSeconds: number;
100
+ inspectionDurationSeconds: number;
101
+ }): SolanaCompiledInstruction;
102
+ /**
103
+ * Builds `commit_bid` instruction.
104
+ */
105
+ export declare function createCommitBidInstruction(params: {
106
+ programId?: string;
107
+ auctionId: bigint | number;
108
+ bidder: string;
109
+ commitment: Buffer | Uint8Array;
110
+ depositLamports: bigint | number;
111
+ }): SolanaCompiledInstruction;
112
+ /**
113
+ * Builds `reveal_bid` instruction.
114
+ */
115
+ export declare function createRevealBidInstruction(params: {
116
+ programId?: string;
117
+ auctionId: bigint | number;
118
+ bidder: string;
119
+ maxBidLamports: bigint | number;
120
+ salt: Buffer | Uint8Array;
121
+ }): SolanaCompiledInstruction;
122
+ /**
123
+ * Builds `settle_auction` instruction.
124
+ */
125
+ export declare function createSettleAuctionInstruction(params: {
126
+ programId?: string;
127
+ auctionId: bigint | number;
128
+ }): SolanaCompiledInstruction;
129
+ /**
130
+ * Builds `accept_dataset` instruction.
131
+ */
132
+ export declare function createAcceptDatasetInstruction(params: {
133
+ programId?: string;
134
+ auctionId: bigint | number;
135
+ seller: string;
136
+ winner: string;
137
+ }): SolanaCompiledInstruction;
138
+ export declare function createReviewRefundInstruction(params: {
139
+ programId?: string;
140
+ auctionId: bigint | number;
141
+ seller: string;
142
+ reviewer: string;
143
+ winner: string;
144
+ approve: boolean;
145
+ }): SolanaCompiledInstruction;
146
+ export declare function createFinalizeInspectionTimeoutInstruction(params: {
147
+ programId?: string;
148
+ auctionId: bigint | number;
149
+ seller: string;
150
+ winner: string;
151
+ caller: string;
152
+ }): SolanaCompiledInstruction;
153
+ export declare function createFinalizeRefundTimeoutInstruction(params: {
154
+ programId?: string;
155
+ auctionId: bigint | number;
156
+ winner: string;
157
+ }): SolanaCompiledInstruction;
158
+ export declare function createClaimRefundInstruction(params: {
159
+ programId?: string;
160
+ auctionId: bigint | number;
161
+ bidder: string;
162
+ }): SolanaCompiledInstruction;
163
+ /**
164
+ * Builds `request_refund` instruction.
165
+ */
166
+ export declare function createRequestRefundInstruction(params: {
167
+ programId?: string;
168
+ auctionId: bigint | number;
169
+ winner: string;
170
+ evidenceHash: Buffer | Uint8Array;
171
+ }): SolanaCompiledInstruction;
172
+ /**
173
+ * Decodes an Anchor `AuctionStateAccount` buffer.
174
+ */
175
+ export declare function decodeAuctionStateAccount(data: Buffer | Uint8Array): DecodedAuctionState;
176
+ /**
177
+ * Decodes an Anchor `BidCommitmentAccount` buffer.
178
+ */
179
+ export declare function decodeBidCommitmentAccount(data: Buffer | Uint8Array): DecodedBidCommitment;
180
+ //# sourceMappingURL=auction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auction.d.ts","sourceRoot":"","sources":["../../../src/solana/auction.ts"],"names":[],"mappings":"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"}