@velora-dex/sdk 9.1.0 → 9.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.
- package/dist/examples/wagmi.d.ts +121 -10
- package/dist/examples/wagmi.d.ts.map +1 -1
- package/dist/helpers/providers/helpers.d.ts +1 -1
- package/dist/helpers/providers/helpers.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts +6 -0
- package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts.map +1 -1
- package/dist/methods/delta/helpers/types.d.ts +2 -1
- package/dist/methods/delta/helpers/types.d.ts.map +1 -1
- package/dist/methods/delta/index.d.ts +2 -1
- package/dist/methods/delta/index.d.ts.map +1 -1
- package/dist/methods/delta/preSignDeltaOrder.d.ts +17 -0
- package/dist/methods/delta/preSignDeltaOrder.d.ts.map +1 -0
- package/dist/methods/delta/signDeltaOrder.d.ts +0 -3
- package/dist/methods/delta/signDeltaOrder.d.ts.map +1 -1
- package/dist/sdk/partial.d.ts +3 -1
- package/dist/sdk/partial.d.ts.map +1 -1
- package/dist/sdk.cjs.development.js +152 -1
- package/dist/sdk.cjs.development.js.map +1 -1
- package/dist/sdk.cjs.production.min.js +1 -1
- package/dist/sdk.cjs.production.min.js.map +1 -1
- package/dist/sdk.esm.js +152 -2
- package/dist/sdk.esm.js.map +1 -1
- package/package.json +5 -4
- package/src/helpers/providers/helpers.ts +5 -5
- package/src/index.ts +6 -0
- package/src/methods/delta/helpers/buildDeltaOrderData.ts +1 -1
- package/src/methods/delta/helpers/types.ts +2 -0
- package/src/methods/delta/index.ts +8 -0
- package/src/methods/delta/preSignDeltaOrder.ts +158 -0
- package/src/methods/delta/signDeltaOrder.ts +0 -6
- package/src/sdk/partial.ts +3 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velora-dex/sdk",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/sdk.esm.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
"typedoc-plugin-missing-exports": "^3.0.0",
|
|
69
69
|
"typedoc-plugin-replace-text": "^4.0.0",
|
|
70
70
|
"typescript": "^5.6.3",
|
|
71
|
-
"viem": "^2.
|
|
72
|
-
"wagmi": "^2.
|
|
71
|
+
"viem": "^2.39.0",
|
|
72
|
+
"wagmi": "^2.19.4",
|
|
73
73
|
"web3": "^4.14.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
@@ -94,7 +94,8 @@
|
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"@paraswap/core": "2.4.0",
|
|
97
|
-
"ts-essentials": "^10.0.3"
|
|
97
|
+
"ts-essentials": "^10.0.3",
|
|
98
|
+
"viem": "^2.21.0"
|
|
98
99
|
},
|
|
99
100
|
"author": "Velora",
|
|
100
101
|
"description": "Velora SDK",
|
|
@@ -5,10 +5,10 @@ import { TypedDataField } from '../../methods/common/orders/buildOrderData';
|
|
|
5
5
|
// may be overly strict, but reliable
|
|
6
6
|
const baseTypeRegex = /^([^\x5b]*)(\x5b|$)/;
|
|
7
7
|
|
|
8
|
-
export function findPrimaryType(
|
|
9
|
-
types: Record<
|
|
10
|
-
):
|
|
11
|
-
const candidates = Object.keys(types);
|
|
8
|
+
export function findPrimaryType<P extends string>(
|
|
9
|
+
types: Record<P, TypedDataField[]>
|
|
10
|
+
): P {
|
|
11
|
+
const candidates = Object.keys(types) as P[];
|
|
12
12
|
const candidatesSet = new Set(candidates);
|
|
13
13
|
|
|
14
14
|
candidates.forEach((candidate) => {
|
|
@@ -21,7 +21,7 @@ export function findPrimaryType(
|
|
|
21
21
|
if (!baseType) return;
|
|
22
22
|
|
|
23
23
|
// if type was referred to as a child of another type, it can't be the primaryType
|
|
24
|
-
candidatesSet.delete(baseType);
|
|
24
|
+
candidatesSet.delete(baseType as P);
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
|
package/src/index.ts
CHANGED
|
@@ -161,6 +161,10 @@ import {
|
|
|
161
161
|
constructSignDeltaOrder,
|
|
162
162
|
SignDeltaOrderFunctions,
|
|
163
163
|
} from './methods/delta/signDeltaOrder';
|
|
164
|
+
import {
|
|
165
|
+
constructPreSignDeltaOrder,
|
|
166
|
+
PreSignDeltaOrderFunctions,
|
|
167
|
+
} from './methods/delta/preSignDeltaOrder';
|
|
164
168
|
import {
|
|
165
169
|
GetDeltaContractFunctions,
|
|
166
170
|
constructGetDeltaContract,
|
|
@@ -288,6 +292,7 @@ export {
|
|
|
288
292
|
constructBuildDeltaOrder,
|
|
289
293
|
constructPostDeltaOrder,
|
|
290
294
|
constructSignDeltaOrder,
|
|
295
|
+
constructPreSignDeltaOrder,
|
|
291
296
|
constructGetDeltaContract,
|
|
292
297
|
constructGetDeltaPrice,
|
|
293
298
|
constructGetDeltaOrders,
|
|
@@ -379,6 +384,7 @@ export type {
|
|
|
379
384
|
PostDeltaOrderFunctions,
|
|
380
385
|
PostDeltaOrderParams,
|
|
381
386
|
SignDeltaOrderFunctions,
|
|
387
|
+
PreSignDeltaOrderFunctions,
|
|
382
388
|
GetDeltaContractFunctions,
|
|
383
389
|
GetDeltaPriceFunctions,
|
|
384
390
|
GetDeltaOrdersFunctions,
|
|
@@ -54,6 +54,7 @@ export type Bridge = {
|
|
|
54
54
|
|
|
55
55
|
export type DeltaAuctionStatus =
|
|
56
56
|
| 'NOT_STARTED'
|
|
57
|
+
| 'AWAITING_PRE_SIGNATURE'
|
|
57
58
|
| 'RUNNING'
|
|
58
59
|
| 'EXECUTING'
|
|
59
60
|
| 'EXECUTED'
|
|
@@ -69,6 +70,7 @@ type DeltaAuctionTransaction = {
|
|
|
69
70
|
bidId: string | null;
|
|
70
71
|
blockNumber: number;
|
|
71
72
|
blockHash: string;
|
|
73
|
+
blockTimestamp: string | null; // ISO string, null for older Orders
|
|
72
74
|
gasUsed: bigint;
|
|
73
75
|
gasPrice: bigint;
|
|
74
76
|
blobGasUsed: bigint;
|
|
@@ -46,6 +46,10 @@ import {
|
|
|
46
46
|
CancelDeltaOrderFunctions,
|
|
47
47
|
constructCancelDeltaOrder,
|
|
48
48
|
} from './cancelDeltaOrder';
|
|
49
|
+
import {
|
|
50
|
+
constructPreSignDeltaOrder,
|
|
51
|
+
PreSignDeltaOrderFunctions,
|
|
52
|
+
} from './preSignDeltaOrder';
|
|
49
53
|
|
|
50
54
|
export type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {
|
|
51
55
|
/** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */
|
|
@@ -66,6 +70,7 @@ export const constructSubmitDeltaOrder = (
|
|
|
66
70
|
options: ConstructProviderFetchInput<any, 'signTypedDataCall'>
|
|
67
71
|
): SubmitDeltaOrderFuncs => {
|
|
68
72
|
const { buildDeltaOrder } = constructBuildDeltaOrder(options);
|
|
73
|
+
// in the normal submitOrderFlow preSign tx is not involved
|
|
69
74
|
const { signDeltaOrder } = constructSignDeltaOrder(options);
|
|
70
75
|
const { postDeltaOrder } = constructPostDeltaOrder(options);
|
|
71
76
|
|
|
@@ -101,6 +106,7 @@ export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
|
|
|
101
106
|
IsTokenSupportedInDeltaFunctions &
|
|
102
107
|
PostDeltaOrderFunctions &
|
|
103
108
|
SignDeltaOrderFunctions &
|
|
109
|
+
PreSignDeltaOrderFunctions<T> &
|
|
104
110
|
CancelDeltaOrderFunctions;
|
|
105
111
|
|
|
106
112
|
/** @description construct SDK with every Delta Order-related method, fetching from API and Order signing */
|
|
@@ -124,6 +130,7 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
|
|
|
124
130
|
|
|
125
131
|
const deltaOrdersBuild = constructBuildDeltaOrder(options);
|
|
126
132
|
const deltaOrdersSign = constructSignDeltaOrder(options);
|
|
133
|
+
const deltaOrdersPreSign = constructPreSignDeltaOrder(options);
|
|
127
134
|
const deltaOrdersPost = constructPostDeltaOrder(options);
|
|
128
135
|
|
|
129
136
|
const deltaOrdersCancel = constructCancelDeltaOrder(options);
|
|
@@ -139,6 +146,7 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
|
|
|
139
146
|
...deltaOrdersSubmit,
|
|
140
147
|
...deltaOrdersBuild,
|
|
141
148
|
...deltaOrdersSign,
|
|
149
|
+
...deltaOrdersPreSign,
|
|
142
150
|
...deltaOrdersPost,
|
|
143
151
|
...deltaOrdersCancel,
|
|
144
152
|
};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { hashTypedData } from 'viem/utils';
|
|
2
|
+
import type {
|
|
3
|
+
ConstructProviderFetchInput,
|
|
4
|
+
RequestParameters,
|
|
5
|
+
TxSendOverrides,
|
|
6
|
+
} from '../../types';
|
|
7
|
+
import {
|
|
8
|
+
produceDeltaOrderTypedData,
|
|
9
|
+
SignableDeltaOrderData,
|
|
10
|
+
} from './helpers/buildDeltaOrderData';
|
|
11
|
+
import { sanitizeDeltaOrderData } from './helpers/misc';
|
|
12
|
+
import type { ExtractAbiMethodNames } from '../../helpers/misc';
|
|
13
|
+
import { findPrimaryType } from '../../helpers/providers/helpers';
|
|
14
|
+
import { constructGetDeltaContract } from './getDeltaContract';
|
|
15
|
+
import type { DeltaAuctionOrder } from './helpers/types';
|
|
16
|
+
|
|
17
|
+
type HashDeltaOrderTypedData = (
|
|
18
|
+
signableOrderData: SignableDeltaOrderData
|
|
19
|
+
) => string;
|
|
20
|
+
|
|
21
|
+
type HashDeltaOrder = (
|
|
22
|
+
orderData: DeltaAuctionOrder,
|
|
23
|
+
requestParams?: RequestParameters
|
|
24
|
+
) => Promise<string>;
|
|
25
|
+
|
|
26
|
+
export type SetDeltaOrderPreSignature<T> = (
|
|
27
|
+
orderHash: string,
|
|
28
|
+
overrides?: TxSendOverrides,
|
|
29
|
+
requestParams?: RequestParameters
|
|
30
|
+
) => Promise<T>;
|
|
31
|
+
|
|
32
|
+
export type PreSignDeltaOrder<T> = (
|
|
33
|
+
signableOrderData: SignableDeltaOrderData,
|
|
34
|
+
overrides?: TxSendOverrides,
|
|
35
|
+
requestParams?: RequestParameters
|
|
36
|
+
) => Promise<T>;
|
|
37
|
+
|
|
38
|
+
export type PreSignDeltaOrderFunctions<T> = {
|
|
39
|
+
hashDeltaOrderTypedData: HashDeltaOrderTypedData;
|
|
40
|
+
hashDeltaOrder: HashDeltaOrder;
|
|
41
|
+
setDeltaOrderPreSignature: SetDeltaOrderPreSignature<T>;
|
|
42
|
+
preSignDeltaOrder: PreSignDeltaOrder<T>;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const PreSignatureModuleAbi = [
|
|
46
|
+
{
|
|
47
|
+
inputs: [
|
|
48
|
+
{
|
|
49
|
+
internalType: 'bytes32',
|
|
50
|
+
name: 'orderHash',
|
|
51
|
+
type: 'bytes32',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
internalType: 'bool',
|
|
55
|
+
name: 'preSigned',
|
|
56
|
+
type: 'bool',
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
name: 'setPreSignature',
|
|
60
|
+
outputs: [],
|
|
61
|
+
stateMutability: 'nonpayable',
|
|
62
|
+
type: 'function',
|
|
63
|
+
},
|
|
64
|
+
] as const;
|
|
65
|
+
|
|
66
|
+
type AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;
|
|
67
|
+
|
|
68
|
+
// returns whatever `contractCaller` returns
|
|
69
|
+
// to allow for better versatility
|
|
70
|
+
export const constructPreSignDeltaOrder = <T>(
|
|
71
|
+
options: ConstructProviderFetchInput<T, 'transactCall'>
|
|
72
|
+
): PreSignDeltaOrderFunctions<T> => {
|
|
73
|
+
const hashDeltaOrderTypedData: HashDeltaOrderTypedData = (typedData) => {
|
|
74
|
+
// types allow to pass OrderData & extra_stuff, but tx will break like that
|
|
75
|
+
const typedDataOnly: SignableDeltaOrderData = {
|
|
76
|
+
...typedData,
|
|
77
|
+
data: sanitizeDeltaOrderData(typedData.data),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const orderHash = produceDeltaOrderHash(typedDataOnly);
|
|
81
|
+
|
|
82
|
+
return orderHash;
|
|
83
|
+
};
|
|
84
|
+
// cached internally
|
|
85
|
+
const { getDeltaContract } = constructGetDeltaContract(options);
|
|
86
|
+
|
|
87
|
+
const hashDeltaOrder: HashDeltaOrder = async (orderData, requestParams) => {
|
|
88
|
+
const ParaswapDelta = await getDeltaContract(requestParams);
|
|
89
|
+
if (!ParaswapDelta) {
|
|
90
|
+
throw new Error(`Delta is not available on chain ${options.chainId}`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const typedData = produceDeltaOrderTypedData({
|
|
94
|
+
orderInput: orderData,
|
|
95
|
+
chainId: options.chainId,
|
|
96
|
+
paraswapDeltaAddress: ParaswapDelta,
|
|
97
|
+
});
|
|
98
|
+
return hashDeltaOrderTypedData(typedData);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const setDeltaOrderPreSignature: SetDeltaOrderPreSignature<T> = async (
|
|
102
|
+
orderHash,
|
|
103
|
+
overrides = {},
|
|
104
|
+
requestParams
|
|
105
|
+
) => {
|
|
106
|
+
const ParaswapDelta = await getDeltaContract(requestParams);
|
|
107
|
+
if (!ParaswapDelta) {
|
|
108
|
+
throw new Error(`Delta is not available on chain ${options.chainId}`);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const res = await options.contractCaller.transactCall<AvailableMethods>({
|
|
112
|
+
address: ParaswapDelta,
|
|
113
|
+
abi: PreSignatureModuleAbi,
|
|
114
|
+
contractMethod: 'setPreSignature',
|
|
115
|
+
args: [orderHash, true],
|
|
116
|
+
overrides,
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
return res;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const preSignDeltaOrder: PreSignDeltaOrder<T> = async (
|
|
123
|
+
signableOrderData,
|
|
124
|
+
overrides = {},
|
|
125
|
+
requestParams
|
|
126
|
+
) => {
|
|
127
|
+
const orderHash = hashDeltaOrderTypedData(signableOrderData);
|
|
128
|
+
const res = await setDeltaOrderPreSignature(
|
|
129
|
+
orderHash,
|
|
130
|
+
overrides,
|
|
131
|
+
requestParams
|
|
132
|
+
);
|
|
133
|
+
return res;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
return {
|
|
137
|
+
hashDeltaOrderTypedData,
|
|
138
|
+
hashDeltaOrder,
|
|
139
|
+
setDeltaOrderPreSignature,
|
|
140
|
+
preSignDeltaOrder,
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export function produceDeltaOrderHash(
|
|
145
|
+
typedData: SignableDeltaOrderData
|
|
146
|
+
): string {
|
|
147
|
+
return hashTypedData({
|
|
148
|
+
domain: {
|
|
149
|
+
name: typedData.domain.name,
|
|
150
|
+
version: typedData.domain.version,
|
|
151
|
+
chainId: typedData.domain.chainId,
|
|
152
|
+
verifyingContract: typedData.domain.verifyingContract as `0x${string}`,
|
|
153
|
+
},
|
|
154
|
+
types: typedData.types,
|
|
155
|
+
primaryType: findPrimaryType(typedData.types),
|
|
156
|
+
message: typedData.data,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
@@ -2,12 +2,6 @@ import type { ConstructProviderFetchInput } from '../../types';
|
|
|
2
2
|
import { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';
|
|
3
3
|
import { sanitizeDeltaOrderData } from './helpers/misc';
|
|
4
4
|
|
|
5
|
-
export type SignLimitOrderFunctions = {
|
|
6
|
-
signLimitOrder: (
|
|
7
|
-
signableOrderData: SignableDeltaOrderData
|
|
8
|
-
) => Promise<string>;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
5
|
type SignDeltaOrder = (
|
|
12
6
|
signableOrderData: SignableDeltaOrderData
|
|
13
7
|
) => Promise<string>;
|
package/src/sdk/partial.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { CancelNFTOrderFunctions } from '../methods/nftOrders/cancelOrder';
|
|
|
12
12
|
import type { ApproveTokenForNFTOrderFunctions } from '../methods/nftOrders/approveForOrder';
|
|
13
13
|
import type { FillOrderDirectlyFunctions } from '../methods/limitOrders/fillOrderDirectly';
|
|
14
14
|
import type { ApproveTokenForDeltaFunctions } from '../methods/delta/approveForDelta';
|
|
15
|
+
import type { PreSignDeltaOrderFunctions } from '../methods/delta/preSignDeltaOrder';
|
|
15
16
|
import { API_URL, DEFAULT_VERSION } from '../constants';
|
|
16
17
|
|
|
17
18
|
export type SDKConfig<TxResponse = any> = ConstructProviderFetchInput<
|
|
@@ -50,7 +51,8 @@ type InferWithTxResponse<
|
|
|
50
51
|
ApproveTokenForLimitOrderFunctions<TxResponse>,
|
|
51
52
|
CancelNFTOrderFunctions<TxResponse>,
|
|
52
53
|
ApproveTokenForNFTOrderFunctions<TxResponse>,
|
|
53
|
-
ApproveTokenForDeltaFunctions<TxResponse
|
|
54
|
+
ApproveTokenForDeltaFunctions<TxResponse>,
|
|
55
|
+
PreSignDeltaOrderFunctions<TxResponse>
|
|
54
56
|
]
|
|
55
57
|
// then merge IntersectionOfReturns<Funcs> with them recursively
|
|
56
58
|
>
|