@sudobility/auctions_contracts 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -0
- package/dist/evm/src/evm/evm-auction-client.js +3 -3
- package/dist/evm/src/evm/evm-auction-client.js.map +1 -1
- package/dist/react-native/evm/evm-auction-client.d.ts +475 -0
- package/dist/react-native/evm/evm-auction-client.d.ts.map +1 -0
- package/dist/react-native/evm/evm-auction-client.js +606 -0
- package/dist/react-native/evm/evm-auction-client.js.map +1 -0
- package/dist/react-native/evm/index.d.ts +2 -0
- package/dist/react-native/evm/index.d.ts.map +1 -0
- package/dist/react-native/evm/index.js +2 -0
- package/dist/react-native/evm/index.js.map +1 -0
- package/dist/react-native/solana/index.d.ts +3 -0
- package/dist/react-native/solana/index.d.ts.map +1 -0
- package/dist/react-native/solana/index.js +3 -0
- package/dist/react-native/solana/index.js.map +1 -0
- package/dist/react-native/solana/solana-auction-client.d.ts +118 -0
- package/dist/react-native/solana/solana-auction-client.d.ts.map +1 -0
- package/dist/react-native/solana/solana-auction-client.js +604 -0
- package/dist/react-native/solana/solana-auction-client.js.map +1 -0
- package/dist/react-native/solana/types.d.ts +19 -0
- package/dist/react-native/solana/types.d.ts.map +1 -0
- package/dist/react-native/solana/types.js +7 -0
- package/dist/react-native/solana/types.js.map +1 -0
- package/dist/react-native/src/evm/evm-auction-client.js +3 -3
- package/dist/react-native/src/evm/evm-auction-client.js.map +1 -1
- package/dist/react-native/src/solana/solana-auction-client.d.ts.map +1 -1
- package/dist/react-native/src/solana/solana-auction-client.js.map +1 -1
- package/dist/react-native/src/unified/onchain-auction-client.d.ts.map +1 -1
- package/dist/react-native/src/unified/onchain-auction-client.js +2 -1
- package/dist/react-native/src/unified/onchain-auction-client.js.map +1 -1
- package/dist/react-native/types/common.d.ts +181 -0
- package/dist/react-native/types/common.d.ts.map +1 -0
- package/dist/react-native/types/common.js +222 -0
- package/dist/react-native/types/common.js.map +1 -0
- package/dist/react-native/unified/index.d.ts +3 -0
- package/dist/react-native/unified/index.d.ts.map +1 -0
- package/dist/react-native/unified/index.js +3 -0
- package/dist/react-native/unified/index.js.map +1 -0
- package/dist/react-native/unified/onchain-auction-client.d.ts +90 -0
- package/dist/react-native/unified/onchain-auction-client.d.ts.map +1 -0
- package/dist/react-native/unified/onchain-auction-client.js +206 -0
- package/dist/react-native/unified/onchain-auction-client.js.map +1 -0
- package/dist/solana/solana/solana-auction-client.d.ts.map +1 -1
- package/dist/solana/solana/solana-auction-client.js.map +1 -1
- package/dist/unified/evm/evm-auction-client.d.ts +475 -0
- package/dist/unified/evm/evm-auction-client.d.ts.map +1 -0
- package/dist/unified/evm/evm-auction-client.js +606 -0
- package/dist/unified/evm/evm-auction-client.js.map +1 -0
- package/dist/unified/evm/index.d.ts +2 -0
- package/dist/unified/evm/index.d.ts.map +1 -0
- package/dist/unified/evm/index.js +2 -0
- package/dist/unified/evm/index.js.map +1 -0
- package/dist/unified/solana/index.d.ts +3 -0
- package/dist/unified/solana/index.d.ts.map +1 -0
- package/dist/unified/solana/index.js +3 -0
- package/dist/unified/solana/index.js.map +1 -0
- package/dist/unified/solana/solana-auction-client.d.ts +118 -0
- package/dist/unified/solana/solana-auction-client.d.ts.map +1 -0
- package/dist/unified/solana/solana-auction-client.js +604 -0
- package/dist/unified/solana/solana-auction-client.js.map +1 -0
- package/dist/unified/solana/types.d.ts +19 -0
- package/dist/unified/solana/types.d.ts.map +1 -0
- package/dist/unified/solana/types.js +7 -0
- package/dist/unified/solana/types.js.map +1 -0
- package/dist/unified/src/evm/evm-auction-client.js +3 -3
- package/dist/unified/src/evm/evm-auction-client.js.map +1 -1
- package/dist/unified/src/solana/solana-auction-client.d.ts.map +1 -1
- package/dist/unified/src/solana/solana-auction-client.js.map +1 -1
- package/dist/unified/src/unified/onchain-auction-client.d.ts.map +1 -1
- package/dist/unified/src/unified/onchain-auction-client.js +2 -1
- package/dist/unified/src/unified/onchain-auction-client.js.map +1 -1
- package/dist/unified/types/common.d.ts +181 -0
- package/dist/unified/types/common.d.ts.map +1 -0
- package/dist/unified/types/common.js +222 -0
- package/dist/unified/types/common.js.map +1 -0
- package/dist/unified/unified/index.d.ts +3 -0
- package/dist/unified/unified/index.d.ts.map +1 -0
- package/dist/unified/unified/index.js +3 -0
- package/dist/unified/unified/index.js.map +1 -0
- package/dist/unified/unified/onchain-auction-client.d.ts +90 -0
- package/dist/unified/unified/onchain-auction-client.d.ts.map +1 -0
- package/dist/unified/unified/onchain-auction-client.js +206 -0
- package/dist/unified/unified/onchain-auction-client.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common types shared across EVM and Solana clients
|
|
3
|
+
*/
|
|
4
|
+
// ============ Enums ============
|
|
5
|
+
export var AuctionType;
|
|
6
|
+
(function (AuctionType) {
|
|
7
|
+
AuctionType[AuctionType["Traditional"] = 0] = "Traditional";
|
|
8
|
+
AuctionType[AuctionType["Dutch"] = 1] = "Dutch";
|
|
9
|
+
AuctionType[AuctionType["Penny"] = 2] = "Penny";
|
|
10
|
+
})(AuctionType || (AuctionType = {}));
|
|
11
|
+
export var AuctionStatus;
|
|
12
|
+
(function (AuctionStatus) {
|
|
13
|
+
AuctionStatus[AuctionStatus["Active"] = 0] = "Active";
|
|
14
|
+
AuctionStatus[AuctionStatus["Expired"] = 1] = "Expired";
|
|
15
|
+
AuctionStatus[AuctionStatus["Finalized"] = 2] = "Finalized";
|
|
16
|
+
AuctionStatus[AuctionStatus["Refunded"] = 3] = "Refunded";
|
|
17
|
+
})(AuctionStatus || (AuctionStatus = {}));
|
|
18
|
+
export var ItemType;
|
|
19
|
+
(function (ItemType) {
|
|
20
|
+
ItemType[ItemType["ERC20"] = 0] = "ERC20";
|
|
21
|
+
ItemType[ItemType["ERC721"] = 1] = "ERC721";
|
|
22
|
+
ItemType[ItemType["ERC1155"] = 2] = "ERC1155";
|
|
23
|
+
})(ItemType || (ItemType = {}));
|
|
24
|
+
// ============ Chain Info ============
|
|
25
|
+
export var ChainType;
|
|
26
|
+
(function (ChainType) {
|
|
27
|
+
ChainType["EVM"] = "evm";
|
|
28
|
+
ChainType["Solana"] = "solana";
|
|
29
|
+
})(ChainType || (ChainType = {}));
|
|
30
|
+
// ============ Constants ============
|
|
31
|
+
export const PROTOCOL_CONSTANTS = {
|
|
32
|
+
FEE_RATE: 50n, // 0.5% in basis points
|
|
33
|
+
FEE_DENOMINATOR: 10000n,
|
|
34
|
+
ACCEPTANCE_PERIOD: 24n * 60n * 60n, // 24 hours in seconds
|
|
35
|
+
PENNY_TIMER_DURATION: 5n * 60n, // 5 minutes in seconds
|
|
36
|
+
MAX_FEE_RATE: 1000n, // 10% max
|
|
37
|
+
};
|
|
38
|
+
// ============ Utility Functions ============
|
|
39
|
+
export function calculateFee(amount, feeRate = PROTOCOL_CONSTANTS.FEE_RATE) {
|
|
40
|
+
const fee = (amount * feeRate) / PROTOCOL_CONSTANTS.FEE_DENOMINATOR;
|
|
41
|
+
const netAmount = amount - fee;
|
|
42
|
+
return { fee, netAmount };
|
|
43
|
+
}
|
|
44
|
+
export function formatAuctionType(type) {
|
|
45
|
+
switch (type) {
|
|
46
|
+
case AuctionType.Traditional:
|
|
47
|
+
return 'Traditional';
|
|
48
|
+
case AuctionType.Dutch:
|
|
49
|
+
return 'Dutch';
|
|
50
|
+
case AuctionType.Penny:
|
|
51
|
+
return 'Penny';
|
|
52
|
+
default:
|
|
53
|
+
return 'Unknown';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function formatAuctionStatus(status) {
|
|
57
|
+
switch (status) {
|
|
58
|
+
case AuctionStatus.Active:
|
|
59
|
+
return 'Active';
|
|
60
|
+
case AuctionStatus.Expired:
|
|
61
|
+
return 'Expired';
|
|
62
|
+
case AuctionStatus.Finalized:
|
|
63
|
+
return 'Finalized';
|
|
64
|
+
case AuctionStatus.Refunded:
|
|
65
|
+
return 'Refunded';
|
|
66
|
+
default:
|
|
67
|
+
return 'Unknown';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function formatItemType(type) {
|
|
71
|
+
switch (type) {
|
|
72
|
+
case ItemType.ERC20:
|
|
73
|
+
return 'ERC-20';
|
|
74
|
+
case ItemType.ERC721:
|
|
75
|
+
return 'ERC-721';
|
|
76
|
+
case ItemType.ERC1155:
|
|
77
|
+
return 'ERC-1155';
|
|
78
|
+
default:
|
|
79
|
+
return 'Unknown';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate Traditional auction parameters
|
|
84
|
+
*/
|
|
85
|
+
export function validateTraditionalParams(params) {
|
|
86
|
+
const errors = [];
|
|
87
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
88
|
+
if (params.startAmount <= 0n) {
|
|
89
|
+
errors.push('Start amount must be greater than 0');
|
|
90
|
+
}
|
|
91
|
+
if (params.increment <= 0n) {
|
|
92
|
+
errors.push('Increment must be greater than 0');
|
|
93
|
+
}
|
|
94
|
+
if (params.reservePrice < params.startAmount) {
|
|
95
|
+
errors.push('Reserve price must be >= start amount');
|
|
96
|
+
}
|
|
97
|
+
if (params.deadline <= now) {
|
|
98
|
+
errors.push('Deadline must be in the future');
|
|
99
|
+
}
|
|
100
|
+
return { valid: errors.length === 0, errors };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Validate Dutch auction parameters
|
|
104
|
+
*/
|
|
105
|
+
export function validateDutchParams(params) {
|
|
106
|
+
const errors = [];
|
|
107
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
108
|
+
if (params.startPrice <= 0n) {
|
|
109
|
+
errors.push('Start price must be greater than 0');
|
|
110
|
+
}
|
|
111
|
+
if (params.decreaseAmount <= 0n) {
|
|
112
|
+
errors.push('Decrease amount must be greater than 0');
|
|
113
|
+
}
|
|
114
|
+
if (params.decreaseInterval <= 0n) {
|
|
115
|
+
errors.push('Decrease interval must be greater than 0');
|
|
116
|
+
}
|
|
117
|
+
if (params.minimumPrice >= params.startPrice) {
|
|
118
|
+
errors.push('Minimum price must be less than start price');
|
|
119
|
+
}
|
|
120
|
+
if (params.deadline <= now) {
|
|
121
|
+
errors.push('Deadline must be in the future');
|
|
122
|
+
}
|
|
123
|
+
return { valid: errors.length === 0, errors };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Validate Penny auction parameters
|
|
127
|
+
*/
|
|
128
|
+
export function validatePennyParams(params) {
|
|
129
|
+
const errors = [];
|
|
130
|
+
if (params.incrementAmount <= 0n) {
|
|
131
|
+
errors.push('Increment amount must be greater than 0');
|
|
132
|
+
}
|
|
133
|
+
if (params.timerDuration !== undefined && params.timerDuration <= 0n) {
|
|
134
|
+
errors.push('Timer duration must be greater than 0');
|
|
135
|
+
}
|
|
136
|
+
return { valid: errors.length === 0, errors };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Validate bid amount for Traditional auction
|
|
140
|
+
*/
|
|
141
|
+
export function validateTraditionalBid(currentBid, newBid, params) {
|
|
142
|
+
const errors = [];
|
|
143
|
+
const minBid = currentBid === 0n ? params.startAmount : currentBid + params.increment;
|
|
144
|
+
if (newBid < minBid) {
|
|
145
|
+
errors.push(`Bid must be at least ${minBid.toString()}`);
|
|
146
|
+
}
|
|
147
|
+
return { valid: errors.length === 0, errors };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if Traditional auction is active
|
|
151
|
+
*/
|
|
152
|
+
export function isTraditionalAuctionActive(status, deadline) {
|
|
153
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
154
|
+
return status === AuctionStatus.Active && deadline > now;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if Dutch auction is active
|
|
158
|
+
*/
|
|
159
|
+
export function isDutchAuctionActive(status, deadline) {
|
|
160
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
161
|
+
return status === AuctionStatus.Active && deadline > now;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if Penny auction is active
|
|
165
|
+
*/
|
|
166
|
+
export function isPennyAuctionActive(status, currentDeadline) {
|
|
167
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
168
|
+
// Penny auction is active if no deadline set yet, or deadline not passed
|
|
169
|
+
return status === AuctionStatus.Active && (currentDeadline === 0n || currentDeadline > now);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Calculate current Dutch auction price
|
|
173
|
+
*/
|
|
174
|
+
export function calculateDutchPrice(params, currentTime) {
|
|
175
|
+
const now = currentTime ?? BigInt(Math.floor(Date.now() / 1000));
|
|
176
|
+
const elapsed = now - params.startTime;
|
|
177
|
+
if (elapsed <= 0n) {
|
|
178
|
+
return params.startPrice;
|
|
179
|
+
}
|
|
180
|
+
const intervals = elapsed / params.decreaseInterval;
|
|
181
|
+
const decrease = intervals * params.decreaseAmount;
|
|
182
|
+
const currentPrice = params.startPrice - decrease;
|
|
183
|
+
return currentPrice > params.minimumPrice ? currentPrice : params.minimumPrice;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Calculate time remaining for auction
|
|
187
|
+
*/
|
|
188
|
+
export function calculateTimeRemaining(deadline) {
|
|
189
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
190
|
+
const remaining = deadline - now;
|
|
191
|
+
if (remaining <= 0n) {
|
|
192
|
+
return { total: 0n, days: 0n, hours: 0n, minutes: 0n, seconds: 0n, expired: true };
|
|
193
|
+
}
|
|
194
|
+
const days = remaining / 86400n;
|
|
195
|
+
const hours = (remaining % 86400n) / 3600n;
|
|
196
|
+
const minutes = (remaining % 3600n) / 60n;
|
|
197
|
+
const seconds = remaining % 60n;
|
|
198
|
+
return { total: remaining, days, hours, minutes, seconds, expired: false };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Format amount with decimals
|
|
202
|
+
*/
|
|
203
|
+
export function formatAmount(amount, decimals) {
|
|
204
|
+
const divisor = BigInt(10 ** decimals);
|
|
205
|
+
const wholePart = amount / divisor;
|
|
206
|
+
const fractionalPart = amount % divisor;
|
|
207
|
+
if (fractionalPart === 0n) {
|
|
208
|
+
return wholePart.toString();
|
|
209
|
+
}
|
|
210
|
+
const fractionalStr = fractionalPart.toString().padStart(decimals, '0');
|
|
211
|
+
const trimmedFractional = fractionalStr.replace(/0+$/, '');
|
|
212
|
+
return `${wholePart}.${trimmedFractional}`;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Parse amount string to bigint
|
|
216
|
+
*/
|
|
217
|
+
export function parseAmount(amount, decimals) {
|
|
218
|
+
const [whole, fraction = ''] = amount.split('.');
|
|
219
|
+
const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);
|
|
220
|
+
return BigInt(whole + paddedFraction);
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kCAAkC;AAElC,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,2DAAe,CAAA;IACf,+CAAS,CAAA;IACT,+CAAS,CAAA;AACX,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,uDAAW,CAAA;IACX,2DAAa,CAAA;IACb,yDAAY,CAAA;AACd,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,2CAAU,CAAA;IACV,6CAAW,CAAA;AACb,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAsFD,uCAAuC;AAEvC,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;AACnB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AASD,sCAAsC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE,GAAG,EAAE,uBAAuB;IACtC,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,sBAAsB;IAC1D,oBAAoB,EAAE,EAAE,GAAG,GAAG,EAAE,uBAAuB;IACvD,YAAY,EAAE,KAAK,EAAE,UAAU;CAChC,CAAC;AAEF,8CAA8C;AAE9C,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,UAAkB,kBAAkB,CAAC,QAAQ;IAIxF,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,kBAAkB,CAAC,eAAe,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;IAC/B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,WAAW;YAC1B,OAAO,aAAa,CAAC;QACvB,KAAK,WAAW,CAAC,KAAK;YACpB,OAAO,OAAO,CAAC;QACjB,KAAK,WAAW,CAAC,KAAK;YACpB,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa,CAAC,MAAM;YACvB,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa,CAAC,OAAO;YACxB,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,WAAW,CAAC;QACrB,KAAK,aAAa,CAAC,QAAQ;YACzB,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAKzC;IACC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAMnC;IACC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAGnC;IACC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,MAAc,EACd,MAAyB;IAEzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,MAAM,GAAG,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;IAEtF,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAqB,EACrB,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,eAAuB;IAEvB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,yEAAyE;IACzE,OAAO,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,eAAe,KAAK,EAAE,IAAI,eAAe,GAAG,GAAG,CAAC,CAAC;AAC9F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAmB,EACnB,WAAoB;IAEpB,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;IAEvC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACpD,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;IAElD,OAAO,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IAQrD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,GAAG,GAAG,CAAC;IAEjC,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrF,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAC1C,MAAM,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;IAEhC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,QAAgB;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACnC,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;IAExC,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE3D,OAAO,GAAG,SAAS,IAAI,iBAAiB,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,QAAgB;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unified/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/unified/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Onchain Auction Client
|
|
3
|
+
* Stateless client that detects chain type and routes to appropriate platform client
|
|
4
|
+
*/
|
|
5
|
+
import type { PublicClient } from 'viem';
|
|
6
|
+
import type { Connection } from '@solana/web3.js';
|
|
7
|
+
import { type ChainInfo, type AuctionCore, type AuctionItem, type TraditionalParams, type DutchParams, type PennyParams, type CreateTraditionalAuctionParams, type CreateDutchAuctionParams, type CreatePennyAuctionParams, type TransactionResult } from '../types/common.js';
|
|
8
|
+
import type { EVMWallet } from '../evm/evm-auction-client.js';
|
|
9
|
+
import type { SolanaWallet, SolanaChainInfo } from '../solana/types.js';
|
|
10
|
+
export type UnifiedWallet = EVMWallet | SolanaWallet;
|
|
11
|
+
/**
|
|
12
|
+
* Unified Onchain Auction Client
|
|
13
|
+
* Lazy-loads platform-specific clients to optimize bundle size
|
|
14
|
+
*/
|
|
15
|
+
export declare class OnchainAuctionClient {
|
|
16
|
+
private static evmClient;
|
|
17
|
+
private static solanaClient;
|
|
18
|
+
/**
|
|
19
|
+
* Lazy-load EVM client
|
|
20
|
+
*/
|
|
21
|
+
private getEVMClient;
|
|
22
|
+
/**
|
|
23
|
+
* Lazy-load Solana client
|
|
24
|
+
*/
|
|
25
|
+
private getSolanaClient;
|
|
26
|
+
/**
|
|
27
|
+
* Detect wallet type
|
|
28
|
+
*/
|
|
29
|
+
private isEVMWallet;
|
|
30
|
+
/**
|
|
31
|
+
* Detect chain type from ChainInfo
|
|
32
|
+
*/
|
|
33
|
+
private isEVMChain;
|
|
34
|
+
/**
|
|
35
|
+
* Get auction details
|
|
36
|
+
*/
|
|
37
|
+
getAuction(chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array, publicClientOrConnection?: PublicClient | Connection): Promise<{
|
|
38
|
+
core: AuctionCore;
|
|
39
|
+
items: AuctionItem[];
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Get Traditional auction parameters
|
|
43
|
+
*/
|
|
44
|
+
getTraditionalParams(chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array, publicClientOrConnection?: PublicClient | Connection): Promise<TraditionalParams>;
|
|
45
|
+
/**
|
|
46
|
+
* Get Dutch auction parameters
|
|
47
|
+
*/
|
|
48
|
+
getDutchParams(chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array, publicClientOrConnection?: PublicClient | Connection): Promise<DutchParams>;
|
|
49
|
+
/**
|
|
50
|
+
* Get current Dutch auction price
|
|
51
|
+
*/
|
|
52
|
+
getDutchCurrentPrice(chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array, publicClientOrConnection?: PublicClient | Connection): Promise<bigint>;
|
|
53
|
+
/**
|
|
54
|
+
* Get Penny auction parameters
|
|
55
|
+
*/
|
|
56
|
+
getPennyParams(chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array, publicClientOrConnection?: PublicClient | Connection): Promise<PennyParams>;
|
|
57
|
+
/**
|
|
58
|
+
* Create a Traditional auction
|
|
59
|
+
*/
|
|
60
|
+
createTraditionalAuction(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, params: CreateTraditionalAuctionParams): Promise<TransactionResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Create a Dutch auction
|
|
63
|
+
*/
|
|
64
|
+
createDutchAuction(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, params: CreateDutchAuctionParams): Promise<TransactionResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Create a Penny auction
|
|
67
|
+
*/
|
|
68
|
+
createPennyAuction(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, params: CreatePennyAuctionParams): Promise<TransactionResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Place a bid on a Traditional auction
|
|
71
|
+
*/
|
|
72
|
+
bidTraditional(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array, amount: bigint): Promise<TransactionResult>;
|
|
73
|
+
/**
|
|
74
|
+
* Buy at current price in a Dutch auction
|
|
75
|
+
*/
|
|
76
|
+
buyDutch(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array): Promise<TransactionResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Place a bid on a Penny auction
|
|
79
|
+
*/
|
|
80
|
+
bidPenny(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array): Promise<TransactionResult>;
|
|
81
|
+
/**
|
|
82
|
+
* Finalize an auction
|
|
83
|
+
*/
|
|
84
|
+
finalizeAuction(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array): Promise<TransactionResult>;
|
|
85
|
+
/**
|
|
86
|
+
* Dealer accepts bid below reserve (Traditional only)
|
|
87
|
+
*/
|
|
88
|
+
dealerAcceptBid(wallet: UnifiedWallet, chainInfo: ChainInfo | SolanaChainInfo, auctionId: bigint | Uint8Array): Promise<TransactionResult>;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=onchain-auction-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onchain-auction-client.d.ts","sourceRoot":"","sources":["../../../src/unified/onchain-auction-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Onchain Auction Client
|
|
3
|
+
* Stateless client that detects chain type and routes to appropriate platform client
|
|
4
|
+
*/
|
|
5
|
+
import { ChainType, } from '../types/common.js';
|
|
6
|
+
/**
|
|
7
|
+
* Unified Onchain Auction Client
|
|
8
|
+
* Lazy-loads platform-specific clients to optimize bundle size
|
|
9
|
+
*/
|
|
10
|
+
export class OnchainAuctionClient {
|
|
11
|
+
/**
|
|
12
|
+
* Lazy-load EVM client
|
|
13
|
+
*/
|
|
14
|
+
async getEVMClient() {
|
|
15
|
+
if (!OnchainAuctionClient.evmClient) {
|
|
16
|
+
const { EVMAuctionClient } = await import('../evm/evm-auction-client.js');
|
|
17
|
+
OnchainAuctionClient.evmClient = new EVMAuctionClient();
|
|
18
|
+
}
|
|
19
|
+
return OnchainAuctionClient.evmClient;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Lazy-load Solana client
|
|
23
|
+
*/
|
|
24
|
+
async getSolanaClient() {
|
|
25
|
+
if (!OnchainAuctionClient.solanaClient) {
|
|
26
|
+
const { SolanaAuctionClient } = await import('../solana/solana-auction-client.js');
|
|
27
|
+
OnchainAuctionClient.solanaClient = new SolanaAuctionClient();
|
|
28
|
+
}
|
|
29
|
+
return OnchainAuctionClient.solanaClient;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Detect wallet type
|
|
33
|
+
*/
|
|
34
|
+
isEVMWallet(wallet) {
|
|
35
|
+
return 'walletClient' in wallet && 'publicClient' in wallet;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detect chain type from ChainInfo
|
|
39
|
+
*/
|
|
40
|
+
isEVMChain(chainInfo) {
|
|
41
|
+
return ('chainType' in chainInfo &&
|
|
42
|
+
chainInfo.chainType === ChainType.EVM);
|
|
43
|
+
}
|
|
44
|
+
// ============ Read Methods ============
|
|
45
|
+
/**
|
|
46
|
+
* Get auction details
|
|
47
|
+
*/
|
|
48
|
+
async getAuction(chainInfo, auctionId, publicClientOrConnection) {
|
|
49
|
+
if (this.isEVMChain(chainInfo)) {
|
|
50
|
+
const client = await this.getEVMClient();
|
|
51
|
+
return client.getAuction(publicClientOrConnection, chainInfo, auctionId);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const client = await this.getSolanaClient();
|
|
55
|
+
return client.getAuction(publicClientOrConnection, chainInfo, auctionId);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get Traditional auction parameters
|
|
60
|
+
*/
|
|
61
|
+
async getTraditionalParams(chainInfo, auctionId, publicClientOrConnection) {
|
|
62
|
+
if (this.isEVMChain(chainInfo)) {
|
|
63
|
+
const client = await this.getEVMClient();
|
|
64
|
+
return client.getTraditionalParams(publicClientOrConnection, chainInfo, auctionId);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw new Error('Solana not yet implemented');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get Dutch auction parameters
|
|
72
|
+
*/
|
|
73
|
+
async getDutchParams(chainInfo, auctionId, publicClientOrConnection) {
|
|
74
|
+
if (this.isEVMChain(chainInfo)) {
|
|
75
|
+
const client = await this.getEVMClient();
|
|
76
|
+
return client.getDutchParams(publicClientOrConnection, chainInfo, auctionId);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
throw new Error('Solana not yet implemented');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get current Dutch auction price
|
|
84
|
+
*/
|
|
85
|
+
async getDutchCurrentPrice(chainInfo, auctionId, publicClientOrConnection) {
|
|
86
|
+
if (this.isEVMChain(chainInfo)) {
|
|
87
|
+
const client = await this.getEVMClient();
|
|
88
|
+
return client.getDutchCurrentPrice(publicClientOrConnection, chainInfo, auctionId);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw new Error('Solana not yet implemented');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get Penny auction parameters
|
|
96
|
+
*/
|
|
97
|
+
async getPennyParams(chainInfo, auctionId, publicClientOrConnection) {
|
|
98
|
+
if (this.isEVMChain(chainInfo)) {
|
|
99
|
+
const client = await this.getEVMClient();
|
|
100
|
+
return client.getPennyParams(publicClientOrConnection, chainInfo, auctionId);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throw new Error('Solana not yet implemented');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ============ Write Methods ============
|
|
107
|
+
/**
|
|
108
|
+
* Create a Traditional auction
|
|
109
|
+
*/
|
|
110
|
+
async createTraditionalAuction(wallet, chainInfo, params) {
|
|
111
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
112
|
+
const client = await this.getEVMClient();
|
|
113
|
+
return client.createTraditionalAuction(wallet, chainInfo, params);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
throw new Error('Solana not yet implemented');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a Dutch auction
|
|
121
|
+
*/
|
|
122
|
+
async createDutchAuction(wallet, chainInfo, params) {
|
|
123
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
124
|
+
const client = await this.getEVMClient();
|
|
125
|
+
return client.createDutchAuction(wallet, chainInfo, params);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
throw new Error('Solana not yet implemented');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a Penny auction
|
|
133
|
+
*/
|
|
134
|
+
async createPennyAuction(wallet, chainInfo, params) {
|
|
135
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
136
|
+
const client = await this.getEVMClient();
|
|
137
|
+
return client.createPennyAuction(wallet, chainInfo, params);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
throw new Error('Solana not yet implemented');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Place a bid on a Traditional auction
|
|
145
|
+
*/
|
|
146
|
+
async bidTraditional(wallet, chainInfo, auctionId, amount) {
|
|
147
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
148
|
+
const client = await this.getEVMClient();
|
|
149
|
+
return client.bidTraditional(wallet, chainInfo, auctionId, amount);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
throw new Error('Solana not yet implemented');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Buy at current price in a Dutch auction
|
|
157
|
+
*/
|
|
158
|
+
async buyDutch(wallet, chainInfo, auctionId) {
|
|
159
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
160
|
+
const client = await this.getEVMClient();
|
|
161
|
+
return client.buyDutch(wallet, chainInfo, auctionId);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
throw new Error('Solana not yet implemented');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Place a bid on a Penny auction
|
|
169
|
+
*/
|
|
170
|
+
async bidPenny(wallet, chainInfo, auctionId) {
|
|
171
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
172
|
+
const client = await this.getEVMClient();
|
|
173
|
+
return client.bidPenny(wallet, chainInfo, auctionId);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
throw new Error('Solana not yet implemented');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Finalize an auction
|
|
181
|
+
*/
|
|
182
|
+
async finalizeAuction(wallet, chainInfo, auctionId) {
|
|
183
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
184
|
+
const client = await this.getEVMClient();
|
|
185
|
+
return client.finalizeAuction(wallet, chainInfo, auctionId);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
throw new Error('Solana not yet implemented');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Dealer accepts bid below reserve (Traditional only)
|
|
193
|
+
*/
|
|
194
|
+
async dealerAcceptBid(wallet, chainInfo, auctionId) {
|
|
195
|
+
if (this.isEVMWallet(wallet) && this.isEVMChain(chainInfo)) {
|
|
196
|
+
const client = await this.getEVMClient();
|
|
197
|
+
return client.dealerAcceptBid(wallet, chainInfo, auctionId);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
throw new Error('Solana not yet implemented');
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
OnchainAuctionClient.evmClient = null;
|
|
205
|
+
OnchainAuctionClient.solanaClient = null;
|
|
206
|
+
//# sourceMappingURL=onchain-auction-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onchain-auction-client.js","sourceRoot":"","sources":["../../../src/unified/onchain-auction-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/auctions_contracts",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/unified/src/unified/index.js",
|
|
6
6
|
"types": "dist/unified/src/unified/index.d.ts",
|
|
@@ -177,6 +177,8 @@
|
|
|
177
177
|
"chai": "^4.5.0",
|
|
178
178
|
"dotenv": "^17.2.3",
|
|
179
179
|
"eslint": "^9.19.0",
|
|
180
|
+
"eslint-config-prettier": "^10.1.8",
|
|
181
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
180
182
|
"ethers": "^6.16.0",
|
|
181
183
|
"hardhat": "^2.26.3",
|
|
182
184
|
"hardhat-gas-reporter": "^2.2.0",
|