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
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ /**
3
+ * VEILIO Solana Service Registry Client & Program Interface
4
+ *
5
+ * Provides client-side PDA derivation, Anchor instruction encoding,
6
+ * account deserialization, and validation for the on-chain Solana Devnet
7
+ * Veilio Service Registry program.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SYSTEM_PROGRAM_ID = exports.DEFAULT_SOLANA_SERVICE_REGISTRY_PROGRAM_ID = exports.SERVICE_RECORD_ACCOUNT_SIZE = exports.MAX_METADATA_URI_LEN = exports.SERVICE_SEED = void 0;
11
+ exports.encodeBase58 = encodeBase58;
12
+ exports.decodeBase58 = decodeBase58;
13
+ exports.findProgramDerivedAddress = findProgramDerivedAddress;
14
+ exports.getAnchorDiscriminator = getAnchorDiscriminator;
15
+ exports.normalizeBytes32 = normalizeBytes32;
16
+ exports.findServiceRecordPda = findServiceRecordPda;
17
+ exports.getSolanaServiceRegistryProgramId = getSolanaServiceRegistryProgramId;
18
+ exports.createRegisterServiceInstruction = createRegisterServiceInstruction;
19
+ exports.createUpdateServiceMetadataInstruction = createUpdateServiceMetadataInstruction;
20
+ exports.createSetServiceStatusInstruction = createSetServiceStatusInstruction;
21
+ exports.decodeServiceRecordAccount = decodeServiceRecordAccount;
22
+ const node_crypto_1 = require("node:crypto");
23
+ const web3_js_1 = require("@solana/web3.js");
24
+ // Canonical Program Seeds & Limits
25
+ exports.SERVICE_SEED = Buffer.from('service');
26
+ exports.MAX_METADATA_URI_LEN = 200;
27
+ exports.SERVICE_RECORD_ACCOUNT_SIZE = 326;
28
+ // Default Devnet Program ID (can be overridden via NEXT_PUBLIC_SOLANA_SERVICE_REGISTRY_PROGRAM_ID)
29
+ exports.DEFAULT_SOLANA_SERVICE_REGISTRY_PROGRAM_ID = '6CMoJyQmBobLTk4M9ZoygMShRB6A6i77e6viq2Lew2KY';
30
+ // Solana System Program ID
31
+ exports.SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
32
+ // Bitcoin / Solana Base58 Alphabet
33
+ const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
34
+ const BASE58_MAP = {};
35
+ for (let i = 0; i < ALPHABET.length; i++) {
36
+ BASE58_MAP[ALPHABET[i]] = i;
37
+ }
38
+ /**
39
+ * Encodes a buffer/Uint8Array to Base58 string.
40
+ */
41
+ function encodeBase58(source) {
42
+ if (source.length === 0)
43
+ return '';
44
+ let leadingZeroes = 0;
45
+ while (leadingZeroes < source.length && source[leadingZeroes] === 0)
46
+ leadingZeroes++;
47
+ let value = 0n;
48
+ for (const byte of source)
49
+ value = (value << 8n) | BigInt(byte);
50
+ let encoded = '';
51
+ while (value > 0n) {
52
+ const digit = Number(value % 58n);
53
+ encoded = ALPHABET[digit] + encoded;
54
+ value /= 58n;
55
+ }
56
+ return '1'.repeat(leadingZeroes) + encoded;
57
+ }
58
+ /**
59
+ * Decodes a Base58 string to Uint8Array.
60
+ */
61
+ function decodeBase58(str) {
62
+ if (str.length === 0)
63
+ return new Uint8Array(0);
64
+ let leadingZeroes = 0;
65
+ while (leadingZeroes < str.length && str[leadingZeroes] === '1')
66
+ leadingZeroes++;
67
+ let value = 0n;
68
+ for (const character of str) {
69
+ const digit = BASE58_MAP[character];
70
+ if (digit === undefined)
71
+ throw new Error(`Invalid Base58 character: ${character}`);
72
+ value = value * 58n + BigInt(digit);
73
+ }
74
+ const decoded = [];
75
+ while (value > 0n) {
76
+ decoded.unshift(Number(value & 0xffn));
77
+ value >>= 8n;
78
+ }
79
+ return Uint8Array.from([...new Array(leadingZeroes).fill(0), ...decoded]);
80
+ }
81
+ /** Solana PDA derivation (delegates to @solana/web3.js). */
82
+ function findProgramDerivedAddress(seeds, programId) {
83
+ const [address, bump] = web3_js_1.PublicKey.findProgramAddressSync(seeds.map((seed) => Buffer.from(seed)), new web3_js_1.PublicKey(programId));
84
+ return { pda: address.toBase58(), bump };
85
+ }
86
+ /**
87
+ * Computes Anchor 8-byte instruction or account discriminator using SHA-256.
88
+ */
89
+ function getAnchorDiscriminator(namespace, name) {
90
+ const preimage = `${namespace}:${name}`;
91
+ const hash = (0, node_crypto_1.createHash)('sha256').update(preimage).digest();
92
+ return hash.subarray(0, 8);
93
+ }
94
+ /**
95
+ * Validates 32-byte hash or ID (hex string or Uint8Array).
96
+ */
97
+ function normalizeBytes32(input) {
98
+ if (typeof input === 'string') {
99
+ const cleanHex = input.startsWith('0x') ? input.slice(2) : input;
100
+ if (cleanHex.length !== 64) {
101
+ throw new Error(`Expected 32 bytes (64 hex characters), received ${cleanHex.length}`);
102
+ }
103
+ const buf = Buffer.from(cleanHex, 'hex');
104
+ if (buf.length !== 32) {
105
+ throw new Error(`Expected exactly 32 bytes, received ${buf.length}`);
106
+ }
107
+ return buf;
108
+ }
109
+ if (input instanceof Uint8Array || Buffer.isBuffer(input)) {
110
+ if (input.length !== 32) {
111
+ throw new Error(`Expected exactly 32 bytes, received ${input.length}`);
112
+ }
113
+ return Buffer.from(input);
114
+ }
115
+ throw new Error('Input must be a 32-byte hex string or Uint8Array');
116
+ }
117
+ /**
118
+ * Derives the deterministic PDA for a seller-owned service record on Solana.
119
+ * Formula: sha256([SERVICE_SEED, seller, service_id, bump, program_id, "ProgramDerivedAddress"])
120
+ */
121
+ function findServiceRecordPda(serviceId, seller, programId = getSolanaServiceRegistryProgramId()) {
122
+ const sellerBytes = Buffer.from(decodeBase58(seller));
123
+ if (sellerBytes.length !== 32)
124
+ throw new Error('Seller must decode to a 32-byte Solana public key');
125
+ return findProgramDerivedAddress([exports.SERVICE_SEED, sellerBytes, normalizeBytes32(serviceId)], programId);
126
+ }
127
+ /**
128
+ * Retrieves the configured Solana Service Registry program ID.
129
+ */
130
+ function getSolanaServiceRegistryProgramId() {
131
+ // The registry program has no verified Devnet deployment yet: callers must pass `programId`.
132
+ throw new Error('Solana service registry is not enabled yet: pass the deployed program ID as programId.');
133
+ }
134
+ /**
135
+ * Builds the Solana instruction for `register_service`.
136
+ */
137
+ function createRegisterServiceInstruction(params) {
138
+ const programId = params.programId || getSolanaServiceRegistryProgramId();
139
+ const serviceIdBuf = normalizeBytes32(params.serviceId);
140
+ const metadataHashBuf = normalizeBytes32(params.metadataHash);
141
+ // Input validation
142
+ if (serviceIdBuf.every((b) => b === 0)) {
143
+ throw new Error('Invalid service ID: cannot be zero');
144
+ }
145
+ if (metadataHashBuf.every((b) => b === 0)) {
146
+ throw new Error('Invalid metadata hash: cannot be zero');
147
+ }
148
+ if (!params.metadataUri || params.metadataUri.trim().length === 0) {
149
+ throw new Error('Metadata URI required');
150
+ }
151
+ const uriBytes = Buffer.from(params.metadataUri, 'utf8');
152
+ if (uriBytes.length > exports.MAX_METADATA_URI_LEN) {
153
+ throw new Error(`Metadata URI exceeds maximum length (${exports.MAX_METADATA_URI_LEN} bytes)`);
154
+ }
155
+ const { pda } = findServiceRecordPda(serviceIdBuf, params.seller, programId);
156
+ // Anchor instruction layout:
157
+ // [8 bytes discriminator] + [32 bytes service_id] + [32 bytes metadata_hash] + [4 bytes URI len (LE)] + [URI bytes]
158
+ const discriminator = getAnchorDiscriminator('global', 'register_service');
159
+ const uriLenBuf = Buffer.alloc(4);
160
+ uriLenBuf.writeUInt32LE(uriBytes.length, 0);
161
+ const data = Buffer.concat([
162
+ discriminator,
163
+ serviceIdBuf,
164
+ metadataHashBuf,
165
+ uriLenBuf,
166
+ uriBytes,
167
+ ]);
168
+ return {
169
+ programId,
170
+ accounts: [
171
+ { pubkey: pda, isSigner: false, isWritable: true },
172
+ { pubkey: params.seller, isSigner: true, isWritable: true },
173
+ { pubkey: exports.SYSTEM_PROGRAM_ID, isSigner: false, isWritable: false },
174
+ ],
175
+ data,
176
+ };
177
+ }
178
+ /**
179
+ * Builds the Solana instruction for `update_service_metadata`.
180
+ */
181
+ function createUpdateServiceMetadataInstruction(params) {
182
+ const programId = params.programId || getSolanaServiceRegistryProgramId();
183
+ const serviceIdBuf = normalizeBytes32(params.serviceId);
184
+ const metadataHashBuf = normalizeBytes32(params.newMetadataHash);
185
+ if (metadataHashBuf.every((b) => b === 0)) {
186
+ throw new Error('Invalid metadata hash: cannot be zero');
187
+ }
188
+ if (!params.newMetadataUri || params.newMetadataUri.trim().length === 0) {
189
+ throw new Error('Metadata URI required');
190
+ }
191
+ const uriBytes = Buffer.from(params.newMetadataUri, 'utf8');
192
+ if (uriBytes.length > exports.MAX_METADATA_URI_LEN) {
193
+ throw new Error(`Metadata URI exceeds maximum length (${exports.MAX_METADATA_URI_LEN} bytes)`);
194
+ }
195
+ const { pda } = findServiceRecordPda(serviceIdBuf, params.seller, programId);
196
+ const discriminator = getAnchorDiscriminator('global', 'update_service_metadata');
197
+ const uriLenBuf = Buffer.alloc(4);
198
+ uriLenBuf.writeUInt32LE(uriBytes.length, 0);
199
+ const data = Buffer.concat([
200
+ discriminator,
201
+ metadataHashBuf,
202
+ uriLenBuf,
203
+ uriBytes,
204
+ ]);
205
+ return {
206
+ programId,
207
+ accounts: [
208
+ { pubkey: pda, isSigner: false, isWritable: true },
209
+ { pubkey: params.seller, isSigner: true, isWritable: false },
210
+ ],
211
+ data,
212
+ };
213
+ }
214
+ /**
215
+ * Builds the Solana instruction for `set_service_status`.
216
+ */
217
+ function createSetServiceStatusInstruction(params) {
218
+ const programId = params.programId || getSolanaServiceRegistryProgramId();
219
+ const serviceIdBuf = normalizeBytes32(params.serviceId);
220
+ const { pda } = findServiceRecordPda(serviceIdBuf, params.seller, programId);
221
+ const discriminator = getAnchorDiscriminator('global', 'set_service_status');
222
+ const activeBuf = Buffer.from([params.active ? 1 : 0]);
223
+ const data = Buffer.concat([discriminator, activeBuf]);
224
+ return {
225
+ programId,
226
+ accounts: [
227
+ { pubkey: pda, isSigner: false, isWritable: true },
228
+ { pubkey: params.seller, isSigner: true, isWritable: false },
229
+ ],
230
+ data,
231
+ };
232
+ }
233
+ /**
234
+ * Decodes an Anchor `ServiceRecord` account buffer from Solana Devnet RPC.
235
+ */
236
+ function decodeServiceRecordAccount(data) {
237
+ const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
238
+ if (buf.length < 8 + 32 + 32 + 32 + 4 + 1 + 8 + 8 + 1) {
239
+ throw new Error(`Account data buffer too short: ${buf.length} bytes`);
240
+ }
241
+ const expectedDiscriminator = getAnchorDiscriminator('account', 'ServiceRecord');
242
+ if (!buf.subarray(0, 8).equals(expectedDiscriminator)) {
243
+ throw new Error('Invalid account discriminator: not a ServiceRecord account');
244
+ }
245
+ let offset = 8;
246
+ const seller = encodeBase58(buf.subarray(offset, offset + 32));
247
+ offset += 32;
248
+ const serviceId = '0x' + buf.subarray(offset, offset + 32).toString('hex');
249
+ offset += 32;
250
+ const metadataHash = '0x' + buf.subarray(offset, offset + 32).toString('hex');
251
+ offset += 32;
252
+ const uriLen = buf.readUInt32LE(offset);
253
+ offset += 4;
254
+ if (offset + uriLen > buf.length) {
255
+ throw new Error(`Corrupted account data: URI length ${uriLen} exceeds buffer remaining`);
256
+ }
257
+ const metadataUri = buf.subarray(offset, offset + uriLen).toString('utf8');
258
+ offset += uriLen;
259
+ const active = buf.readUInt8(offset) !== 0;
260
+ offset += 1;
261
+ // read i64 LE
262
+ const registeredAt = Number(buf.readBigInt64LE(offset));
263
+ offset += 8;
264
+ const updatedAt = Number(buf.readBigInt64LE(offset));
265
+ offset += 8;
266
+ const bump = buf.readUInt8(offset);
267
+ return {
268
+ seller,
269
+ serviceId,
270
+ metadataHash,
271
+ metadataUri,
272
+ active,
273
+ registeredAt,
274
+ updatedAt,
275
+ bump,
276
+ };
277
+ }
278
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/solana/registry.ts"],"names":[],"mappings":"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"}
@@ -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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"}